(func)
return wrapped
A decorator which ensures that once a method has been marked as resolved
    (via Class.__resolved)) will then propagate the attribute (function) call
    upstream.
A decorator which ensures that once a method has been marked as resolved
    (via Class.__resolved)) will then propagate the attribute (function) call
    upstream.
A decorator which ensures that once a method has been marked as resolved ( via Class . __resolved )) will then propagate the attribute ( function ) call upstream .
def promise_method(func):
    """
    A decorator which ensures that once a method has been marked as resolved
    (via Class.__resolved)) will then propagate the attribute (function) call
    upstream.
    """
    name = func.__name__

    @wraps(func)
    def wrapped(self, *args, **kwargs):
        cls_name = type(self).__name__
        if getattr(self, '_%s__resolved' % (cls_name,)):
            return getattr(getattr(self, '_%s__wrapped' % (cls_name,)), name)(*args, **kwargs)
        return func(self, *args, **kwargs)
    return wrapped
def promise_method ( func ) : name = func . __name__ @ wraps ( func ) def wrapped ( self , * args , * * kwargs ) : cls_name = type ( self ) . __name__ if getattr ( self , '_%s__resolved' % ( cls_name , ) ) : return getattr ( getattr ( self , '_%s__wrapped' % ( cls_name , ) ) , name ) ( * args , * * kwargs ) return func ( self , * args , * * kwargs ) return wrapped