
    1j                    >   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mZ dd	l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$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NoReturnTypeVarcast   )_append_exception_context_raise_chained_errors)AsyncIterator	AwaitableCallable_Tc                      e Zd Zy) _AsyncTransitionUnavailableErrorN)__name__
__module____qualname__     z/home/vela/workspace/domain/tn-silver/web/tn-site/.runtime/depth-eval/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;;vCVr   )	ConcurrentFuturer&   r'   _wait_until_doneasynciowrap_futureCancelledErroradd_done_callbackr-   )r(   predecessorr0   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   r1   z7_AsyncTransitionGate.hold_for_acquire.<locals>.<lambda>L   r2   r   )r3   r&   r'   done_wait_for_predecessorBaseExceptionr8   r-   )r(   r<   r=   r>   r?   r9   r0   s   `     @r   hold_for_acquirez%_AsyncTransitionGate.hold_for_acquire5   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   r5   r6   rA   timeperf_counterminwait)r9   r<   r=   r>   r?   waiter	remainingwait_intervals           r   rB   z*_AsyncTransitionGate._wait_for_predecessorS   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(   r0   s     r   r-   z_AsyncTransitionGate._leavej   s9    __zzV#!
  	$ _s	   =AN)returnNone)rP   AsyncIterator[None])
r<   boolr=   Callable[[], bool] | Noner>   float | Noner?   floatrP   rR   )r9   ConcurrentFuture[None]r<   rS   r=   rT   r>   rU   r?   rV   rP   rQ   )r0   rW   rP   rQ   )r   r   r   r)   
contextlibasynccontextmanagerr:   rD   staticmethodrB   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%   )rA   rX   suppressr5   r7   r4   _future_resultfutures    r   _drain_futurer`   q   s\     kkm  !7!78"6*** 9 kkm &!! + 98s4   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%   )rA   r5   rJ   r^   s    r   r4   r4   x   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__rC   )r_   outcomer    contexts       r   r]   r]   }   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   rC   )funcr    s     r   _capture_callrk      s/    ,TV,, ,U++,s    	2-22c                    |j                   x}%|| ur!| j                   x}t        ||       || _         | |_         t        |       y r%   )rd   r   r   )cancellationr    rf   cancellation_contexts       r   _raise_cancelled_errorro      sQ     $$$1g\6Q$0$<$<< I%g/CD#* $E% r   c                |   K   	 t        |  d {         S 7 	# t        $ r}t        |      cY d }~S d }~ww xY wwrh   ri   )	awaitabler    s     r   _capture_awaitablerr      s4     ,9_55_ ,U++,s0   <
  < 	949<9<)	r#   r   r   rr   rk   r`   r]   ro   r4   )r_   z#asyncio.Future[_BackendOutcome[_T]]rP   r   )r_   zasyncio.Future[_T]rP   rQ   )rj   zCallable[[], _T]rP   _BackendOutcome[_T])rm   zasyncio.CancelledErrorr    rC   rP   r
   )rq   zAwaitable[_T]rP   rs   )'__doc__
__future__r   r5   rX   rG   concurrent.futuresr   r3   dataclassesr   	threadingr   typingr   r   r	   r
   r   r   _apir   r   collections.abcr   r   r   r   	Exceptionr   r   r#   r`   r4   r]   rk   ro   rr   __all__r   r   r   <module>r~      s    Q "    9 !  I I BBBT]	y 	 $'gbk ' '
O  O d"&
	,	!,
r   