B
    6l²WΝ  γ               @   s0   G d d dZ dd Zedkr$e  e dZdS )c               @   s(   e Zd ZdZdd Zdd Zdd ZdS )	ΪAfterFc             C   s   || _ g | _d S )N)ΪnameΪqueue)Ϊselfr   © r   ϊ(/home/creation/stories/code/afterward.pyΪ__init__   s    zAfter.__init__c                s    fdd}|S )Nc                 s&   j r | |S j  | |g‘ d S )N)Ϊ
committingr   Ϊappend)ΪaΪkw)Ϊfr   r   r   Ϊwrapper	   s    
zAfter.__call__.<locals>.wrapperr   )r   r   r   r   )r   r   r   Ϊ__call__   s    zAfter.__call__c             C   s*   d| _ x| jD ]\}}}||| qW d S )NT)r   r   )r   r   r
   r   r   r   r   Ϊcommit   s    zAfter.commitN)Ϊ__name__Ϊ
__module__Ϊ__qualname__r   r   r   r   r   r   r   r   r      s   r   c                 sd   t d}  fdd}fdd}dd  | dd	 d
d | dd |  |  |  ‘  d S )NZstuffc                  s   t d   r  d S )Nzin a1)Ϊprintr   )Ϊb2Ϊb3r   r   Ϊa1   s    ztest.<locals>.a1c                  s   t d   r  d S )Nzin a2)r   r   )Ϊb4Ϊb5r   r   Ϊa2   s    ztest.<locals>.a2c               S   s   t d dS )Nz,b2 can't be postponed, since a1 relies on itT)r   r   r   r   r   r       s    ztest.<locals>.b2c               S   s   t d d S )Nz%b3 must come after all, but before b5)r   r   r   r   r   r   #   s    ztest.<locals>.b3c               S   s   t d dS )Nz,b4 can't be postponed, since a2 relies on itT)r   r   r   r   r   r   &   s    ztest.<locals>.b4c               S   s   t d d S )Nzb5 must come after all)r   r   r   r   r   r   )   s    ztest.<locals>.b5)r   r   )Zafterr   r   r   )r   r   r   r   r   Ϊtest   s    r   Ϊ__main__Ϊ	afterwardN)r   r   r   r   r   r   r   r   Ϊ<module>   s   