§
    (¶ÕiÌ  ã                   óÞ   — d dl Z d dlmZ d dlmZmZmZ ddlmZ ddlm	Z	 ddlm
Z
 dZ G d	„ d
e j        ¦  «        Ze G d„ d¦  «        ¦   «         Zdee         defd„Zdee         defd„ZdS )é    N)ÚTracebackType)ÚfinalÚOptionalÚTypeé   )Úevents)Ú
exceptions)Útasks)ÚTimeoutÚtimeoutÚ
timeout_atc                   ó"   — e Zd ZdZdZdZdZdZdS )Ú_StateÚcreatedÚactiveÚexpiringÚexpiredÚfinishedN)Ú__name__Ú
__module__Ú__qualname__ÚCREATEDÚENTEREDÚEXPIRINGÚEXPIREDÚEXITED© ó    ú'/usr/lib/python3.11/asyncio/timeouts.pyr   r      s'   € € € € € Ø€GØ€GØ€HØ€GØ€F€F€Fr   r   c            	       óÚ   — e Zd Zdee         ddfd„Zdee         fd„Zdee         ddfd„Zdefd„Z	de
fd„Zdd	„Zd
eee                  dee         dee         dee         fd„Zdd„ZdS )r   ÚwhenÚreturnNc                 óR   — t           j        | _        d | _        d | _        || _        d S ©N)r   r   Ú_stateÚ_timeout_handlerÚ_taskÚ_when)Úselfr!   s     r   Ú__init__zTimeout.__init__   s%   € Ý”nˆŒà>BˆÔØ+/ˆŒ
ØˆŒ
ˆ
ˆ
r   c                 ó   — | j         S r$   )r(   ©r)   s    r   r!   zTimeout.when$   s
   € ØŒzÐr   c                 óÌ  — | j         t          j        usJ ‚| j         t          j        urt	          d| j         j        › d�¦  «        ‚|| _        | j        �| j                             ¦   «          |€	d | _        d S t          j
        ¦   «         }||                     ¦   «         k    r!|                     | j        ¦  «        | _        d S |                     || j        ¦  «        | _        d S )NzCannot change state of z Timeout)r%   r   r   r   ÚRuntimeErrorÚvaluer(   r&   Úcancelr   Úget_running_loopÚtimeÚ	call_soonÚ_on_timeoutÚcall_at)r)   r!   Úloops      r   Ú
reschedulezTimeout.reschedule'   sâ   € ØŒ{¥&¤.Ð0Ð0Ð0Ð0ØŒ;�fœnÐ,Ð,ÝØE¨$¬+Ô*;ÐEÐEÐEñô ð ð ˆŒ
àÔ Ð,ØÔ!×(Ò(Ñ*Ô*Ð*àˆ<Ø$(ˆDÔ!Ð!Ð!åÔ*Ñ,Ô,ˆDØ�t—y’y‘{”{Ò"Ð"Ø(,¯ª°tÔ7GÑ(HÔ(H�Ô%Ð%Ð%à(,¯ª°T¸4Ô;KÑ(LÔ(L�Ô%Ð%Ð%r   c                 ó@   — | j         t          j        t          j        fv S )z$Is timeout expired during execution?)r%   r   r   r   r,   s    r   r   zTimeout.expired<   s   € àŒ{�vœµ´Ð?Ð?Ð?r   c                 óê   — dg}| j         t          j        u r6| j        �t	          | j        d¦  «        nd }|                     d|› �¦  «         d                     |¦  «        }d| j         j        › d|› d�S )NÚ é   zwhen=ú z
<Timeout [ú]ú>)r%   r   r   r(   ÚroundÚappendÚjoinr/   )r)   Úinfor!   Úinfo_strs       r   Ú__repr__zTimeout.__repr__@   sz   € ØˆtˆØŒ;�&œ.Ð(Ð(Ø+/¬:Ð+A•5˜œ QÑ'Ô'Ð'ÀtˆDØ�KŠK˜ ˜˜Ñ'Ô'Ð'Ø—8’8˜D‘>”>ˆØ;˜DœKÔ-Ð;Ð;°Ð;Ð;Ð;Ð;r   c              ƒ   ó¼   K  — t           j        | _        t          j        ¦   «         | _        | j        €t          d¦  «        ‚|                      | j        ¦  «         | S )Nz$Timeout should be used inside a task)	r   r   r%   r
   Úcurrent_taskr'   r.   r7   r(   r,   s    r   Ú
__aenter__zTimeout.__aenter__H   sO   è è € Ý”nˆŒÝÔ'Ñ)Ô)ˆŒ
ØŒ:ÐÝÐEÑFÔFÐFØ�Š˜œ
Ñ#Ô#Ð#Øˆr   Úexc_typeÚexc_valÚexc_tbc              ƒ   ó�  K  — | j         t          j        t          j        fv sJ ‚| j        � | j                             ¦   «          d | _        | j         t          j        u rDt          j        | _         | j                             ¦   «         dk    r|t          j
        u rt          ‚n$| j         t          j        u rt          j        | _         d S )Nr   )r%   r   r   r   r&   r0   r   r'   Úuncancelr	   ÚCancelledErrorÚTimeoutErrorr   )r)   rH   rI   rJ   s       r   Ú	__aexit__zTimeout.__aexit__P   s®   è è € ð Œ{�vœ~­v¬Ð?Ð?Ð?Ð?Ð?àÔ Ð,ØÔ!×(Ò(Ñ*Ô*Ð*Ø$(ˆDÔ!àŒ;�&œ/Ð)Ð)Ý œ.ˆDŒKàŒz×"Ò"Ñ$Ô$¨Ò)Ð)¨h½*Ô:SÐ.SÐ.Sõ #Ð"øØŒ[�FœNÐ*Ð*Ý œ-ˆDŒKàˆtr   c                 ó’   — | j         t          j        u sJ ‚| j                             ¦   «          t          j        | _         d | _        d S r$   )r%   r   r   r'   r0   r   r&   r,   s    r   r4   zTimeout._on_timeouth   sB   € ØŒ{�fœnÐ,Ð,Ð,Ð,ØŒ
×ÒÑÔÐÝ”oˆŒà $ˆÔÐÐr   )r"   r   )r"   N)r   r   r   r   Úfloatr*   r!   r7   Úboolr   ÚstrrD   rG   r   ÚBaseExceptionr   rO   r4   r   r   r   r   r      s:  € € € € € ð˜X eœ_ð °ð ð ð ð ð�h˜u”oð ð ð ð ðM˜x¨œð M°4ð Mð Mð Mð Mð*@˜ð @ð @ð @ð @ð<˜#ð <ð <ð <ð <ðð ð ð ðà˜4 Ô.Ô/ðð ˜-Ô(ðð ˜Ô'ð	ð
 
�$Œðð ð ð ð0%ð %ð %ð %ð %ð %r   r   Údelayr"   c                 óx   — t          j        ¦   «         }t          | �|                     ¦   «         | z   nd¦  «        S )a	  Timeout async 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:

    >>> async with asyncio.timeout(10):  # 10 seconds timeout
    ...     await long_running_task()


    delay - value in seconds or None to disable timeout logic

    long_running_task() is interrupted by raising asyncio.CancelledError,
    the top-most affected timeout() context manager converts CancelledError
    into TimeoutError.
    N)r   r1   r   r2   )rU   r6   s     r   r   r   p   s7   € õ  Ô"Ñ$Ô$€DÝ¨%Ð*;�4—9’9‘;”; Ñ&Ð&ÀÑFÔFÐFr   r!   c                 ó    — t          | ¦  «        S )ab  Schedule the timeout at absolute time.

    Like timeout() but argument gives absolute time in the same clock system
    as loop.time().

    Please note: it is not POSIX time but a time with
    undefined starting base, e.g. the time of the system power on.

    >>> async with asyncio.timeout_at(loop.time() + 10):
    ...     await long_running_task()


    when - a deadline when timeout occurs or None to disable timeout logic

    long_running_task() is interrupted by raising asyncio.CancelledError,
    the top-most affected timeout() context manager converts CancelledError
    into TimeoutError.
    )r   )r!   s    r   r   r   „   s   € õ& �4‰=Œ=Ðr   )ÚenumÚtypesr   Útypingr   r   r   r:   r   r	   r
   Ú__all__ÚEnumr   r   rQ   r   r   r   r   r   ú<module>r]      s@  ðØ €€€à Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð€ðð ð ð ð ˆTŒYñ ô ð ð ðR%ð R%ð R%ð R%ð R%ñ R%ô R%ñ „ðR%ðjG�8˜E”?ð G wð Gð Gð Gð Gð(�X˜e”_ð ¨ð ð ð ð ð ð r   