Ë
    ãš¾j0  ã                  óÌ  — U 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mZ ddlmZ d	d
lmZmZmZ d	dlmZ erddlmZmZm Z  d	dl!m"Z" d	dl#m$Z$  ed«      Z% G d„ de&«      Z' e
d¬«       G d„ dee%   «      «       Z( G d„ d«      Z) G d„ d«      Z* e«       Z+de,d<    e«       Z-de,d<   d'd„Z.d(d„Z/d)d „Z0d*d!„Z1d)d"„Z2d+d#„Z3d,d$„Z4d-d%„Z5g d&¢Z6y).zKSeparate caller cancellation from backend task and executor-future results.é    )ÚannotationsN)ÚFuture)Ú	dataclass)ÚLock)ÚTYPE_CHECKINGÚFinalÚGenericÚLiteralÚNoReturnÚTypeVarÚcast)ÚWeakKeyDictionaryé   )Ú_append_exception_contextÚ_fork_transitionÚ_raise_chained_errors)ÚTimeout)ÚAsyncIteratorÚ	AwaitableÚCallable)ÚReadWriteLock)ÚSoftReadWriteLockÚ_Tc                  ó   — e Zd Zy)Ú _AsyncTransitionUnavailableErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    úY/home/spazio/kingdom_calls/work5/transenv/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   … à€Eˆ9ÓØ"&€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>3   ó   ø€ À4Ç;Á;ÈvÓCV€ r    )	ÚConcurrentFuturer,   r-   Ú_wait_until_doneÚasyncioÚwrap_futureÚCancelledErrorÚadd_done_callbackr4   )r/   Úpredecessorr7   s   ` @r!   Úholdz_AsyncTransitionGate.hold)   s°   ùè ø€ ä)9Ó);ˆØ�_‰_ñ 	 ØŸ*™*ˆKØˆDŒJ÷	 ð Ð"ðÜ&¤w×':Ñ':¸;Ó'GÓH×HÐHð	 Üà�K‰K˜Õ÷	 ð 	 úð
 IùÜ×)Ñ)ò Ø×-Ñ-Ô.VÔWØðûð �K‰K˜Õü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+   r3   r5   s    €€r!   r8   z7_AsyncTransitionGate.hold_for_acquire.<locals>.<lambda>Q   r9   r    )r:   r,   r-   ÚdoneÚ_wait_for_predecessorÚBaseExceptionr?   r4   )r/   rC   rD   rE   rF   r@   r7   s   `     @r!   Úhold_for_acquirez%_AsyncTransitionGate.hold_for_acquire:   sË   ùè ø€ ô *:Ó);ˆØ�_‰_ñ 	 ØŸ*™*ˆKØˆDŒJ÷	 ð Ð"¨;×+;Ñ+;Ô+=ð
Ø×0Ñ0ØØ%Ø!-Ø%Ø"/ð 1ó ÷ ð ð	 Üà�K‰K˜Õ÷%	 ð 	 úð
ùô !ò Ø×-Ñ-Ô.VÔWØðûð �K‰K˜Õü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   r<   r=   rH   ÚtimeÚperf_counterÚminÚwait)r@   rC   rD   rE   rF   ÚwaiterÚ	remainingÚwait_intervals           r!   rI   z*_AsyncTransitionGate._wait_for_predecessorX   s®   è ø€ ñ Ü2Ð2Ü×$Ñ$ [Ó1ˆØ×"Ñ"Ô$ØÐ'©L¬NÜ6Ð6ØÐ#Ø!)¬D×,=Ñ,=Ó,?Ñ!?Ð?�IÀAÒEÜ:Ð:ØAMÐAY¤ M°9Ô =Ð_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/   r7   s     r!   r4   z_AsyncTransitionGate._leaveo   sA   € Ø�_‰_ñ 	"Ø�z‰z˜VÑ#Ø!�”
÷	"ð 	×Ñ˜$Õ÷	"ð 	"ús	   �=½AN©ÚreturnÚNone)rY   úAsyncIterator[None])
rC   ÚboolrD   úCallable[[], bool] | NonerE   úfloat | NonerF   ÚfloatrY   r[   )r@   úConcurrentFuture[None]rC   r\   rD   r]   rE   r^   rF   r_   rY   rZ   )r7   r`   rY   rZ   )r   r   r   r0   Ú
contextlibÚasynccontextmanagerrA   rK   ÚstaticmethodrI   r4   r   r    r!   r)   r)   $   sÈ   „ ó9ð ×#Ñ#ò ó $ð ð  ×#Ñ#ð ð ð ð 0ð	 ð
 ð ð ð ð 
ò ó $ð ð: ðAØ+ðAð ðAð 0ð	Að
 ðAð ðAð 
òAó ðAô, r    r)   c                  ó„   — e Zd ZdZdd„Z	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zddœ	 	 	 	 	 dd	„Z	dd
„Z
y)Ú_TaskOwnersal  
    Per-task ownership in front of a sync reader/writer lock that tracks threads.

    An async wrapper runs each call on an executor thread, and that thread does not identify the calling task. Waiting
    writers block new readers so a stream of readers cannot starve them. A thread lock guards the table because tasks on
    different event loops share it.
    c                óx   — t        «       | _        d | _        i | _        d| _        d| _        t        «       | _        y )NFr   )r   Ú_lockÚ_modeÚ_depthsÚ_transitioningÚ_waiting_writersr:   Ú_changedr.   s    r!   r0   z_TaskOwners.__init__   s3   € Ü"&£&ˆŒ
Ø6:ˆŒ
Ø8:ˆŒØ#ˆÔØ !ˆÔÜ0@Ó0Bˆ�r    c             ƒ  ó   K  — t        «       }|r|dk  r|dk7  rd}t        |«      ‚|dk  rd nt        j                  «       |z   }d}		 t	        | j                  ||||	¬«      x}
t        «      rÍ|r|�"t        j                  «       |k\  rt        |«      ‚|dk(  r.|	s,d}	| j                  5  | xj                  dz  c_	        d d d «       |€d n|t        j                  «       z
  }t        j                  t        j                  |
«      f|¬	«      ƒ d {  –—†  t	        | j                  ||||	¬«      x}
t        «      rŒÍ|	r:| j                  5  | xj                  dz  c_	        | j                  «        d d d «       |
d
k(  ry 	  ||€dn t        d|t        j                  «       z
  «      «      ƒ d {  –—†  | j!                  ||¬«       y # 1 sw Y   �ŒxY w7 ŒÁ# 1 sw Y   ŒfxY w# |	rG| j                  5  | xj                  dz  c_	        | j                  «        d d d «       w # 1 sw Y   w xY ww xY w7 Œ�# t        $ r | j!                  d ¬«       ‚ w xY w­w)Nr   éÿÿÿÿz+timeout must be a non-negative number or -1F)Úwaiting_writerÚwriteTr   rM   Úheldg        ©Úmode©rs   Úholder)Ú_current_taskÚ
ValueErrorrO   rP   Ú
isinstanceÚ_admitr:   r   rg   rk   r<   rR   r=   Ú_notifyÚmaxrJ   Ú_finish_transition)r/   rs   rN   rC   Ú	lock_fileÚenterÚtaskÚmsgrE   ro   Ú	admissionrR   s               r!   Úacquirez_TaskOwners.acquire‡   s5  è ø€ ô ‹ˆÙ˜ !š¨°2ªØFˆCÜ˜S“/Ð!Ø" Qš;‘4¬D×,=Ñ,=Ó,?À'Ñ,IˆØˆð	#ÜØ!Ÿ[™[¨¨t°YÈ~˜[Ó^Ð^�	Ô`pôñ   HÐ$8¼T×=NÑ=NÓ=PÐT\Ò=\Ü! )Ó,Ð,Ø˜7’?©>Ø%)�NØŸ™ñ 3Ø×-Ò-°Ñ2Õ-÷3à'Ð/‘t°XÄ×@QÑ@QÓ@SÑ5S�Ü—l‘l¤G×$7Ñ$7¸	Ó$BÐ#DÈdÔS×SÐSô Ø!Ÿ[™[¨¨t°YÈ~˜[Ó^Ð^�	Ô`põñ Ø—Z‘Zñ #Ø×)Ò)¨QÑ.Õ)Ø—L‘L”N÷#ð ˜ÒØð	Ù˜hÐ.™´C¸¸XÌ×HYÑHYÓH[Ñ=[Ó4\Ó]×]Ð]ð 	×Ñ T°$ÐÕ7÷!3ñ 3úð Tø÷#ð #ûñ Ø—Z‘Zñ #Ø×)Ò)¨QÑ.Õ)Ø—L‘L”N÷#÷ #ñ #úð úð ^ùÜò 	Ø×#Ñ#¨Ð#Ô.Øð	üsž   ‚AIÁA G Â'GÂ=AG ÄGÄ)G Ä9IÅ&GÅ-IÅ<.H. Æ*H,Æ+H. Æ/IÇGÇ	G ÇGÇIÇH)Ç-&HÈ	H)ÈH%È!H)È)IÈ,H. È.IÉIc          
     ó*  — | j                   5  | j                  j                  |«      x}�S| j                  |k7  r(d|› d|› d|dk(  rdnd› d|dk(  rdnd› d	�	}t	        |«      ‚|d
z   | j                  |<   	 d d d «       y| j
                  |z
  }| j                  s[|dk(  r*| j                  dk(  r|sd
| j                  |<   	 d d d «       y| j                  s |dk(  s|sd|c| _        | _        	 d d d «       y| j                  cd d d «       S # 1 sw Y   y xY w)NzCannot acquire z	 lock on z: already holding a Úreadrp   z lock (Ú	downgradeÚupgradez not allowed)r   rq   Tr~   )rg   ri   Úgetrh   ÚRuntimeErrorrk   rj   rl   )r/   r   rs   r}   ro   Údepthr€   Úwriters_aheads           r!   ry   z_TaskOwners._admit°   s3  € ð �Z‰Zñ 	!ØŸ™×)Ñ)¨$Ó/Ð/�Ð<Ø—:‘: Ò%à)¨$¨¨y¸¸ÐCWØ&*¨f¢n™7¸&ÐAð BØ+/°6ª>™K¸yÐIÈðXð ô
 ' sÓ+Ð+Ø%*¨Q¡Y�—‘˜TÑ"Ø÷	!ð 	!ð !×1Ñ1°NÑBˆMØ×&Ò&Ø˜6’> d§j¡j°FÒ&:Á=Ø)*�D—L‘L Ñ&Ø!÷	!ð 	!ð  —|’|¨°ªÁØ6:¸DÐ3�DÔ'¨¬Ø"÷%	!ð 	!ð& —=‘=÷'	!÷ 	!ò 	!ús   �A(D	Á>AD	Ã#D	Ã4D	Ä	Dc             ƒ  ó  K  — t        «       }| j                  5  | j                  j                  |«      x}€|r
	 d d d «       y d|› d�}t	        |«      ‚|s!|dkD  r|dz
  | j                  |<   	 d d d «       y | j                  |= | j                  r
	 d d d «       y d| _        | j                  }d d d «       	  |«       ƒ d {  –—†  | j                  d ¬«       y # 1 sw Y   Œ,xY w7 Œ## t        $ r | j                  |¬«       ‚ w xY w­w)NzCannot release a lock on z that is not held by this taskr   Trt   rr   )	rv   rg   ri   r‡   rˆ   rj   rh   rJ   r|   )r/   Úforcer}   Úleaver   r‰   r€   rs   s           r!   Úreleasez_TaskOwners.releaseÍ   s  è ø€ Ü‹ˆØ�Z‰Zñ 	ØŸ™×)Ñ)¨$Ó/Ð/�Ð8ÙØ÷	ð 	ð 2°)°Ð<ZÐ[�Ü" 3Ó'Ð'Ù˜U QšYØ%*¨Q¡Y�—‘˜TÑ"Ø÷	ð 	ð —‘˜TÐ"Ø�|Š|Ø÷	ð 	ð #'ˆDÔØ—:‘:ˆD÷	ð	Ù“'�MˆMð
 	×Ñ TÐÕ*÷)	ð 	úð ùÜò 	à×#Ñ#¨°dÐ#Ô;Øð	üsi   ‚D™!Cº	DÁ+CÁ.	DÁ7CÂ	DÂCÂ-DÂ6
C& Ã C$ÃC& ÃDÃC!ÃDÃ$C& Ã&DÄDc                ó¸   — | j                   5  | j                  j                  «        d\  | _        | _        | j                  «        d d d «       y # 1 sw Y   y xY w)N)NF)rg   ri   Úclearrh   rj   rz   r.   s    r!   Úresetz_TaskOwners.resetå   sF   € Ø�Z‰Zñ 	Ø�L‰L×ÑÔ Ø.9Ñ+ˆDŒJ˜Ô+Ø�L‰LŒN÷	÷ 	ñ 	ús   �:AÁAN)ru   c               ó¦   — | j                   5  d|c| _        | _        |�d| j                  |<   | j	                  «        d d d «       y # 1 sw Y   y xY w)NFr   )rg   rj   rh   ri   rz   )r/   rs   ru   s      r!   r|   z_TaskOwners._finish_transitionë   sN   € ð �Z‰Zñ 	Ø.3°TÐ+ˆDÔ ¤ØÐ!Ø'(�—‘˜VÑ$Ø�L‰LŒN÷		÷ 	ñ 	ús   �1AÁAc                ó^   — | j                   t        «       c}| _         |j                  d «       y r+   )rl   r:   rW   )r/   Úchangeds     r!   rz   z_TaskOwners._notifyô   s&   € Ø!%§¡Ô0@Ó0BÐˆ�”Ø×Ñ˜4Õ r    rX   )rs   úLiteral['read', 'write']rN   r_   rC   r\   r}   Ústrr~   z"Callable[[float], Awaitable[None]]rY   rZ   )
r   úasyncio.Task[object]rs   r•   r}   r–   ro   r\   rY   z1Literal['held', 'enter'] | ConcurrentFuture[None])rŒ   r\   r}   r–   r�   zCallable[[], Awaitable[None]]rY   rZ   )rs   zLiteral['read', 'write'] | Noneru   zasyncio.Task[object] | NonerY   rZ   )r   r   r   Ú__doc__r0   r‚   ry   rŽ   r‘   r|   rz   r   r    r!   re   re   v   sµ   „ ñóCð'8à&ð'8ð ð	'8ð
 ð'8ð ð'8ð 2ð'8ð 
ó'8ðR!à"ð!ð 'ð!ð ð	!ð ð!ð 
;ó!ó:+ó0ð _cñØ6ðØ@[ðà	óô!r    re   zHFinal[WeakKeyDictionary[ReadWriteLock | SoftReadWriteLock, _TaskOwners]]Ú_TASK_OWNERSzFinal[Lock]Ú_TASK_OWNERS_LOCKc                óä   — t        «       5  t        5  t        j                  | «      x}€t	        «       x}t        | <   |cddd«       cddd«       S # 1 sw Y   nxY wddd«       y# 1 sw Y   yxY w)zNSingleton wrappers share one sync lock, so they must share its task holds too.N)r   rš   r™   r‡   re   )Ú	sync_lockÚownerss     r!   Ú_task_owners_forrž   ý   sd   € ä	Ó	ñ Ô.ñ Ü"×&Ñ& yÓ1Ð1ˆFÐ:Ü/:«}Ð<ˆF”\ )Ñ,Ø÷÷ ÷ ó ú÷ ÷ ñ ús!   ‹A&’,A¾	A&ÁA	ÁA&Á&A/c                 óL   — t        j                  «       x} €d}t        |«      ‚| S )NzDan async reader/writer lock must be used from inside an asyncio task)r<   Úcurrent_taskrˆ   )r   r€   s     r!   rv   rv     s+   € Ü×$Ñ$Ó&Ð&ˆÐ/ØTˆÜ˜3ÓÐØ€Kr    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+   )rH   ra   Úsuppressr<   r>   r;   Ú_future_result©Úfutures    r!   Ú_drain_futurer¦     sc   è ø€ Ø�k‰kŒmÜ× Ñ ¤×!7Ñ!7Ó8ñ 	+Ü" 6Ó*×*Ð*÷	+ð �k‰k�mô ˜&Ó!Ð!ð +ø÷	+ð 	+ü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+   )rH   r<   rR   r¤   s    r!   r;   r;     s+   è ø€ Ø�;‰;Œ=Ü�l‰l˜F˜9Ó%×%Ñ%ð Ø%ús   ‚*5¬3­5c                ó²   — | j                  «       }|j                  x}€t        d|j                  «      S |j                  }	 |‚# t
        $ r	 ||_        ‚ w xY w)Nr   )Úresultr&   r   r%   Ú__context__rJ   )r¥   Úoutcomer&   Úcontexts       r!   r£   r£     s\   € Ø�m‰m‹o€GØ—‘ÐˆÐ'Ü�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$   rJ   )Úfuncr&   s     r!   Ú_capture_callr±   $  s/   € ð,Ü¡T£VÔ,Ð,øÜò ,Ü UÔ+Õ+ûð,ús   ‚ “	2œ-§2­2c                óŽ   — |j                   x}�%|| ur!| j                   x}�t        ||«       || _         | |_         t        |«       y r+   )rª   r   r   )Úcancellationr&   r¬   Úcancellation_contexts       r!   Ú_raise_cancelled_errorrµ   +  sQ   € ð ×$Ñ$Ð$ˆÐ1°gÀ\Ñ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r®   r¯   )Ú	awaitabler&   s     r!   Ú_capture_awaitabler¸   7  s4   è ø€ ð,Ü¨9§_Ô5Ð5 _ùÜò ,Ü UÔ+Õ+ûð,üs0   ‚<„
 Ž� —<˜ š	9£4®9¯<´9¹<)
r)   r   r$   r¸   r±   r¦   r£   rµ   rž   r;   )rœ   z!ReadWriteLock | SoftReadWriteLockrY   re   )rY   r—   )r¥   z#asyncio.Future[_BackendOutcome[_T]]rY   r   )r¥   zasyncio.Future[_T]rY   rZ   )r°   zCallable[[], _T]rY   ú_BackendOutcome[_T])r³   zasyncio.CancelledErrorr&   rJ   rY   r   )r·   zAwaitable[_T]rY   r¹   )7r˜   Ú
__future__r   r<   ra   rO   Úconcurrent.futuresr   r:   Údataclassesr   Ú	threadingr   Útypingr   r   r	   r
   r   r   r   Úweakrefr   Ú_apir   r   r   Ú_errorr   Úcollections.abcr   r   r   Ú_read_writer   Ú_soft_rwr   r   Ú	Exceptionr   r$   r)   re   r™   r'   rš   rž   rv   r¦   r;   r£   r±   rµ   r¸   Ú__all__r   r    r!   ú<module>rÇ      sâ   ðÚ Qå "ã Û Û Ý 9Ý !Ý ß R× RÑ RÝ %ç TÑ TÝ áßBÑBå*Ý+áˆTƒ]€ô	 yô 	ñ �$Ôô'�g˜b‘kó 'ó ð'÷
O ñ O ÷d@!ñ @!ñF ZkÓYl€ÐVÓ lÙ!%£Ð �;Ó 'óóó"ó&ó
	ó,ó	!ó,ò�r    