docs: def func(nargs: Optional[int] = None, nouts: Optional[int] = None, ndefs: Optional[int] = None):
      """
          decorates normal function to Function with (optional) number of arguments and outputs.
  
          : func(nargs: Optional[int] = None, nouts: Optional[int] = None, ndefs: Optional[int] = None)
      """
      return lambda f: wraps(f)(WrappedFunction(f, nargs=nargs, nouts=nouts, ndefs=ndefs))