environment/lib/python2.7/site-packages/IPython/external/decorator/_decorator.py
def decorator(caller, func=None):
    """
    decorator(caller) converts a caller function into a decorator;
    decorator(caller, func) decorates a function using a caller.
    """
    if func is not None: # returns a decorated function
        evaldict = func.func_globals.copy()
        evaldict['_call_'] = caller
        evaldict['_func_'] = func
        return FunctionMaker.create(
            func, "return _call_(_func_, %(shortsignature)s)",
            evaldict, undecorated=func, __wrapped__=func)
    else: # returns a decorator
        if isinstance(caller, partial):
            return partial(decorator, caller)
        # otherwise assume caller is a function
        first = inspect.getargspec(caller)[0][0] # first arg
        evaldict = caller.func_globals.copy()
        evaldict['_call_'] = caller
        evaldict['decorator'] = decorator
        return FunctionMaker.create(
            '%s(%s)' % (caller.__name__, first),
            'return decorator(_call_, %s)' % first,
            evaldict, undecorated=caller, __wrapped__=caller,
            doc=caller.__doc__, module=caller.__module__)
def decorator(caller, func=None):
    """
    decorator(caller) converts a caller function into a decorator;
    decorator(caller, func) decorates a function using a caller.
    """
    if func is not None: # returns a decorated function
        evaldict = func.func_globals.copy()
        evaldict['_call_'] = caller
        evaldict['_func_'] = func
        return FunctionMaker.create(
            func, "return _call_(_func_, %(shortsignature)s)",
            evaldict, undecorated=func, __wrapped__=func)
    else: # returns a decorator
        if isinstance(caller, partial):
            return partial(decorator, caller)
        # otherwise assume caller is a function
        first = inspect.getargspec(caller)[0][0] # first arg
        evaldict = caller.func_globals.copy()
        evaldict['_call_'] = caller
        evaldict['decorator'] = decorator
        return FunctionMaker.create(
            '%s(%s)' % (caller.__name__, first),
            'return decorator(_call_, %s)' % first,
            evaldict, undecorated=caller, __wrapped__=caller,
            doc=caller.__doc__, module=caller.__module__)
def decorator ( caller , func = None ) : if func is not None : # returns a decorated function evaldict = func . func_globals . copy ( ) evaldict [ '_call_' ] = caller evaldict [ '_func_' ] = func return FunctionMaker . create ( func , "return _call_(_func_, %(shortsignature)s)" , evaldict , undecorated = func , __wrapped__ = func ) else : # returns a decorator if isinstance ( caller , partial ) : return partial ( decorator , caller ) # otherwise assume caller is a function first = inspect . getargspec ( caller ) [ 0 ] [ 0 ] # first arg evaldict = caller . func_globals . copy ( ) evaldict [ '_call_' ] = caller evaldict [ 'decorator' ] = decorator return FunctionMaker . create ( '%s(%s)' % ( caller . __name__ , first ) , 'return decorator(_call_, %s)' % first , evaldict , undecorated = caller , __wrapped__ = caller , doc = caller . __doc__ , module = caller . __module__ )
decorator(caller) converts a caller function into a decorator;
    decorator(caller, func) decorates a function using a caller.
decorator ( caller ) converts a caller function into a decorator ; decorator ( caller func ) decorates a function using a caller .