§
    êXÊjâ$  ã                  ó¸  — d dl mZ d dlZd dlZddlmZmZmZ 	 d dlZn# e	e
f$ r dZY nw xY w	 d dlZn# e	$ r dZY nw xY w	 d dlZn# e	$ r dZY nw xY wdd„Z G d„ d	¦  «        Z G d
„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        ZdS )é    )ÚannotationsNé   )ÚExceptionMappingÚPoolTimeoutÚmap_exceptionsÚreturnÚstrc                 óÖ   — t           €d} nt          j        ¦   «         } | dvrt          d¦  «        ‚| dk    rt          €t          d¦  «        ‚| dk    rt          €t          d¦  «        ‚| S )NÚasyncio)r   Útrioz/Running under an unsupported async environment.zBRunning with asyncio requires installation of 'httpcore[asyncio]'.r   z<Running with trio requires installation of 'httpcore[trio]'.)ÚsniffioÚcurrent_async_libraryÚRuntimeErrorÚanyior   )Úenvironments    úKC:\Projects\Historical\venv\Lib\site-packages\httpcore2/_synchronization.pyr   r      s{   € õ €ØˆˆåÔ3Ñ5Ô5ˆàÐ-Ð-Ð-ÝÐLÑMÔMÐMà�iÒÐ¥E MÝÐ_Ñ`Ô`Ð`à�fÒÐ¥ ÝÐYÑZÔZÐZàÐó    c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Z	 	 	 ddd„ZdS )Ú	AsyncLockú’
    This is a standard lock.

    In the sync case `Lock` provides thread locking.
    In the async case `AsyncLock` provides async locking.
    r   ÚNonec                ó   — d| _         d S ©NÚ ©Ú_backend©Úselfs    r   Ú__init__zAsyncLock.__init__7   ó   € ØˆŒˆˆr   c                óÄ   — t          ¦   «         | _        | j        dk    rt          j        ¦   «         | _        dS | j        dk    rt          j        d¬¦  «        | _        dS dS )ú~
        Detect if we're running under 'asyncio' or 'trio' and create
        a lock with the correct implementation.
        r   r   T)Úfast_acquireN)r   r   r   ÚLockÚ
_trio_lockr   Ú_anyio_lockr   s    r   ÚsetupzAsyncLock.setup:   s_   € õ
 .Ñ/Ô/ˆŒØŒ=˜FÒ"Ð"Ý"œi™kœkˆDŒOˆOˆOØŒ]˜iÒ'Ð'Ý$œz°tÐ<Ñ<Ô<ˆDÔÐÐð (Ð'r   c              ƒ  óê   K  — | j         s|                      ¦   «          | j         dk    r | j                             ¦   «         ƒ d {V —† n*| j         dk    r| j                             ¦   «         ƒ d {V —† | S ©Nr   r   )r   r'   r%   Úacquirer&   r   s    r   Ú
__aenter__zAsyncLock.__aenter__E   sŒ   è è € ØŒ}ð 	Ø�JŠJ‰LŒLˆLàŒ=˜FÒ"Ð"Ø”/×)Ò)Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØŒ]˜iÒ'Ð'ØÔ"×*Ò*Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,àˆr   NÚexc_typeútype[BaseException] | NoneÚ	exc_valueúBaseException | NoneÚ	tracebackútypes.TracebackType | Nonec              ƒ  ó¢   K  — | j         dk    r| j                             ¦   «          d S | j         dk    r| j                             ¦   «          d S d S r)   )r   r%   Úreleaser&   ©r   r,   r.   r0   s       r   Ú	__aexit__zAsyncLock.__aexit__P   s_   è è € ð Œ=˜FÒ"Ð"ØŒO×#Ò#Ñ%Ô%Ð%Ð%Ð%ØŒ]˜iÒ'Ð'ØÔ×$Ò$Ñ&Ô&Ð&Ð&Ð&ð (Ð'r   ©r   r   )r   r   ©NNN©r,   r-   r.   r/   r0   r1   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r'   r+   r5   © r   r   r   r   /   s~   € € € € € ðð ðð ð ð ð	=ð 	=ð 	=ð 	=ð	ð 	ð 	ð 	ð 04Ø*.Ø04ð		'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'r   r   c                  ó*   — e Zd ZdZdd„Z	 	 	 ddd„ZdS )ÚAsyncThreadLockú¬
    This is a threading-only lock for no-I/O contexts.

    In the sync case `ThreadLock` provides thread locking.
    In the async case `AsyncThreadLock` is a no-op.
    r   c                ó   — | S ©Nr=   r   s    r   Ú	__enter__zAsyncThreadLock.__enter__d   ó   € Øˆr   Nr,   r-   r.   r/   r0   r1   r   c                ó   — d S rB   r=   r4   s       r   Ú__exit__zAsyncThreadLock.__exit__g   ó	   € ð 	ˆr   )r   r?   r7   r8   )r9   r:   r;   r<   rC   rF   r=   r   r   r?   r?   \   sV   € € € € € ðð ðð ð ð ð
 04Ø*.Ø04ð	ð ð ð ð ð ð r   r?   c                  ó0   — e Zd Zd
d„Zd
d„Zd
d„Zddd	„ZdS )Ú
AsyncEventr   r   c                ó   — d| _         d S r   r   r   s    r   r   zAsyncEvent.__init__q   r    r   c                óÀ   — t          ¦   «         | _        | j        dk    rt          j        ¦   «         | _        dS | j        dk    rt          j        ¦   «         | _        dS dS )r"   r   r   N)r   r   r   ÚEventÚ_trio_eventr   Ú_anyio_eventr   s    r   r'   zAsyncEvent.setupt   s[   € õ
 .Ñ/Ô/ˆŒØŒ=˜FÒ"Ð"Ý#œz™|œ|ˆDÔÐÐØŒ]˜iÒ'Ð'Ý %¤¡¤ˆDÔÐÐð (Ð'r   c                óÔ   — | j         s|                      ¦   «          | j         dk    r| j                             ¦   «          d S | j         dk    r| j                             ¦   «          d S d S r)   )r   r'   rM   ÚsetrN   r   s    r   rP   zAsyncEvent.set   sq   € ØŒ}ð 	Ø�JŠJ‰LŒLˆLàŒ=˜FÒ"Ð"ØÔ× Ò Ñ"Ô"Ð"Ð"Ð"ØŒ]˜iÒ'Ð'ØÔ×!Ò!Ñ#Ô#Ð#Ð#Ð#ð (Ð'r   NÚtimeoutúfloat | Nonec              ƒ  ó¨  K  — | j         s|                      ¦   «          | j         dk    r›t          j        t          i}|€t          d¦  «        n|}t          |¦  «        5  t          j        |¦  «        5  | j         	                    ¦   «         ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S | j         dk    rƒt          t          i}t          |¦  «        5  t          j        |¦  «        5  | j         	                    ¦   «         ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S d S )Nr   Úinfr   )r   r'   r   ÚTooSlowErrorr   Úfloatr   Ú
fail_afterrM   ÚwaitÚTimeoutErrorr   rN   )r   rQ   Útrio_exc_mapÚtimeout_or_infÚanyio_exc_maps        r   rX   zAsyncEvent.waitˆ   sh  è è € ØŒ}ð 	Ø�JŠJ‰LŒLˆLàŒ=˜FÒ"Ð"Ý.2Ô.?ÅÐ-MˆLØ-4¨_�U 5™\œ\˜\À'ˆNÝ Ñ-Ô-ð 2ð 2Ý”_ ^Ñ4Ô4ð 2ð 2ØÔ*×/Ò/Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð 2ð 2ð Œ]˜iÒ'Ð'Ý/;½[Ð.IˆMÝ Ñ.Ô.ð 3ð 3ÝÔ% gÑ.Ô.ð 3ð 3ØÔ+×0Ò0Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3ð 3ð 3ð (Ð'sl   ÁB7Á3 BÂB7ÂB#	Â#B7Â&B#	Â'B7Â7B;Â>B;Ã,EÄ D-Ä!EÄ-D1	Ä1EÄ4D1	Ä5EÅE	ÅE	r6   rB   ©rQ   rR   r   r   )r9   r:   r;   r   r'   rP   rX   r=   r   r   rI   rI   p   si   € € € € € ðð ð ð ð	.ð 	.ð 	.ð 	.ð$ð $ð $ð $ð3ð 3ð 3ð 3ð 3ð 3ð 3r   rI   c                  ó.   — e Zd Zd
d„Zdd„Zdd„Zdd„Zd	S )ÚAsyncSemaphoreÚboundÚintr   r   c                ó"   — || _         d| _        d S r   )Ú_boundr   ©r   r`   s     r   r   zAsyncSemaphore.__init__š   s   € ØˆŒØˆŒˆˆr   c                óö   — t          ¦   «         | _        | j        dk    r't          j        | j        | j        ¬¦  «        | _        dS | j        dk    r(t          j        | j        | j        d¬¦  «        | _        dS dS )zƒ
        Detect if we're running under 'asyncio' or 'trio' and create
        a semaphore with the correct implementation.
        r   )Úinitial_valueÚ	max_valuer   T)rf   rg   r#   N)r   r   r   Ú	Semaphorerc   Ú_trio_semaphorer   Ú_anyio_semaphorer   s    r   r'   zAsyncSemaphore.setupž   s|   € õ
 .Ñ/Ô/ˆŒØŒ=˜FÒ"Ð"Ý#'¤>ÀÄÐW[ÔWbÐ#cÑ#cÔ#cˆDÔ Ð Ð ØŒ]˜iÒ'Ð'Ý$)¤OÀ$Ä+ÐY]ÔYdÐswÐ$xÑ$xÔ$xˆDÔ!Ð!Ð!ð (Ð'r   c              ƒ  óð   K  — | j         s|                      ¦   «          | j         dk    r!| j                             ¦   «         ƒ d {V —† d S | j         dk    r!| j                             ¦   «         ƒ d {V —† d S d S r)   )r   r'   ri   r*   rj   r   s    r   r*   zAsyncSemaphore.acquire©   s™   è è € ØŒ}ð 	Ø�JŠJ‰LŒLˆLàŒ=˜FÒ"Ð"ØÔ&×.Ò.Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0ØŒ]˜iÒ'Ð'ØÔ'×/Ò/Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1ð (Ð'r   c              ƒ  ó¢   K  — | j         dk    r| j                             ¦   «          d S | j         dk    r| j                             ¦   «          d S d S r)   )r   ri   r3   rj   r   s    r   r3   zAsyncSemaphore.release²   s^   è è € ØŒ=˜FÒ"Ð"ØÔ ×(Ò(Ñ*Ô*Ð*Ð*Ð*ØŒ]˜iÒ'Ð'ØÔ!×)Ò)Ñ+Ô+Ð+Ð+Ð+ð (Ð'r   N©r`   ra   r   r   r6   )r9   r:   r;   r   r'   r*   r3   r=   r   r   r_   r_   ™   sh   € € € € € ðð ð ð ð	yð 	yð 	yð 	yð2ð 2ð 2ð 2ð,ð ,ð ,ð ,ð ,ð ,r   r_   c                  ó.   — e Zd Zdd„Zdd„Z	 	 	 ddd„ZdS )ÚAsyncShieldCancellationr   r   c                óÈ   — t          ¦   «         | _        | j        dk    rt          j        d¬¦  «        | _        dS | j        dk    rt          j        d¬¦  «        | _        dS dS )zˆ
        Detect if we're running under 'asyncio' or 'trio' and create
        a shielded scope with the correct implementation.
        r   T)Úshieldr   N)r   r   r   ÚCancelScopeÚ_trio_shieldr   Ú_anyio_shieldr   s    r   r   z AsyncShieldCancellation.__init__Á   sk   € õ
 .Ñ/Ô/ˆŒàŒ=˜FÒ"Ð"Ý $Ô 0¸Ð =Ñ =Ô =ˆDÔÐÐØŒ]˜iÒ'Ð'Ý!&Ô!2¸$Ð!?Ñ!?Ô!?ˆDÔÐÐð (Ð'r   c                ó˜   — | j         dk    r| j                             ¦   «          n$| j         dk    r| j                             ¦   «          | S r)   )r   rs   rC   rt   r   s    r   rC   z!AsyncShieldCancellation.__enter__Í   sN   € ØŒ=˜FÒ"Ð"ØÔ×'Ò'Ñ)Ô)Ð)Ð)ØŒ]˜iÒ'Ð'ØÔ×(Ò(Ñ*Ô*Ð*Øˆr   Nr,   r-   r.   r/   r0   r1   c                óª   — | j         dk    r| j                             |||¦  «         d S | j         dk    r| j                             |||¦  «         d S d S r)   )r   rs   rF   rt   r4   s       r   rF   z AsyncShieldCancellation.__exit__Ô   sh   € ð Œ=˜FÒ"Ð"ØÔ×&Ò& x°¸IÑFÔFÐFÐFÐFØŒ]˜iÒ'Ð'ØÔ×'Ò'¨°)¸YÑGÔGÐGÐGÐGð (Ð'r   r6   )r   ro   r7   r8   )r9   r:   r;   r   rC   rF   r=   r   r   ro   ro   ¹   sk   € € € € € ð
@ð 
@ð 
@ð 
@ðð ð ð ð 04Ø*.Ø04ð		Hð 	Hð 	Hð 	Hð 	Hð 	Hð 	Hr   ro   c                  ó2   — e Zd ZdZdd„Zdd„Z	 	 	 ddd„ZdS )r$   r   r   r   c                ó6   — t          j        ¦   «         | _        d S rB   )Ú	threadingr$   Ú_lockr   s    r   r   zLock.__init__ë   s   € Ý”^Ñ%Ô%ˆŒ
ˆ
ˆ
r   c                ó8   — | j                              ¦   «          | S rB   ©rz   r*   r   s    r   rC   zLock.__enter__î   ó   € ØŒ
×ÒÑÔÐØˆr   Nr,   r-   r.   r/   r0   r1   c                ó8   — | j                              ¦   «          d S rB   ©rz   r3   r4   s       r   rF   zLock.__exit__ò   ó   € ð 	Œ
×ÒÑÔÐÐÐr   r6   )r   r$   r7   r8   ©r9   r:   r;   r<   r   rC   rF   r=   r   r   r$   r$   ã   sj   € € € € € ðð ð&ð &ð &ð &ðð ð ð ð 04Ø*.Ø04ð	ð ð ð ð ð ð r   r$   c                  ó2   — e Zd ZdZdd„Zdd„Z	 	 	 ddd„ZdS )Ú
ThreadLockr@   r   r   c                ó6   — t          j        ¦   «         | _        d S rB   )ry   ÚRLockrz   r   s    r   r   zThreadLock.__init__  s   € Ý”_Ñ&Ô&ˆŒ
ˆ
ˆ
r   c                ó8   — | j                              ¦   «          | S rB   r|   r   s    r   rC   zThreadLock.__enter__  r}   r   Nr,   r-   r.   r/   r0   r1   c                ó8   — | j                              ¦   «          d S rB   r   r4   s       r   rF   zThreadLock.__exit__
  r€   r   r6   )r   rƒ   r7   r8   r�   r=   r   r   rƒ   rƒ   û   sj   € € € € € ðð ð'ð 'ð 'ð 'ðð ð ð ð 04Ø*.Ø04ð	ð ð ð ð ð ð r   rƒ   c                  ó(   — e Zd Zd	d„Zd	d„Zd
dd„ZdS )rL   r   r   c                ó6   — t          j        ¦   «         | _        d S rB   )ry   rL   Ú_eventr   s    r   r   zEvent.__init__  s   € Ý”oÑ'Ô'ˆŒˆˆr   c                ó8   — | j                              ¦   «          d S rB   )rŠ   rP   r   s    r   rP   z	Event.set  s   € ØŒ�ŠÑÔÐÐÐr   NrQ   rR   c                ó‚   — |t          d¦  «        k    rd }| j                             |¬¦  «        st          ¦   «         ‚d S )NrT   )rQ   )rV   rŠ   rX   r   )r   rQ   s     r   rX   z
Event.wait  sG   € Ø•e˜E‘l”lÒ"Ð"ØˆGØŒ{×Ò¨ÐÑ0Ô0ð 	 Ý‘-”-Ðð	 ð 	 r   r6   rB   r]   )r9   r:   r;   r   rP   rX   r=   r   r   rL   rL     sU   € € € € € ð(ð (ð (ð (ðð ð ð ð ð  ð  ð  ð  ð  ð  r   rL   c                  ó&   — e Zd Zd	d„Zd
d„Zd
d„ZdS )rh   r`   ra   r   r   c                ó:   — t          j        |¬¦  «        | _        d S )N)Úvalue)ry   rh   Ú
_semaphorerd   s     r   r   zSemaphore.__init__"  s   € Ý#Ô-°EÐ:Ñ:Ô:ˆŒˆˆr   c                ó8   — | j                              ¦   «          d S rB   )r�   r*   r   s    r   r*   zSemaphore.acquire%  ó   € ØŒ×ÒÑ!Ô!Ð!Ð!Ð!r   c                ó8   — | j                              ¦   «          d S rB   )r�   r3   r   s    r   r3   zSemaphore.release(  r’   r   Nrm   r6   )r9   r:   r;   r   r*   r3   r=   r   r   rh   rh   !  sP   € € € € € ð;ð ;ð ;ð ;ð"ð "ð "ð "ð"ð "ð "ð "ð "ð "r   rh   c                  ó&   — e Zd Zdd„Z	 	 	 ddd„ZdS )ÚShieldCancellationr   c                ó   — | S rB   r=   r   s    r   rC   zShieldCancellation.__enter__0  rD   r   Nr,   r-   r.   r/   r0   r1   r   c                ó   — d S rB   r=   r4   s       r   rF   zShieldCancellation.__exit__3  rG   r   )r   r•   r7   r8   )r9   r:   r;   rC   rF   r=   r   r   r•   r•   ,  sL   € € € € € ðð ð ð ð
 04Ø*.Ø04ð	ð ð ð ð ð ð r   r•   )r   r	   )Ú
__future__r   ry   ÚtypesÚ_exceptionsr   r   r   r   ÚImportErrorÚNotImplementedErrorr   r   r   r   r?   rI   r_   ro   r$   rƒ   rL   rh   r•   r=   r   r   ú<module>r�      s¦  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø €€€à FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ Fð
Ø€K€K€K€KøØÐ(Ð)ð ð ð Ø€D€D€DðøøøðØ€L€L€L€LøØð ð ð Ø€E€E€EðøøøðØ€N€N€N€NøØð ð ð Ø€G€G€Gðøøøðð ð ð ð(*'ð *'ð *'ð *'ð *'ñ *'ô *'ð *'ðZð ð ð ð ñ ô ð ð(&3ð &3ð &3ð &3ð &3ñ &3ô &3ð &3ðR,ð ,ð ,ð ,ð ,ñ ,ô ,ð ,ð@$Hð $Hð $Hð $Hð $Hñ $Hô $Hð $HðTð ð ð ð ñ ô ð ð0ð ð ð ð ñ ô ð ð0 ð  ð  ð  ð  ñ  ô  ð  ð"ð "ð "ð "ð "ñ "ô "ð "ðð ð ð ð ñ ô ð ð ð s*   š Ÿ	+ª+¯4 ´>½>ÁA ÁAÁA