
    ՟f$                     X   d dl Z d dlmZ d dlmZmZ ddlmZmZm	Z	 	 d dl
Z
	 d dlZdef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y# e$ r dZ
Y yw xY w# e$ r dZY w xY w)    N)TracebackType)OptionalType   )ExceptionMappingPoolTimeoutmap_exceptionsreturnc                      	 dd l } | j                         }|dvrt        d      |dk(  rt        t        d      |dk(  rt
        t        d      |S # t        $ r d}Y Jw xY w)Nr   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ImportErrorRuntimeErroranyior   )r   environments     T/var/www/cvtools/html/venv/lib/python3.12/site-packages/httpcore/_synchronization.pyr   r      s    6 335--LMMiEMP
 	
 fJ
 	
 %    s   A A! A!c            	       `    e Zd ZdZddZddZddZ	 	 	 ddeee	      dee	   d	ee
   ddfd
Zy)	AsyncLock
    This is a standard lock.

    In the sync case `Lock` provides thread locking.
    In the async case `AsyncLock` provides async locking.
    r
   Nc                     d| _         y N _backendselfs    r   __init__zAsyncLock.__init__7   	        c                     t               | _        | j                  dk(  rt        j                         | _        y| j                  dk(  rt        j                         | _        yyz~
        Detect if we're running under 'asyncio' or 'trio' and create
        a lock with the correct implementation.
        r   r   N)r   r   r   Lock
_trio_lockr   _anyio_lockr   s    r   setupzAsyncLock.setup:   sF    
 ./==F""iikDO]]i'$zz|D (r!   c                   K   | j                   s| j                          | j                   dk(  r$| j                  j                          d {    | S | j                   dk(  r"| j                  j                          d {    | S 7 97 wNr   r   )r   r'   r%   acquirer&   r   s    r   
__aenter__zAsyncLock.__aenter__E   ss     }}JJL==F"//))+++  ]]i'""**,,,	 ,,s$   A	B	B2B	>B?B	B	exc_type	exc_value	tracebackc                    K   | j                   dk(  r| j                  j                          y | j                   dk(  r| j                  j                          y y wr)   )r   r%   releaser&   r   r,   r-   r.   s       r   	__aexit__zAsyncLock.__aexit__P   sG      ==F"OO##%]]i'$$& (   AAr
   N)r
   r   NNN)__name__
__module____qualname____doc__r   r'   r+   r   r   BaseExceptionr   r2    r!   r   r   r   /   s`    	,	 37-1-1		'4./	' M*	' M*		'
 
	'r!   r   c            	       P    e Zd ZdZd	dZ	 	 	 d
deee      dee   dee   ddfdZ	y)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.   c                      y r@   r;   r1   s       r   __exit__zAsyncThreadLock.__exit__g        	r!   )r
   r=   r5   )
r6   r7   r8   r9   rA   r   r   r:   r   rD   r;   r!   r   r=   r=   \   sV    
 37-1-1	4./ M* M*	
 
r!   r=   c                   <    e Zd ZddZddZddZd	dee   ddfdZy)

AsyncEventr
   Nc                     d| _         y r   r   r   s    r   r   zAsyncEvent.__init__q   r    r!   c                     t               | _        | j                  dk(  rt        j                         | _        y| j                  dk(  rt        j                         | _        yyr#   )r   r   r   Event_trio_eventr   _anyio_eventr   s    r   r'   zAsyncEvent.setupt   sG    
 ./==F"#zz|D]]i' %D (r!   c                     | j                   s| j                          | j                   dk(  r| j                  j                          y | j                   dk(  r| j                  j                          y y r)   )r   r'   rK   setrL   r   s    r   rN   zAsyncEvent.set   sS    }}JJL==F"  "]]i'!!# (r!   timeoutc                   K   | j                   s| j                          | j                   dk(  rzt        j                  t        i}|t        d      n|}t        |      5  t        j                  |      5  | j                  j                          d {    d d d        d d d        y | j                   dk(  rat        t        i}t        |      5  t        j                  |      5  | j                  j                          d {    d d d        d d d        y y 7 # 1 sw Y   xY w# 1 sw Y   y xY w7 0# 1 sw Y   /xY w# 1 sw Y   y xY ww)Nr   infr   )r   r'   r   TooSlowErrorr   floatr	   
fail_afterrK   waitTimeoutErrorr   rL   )r   rO   trio_exc_maptimeout_or_infanyio_exc_maps        r   rU   zAsyncEvent.wait   s!    }}JJL==F".2.?.?-ML-4_U5\'N- 2__^4 2**//11122 2 ]]i'/;[.IM. 3%%g. 3++0022233 3 ( 22 22 2 33 33 3s   AED'4DDDD'/EE$D5D3D5E
EDD$	 D''D0,E3D55D>	:EE
Er4   r@   )	r6   r7   r8   r   r'   rN   r   rS   rU   r;   r!   r   rG   rG   p   s(    	.$3(5/ 3T 3r!   rG   c                   4    e Zd ZdeddfdZddZddZddZy)	AsyncSemaphoreboundr
   Nc                      || _         d| _        y r   )_boundr   r   r\   s     r   r   zAsyncSemaphore.__init__   s    r!   c                 "   t               | _        | j                  dk(  r1t        j                  | j                  | j                        | _        y| j                  dk(  r1t        j                  | j                  | j                        | _        yy)z
        Detect if we're running under 'asyncio' or 'trio' and create
        a semaphore with the correct implementation.
        r   )initial_value	max_valuer   N)r   r   r   	Semaphorer^   _trio_semaphorer   _anyio_semaphorer   s    r   r'   zAsyncSemaphore.setup   si    
 ./==F"#'>>"kkT[[$D  ]]i'$)OO"kkT[[%D! (r!   c                   K   | j                   s| j                          | j                   dk(  r#| j                  j                          d {    y | j                   dk(  r#| j                  j                          d {    y y 7 87 wr)   )r   r'   rd   r*   re   r   s    r   r*   zAsyncSemaphore.acquire   sl     }}JJL==F"&&..000]]i'''//111 ( 11s$   A	BB1B=B>BBc                    K   | j                   dk(  r| j                  j                          y | j                   dk(  r| j                  j                          y y wr)   )r   rd   r0   re   r   s    r   r0   zAsyncSemaphore.release   sG     ==F"  ((*]]i'!!))+ (r3   r4   )r6   r7   r8   intr   r'   r*   r0   r;   r!   r   r[   r[      s$    c d 2,r!   r[   c            	       T    e Zd Zd	dZd
dZ	 	 	 ddeee      dee   dee   ddfdZ	y)AsyncShieldCancellationr
   Nc                     t               | _        | j                  dk(  rt        j                  d      | _        y| j                  dk(  rt        j                  d      | _        yy)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__   sQ    
 ./==F" $ 0 0 =D]]i'!&!2!2$!?D (r!   c                     | j                   dk(  r| j                  j                          | S | j                   dk(  r| j                  j                          | S r)   )r   rn   rA   ro   r   s    r   rA   z!AsyncShieldCancellation.__enter__   sL    ==F"'')  ]]i'((*r!   r,   r-   r.   c                     | j                   dk(  r| j                  j                  |||       y | j                   dk(  r| j                  j                  |||       y y r)   )r   rn   rD   ro   r1   s       r   rD   z AsyncShieldCancellation.__exit__   sQ     ==F"&&xIF]]i''')YG (r!   r4   )r
   rj   r5   )
r6   r7   r8   r   rA   r   r   r:   r   rD   r;   r!   r   rj   rj      s\    
@ 37-1-1		H4./	H M*	H M*		H
 
	Hr!   rj   c            	       X    e Zd ZdZd
dZddZ	 	 	 ddeee      dee   dee	   ddfd	Z
y)r$   r   r
   Nc                 6    t        j                         | _        y r@   	threadingr$   _lockr   s    r   r   zLock.__init__       ^^%
r!   c                 :    | j                   j                          | S r@   rv   r*   r   s    r   rA   zLock.__enter__       

r!   r,   r-   r.   c                 8    | j                   j                          y r@   rv   r0   r1   s       r   rD   zLock.__exit__        	

r!   r4   )r
   r$   r5   r6   r7   r8   r9   r   rA   r   r   r:   r   rD   r;   r!   r   r$   r$      [    & 37-1-1	4./ M* M*	
 
r!   r$   c            	       X    e Zd ZdZd
dZddZ	 	 	 ddeee      dee   dee	   ddfd	Z
y)
ThreadLockr>   r
   Nc                 6    t        j                         | _        y r@   rt   r   s    r   r   zThreadLock.__init__  rw   r!   c                 :    | j                   j                          | S r@   ry   r   s    r   rA   zThreadLock.__enter__
  rz   r!   r,   r-   r.   c                 8    | j                   j                          y r@   r|   r1   s       r   rD   zThreadLock.__exit__  r}   r!   r4   )r
   r   r5   r~   r;   r!   r   r   r      r   r!   r   c                   4    e Zd ZddZddZddee   ddfdZy)	rJ   r
   Nc                 6    t        j                         | _        y r@   )ru   rJ   _eventr   s    r   r   zEvent.__init__  s    oo'r!   c                 8    | j                   j                          y r@   )r   rN   r   s    r   rN   z	Event.set  s    r!   rO   c                 p    |t        d      k(  rd }| j                  j                  |      s
t               y )NrQ   )rO   )rS   r   rU   r   )r   rO   s     r   rU   z
Event.wait  s5    eEl"G{{0- 1r!   r4   r@   )r6   r7   r8   r   rN   r   rS   rU   r;   r!   r   rJ   rJ     s#    ( HUO  t  r!   rJ   c                   ,    e Zd ZdeddfdZddZddZy)rc   r\   r
   Nc                 :    t        j                  |      | _        y )N)value)ru   rc   
_semaphorer_   s     r   r   zSemaphore.__init__&  s    #--E:r!   c                 8    | j                   j                          y r@   )r   r*   r   s    r   r*   zSemaphore.acquire)      !r!   c                 8    | j                   j                          y r@   )r   r0   r   s    r   r0   zSemaphore.release,  r   r!   r4   )r6   r7   r8   rh   r   r*   r0   r;   r!   r   rc   rc   %  s    ;c ;d ;""r!   rc   c            	       L    e Zd ZddZ	 	 	 d	deee      dee   dee   ddfdZy)
ShieldCancellationr
   c                     | S r@   r;   r   s    r   rA   zShieldCancellation.__enter__4  rB   r!   Nr,   r-   r.   c                      y r@   r;   r1   s       r   rD   zShieldCancellation.__exit__7  rE   r!   )r
   r   r5   )	r6   r7   r8   rA   r   r   r:   r   rD   r;   r!   r   r   r   0  sQ    
 37-1-1	4./ M* M*	
 
r!   r   )ru   typesr   typingr   r   _exceptionsr   r   r	   r   r   r   strr   r   r=   rG   r[   rj   r$   r   rJ   rc   r   r;   r!   r   <module>r      s      ! F F

s 4*' *'Z (&3 &3R!, !,H$H $HT 0 0   " " I	  D
  Es"   B B BBB)(B)