class_docstr: `FunctionMaker` is the class to `create` `Function` instances.
  
  This class has the fgraph, the optimizer, and the linker. When
  copying a `Function`, there is no need to duplicate the
  `FunctionMaker` instance. Deepcopy still copies both, which can
  variable in re-compilation.
  
  Parameters
  ----------
  inputs : list of SymbolicInput instances
  outputs : list of SymbolicOutput instances
      Outputs may also be a single Variable (not a list), in which case the
      functions produced by FunctionMaker will return their output value
      directly.
  mode : Mode instance
      Telling FunctionMaker how to optimize and link. None means to use the
      `config.mode`.
  accept_inplace : bool
      True iff it is acceptable to have inplace operations in the graph from
      the inputs to the outputs.
  on_unused_input : {'raise', 'warn', 'ignore', None}
      What to do if a variable in the 'inputs' list is not used in the graph.
      Possible values are:
      - 'raise': raise an error
      - 'warn': log a warning
      - 'ignore': do not do anything
      - None: Use the value in the Theano flags on_unused_input.
  name : str
      An optional name for this function. If used, the profile mode will
      print the time spent in this function.
class_docstr_tok: ["`","FunctionMaker","`","is","the","class","to","`","create","`","`","Function","`","instances",".","This","class","has","the","fgraph",",","the","optimizer",",","and","the","linker",".","When","copying","a","`","Function","`",",","there","is","no","need","to","duplicate","the","`","FunctionMaker","`","instance",".","Deepcopy","still","copies","both",",","which","can","variable","in","re-compilation",".","Parameters","--","--","--","--","--","inputs",":","list","of","SymbolicInput","instances","outputs",":","list","of","SymbolicOutput","instances","Outputs","may","also","be","a","single","Variable","(","not","a","list",")",",","in","which","case","the","functions","produced","by","FunctionMaker","will","return","their","output","value","directly",".","mode",":","Mode","instance","Telling","FunctionMaker","how","to","optimize","and","link",".","None","means","to","use","the","`","config.mode","`",".","accept_inplace",":","bool","True","iff","it","is","acceptable","to","have","inplace","operations","in","the","graph","from","the","inputs","to","the","outputs",".","on_unused_input",":","{","'raise","'",",","'warn","'",",","'ignore","'",",","None","}","What","to","do","if","a","variable","in","the","'inputs","'","list","is","not","used","in","the","graph",".","Possible","values","are",":","-","'raise","'",":","raise","an","error","-","'warn","'",":","log","a","warning","-","'ignore","'",":","do","not","do","anything","-","None",":","Use","the","value","in","the","Theano","flags","on_unused_input",".","name",":","str","An","optional","name","for","this","function",".","If","used",",","the","profile","mode","will","print","the","time","spent","in","this","function","."]
code: def wrap_in(input):
      if isinstance(input, (SymbolicInput)):
          return input
      elif isinstance(input, gof.Variable):
          # r -> SymbolicInput(variable=r)
          return SymbolicInput(input)
      elif isinstance(input, (list, tuple)):
          # (r, u) -> SymbolicInput(variable=r, update=u)
          if len(input) == 2:
              return SymbolicInput(input[0], update=input[1])
          else:
              raise TypeError(
                  "Expected two elements in the list or tuple.", input
              )
      else:
          raise TypeError(
              "Unknown input type: %s (%s), expected Variable "
              "instance",
              type(input),
              input,
          )
  
imports: from __future__ import absolute_import, print_function, division
  import copy
  from six import string_types, iteritems, iterkeys
  from six.moves import xrange
  import six.moves.copyreg
  import six.moves.cPickle
  from itertools import chain
  import time
  import warnings
  import numpy
  import theano
  from theano import config, gof
  from theano.compat import izip
  from theano.gof import graph
  import theano.compile.profiling
  from theano.compile.io import In, SymbolicInput, SymbolicOutput
  from theano.compile.ops import deep_copy_op, view_op
  from theano.gof.graph import is_same_graph
  from theano.gof.op import ops_with_inner_function
  import logging
label_desc: Use image node_id 1 for calling the FunctionMaker obj's underlying member method code with example usage: obj.wrap_in(input) and returns: input, SymbolicInput, SymbolicInput