U
    
W[¾  ã                   @   s\   d Z ddlmZmZ ddgZddlZddlZddlm	Z	 G dd„ de	ƒZ
G dd„ de
ƒZdS )	z/
Testing helpers related to the module system.
é    )ÚdivisionÚabsolute_importÚ	NoReactorÚAlternateReactorN)ÚSetAsideModulec                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	r   zc
    Context manager that uninstalls the reactor, if any, and then restores it
    afterwards.
    c                 C   s   t  | d¡ d S ©Nztwisted.internet.reactor)r   Ú__init__©Úself© r   úE/usr/lib/python3/dist-packages/twisted/internet/test/modulehelpers.pyr      s    zNoReactor.__init__c                 C   s   t  | ¡ d| jkrtj`d S r   )r   Ú	__enter__ÚmodulesÚtwistedÚinternetÚreactorr	   r   r   r   r      s    

zNoReactor.__enter__c                 C   sT   t  | |||¡ | j dd ¡}|d k	r0|tj_n z
tj`W n tk
rN   Y nX d S r   )r   Ú__exit__r   Úgetr   r   r   ÚAttributeError)r
   ZexcTypeZexcValueÚ	tracebackr   r   r   r   r   #   s    

zNoReactor.__exit__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r   r      s   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )r   zd
    A context manager which temporarily installs a different object as the
    global reactor.
    c                 C   s   t  | ¡ || _dS )zN
        @param reactor: Any object to install as the global reactor.
        N)r   r   Ú	alternate)r
   r   r   r   r   r   8   s    
zAlternateReactor.__init__c                 C   s$   t  | ¡ | jtj_| jtjd< d S r   )r   r   r   r   r   r   Úsysr   r	   r   r   r   r   @   s    

zAlternateReactor.__enter__N)r   r   r   r   r   r   r   r   r   r   r   2   s   )r   Z
__future__r   r   Ú__all__r   Ztwisted.internetr   Ztwisted.test.test_twistedr   r   r   r   r   r   r   Ú<module>   s   