class_docstr: Build a basic PyTensor Op around a function.
  
  Since the resulting Op is very basic and is missing most of the
  optional functionalities, some optimizations may not apply.  If you
  want to help, you can supply an infer_shape function that computes
  the shapes of the output given the shapes of the inputs.
  
  Also the gradient is undefined in the resulting op and PyTensor will
  raise an error if you attempt to get the gradient of a graph
  containing this op.
code: def __str__(self):
      return "FromFunctionOp{%s}" % self.__fn.__name__
  
imports: import copy
  import pickle
  import warnings
  from pytensor.graph.basic import Apply
  from pytensor.graph.op import Op
  from pytensor.link.c.op import COp
  from pytensor.link.c.type import CType
label_desc: Use image node_id 4 for calling the FromFunctionOp obj's underlying member method code with example usage: obj.__str__() and returns: unknown