§
    ›ã hp  ã                   óH   — d dl Z d dlmZ d dlmZmZmZ  G d„ d¦  «        ZdS )é    N)ÚTracebackType)ÚAnyÚOptionalÚTypec            	       ó"  — e Zd ZdZddœd ee         deej                 ddfd„Zdd„Z	de
e         d	ed
edee         fd„Zdd„Zde
e         d	ed
eddfd„Zedefd„¦   «         Zedee         fd„¦   «         Zdd„Zde
e         ddf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)Úloopr	   Úreturnc                ó„   — || _         |€t          j        ¦   «         }|| _        d | _        d| _        d | _        d | _        d S )NF)Ú_timeoutÚasyncioÚget_event_loopÚ_loopÚ_taskÚ
_cancelledÚ_cancel_handlerÚ
_cancel_at)Úselfr   r	   s      úK/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/asgiref/timeout.pyÚ__init__ztimeout.__init__   sF   € ð  ˆŒØˆ<ÝÔ)Ñ+Ô+ˆDØˆŒ
ØˆŒ
ØˆŒØ#ˆÔØˆŒˆˆó    c                 ó*   — |                       ¦   «         S ©N©Ú	_do_enter©r   s    r   Ú	__enter__ztimeout.__enter__,   s   € Ø~Š~ÑÔÐr   Úexc_typeÚexc_valÚexc_tbc                 ó0   — |                       |¦  «         d S r   ©Ú_do_exit©r   r   r   r    s       r   Ú__exit__ztimeout.__exit__/   s   € ð 	ŠhÑÔÐØˆtr   c              ƒ   ó.   K  — |                       ¦   «         S r   r   r   s    r   Ú
__aenter__ztimeout.__aenter__8   s   è è € Ø~Š~ÑÔÐr   c              ƒ   ó4   K  — |                       |¦  «         d S r   r"   r$   s       r   Ú	__aexit__ztimeout.__aexit__;   s    è è € ð 	ŠhÑÔÐÐÐr   c                 ó   — | j         S r   )r   r   s    r   Úexpiredztimeout.expiredC   s
   € àŒÐr   c                 ór   — | j         /t          | j         | j                             ¦   «         z
  d¦  «        S d S )Ng        )r   Úmaxr   Útimer   s    r   Ú	remainingztimeout.remainingG   s2   € àŒ?Ð&Ýt”¨¬¯ªÑ):Ô):Ñ:¸CÑ@Ô@Ð@à4r   c                 óx  — | j         €| S t          j        | j        ¦  «        | _        | j        €t          d¦  «        ‚| j         dk    r!| j                             | j        ¦  «         | S | j                             ¦   «         | j         z   | _	        | j         
                    | j	        | j        ¦  «        | _        | S )Nz4Timeout context manager should be used inside a taskr   )r   r   Úcurrent_taskr   r   ÚRuntimeErrorÚ	call_soonÚ_cancel_taskr.   r   Úcall_atr   r   s    r   r   ztimeout._do_enterN   s­   € ð Œ=Ð ØˆKåÔ)¨$¬*Ñ5Ô5ˆŒ
ØŒ:ÐÝØIñô ð ð Œ=˜AÒÐØŒJ× Ò  Ô!2Ñ3Ô3Ð3ØˆKàœ*Ÿ/š/Ñ+Ô+¨d¬mÑ;ˆŒØ#œz×1Ò1°$´/À4ÔCTÑUÔUˆÔØˆr   c                 óÎ   — |t           j        u r!| j        rd | _        d | _        t           j        ‚| j        '| j         | j                             ¦   «          d | _        d | _        d S r   )r   ÚCancelledErrorr   r   r   ÚTimeoutErrorr   Úcancel)r   r   s     r   r#   ztimeout._do_exitb   sh   € Ø•wÔ-Ð-Ð-°$´/Ð-Ø#'ˆDÔ ØˆDŒJÝÔ&Ð&ØŒ=Ð$¨Ô)=Ð)IØÔ ×'Ò'Ñ)Ô)Ð)Ø#'ˆDÔ ØˆŒ
Øˆtr   c                 óX   — | j         "| j                              ¦   «          d| _        d S d S )NT)r   r9   r   r   s    r   r4   ztimeout._cancel_taskm   s1   € ØŒ:Ð!ØŒJ×ÒÑÔÐØ"ˆDŒOˆOˆOð "Ð!r   )r
   r   )r
   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úfloatr   ÚAbstractEventLoopr   r   r   ÚBaseExceptionr   Úboolr%   r'   r)   Úpropertyr+   r/   r   r#   r4   © r   r   r   r      s´  € € € € € ðð ð$ 59ð	ð ð à˜%”ðð wÔ0Ô1ð	ð
 
ðð ð ð ð ð  ð  ð  ðà}Ô%ðð ðð ð	ð
 
$Œðð ð ð ð ð  ð  ð  ð à}Ô%ð ð ð ð ð	 ð
 
ð ð  ð  ð  ð ð˜ð ð ð ñ „Xðð ð˜8 Eœ?ð ð ð ñ „Xððð ð ð ð(	  mÔ!4ð 	¸ð 	ð 	ð 	ð 	ð#ð #ð #ð #ð #ð #r   r   )r   Útypesr   Útypingr   r   r   r   rD   r   r   ú<module>rG      s|   ðð €€€Ø Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &ðb#ð b#ð b#ð b#ð b#ñ b#ô b#ð b#ð b#ð b#r   