
    ,h$                    P   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	 d dlZ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y# e	e
f$ r dZY yw xY w# e	$ r dZY w xY w)    )annotationsN   )ExceptionMappingPoolTimeoutmap_exceptionsc                     	 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     [/var/www/html/Resume-Scraper/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                  F    e Zd ZdZddZddZddZ	 	 	 d		 	 	 	 	 	 	 d
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.
    c                    d| _         y N _backendselfs    r   __init__zAsyncLock.__init__8   	        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__F   ss     }}JJL==F"//))+++  ]]i'""**,,,	 ,,s$   A	B	B2B	>B?B	B	Nc                   K   | j                   dk(  r| j                  j                          y | j                   dk(  r| j                  j                          y y wr&   )r   r"   releaser#   r   exc_type	exc_value	tracebacks       r   	__aexit__zAsyncLock.__aexit__Q   sG      ==F"OO##%]]i'$$& (   AAreturnNone)r2   r   NNNr,   ztype[BaseException] | Noner-   zBaseException | Noner.   ztypes.TracebackType | Noner2   r3   )__name__
__module____qualname____doc__r   r$   r(   r/    r   r   r   r   0   sL    	,	 04*.04		',	' (	' .		'
 
	'r   r   c                  6    e Zd ZdZddZ	 	 	 d	 	 	 	 	 	 	 d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.
    c                    | S Nr:   r   s    r   	__enter__zAsyncThreadLock.__enter__e       r   Nc                     y r?   r:   r+   s       r   __exit__zAsyncThreadLock.__exit__h        	r   )r2   r<   r4   r5   )r6   r7   r8   r9   r@   rC   r:   r   r   r<   r<   ]   sB    
 04*.04	, ( .	
 
r   r<   c                  .    e Zd ZddZddZddZdddZy)	
AsyncEventc                    d| _         y r   r   r   s    r   r   zAsyncEvent.__init__r   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.setupu   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$   rJ   setrK   r   s    r   rM   zAsyncEvent.set   sS    }}JJL==F"  "]]i'!!# (r   Nc                  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_afterrJ   waitTimeoutErrorr   rK   )r   timeouttrio_exc_maptimeout_or_infanyio_exc_maps        r   rS   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r1   r?   rU   zfloat | Noner2   r3   )r6   r7   r8   r   r$   rM   rS   r:   r   r   rF   rF   q   s    	.$3r   rF   c                  ,    e Zd ZddZddZddZddZy)AsyncSemaphorec                     || _         d| _        y r   )_boundr   r   bounds     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   r*   re   r   s    r   r*   zAsyncSemaphore.release   sG     ==F"  ((*]]i'!!))+ (r0   Nr_   intr2   r3   r1   )r6   r7   r8   r   r$   r'   r*   r:   r   r   r[   r[      s    2,r   r[   c                  :    e Zd ZddZddZ	 	 	 d	 	 	 	 	 	 	 ddZy)	AsyncShieldCancellationc                    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   ro   r@   rp   r   s    r   r@   z!AsyncShieldCancellation.__enter__   sL    ==F"'')  ]]i'((*r   Nc                    | j                   dk(  r| j                  j                  |||       y | j                   dk(  r| j                  j                  |||       y y r&   )r   ro   rC   rp   r+   s       r   rC   z AsyncShieldCancellation.__exit__   sQ     ==F"&&xIF]]i''')YG (r   r1   )r2   rk   r4   r5   )r6   r7   r8   r   r@   rC   r:   r   r   rk   rk      sH    
@ 04*.04		H,	H (	H .		H
 
	Hr   rk   c                  >    e Zd ZdZddZddZ	 	 	 d	 	 	 	 	 	 	 d	dZy)
r!   r   c                6    t        j                         | _        y r?   	threadingr!   _lockr   s    r   r   zLock.__init__       ^^%
r   c                :    | j                   j                          | S r?   rw   r'   r   s    r   r@   zLock.__enter__       

r   Nc                8    | j                   j                          y r?   rw   r*   r+   s       r   rC   zLock.__exit__        	

r   r1   )r2   r!   r4   r5   r6   r7   r8   r9   r   r@   rC   r:   r   r   r!   r!      G    & 04*.04	, ( .	
 
r   r!   c                  >    e Zd ZdZddZddZ	 	 	 d	 	 	 	 	 	 	 d	dZy)

ThreadLockr=   c                6    t        j                         | _        y r?   ru   r   s    r   r   zThreadLock.__init__  rx   r   c                :    | j                   j                          | S r?   rz   r   s    r   r@   zThreadLock.__enter__  r{   r   Nc                8    | j                   j                          y r?   r}   r+   s       r   rC   zThreadLock.__exit__  r~   r   r1   )r2   r   r4   r5   r   r:   r   r   r   r      r   r   r   c                  &    e Zd ZddZddZdddZy)rI   c                6    t        j                         | _        y r?   )rv   rI   _eventr   s    r   r   zEvent.__init__  s    oo'r   c                8    | j                   j                          y r?   )r   rM   r   s    r   rM   z	Event.set  s    r   Nc                p    |t        d      k(  rd }| j                  j                  |      s
t               y )NrO   )rU   )rQ   r   rS   r   )r   rU   s     r   rS   z
Event.wait  s5    eEl"G{{0- 1r   r1   r?   rY   )r6   r7   r8   r   rM   rS   r:   r   r   rI   rI     s    ( r   rI   c                  $    e Zd ZddZddZddZy)rc   c                :    t        j                  |      | _        y )N)value)rv   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   r*   r   s    r   r*   zSemaphore.release-  r   r   Nrh   r1   )r6   r7   r8   r   r'   r*   r:   r   r   rc   rc   &  s    ;""r   rc   c                  2    e Zd ZddZ	 	 	 d	 	 	 	 	 	 	 ddZy)ShieldCancellationc                    | S r?   r:   r   s    r   r@   zShieldCancellation.__enter__5  rA   r   Nc                     y r?   r:   r+   s       r   rC   zShieldCancellation.__exit__8  rD   r   )r2   r   r4   r5   )r6   r7   r8   r@   rC   r:   r   r   r   r   1  s=    
 04*.04	, ( .	
 
r   r   )r2   str)
__future__r   rv   types_exceptionsr   r   r   r
   r   NotImplementedErrorr   r   r   r<   rF   r[   rk   r!   r   rI   rc   r   r:   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%