code: def update_class(func, funcs, class_name, full_name):
      logger = logging.getLogger("enumerate-api")
      class_api = {}
      for v2 in dir(func):
          if v2.startswith("_") and v2 != "__init__":
              continue
          method = getattr(func, v2)
          if not (
              inspect.isfunction(method)
              or inspect.isclass(method)
              or inspect.ismethod(method)
              or isinstance(method, property)
          ):
              continue
          if isinstance(method, property):
              try:
                  name = f"{method.fget.__module__}.{class_name}.{v2}"
                  class_api[name] = tuple()
              except Exception:
                  name = ""
          else:
              sig = inspect.signature(method)
              name = f"{method.__module__}.{class_name}.{v2}"
              class_api[name] = tuple(k for k in sig.parameters.keys())
          logger.info(name)
      funcs[full_name] = class_api
  
file_path: statsmodels/tools/releasing/enumerate-api.py
imports: from setuptools import find_packages
  import argparse
  import importlib
  import inspect
  import json
  import logging
  import os
  from pkgutil import iter_modules
  import sys
label_desc: Use image node_id 2 for calling a global function with example usage: update_class(func, funcs, class_name, full_name) without return types