code: def usage(obj):
      str(obj)  # In case it's lazy, this will load it.
  
      if not isinstance(obj, type):
          obj = obj.__class__
  
      print(f"{obj.__name__} supports the following operations:")
      for name, method in sorted(pydoc.allmethods(obj).items()):
          if name.startswith("_"):
              continue
          if getattr(method, "__deprecated__", False):
              continue
  
          try:
              sig = str(inspect.signature(method))
          except ValueError as e:
              # builtins sometimes don't support introspection
              if "builtin" in str(e):
                  continue
              else:
                  raise
  
          args = sig.lstrip("(").rstrip(")").split(", ")
          meth = inspect.getattr_static(obj, name)
          if isinstance(meth, (classmethod, staticmethod)):
              name = f"cls.{name}"
          elif args and args[0] == "self":
              name = f"self.{name}"
              args.pop(0)
          print(
              textwrap.fill(
                  f"{name}({', '.join(args)})",
                  initial_indent="  - ",
                  subsequent_indent=" " * (len(name) + 5),
              )
          )
  
imports: import inspect
  import locale
  import os
  import pydoc
  import re
  import textwrap
  import unicodedata
  import warnings
  from collections import defaultdict, deque
  from itertools import chain, combinations, islice, tee
  from pprint import pprint
  from urllib.request import HTTPPasswordMgrWithDefaultRealm, ProxyBasicAuthHandler, ProxyDigestAuthHandler, ProxyHandler, build_opener, getproxies, install_opener
  from nltk.collections import *
  from nltk.internals import deprecated, raise_unorderable_types, slice_bounds
label_desc: Use image node_id 1 for calling a global function with example usage: usage(obj) without return types