
    Loj                    N   S r SSKJr  SSKrSSKrSSKrSSKJr  SSK	J
r
  SSKJr  SSKJrJrJrJrJrJr  SS	KJrJr  \(       a
  SS
KJrJrJr  \" S5      r " S S\5      r\
" SS9 " S S\\   5      5       r " S S5      rSS jr SS jr!SS jr"SS jr#SS jr$SS jr%/ SQr&g) 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                      \ rS rSrSrg) _AsyncTransitionUnavailableError    N)__name__
__module____qualname____firstlineno____static_attributes__r       I/mnt/workspace/venv-train/lib/python3.13/site-packages/filelock/_async.pyr   r      s    r   r   T)frozenc                  2    \ rS rSr% SrS\S'   SrS\S'   Srg)_BackendOutcome   Nz	_T | NonevaluezBaseException | Noneerrorr   )r   r   r   r   r#   __annotations__r$   r   r   r   r   r!   r!      s    E9"&E&r   r!   c                      \ rS rSrS	S jr\R                  S
S j5       r\R                            SS j5       r\	            SS j5       r
SS jrSrg)_AsyncTransitionGate   c                0    [        5       U l        S U l        g N)r   
_tail_lock_tail)selfs    r   __init___AsyncTransitionGate.__init__    s    '+v48
r   c                 ^ ^#    [        5       mT R                     T R                  nTT l        S S S 5        Wb(   [        [        R
                  " U5      5      I S h  vN    S 7v   T R                  T5        g ! , (       d  f       NQ= f N-! [        R                   a    UR                  U U4S j5        e f = f! T R                  T5        f = f7f)Nc                &   > TR                  T5      $ r*   _leave_predecessorr-   tickets    r   <lambda>+_AsyncTransitionGate.hold.<locals>.<lambda>.       4;;vCVr   )	ConcurrentFuturer+   r,   _wait_until_doneasynciowrap_futureCancelledErroradd_done_callbackr3   )r-   predecessorr6   s   ` @r   hold_AsyncTransitionGate.hold$   s     )9);__**KDJ  "&w':':;'GHHH	 KK _
 I)) --.VW KKsV   CA:C"B BB #B< (C:
BCB ,B99C<CCc                ^ ^#    [        5       mT R                     T R                  nTT l        S S S 5        Wb1  UR                  5       (       d   T R	                  UUUUUS9I S h  vN    S 7v   T R                  T5        g ! , (       d  f       NZ= f N-! [
         a    UR                  U U4S j5        e f = f! T R                  T5        f = f7f)N)blockingcancel_checkdeadlinepoll_intervalc                &   > TR                  T5      $ r*   r2   r4   s    r   r7   7_AsyncTransitionGate.hold_for_acquire.<locals>.<lambda>L   r9   r   )r:   r+   r,   done_wait_for_predecessorBaseExceptionr?   r3   )r-   rD   rE   rF   rG   r@   r6   s   `     @r   hold_for_acquire%_AsyncTransitionGate.hold_for_acquire5   s      *:);__**KDJ  ";+;+;+=+=
00%!-%"/ 1   	 KK% _
 ! --.VW KKsW   CB CB &B'B ,B; 1C
BCB "B88C;CCc                 #    U(       d  [         e[        R                  " U 5      nU R                  5       (       d  Ub  U" 5       (       a  [         eUb5  U[        R
                  " 5       -
  =nS::  a  [         eUb  [        XF5      OUnOUb  UOS n[        R                  " U4US9I S h  vN   U R                  5       (       d  M  g g  N7f)Nr   )timeout)r   r<   r=   rJ   timeperf_counterminwait)r@   rD   rE   rF   rG   waiter	remainingwait_intervals           r   rK   *_AsyncTransitionGate._wait_for_predecessorS   s      22$$[1""$$'LNN66#!)D,=,=,?!??IAE::AMAYM =_h1=1It,,y-@@@ ""$$ As   B&C(C)CCc                    U R                      U R                  UL a  S U l        S S S 5        UR                  S 5        g ! , (       d  f       N = fr*   )r+   r,   
set_result)r-   r6   s     r   r3   _AsyncTransitionGate._leavej   s9    __zzV#!
  	$ _s	   >
A)r,   r+   N)returnNone)r\   AsyncIterator[None])
rD   boolrE   Callable[[], bool] | NonerF   float | NonerG   floatr\   r^   )r@   ConcurrentFuture[None]rD   r_   rE   r`   rF   ra   rG   rb   r\   r]   )r6   rc   r\   r]   )r   r   r   r   r.   
contextlibasynccontextmanagerrA   rM   staticmethodrK   r3   r   r   r   r   r'   r'      s    9 ##  $   ##    0	 
     
  $ : A+A A 0	A
 A A 
A A, r   r'   c                  #    U R                  5       (       dW  [        R                  " [        R                  5         [        U 5      I S h  vN   S S S 5        U R                  5       (       d  MW  [        U 5      $  N.! , (       d  f       N2= f7fr*   )rJ   rd   suppressr<   r>   r;   _future_resultfutures    r   _drain_futurerl   q   s^     kkmm  !7!78"6*** 9 kkmm &!! + 98s4   :BA<A:A<B/B:A<<
B
Bc                z   #    U R                  5       (       d   [        R                  " U 45      I S h  vN   g g  N7fr*   )rJ   r<   rT   rj   s    r   r;   r;   x   s,     ;;==llF9%%% %s   0;9;c                    U R                  5       nUR                  =nc  [        SUR                  5      $ UR                  n Ue! [
         a    X2l        e f = f)Nr   )resultr$   r   r#   __context__rL   )rk   outcomer$   contexts       r   ri   ri   }   sZ    mmoG'D'--((G #s   A Ac                `     [        U " 5       S9$ ! [         a  n[        US9s S nA$ S nAff = fN)r#   )r$   r!   rL   )funcr$   s     r   _capture_callrw      s/    ,TV,, ,U++,s    
-(--c                    UR                   =nb$  X La   U R                   =nb  [        X#5        X l         Xl         [        U5        g r*   )rp   r   r   )cancellationr$   rr   cancellation_contexts       r   _raise_cancelled_errorr{      sH     $$$1g6Q$0$<$<< I%gD#* $% r   c                r   #     [        U I S h  vN S9$  N! [         a  n[        US9s S nA$ S nAff = f7frt   ru   )	awaitabler$   s     r   _capture_awaitabler~      s3     ,9_55_ ,U++,s0   7
  7 
4/4747)	r'   r   r!   r~   rw   rl   ri   r{   r;   )rk   z#asyncio.Future[_BackendOutcome[_T]]r\   r   )rk   zasyncio.Future[_T]r\   r]   )rv   zCallable[[], _T]r\   _BackendOutcome[_T])ry   zasyncio.CancelledErrorr$   rL   r\   r
   )r}   zAwaitable[_T]r\   r   )'__doc__
__future__r   r<   rd   rQ   concurrent.futuresr   r:   dataclassesr   	threadingr   typingr   r   r	   r
   r   r   _apir   r   collections.abcr   r   r   r   	Exceptionr   r!   r'   rl   r;   ri   rw   r{   r~   __all__r   r   r   <module>r      s    Q "    9 !  I I BBBT]	y 	 $'gbk ' '
O  O d"&
	,	!,
r   