code: def get_class_members_recursive(obj):
      """Find all the field names for a given class and their default value."""
      ret = dict(vars(obj.Config if hasattr(obj, "Config") else obj))
      for b in getattr(obj, "__bases__", []):
          # Only pytext configs.
          # Exclude Module because it adds load_path and save_path.
          if b.__module__.startswith("pytext") and b is not Module:
              for k, v in get_class_members_recursive(b).items():
                  # Add missing members, don't override subclass with super
                  if k not in ret:
                      ret[k] = v
      return ret
  
file_path: pytext/pytext/utils/documentation.py
imports: from enum import Enum
  from inspect import getmembers, isclass, isfunction
  from sys import modules
  from typing import Union
  import torch
  from pytext.config.component import Component, get_component_name
  from pytext.config.pytext_config import ConfigBase
  from pytext.models.module import Module
label_desc: Use image node_id 1 for calling a global function with example usage: get_class_members_recursive(obj) and returns: ret