code: def format_signature(func, *args, **kwargs):
      # XXX: Should this use inspect.formatargvalues/formatargspec?
      module, name = get_func_name(func)
      module = [m for m in module if m]
      if module:
          module.append(name)
          module_path = ".".join(module)
      else:
          module_path = name
      arg_str = list()
      previous_length = 0
      for arg in args:
          formatted_arg = _format_arg(arg)
          if previous_length > 80:
              formatted_arg = "\n%s" % formatted_arg
          previous_length = len(formatted_arg)
          arg_str.append(formatted_arg)
      arg_str.extend(
          ["%s=%s" % (v, _format_arg(i)) for v, i in kwargs.items()]
      )
      arg_str = ", ".join(arg_str)
  
      signature = "%s(%s)" % (name, arg_str)
      return module_path, signature
  
file_path: catboost/contrib/python/joblib/joblib/func_inspect.py
imports: import inspect
  import warnings
  import re
  import os
  import collections
  from itertools import islice
  from tokenize import open
  from .logger import pformat
label_desc: Use image node_id 8 for calling a global function with example usage: format_signature(func) and returns: module_path,  signature