
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ·>�Yü  ã                   @   s&   d dl Z dZG dd„ dƒZdd„ ZdS )é    Nz1.3.0c                   @   sn   e Zd ZdZddœdd„Zdd„ Zdd	„ Zejd
d„ ƒZ	ejdd„ ƒZ
edd„ ƒZdd„ Zdd„ Zdd„ ZdS )Útimeouta—  timeout context manager.

    Useful in cases when you want to apply timeout logic around block
    of code or in cases when asyncio.wait_for is not suitable. For example:

    >>> with timeout(0.001):
    ...     async with aiohttp.get('https://github.com') as r:
    ...         await r.text()


    timeout - value in seconds or None to disable timeout logic
    loop - asyncio compatible event loop
    N©Úloopc                C   sF   |d k	r|dkrd }|| _ |d kr*t ¡ }|| _d | _d| _d | _d S )Nr   F)Ú_timeoutÚasyncioZget_event_loopÚ_loopÚ_taskÚ
_cancelledÚ_cancel_handler)Úselfr   r   © r   úG/opt/alt/python38/lib/python3.8/site-packages/async_timeout/__init__.pyÚ__init__   s    ztimeout.__init__c                 C   s   |   ¡ S ©N©Ú	_do_enter©r   r   r   r   Ú	__enter__    s    ztimeout.__enter__c                 C   s   |   |¡ d S r   ©Ú_do_exit©r   Úexc_typeZexc_valZexc_tbr   r   r   Ú__exit__#   s    ztimeout.__exit__c                 C   s   |   ¡ S r   r   r   r   r   r   Ú
__aenter__&   s    ztimeout.__aenter__c                 C   s   |   |¡ d S r   r   r   r   r   r   Ú	__aexit__*   s    ztimeout.__aexit__c                 C   s   | j S r   )r	   r   r   r   r   Úexpired.   s    ztimeout.expiredc                 C   s@   | j d k	r<t| jƒ| _| jd kr(tdƒ‚| j | j | j¡| _| S )Nz4Timeout context manager should be used inside a task)r   Úcurrent_taskr   r   ÚRuntimeErrorZ
call_laterÚ_cancel_taskr
   r   r   r   r   r   2   s    

 ÿztimeout._do_enterc                 C   sP   |t jkr"| jr"d | _d | _t j‚| jd k	rF| jd k	rF| j ¡  d | _d | _d S r   )r   ZCancelledErrorr	   r
   r   ÚTimeoutErrorr   Úcancel)r   r   r   r   r   r   <   s    
ztimeout._do_exitc                 C   s   | j  ¡  d| _d S )NT)r   r    r	   r   r   r   r   r   F   s    
ztimeout._cancel_task)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   Ú	coroutiner   r   Úpropertyr   r   r   r   r   r   r   r   r      s   




r   c                 C   s,   t jj| d�}|d kr(t| dƒr(|  ¡ }|S )Nr   r   )r   ZTaskr   Úhasattr)r   Ztaskr   r   r   r   K   s
    
r   )r   Ú__version__r   r   r   r   r   r   Ú<module>   s   D