code: def _whichmodule(obj, name):
      """Find the module an object belongs to.
  
      This function differs from ``pickle.whichmodule`` in two ways:
      - it does not mangle the cases where obj's module is __main__ and obj was
        not found in any module.
      - Errors arising during module introspection are ignored, as those errors
        are considered unwanted side effects.
      """
      if sys.version_info[:2] < (3, 7) and isinstance(
          obj, typing.TypeVar
      ):  # pragma: no branch  # noqa
          # Workaround bug in old Python versions: prior to Python 3.7,
          # T.__module__ would always be set to "typing" even when the TypeVar T
          # would be defined in a different module.
          if name is not None and getattr(typing, name, None) is obj:
              # Built-in TypeVar defined in typing such as AnyStr
              return "typing"
          else:
              # User defined or third-party TypeVar: __module__ attribute is
              # irrelevant, thus trigger a exhaustive search for obj in all
              # modules.
              module_name = None
      else:
          module_name = getattr(obj, "__module__", None)
  
      if module_name is not None:
          return module_name
      # Protect the iteration by using a copy of sys.modules against dynamic
      # modules that trigger imports of other modules upon calls to getattr or
      # other threads importing at the same time.
      for module_name, module in sys.modules.copy().items():
          # Some modules such as coverage can inject non-module objects inside
          # sys.modules
          if (
              module_name == "__main__"
              or module is None
              or not isinstance(module, types.ModuleType)
          ):
              continue
          try:
              if _getattribute(module, name)[0] is obj:
                  return module_name
          except Exception:
              pass
      return None
  
imports: import builtins
  import dis
  import opcode
  import platform
  import sys
  import types
  import weakref
  import uuid
  import threading
  import typing
  import warnings
  from .compat import pickle
  from collections import OrderedDict
  from typing import ClassVar, Generic, Union, Tuple, Callable
  from pickle import _getattribute
  from importlib._bootstrap import _find_spec
label_desc: Use image node_id 7 for calling a global function with example usage: _whichmodule(obj, name) and returns: None, module_name, str, module_name