code: def _get_wrapped(obj):
      """Get the original object if wrapped in one or more @decorators
  
      Some objects automatically construct similar objects on any unrecognised
      attribute access (e.g. unittest.mock.call). To protect against infinite loops,
      this will arbitrarily cut off after 100 levels of obj.__wrapped__
      attribute access. --TK, Jan 2016
      """
      orig_obj = obj
      i = 0
      while safe_hasattr(obj, "__wrapped__"):
          obj = obj.__wrapped__
          i += 1
          if i > 100:
              # __wrapped__ is probably a lie, so return the thing we started with
              return orig_obj
      return obj
  
imports: from __future__ import print_function
  import inspect
  import linecache
  import warnings
  import os
  from textwrap import dedent
  import types
  import io
  from IPython.core import page
  from IPython.lib.pretty import pretty
  from IPython.testing.skipdoctest import skip_doctest_py3
  from IPython.utils import PyColorize
  from IPython.utils import openpy
  from IPython.utils import py3compat
  from IPython.utils.dir2 import safe_hasattr
  from IPython.utils.path import compress_user
  from IPython.utils.text import indent
  from IPython.utils.wildcard import list_namespace
  from IPython.utils.coloransi import TermColors, ColorScheme, ColorSchemeTable
  from IPython.utils.py3compat import cast_unicode, string_types, PY3
  from IPython.utils.signatures import signature
  from IPython.utils.colorable import Colorable
  from pygments import highlight
  from pygments.formatters import HtmlFormatter
label_desc: Use image node_id 10 for calling a global function with example usage: _get_wrapped(obj) and returns: obj, orig_obj