
    \jY                    "   d Z ddlmZ ddlZddlZddlZddlmZ ddl	m
Z
 ddlmZ ddlmZmZmZmZmZ er
ddlmZmZmZ  ed	      Z G d
 de      Z e
d       G d dee                Z G d d      ZddZddZddZddZddZ g dZ!y)zKSeparate caller cancellation from backend task and executor-future results.    )annotationsN)Future)	dataclass)Lock)TYPE_CHECKINGFinalGenericTypeVarcast)AsyncIterator	AwaitableCallable_Tc                      e Zd Zy) _AsyncTransitionUnavailableErrorN)__name__
__module____qualname__     B/root/.hermes/venv/lib/python3.12/site-packages/filelock/_async.pyr   r      s    r   r   T)frozenc                  *    e Zd ZU dZded<   dZded<   y)_BackendOutcomeNz	_T | NonevaluezBaseException | Noneerror)r   r   r   r   __annotations__r   r   r   r   r   r      s    E9"&E&r   r   c                      e Zd ZddZej
                  dd       Zej
                  	 	 	 	 	 	 	 	 	 	 d	d       Ze	 	 	 	 	 	 	 	 	 	 	 	 d
d       Z	ddZ
y)_AsyncTransitionGatec                0    t               | _        d | _        y N)r   
_tail_lock_tail)selfs    r   __init__z_AsyncTransitionGate.__init__   s    '+v48
r   c                  K   t                j                  5   j                  } _        d d d        '	 t        t	        j
                  |             d {    	 d   j                         y # 1 sw Y   JxY w7 (# t        j                  $ r |j                   fd        w xY w#  j                         w xY ww)Nc                &    j                        S r!   _leave_predecessorr$   tickets    r   <lambda>z+_AsyncTransitionGate.hold.<locals>.<lambda>,       4;;vCV r   )	ConcurrentFuturer"   r#   _wait_until_doneasynciowrap_futureCancelledErroradd_done_callbackr)   )r$   predecessorr,   s   ` @r   holdz_AsyncTransitionGate.hold"   s     )9);__ 	 **KDJ	  "&w':':;'GHHH	 KK	  	 
 I)) --.VW KKsV   C	A8
C	!B BB !B3 &C	8B=C	B *B00C	3CC	c                 K   t                j                  5   j                  } _        d d d        /|j                         s	  j	                  |||||       d {    	 d   j                         y # 1 sw Y   RxY w7 (# t
        $ r |j                   fd        w xY w#  j                         w xY ww)N)blockingcancel_checkdeadlinepoll_intervalc                &    j                        S r!   r(   r*   s    r   r-   z7_AsyncTransitionGate.hold_for_acquire.<locals>.<lambda>J   r.   r   )r/   r"   r#   done_wait_for_predecessorBaseExceptionr4   r)   )r$   r8   r9   r:   r;   r5   r,   s   `     @r   hold_for_acquirez%_AsyncTransitionGate.hold_for_acquire3   s      *:);__ 	 **KDJ	  ";+;+;+=
00%!-%"/ 1   	 KK%	  	 
 ! --.VW KKsW   CB C
B #B$B )B1 .C B	CB  B..C1CCc               b  K   |st         t        j                  |       }| j                         s|| |       rt         |3|t	        j
                         z
  x}dk  rt         |t        ||      n|}n||nd }t        j                  |f|       d {    | j                         s{y y 7 w)Nr   )timeout)r   r1   r2   r=   timeperf_counterminwait)r5   r8   r9   r:   r;   waiter	remainingwait_intervals           r   r>   z*_AsyncTransitionGate._wait_for_predecessorQ   s      22$$[1""$'LN66#!)D,=,=,?!??IAE::AMAYM9 =_h1=1It,,y-@@@ ""$ As   BB/B-B/+B/c                    | j                   5  | j                  |u rd | _        d d d        |j                  d        y # 1 sw Y   xY wr!   )r"   r#   
set_result)r$   r,   s     r   r)   z_AsyncTransitionGate._leaveh   sA    __ 	"zzV#!
	" 	$	" 	"s	   =AN)returnNone)rL   AsyncIterator[None])
r8   boolr9   Callable[[], bool] | Noner:   float | Noner;   floatrL   rN   )r5   ConcurrentFuture[None]r8   rO   r9   rP   r:   rQ   r;   rR   rL   rM   )r,   rS   rL   rM   )r   r   r   r%   
contextlibasynccontextmanagerr6   r@   staticmethodr>   r)   r   r   r   r   r      s    9 ##  $   ##    0	 
     
  $ : A+A A 0	A
 A A 
A A, r   r   c                   K   | j                         sPt        j                  t        j                        5  t        |        d {    d d d        | j                         sPt        |       S 7 (# 1 sw Y   'xY wwr!   )r=   rT   suppressr1   r3   r0   _future_resultfutures    r   _drain_futurer\   o   sc     kkm  !7!78 	+"6***	+ kkm &!! +	+ 	+s4   4A<A0A.A0
A<#A<.A00A95A<c                n   K   | j                         st        j                  | f       d {    y y 7 wr!   )r=   r1   rF   rZ   s    r   r0   r0   v   s+     ;;=llF9%%% %s   *535c                    | j                         }|j                  x}t        d|j                        S |j                  }	 |# t
        $ r	 ||_         w xY w)Nr   )resultr   r   r   __context__r?   )r[   outcomer   contexts       r   rY   rY   {   s\    mmoG'D'--((G #s   A Ac                j    	 t         |              S # t        $ r}t        |      cY d }~S d }~ww xY wN)r   )r   r   r?   )funcr   s     r   _capture_callrg      s/    ,TV,, ,U++,s    	2-22c                |   K   	 t        |  d {         S 7 	# t        $ r}t        |      cY d }~S d }~ww xY wwrd   re   )	awaitabler   s     r   _capture_awaitablerj      s4     ,9_55_ ,U++,s0   <
  < 	949<9<)r   r   r   rj   rg   r\   rY   r0   )r[   z#asyncio.Future[_BackendOutcome[_T]]rL   r   )r[   zasyncio.Future[_T]rL   rM   )rf   zCallable[[], _T]rL   _BackendOutcome[_T])ri   zAwaitable[_T]rL   rk   )"__doc__
__future__r   r1   rT   rC   concurrent.futuresr   r/   dataclassesr   	threadingr   typingr   r   r	   r
   r   collections.abcr   r   r   r   	Exceptionr   r   r   r\   r0   rY   rg   rj   __all__r   r   r   <module>ru      s    Q "    9 !  ? ?BBT]	y 	 $'gbk ' '
O  O d"&
	,,	r   