code: def get_func_name(func):
      """Returns name of passed callable."""
      _, func = tf_decorator.unwrap(func)
      if callable(func):
          if tf_inspect.isfunction(func):
              return func.__name__
          elif tf_inspect.ismethod(func):
              return "%s.%s" % (
                  func.__self__.__class__.__name__,
                  func.__func__.__name__,
              )
          else:  # Probably a class instance with __call__
              return str(type(func))
      else:
          raise ValueError(
              "Argument `func` must be a callable. "
              f"Received func={func} (of type {type(func)})"
          )
  
file_path: tensorflow-upstream/tensorflow/python/util/function_utils.py
imports: import functools
  from tensorflow.core.protobuf import config_pb2
  from tensorflow.python.util import tf_decorator
  from tensorflow.python.util import tf_inspect
label_desc: Use image node_id 5 for calling a global function with example usage: get_func_name(func) and returns: func, unknown, str