
6l²WΝ  γ               @   sB   Gd  d   d  Z  d d   Z e d k r2 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                 s3    j  r   |  |   S j 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   s7   d |  _  x' |  j D] \ } } } | | |   q Wd  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                 s   t  d  }     f d d   }   f d d   } d d     |  d d	     d
 d    |  d d     |   |   |  j   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   )Ϊafterr   r   r   )r   r   r   r   r   Ϊtest   s    r   Ϊ__main__Ϊ	afterwardN)r   r   r   r   r   r   r   r   Ϊ<module>   s   