singledispatch decorate of both functools.singledispatch and func

def singledispatch(*, nargs=None, nouts=None, ndefs=None):
    """
        singledispatch decorate of both functools.singledispatch and func
    """

    def wrapper(f):
        return wraps(f)(SingleDispatchFunction(f, nargs=nargs, nouts=nouts, ndefs=ndefs))

    return wrapper