docstr: Returns the function definition code as a string.
docstr_tok: ["Returns","the","function","definition","code","as","a","string","."]
code: def doprint(self, funcname, args, expr, *, cses=()):
      """
      Returns the function definition code as a string.
      """
      from sympy.core.symbol import Dummy
  
      funcbody = []
  
      if not iterable(args):
          args = [args]
  
      if cses:
          subvars, subexprs = zip(*cses)
          exprs = [expr] + list(subexprs)
          argstrs, exprs = self._preprocess(args, exprs)
          expr, subexprs = exprs[0], exprs[1:]
          cses = zip(subvars, subexprs)
      else:
          argstrs, expr = self._preprocess(args, expr)
  
      # Generate argument unpacking and final argument list
      funcargs = []
      unpackings = []
  
      for argstr in argstrs:
          if iterable(argstr):
              funcargs.append(self._argrepr(Dummy()))
              unpackings.extend(
                  self._print_unpacking(argstr, funcargs[-1])
              )
          else:
              funcargs.append(argstr)
  
      funcsig = "def {}({}):".format(funcname, ", ".join(funcargs))
  
      # Wrap input arguments before unpacking
      funcbody.extend(self._print_funcargwrapping(funcargs))
  
      funcbody.extend(unpackings)
  
      for s, e in cses:
          if e is None:
              funcbody.append("del {}".format(self._exprrepr(s)))
          else:
              funcbody.append(
                  "{} = {}".format(self._exprrepr(s), self._exprrepr(e))
              )
  
      str_expr = _recursive_to_string(self._exprrepr, expr)
  
      if "\n" in str_expr:
          str_expr = "({})".format(str_expr)
      funcbody.append("return {}".format(str_expr))
  
      funclines = [funcsig]
      funclines.extend(["    " + line for line in funcbody])
  
      return "\n".join(funclines) + "\n"
  
imports: from __future__ import annotations
  from typing import Any
  import builtins
  import inspect
  import keyword
  import textwrap
  import linecache
  from sympy.external import import_module
  from sympy.utilities.exceptions import sympy_deprecation_warning
  from sympy.utilities.decorator import doctest_depends_on
  from sympy.utilities.iterables import is_sequence, iterable, NotIterable, flatten
  from sympy.utilities.misc import filldedent
label_desc: Use image node_id 2 for calling the _EvaluatorPrinter obj's underlying member method code with example usage: obj.doprint(funcname, args, expr) and returns: unknown