code: def singledispatch(*, nargs=None, nouts=None, ndefs=None):
      
  
      def wrapper(f):
          return wraps(f)(SingleDispatchFunction(f, nargs=nargs, nouts=nouts, ndefs=ndefs))
  
      return wrapper
docs: singledispatch decorate of both functools.singledispatch and func