def unidec(fnx):
    '''
    @unidec
    def render(view, request, flag=True):
        pass

    @render
    def first_view(request):
        pass

    @render(flag=False)
    def second_view(request):
        pass
    '''

    return lambda *ax, **kx: (
        wraps(ax[0])(lambda *ay, **ky: fnx(ax[0], *ay, **ky)) \
        if len(ax) == 1 and not kx and callable(ax[0]) else \
        lambda fny: wraps(fny)(lambda *ay, **ky: \
        fnx(fny, *ay, **dict(kx, **ky)) if not ax else throw(
            TypeError('wrapper get *args'))))