multidispatch decorate of both functools.singledispatch and func

def multidispatch(*, nargs=None, nouts=None):
    """
        multidispatch decorate of both functools.singledispatch and func
    """
    def wrapper(f):
        return wraps(f)(MultiDispatchFunction(f, nargs=nargs, nouts=nouts))

    return wrapper