
    h$                    V   S SK Jr  S SKrS SKrSSKJrJrJr   S SKr S SKrSS jr " S S5      r " S S	5      r " S
 S5      r " S S5      r " S S5      r " S S5      r " S S5      r " S S5      r " S S5      r " S S5      rg! \	\
4 a    Sr N{f = f! \	 a    Sr Nf = f)    )annotationsN   )ExceptionMappingPoolTimeoutmap_exceptionsc                      SS K n U R                  5       nUS;  a  [        S5      eUS:X  a  [        c  [        S5      eUS:X  a  [
        c  [        S5      eU$ ! [         a    Sn NQf = f)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     K/var/www/html/env/lib/python3.13/site-packages/httpcore/_synchronization.pyr   r      s    6 335--LMMiEMP
 	
 fJ
 	
 %    s   A A('A(c                  X    \ rS rSrSrS	S jrS	S jrS
S jr   S       SS jjrSr	g)	AsyncLock0   
This is a standard lock.

In the sync case `Lock` provides thread locking.
In the async case `AsyncLock` provides async locking.
c                    SU l         g N _backendselfs    r   __init__AsyncLock.__init__8   	        c                    [        5       U l        U R                  S:X  a  [        R                  " 5       U l        gU R                  S:X  a  [
        R                  " 5       U l        ggzf
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   setupAsyncLock.setup;   sF    
 ./==F""iikDO]]i'$zz|D (r    c                $  #    U R                   (       d  U R                  5         U R                   S:X  a$  U R                  R                  5       I S h  vN   U $ U R                   S:X  a"  U R                  R                  5       I S h  vN   U $  N: N7fNr
   r	   )r   r&   r$   acquirer%   r   s    r   
__aenter__AsyncLock.__aenter__F   sq     }}JJL==F"//))+++  ]]i'""**,,,	 ,,s$   ABB3BBBBNc                   #    U R                   S:X  a  U R                  R                  5         g U R                   S:X  a  U R                  R                  5         g g 7fr)   )r   r$   releaser%   r   exc_type	exc_value	tracebacks       r   	__aexit__AsyncLock.__aexit__Q   sF      ==F"OO##%]]i'$$& (   AA)r%   r   r$   returnNone)r7   r   NNNr0   ztype[BaseException] | Noner1   zBaseException | Noner2   ztypes.TracebackType | Noner7   r8   )
__name__
__module____qualname____firstlineno____doc__r   r&   r+   r3   __static_attributes__ r    r   r   r   0   sQ    	,	 04*.04		',	' (	' .		'
 
	' 	'r    r   c                  D    \ rS rSrSrSS jr   S       S	S jjrSrg)
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.
c                    U $ NrA   r   s    r   	__enter__AsyncThreadLock.__enter__e       r    Nc                    g rG   rA   r/   s       r   __exit__AsyncThreadLock.__exit__h        	r    rA   )r7   rC   r9   r:   )r;   r<   r=   r>   r?   rH   rL   r@   rA   r    r   rC   rC   ]   sG    
 04*.04	, ( .	
 
 r    rC   c                  @    \ rS rSrSS jrSS jrSS jrS	S
S jjrSrg)
AsyncEventq   c                    SU l         g r   r   r   s    r   r   AsyncEvent.__init__r   r   r    c                    [        5       U l        U R                  S:X  a  [        R                  " 5       U l        gU R                  S:X  a  [
        R                  " 5       U l        ggr"   )r   r   r
   Event_trio_eventr   _anyio_eventr   s    r   r&   AsyncEvent.setupu   sG    
 ./==F"#zz|D]]i' %D (r    c                    U R                   (       d  U R                  5         U R                   S:X  a  U R                  R                  5         g U R                   S:X  a  U R                  R                  5         g g r)   )r   r&   rV   setrW   r   s    r   rZ   AsyncEvent.set   sS    }}JJL==F"  "]]i'!!# (r    Nc                  #    U R                   (       d  U R                  5         U R                   S:X  a|  [        R                  [        0nUc  [        S5      OUn[        U5         [        R                  " U5         U R                  R                  5       I S h  vN   S S S 5        S S S 5        g U R                   S:X  ab  [        [        0n[        U5         [        R                  " U5         U R                  R                  5       I S h  vN   S S S 5        S S S 5        g g  N! , (       d  f       N= f! , (       d  f       g = f N:! , (       d  f       N>= f! , (       d  f       g = f7f)Nr
   infr	   )r   r&   r
   TooSlowErrorr   floatr   
fail_afterrV   waitTimeoutErrorr   rW   )r   timeouttrio_exc_maptimeout_or_infanyio_exc_maps        r   ra   AsyncEvent.wait   s     }}JJL==F".2.?.?-ML-4_U5\'N-__^4**//111 5 .- ]]i'/;[.IM.%%g.++00222 / /. ( 2 54 .- 3 /. /.s   A#E+%D6<D%D#D%D6'0E+E.E	EE	E
E+#D%%
D3	/D66
E E+E		
E	E
E($E+)rW   r   rV   r6   rG   rc   zfloat | Noner7   r8   )	r;   r<   r=   r>   r   r&   rZ   ra   r@   rA   r    r   rP   rP   q   s    	.$3 3r    rP   c                  <    \ rS rSrSS jrS	S jrS	S jrS	S jrSrg)
AsyncSemaphore   c                    Xl         SU l        g r   )_boundr   r   bounds     r   r   AsyncSemaphore.__init__   s    r    c                   [        5       U l        U R                  S:X  a/  [        R                  " U R                  U R                  S9U l        gU R                  S:X  a/  [        R                  " U R                  U R                  S9U l        gg)zk
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
   	Semaphorerm   _trio_semaphorer   _anyio_semaphorer   s    r   r&   AsyncSemaphore.setup   si    
 ./==F"#'>>"kkT[[$D  ]]i'$)OO"kkT[[%D! (r    c                "  #    U R                   (       d  U R                  5         U R                   S:X  a#  U R                  R                  5       I S h  vN   g U R                   S:X  a#  U R                  R                  5       I S h  vN   g g  N9 N7fr)   )r   r&   ru   r*   rv   r   s    r   r*   AsyncSemaphore.acquire   sj     }}JJL==F"&&..000]]i'''//111 ( 11s$   ABB2BBBBc                   #    U R                   S:X  a  U R                  R                  5         g U R                   S:X  a  U R                  R                  5         g g 7fr)   )r   ru   r.   rv   r   s    r   r.   AsyncSemaphore.release   sF     ==F"  ((*]]i'!!))+ (r5   )rv   r   rm   ru   Nro   intr7   r8   r6   )	r;   r<   r=   r>   r   r&   r*   r.   r@   rA   r    r   rj   rj      s    2,r    rj   c                  J    \ rS rSrSS jrSS jr   S	       S
S jjrSrg)AsyncShieldCancellation   c                    [        5       U l        U R                  S:X  a  [        R                  " SS9U l        gU R                  S:X  a  [
        R                  " SS9U l        gg)zp
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    AsyncShieldCancellation.__init__   sQ    
 ./==F" $ 0 0 =D]]i'!&!2!2$!?D (r    c                    U R                   S:X  a  U R                  R                  5         U $ U R                   S:X  a  U R                  R                  5         U $ r)   )r   r   rH   r   r   s    r   rH   !AsyncShieldCancellation.__enter__   sL    ==F"'')  ]]i'((*r    Nc                    U R                   S:X  a  U R                  R                  XU5        g U R                   S:X  a  U R                  R                  XU5        g g r)   )r   r   rL   r   r/   s       r   rL    AsyncShieldCancellation.__exit__   sM     ==F"&&xIF]]i'''YG (r    )r   r   r   r6   )r7   r   r9   r:   )r;   r<   r=   r>   r   rH   rL   r@   rA   r    r   r   r      sN    
@ 04*.04		H,	H (	H .		H
 
	H 	Hr    r   c                  N    \ rS rSrSrSS jrS	S jr   S
       SS jjrSrg)r#      r   c                8    [         R                  " 5       U l        g rG   	threadingr#   _lockr   s    r   r   Lock.__init__       ^^%
r    c                :    U R                   R                  5         U $ rG   r   r*   r   s    r   rH   Lock.__enter__       

r    Nc                8    U R                   R                  5         g rG   r   r.   r/   s       r   rL   Lock.__exit__        	

r    r   r6   )r7   r#   r9   r:   	r;   r<   r=   r>   r?   r   rH   rL   r@   rA   r    r   r#   r#      L    & 04*.04	, ( .	
 
 r    r#   c                  N    \ rS rSrSrSS jrS	S jr   S
       SS jjrSrg)
ThreadLock   rE   c                8    [         R                  " 5       U l        g rG   r   r   s    r   r   ThreadLock.__init__  r   r    c                :    U R                   R                  5         U $ rG   r   r   s    r   rH   ThreadLock.__enter__  r   r    Nc                8    U R                   R                  5         g rG   r   r/   s       r   rL   ThreadLock.__exit__  r   r    r   r6   )r7   r   r9   r:   r   rA   r    r   r   r      r   r    r   c                  6    \ rS rSrSS jrSS jrSS	S jjrSrg)
rU   i  c                8    [         R                  " 5       U l        g rG   )r   rU   _eventr   s    r   r   Event.__init__  s    oo'r    c                8    U R                   R                  5         g rG   )r   rZ   r   s    r   rZ   	Event.set  s    r    Nc                v    U[        S5      :X  a  S nU R                  R                  US9(       d
  [        5       eg )Nr]   )rc   )r_   r   ra   r   )r   rc   s     r   ra   
Event.wait  s5    eEl"G{{0- 1r    )r   r6   rG   rh   )r;   r<   r=   r>   r   rZ   ra   r@   rA   r    r   rU   rU     s    (   r    rU   c                  2    \ rS rSrSS jrSS jrSS jrSrg)	rt   i&  c                6    [         R                  " US9U l        g )N)value)r   rt   
_semaphorern   s     r   r   Semaphore.__init__'  s    #--E:r    c                8    U R                   R                  5         g rG   )r   r*   r   s    r   r*   Semaphore.acquire*      !r    c                8    U R                   R                  5         g rG   )r   r.   r   s    r   r.   Semaphore.release-  r   r    )r   Nr|   r6   )r;   r<   r=   r>   r   r*   r.   r@   rA   r    r   rt   rt   &  s    ;""r    rt   c                  @    \ rS rSrSS jr   S       SS jjrSrg)	ShieldCancellationi1  c                    U $ rG   rA   r   s    r   rH   ShieldCancellation.__enter__5  rJ   r    Nc                    g rG   rA   r/   s       r   rL   ShieldCancellation.__exit__8  rN   r    rA   )r7   r   r9   r:   )r;   r<   r=   r>   rH   rL   r@   rA   r    r   r   r   1  sB    
 04*.04	, ( .	
 
 r    r   )r7   str)
__future__r   r   types_exceptionsr   r   r   r
   r   NotImplementedErrorr   r   r   rC   rP   rj   r   r#   r   rU   rt   r   rA   r    r   <module>r      s    "   F F

4*' *'Z (&3 &3R!, !,H$H $HT 0 0   " " I	 	() D
  Es"   B B 
BBB('B(