class_docstr: ``interact`` can be used with regular functions. However, when they are connected to
  changed or changing signals, there is no way to access these connections later to
  i.e. disconnect them temporarily. This utility class wraps a normal function but
  can provide an external scope for accessing the hooked up parameter signals.
docstr: Wraps a callable function in a way that forwards Parameter arguments as keywords
  
  Parameters
  ----------
  function: callable
      Function to wrap
  closures: dict[str, callable]
      Arguments that shouldn't be constant, but can't be represented as a parameter.
      See the rst docs for more information.
  extra: dict
      extra keyword arguments to pass to ``function`` when this wrapper is called
docstr_tok: ["Wraps","a","callable","function","in","a","way","that","forwards","Parameter","arguments","as","keywords","Parameters","--","--","--","--","--","function",":","callable","Function","to","wrap","closures",":","dict","[","str",",","callable","]","Arguments","that","should","n't","be","constant",",","but","ca","n't","be","represented","as","a","parameter",".","See","the","rst","docs","for","more","information",".","extra",":","dict","extra","keyword","arguments","to","pass","to","``","function","``","when","this","wrapper","is","called"]
code: def __init__(self, function, *, closures=None, **extra):
      """
      Wraps a callable function in a way that forwards Parameter arguments as keywords
  
      Parameters
      ----------
      function: callable
          Function to wrap
      closures: dict[str, callable]
          Arguments that shouldn't be constant, but can't be represented as a parameter.
          See the rst docs for more information.
      extra: dict
          extra keyword arguments to pass to ``function`` when this wrapper is called
      """
      super().__init__()
      self.parameters = {}
      self.extra = extra
      self.function = function
      if closures is None:
          closures = {}
      self.closures = closures
      self._disconnected = False
      self.parametersNeedRunKwargs = False
      self.parameterCache = {}
  
      # No need for wrapper __dict__ to function as function.__dict__, since
      # Only __doc__, __name__, etc. attributes are required
      functools.update_wrapper(self, function, updated=())
  
imports: import contextlib
  import functools
  import inspect
  import pydoc
  from .None import Parameter
  from .parameterTypes import ActionGroupParameter
  from ..None import functions
label_desc: Use image node_id 1 to create a new InteractiveFunction object  with example: obj = InteractiveFunction(function)