code: def get_call_signature(funcdef, width=72, call_string=None):
      """
      Generate call signature of this function.
  
      :param width: Fold lines if a line is longer than this value.
      :type width: int
      :arg func_name: Override function name when given.
      :type func_name: str
  
      :rtype: str
      """
      # Lambdas have no name.
      if call_string is None:
          if funcdef.type == "lambdef":
              call_string = "<lambda>"
          else:
              call_string = funcdef.name.value
      if funcdef.type == "lambdef":
          p = (
              "("
              + "".join(
                  param.get_code() for param in funcdef.get_params()
              ).strip()
              + ")"
          )
      else:
          p = funcdef.children[2].get_code()
      p = re.sub(r"\s+", " ", p)
      if funcdef.annotation:
          rtype = " ->" + funcdef.annotation.get_code()
      else:
          rtype = ""
      code = call_string + p + rtype
  
      return "\n".join(textwrap.wrap(code, width))
  
file_path: catboost/contrib/python/jedi/py2/jedi/parser_utils.py
imports: import re
  import textwrap
  from inspect import cleandoc
  from parso.python import tree
  from parso.cache import parser_cache
  from jedi._compatibility import literal_eval, force_unicode
label_desc: Use image node_id 8 for calling a global function with example usage: get_call_signature(funcdef, width, call_string) and returns: str