Ë
    °ëjP  ã                  ó<  — U d Z ddlmZ g d¢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 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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' ddl(m)Z)  ed«      Z*dZ+de,d<    G d„ de-«      Z. ed¬«       G d„ dee*   «      «       Z/ G d„ d«      Z0e G d„ d«      «       Z1 G d„ d«      Z2 e«       Z3d e,d!<    e«       Z4d"e,d#<   d/d$„Z5d0d%„Z6d1d&„Z7d2d'„Z8d3d(„Z9d2d)„Z:	 	 	 	 	 	 	 	 d4d*„Z;d5d+„Z<d6d,„Z=d7d-„Z>g d.¢Z?y)8zKSeparate caller cancellation from backend task and executor-future results.é    )Úannotations)ÚasyncioÚcollectionszconcurrent.futureszfilelock._errorN)Údeque)ÚFuture)Ú	dataclass)ÚLock)ÚTYPE_CHECKINGÚFinalÚGenericÚLiteralÚNoReturnÚTypeVarÚcast)ÚWeakKeyDictionary)Ú_append_exception_contextÚ_fork_transitionÚ_raise_chained_errorsÚ_resolve_read_write_timeout)ÚTimeout)ÚAsyncGeneratorÚ	AwaitableÚCallable)ÚExecutor)ÚReadWriteLock)ÚSoftReadWriteLockÚ_Tz
Final[int]Ú_TASKS_THREAD_IDc                  ó   — e Zd Zy)Ú _AsyncTransitionUnavailableErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    ú\/home/oem/CyberBrain26-unified/dev-env/.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   … à€Eˆ9ÓØ"&€EÐÔ&r%   r)   c                  ó¸   — e Zd ZdZdd„Zej                  dd„«       Zej                  	 	 	 	 	 	 	 	 	 	 dd„«       Z	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	dd„Z
dd„Zdd„Zdd	„Zy
)Ú_AsyncTransitionGatea
  
    First-in, first-out admission for the calls that transition one lock context.

    Each call queues a ticket, and the head of the queue holds the gate. A call that gives up removes its own ticket,
    so abandoned calls do not pile up behind a long holder.
    c                ó@   — t        «       | _        t        «       | _        y ©N)r	   Ú_queue_lockr   Ú_queue©Úselfs    r&   Ú__init__z_AsyncTransitionGate.__init__9   s   € Ü(,«ˆÔÜ<A»Gˆ�r%   c               óü   K  — t        «       }	 | j                  |«       |j                  «       s| j                  |dd d d¬«      ƒ d {  –—†  d ­–— | j	                  |«       y 7 Œ# | j	                  |«       w xY w­w)NTgš™™™™™©?©ÚblockingÚcancel_checkÚdeadlineÚpoll_interval©ÚConcurrentFutureÚ_joinÚdoneÚ_wait_for_turnÚ_leave©r4   Útickets     r&   Úholdz_AsyncTransitionGate.hold=   sm   è ø€ ä)9Ó);ˆð	 Ø�J‰J�vÔØ—;‘;”=Ø×)Ñ)¨&¸4ÈdÐ]aÐquÐ)Óv×vÐvÜà�K‰K˜Õð wùð �K‰K˜Õüó.   ‚A<Ž:A& ÁA$Á		A& ÁA<Á$A& Á&A9Á9A<c              óü   K  — t        «       }	 | j                  |«       |j                  «       s| j                  |||||¬«      ƒ d {  –—†  d ­–— | j	                  |«       y 7 Œ# | j	                  |«       w xY w­w)Nr7   r<   )r4   r8   r9   r:   r;   rC   s         r&   Úhold_for_acquirez%_AsyncTransitionGate.hold_for_acquireH   s{   è ø€ ô *:Ó);ˆð	 Ø�J‰J�vÔØ—;‘;”=Ø×)Ñ)ØØ%Ø!-Ø%Ø"/ð *ó ÷ ð ô à�K‰K˜Õðùð �K‰K˜ÕürE   c             ƒ  óp  K  — |st         ‚t        j                  |«      }|j                  «       sƒ|� |«       rt         ‚|}|�.|t	        j
                  «       z
  x}dk  rt         ‚t        ||«      }t        j                  |f|¬«      ƒ d {  –—†  | j                  «        |j                  «       sŒ‚y y 7 Œ'­w)Nr   ©Útimeout)	r    r   Úwrap_futurer?   ÚtimeÚperf_counterÚminÚwaitÚ_settle_head)	r4   rC   r8   r9   r:   r;   ÚwaiterÚwait_intervalÚ	remainings	            r&   r@   z#_AsyncTransitionGate._wait_for_turn`   s¥   è ø€ ñ Ü2Ð2Ü×$Ñ$ VÓ,ˆØ—+‘+”-ØÐ'©L¬NÜ6Ð6Ø)ˆMØÐ#Ø!)¬D×,=Ñ,=Ó,?Ñ!?Ð?�IÀAÒEÜ:Ð:Ü # M°9Ó =�Ü—,‘, ˜y°-Ô@×@Ð@à×ÑÔð —+‘+—-ð Aús   ‚B
B6ÂB4Â$B6Â2B6c                óÎ   — | j                   5  | j                  j                  |«       t        | j                  «      dk(  r|j	                  d «       d d d «       y # 1 sw Y   y xY w)Né   )r1   r2   ÚappendÚlenÚ
set_resultrB   s     r&   r>   z_AsyncTransitionGate._joinx   sQ   € Ø×Ññ 	(Ø�K‰K×Ñ˜vÔ&Ü�4—;‘;Ó 1Ò$Ø×!Ñ! $Ô'÷	(÷ 	(ñ 	(ús   �AAÁA$c                óÌ   — | j                   5  	 | j                  j                  |«       | j	                  «        d d d «       y # t        $ r Y d d d «       y w xY w# 1 sw Y   y xY wr0   )r1   r2   ÚremoveÚ
ValueErrorÚ_settle_head_lockedrB   s     r&   rA   z_AsyncTransitionGate._leave~   sh   € Ø×Ññ 	'ðØ—‘×"Ñ" 6Ô*ð ×$Ñ$Ô&÷	'ð 	'øô ò à÷	'ð 	'ðú÷	'ð 	'ús-   �A�AªAÁ	AÁAÁAÁAÁA#c                óf   — | j                   5  | j                  «        d d d «       y # 1 sw Y   y xY wr0   )r1   r\   r3   s    r&   rP   z!_AsyncTransitionGate._settle_head‡   s,   € Ø×Ññ 	'Ø×$Ñ$Ô&÷	'÷ 	'ñ 	'ús   �'§0c                ó€   — | j                   r2| j                   d   x}j                  «       s|j                  d «       y y y )Nr   )r2   r?   rX   )r4   Úheads     r&   r\   z(_AsyncTransitionGate._settle_head_locked‹   s4   € Ø�;Š;¨¯©°A©Ð 6 ×<Ñ<Ô>Ø�O‰O˜DÕ!ð  ?ˆ;r%   N©ÚreturnÚNone)ra   úAsyncGenerator[None])
r8   Úboolr9   úCallable[[], bool] | Noner:   úfloat | Noner;   Úfloatra   rc   )rC   úConcurrentFuture[None]r8   rd   r9   re   r:   rf   r;   rg   ra   rb   ©rC   rh   ra   rb   )r!   r"   r#   Ú__doc__r5   Ú
contextlibÚasynccontextmanagerrD   rG   r@   r>   rA   rP   r\   r$   r%   r&   r.   r.   1   sÆ   „ ñóDð ×#Ñ#ò ó $ð ð ×#Ñ#ð ð ð ð 0ð	 ð
 ð ð ð ð 
ò ó $ð ð. à&ð ð ð	 ð
 0ð ð ð ð ð ð 
ó ó0(ó'ó'ô"r%   r.   c                  ó   — e Zd ZU dZded<   y)Ú	_TaskHoldzÙ
    One task's hold, as the nesting count per wrapper it entered through.

    A task's hold ends when its last wrapper level is released or closed. Closing one wrapper ends only the levels
    taken through it.
    zdict[object, int]ÚdepthsN)r!   r"   r#   rj   r,   r$   r%   r&   rn   rn   �   s   … ñð Ôr%   rn   c                  óÜ   — e Zd ZdZd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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. The table stands for one backend level, taken once for all tasks. Sync code can
    end that level directly, with ``close()`` or a forced release on a shared singleton. The next admission then
    forgets the holds instead of letting more tasks join them.
    c                óh   — t        «       | _        d | _        i | _        d| _        d| _        i | _        y )NFr   )r	   Ú_lockÚ_modeÚ_holdsÚ_transitioningÚ_waiting_writersÚ_waitersr3   s    r&   r5   z_TaskOwners.__init__§   s2   € Ü"&£&ˆŒ
Ø6:ˆŒ
Ø=?ˆŒØ#ˆÔØ !ˆÔð =?ˆ�r%   c          
   ƒ  ó   K  — t        «       }t        ||¬«      }|r|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 {  –—†  | j                  |«       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#                  ||t%        |di¬«      i¬«       y # 1 sw Y   �Œ)xY w7 Œâ# | j                  |«       w xY w# 1 sw Y   ŒŠx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)N)r8   r   F)ÚviaÚjoinableÚwaiting_writerÚwriteTrU   rI   Úheldéÿÿÿÿg        ©Úmode©ro   ©r�   Úholds)Ú_current_taskr   rL   rM   Ú
isinstanceÚ_admitr=   r   rs   rw   r   rO   rK   Ú_forgetÚ_notifyÚmaxÚBaseExceptionÚ_finish_transitionrn   )r4   r�   rJ   r8   Ú	lock_filerz   Úenterr{   Útaskr:   r|   Ú	admissionrO   s                r&   Úacquirez_TaskOwners.acquire±   so  è ø€ ô ‹ˆÜ-¨gÀÔIˆÙ'¨7°Qª;‘4¼D×<MÑ<MÓ<OÐRYÑ<YˆØˆð	#ÜØ!Ÿ[™[Ø˜$ 	¨s¸XÐVdð )ó ð �	ô !ô	ð
,Ù#¨Ð(<Ä×ARÑARÓATÐX`ÒA`Ü% iÓ0Ð0Ø˜w’©~Ø)-˜Ø!ŸZ™Zñ 7Ø ×1Ò1°QÑ6Õ1÷7à#+Ð#3™4¸ÄD×DUÑDUÓDWÑ9W�DÜ!Ÿ,™,¬×(;Ñ(;¸IÓ(FÐ'HÐRVÔW×WÐWà—L‘L Ô+ô! Ø!Ÿ[™[Ø˜$ 	¨s¸XÐVdð )ó ð �	ô !õ	ñ$ Ø—Z‘Zñ #Ø×)Ò)¨QÑ.Õ)Ø—L‘L”N÷#ð ˜ÒØð	Ù˜hÐ.™´C¸¸XÌ×HYÑHYÓH[Ñ=[Ó4\Ó]×]Ð]ð 	×Ñ T°$¼	È#ÈqÈÔ8RÐ1SÐÕT÷%7ñ 7úð Xùà—L‘L Õ+ú÷#ð #ûñ Ø—Z‘Zñ #Ø×)Ò)¨QÑ.Õ)Ø—L‘L”N÷#÷ #ñ #úð úð ^ùÜò 	Ø×#Ñ#¨Ð#Ô.Øð	üs³   ‚:I>½'H Á%;G, Â GÂ6AG, ÄG*ÄG, Ä8H ÅI>Å&HÅ9I>Æ.I Æ6IÆ7I Æ;"I>ÇG'Ç"	G, Ç,G?Ç?H ÈHÈI>ÈIÈ&IÉ	IÉIÉIÉI>ÉI ÉI;É;I>c          
     óþ  — | j                   5  | j                  �4| j                  s( |«       s!| j                  j	                  «        d | _        | j                  j                  |«      x}�m| j                  |k7  r(d|› d|› d|dk(  rdnd› d|dk(  rdnd› d	�	}t        |«      ‚|j                  j                  |d
«      dz   |j                  |<   	 d d d «       y| j                  |z
  }	| j                  sg|dk(  r6| j                  dk(  r'|	s%t        |di¬«      | 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 Úreadr}   z lock (Ú	downgradeÚupgradez not allowed)r   rU   r~   r‚   TrŽ   )rs   rt   rv   ru   ÚclearÚgetÚRuntimeErrorro   rw   rn   Ú_ticket)
r4   r�   r�   r�   rz   r{   r|   rD   ÚmsgÚwriters_aheads
             r&   r‡   z_TaskOwners._admità   s{  € ð �Z‰Zñ 	"ð �z‰zÐ%¨d×.AÒ.AÉ(Ì*Ø—‘×!Ñ!Ô#Ø!�”
ØŸ™Ÿ™¨Ó-Ð-�Ð:Ø—:‘: Ò%à)¨$¨¨y¸¸ÐCWØ&*¨f¢n™7¸&ÐAð BØ+/°6ª>™K¸yÐIÈðXð ô
 ' sÓ+Ð+Ø#'§;¡;§?¡?°3¸Ó#:¸QÑ#>�—‘˜CÑ Ø÷	"ð 	"ð  !×1Ñ1°NÑBˆMØ×&Ò&Ø˜6’> d§j¡j°FÒ&:Á=Ü(1¸#¸q¸Ô(B�D—K‘K Ñ%Ø!÷)	"ð 	"ð* —{’{¨°ª¹}Ø6:¸DÐ3�DÔ'¨¬Ø"÷/	"ð 	"ð0 —<‘<“>÷1	"÷ 	"ò 	"ús   �CE3ÃAE3Ä.#E3ÅE3Å3E<c             ƒ  óV  K  — t        «       }| j                  5  | j                  j                  |«      x}�||j                  vr|r
	 d d d «       y d|› d�}t        |«      ‚|s3|j                  |   dkD  r!|j                  |xx   dz  cc<   	 d d d «       y |j                  j                  |«      }	|j                  r
	 d d d «       y | j                  |= | j                  r
	 d d d «       y d| _        | j                  }
d d d «        |«       s#| j                  d ¬«       d|› d�}t        |«      ‚	 t         |«       «      ƒ d {  –—† }| j                  d ¬«       |�|‚y # 1 sw Y   ŒcxY w7 Œ'# t        $ r/ 	j                  |<   | j                   |«       r
nd ||i¬«       ‚ w xY w­w)NzCannot release a lock on z3 that is not held by this task through this wrapperrU   Tr€   z that is not held by this taskrƒ   )r…   rs   ru   r—   ro   r˜   Úpoprv   rt   rŒ   Ú_drain_cancellationr‹   )r4   Úforcer�   rz   ÚleaveÚ
still_heldr�   rD   rš   Úremovedr�   Úcancellations               r&   Úreleasez_TaskOwners.release  sº  è ø€ ô ‹ˆØ�Z‰Zñ 	ØŸ™Ÿ™¨Ó-Ð-�Ð6¸#ÀTÇ[Á[Ñ:PÙØ÷	ð 	ð 2°)°Ð<oÐp�Ü" 3Ó'Ð'Ù˜TŸ[™[¨Ñ-°Ò1Ø—‘˜CÓ  AÑ%Ó Ø÷	ð 	ð —k‘k—o‘o cÓ*ˆGØ�{Š{Ø÷	ð 	ð —‘˜DÐ!Ø�{Š{Ø÷	ð 	ð #'ˆDÔØ—:‘:ˆD÷!	ñ" Œ|Ø×#Ñ#¨Ð#Ô.Ø-¨i¨[Ð8VÐWˆCÜ˜sÓ#Ð#ð	Ü!4±U³WÓ!=×=ˆLð 	×Ñ TÐÔ*ØÐ#àÐð $÷=	ð 	úð, >ùÜò 	Ø&ˆD�K‰K˜Ñð ×#Ñ#±´©À4ÐPTÐVZÈ|Ð#Ô\Øð	üsv   ‚F)™/E Á	F)Á=E Â	F)Â(E Â?	F)ÃE Ã"	F)Ã+E Ã>2F)Ä1E. ÅE,ÅE. Å	F)Å E)Å%F)Å,E. Å.8F&Æ&F)c             ƒ  ó‚  K  — d}t        | j                  |«      x}t        «      rZ	 t        t	        j
                  |«      «      ƒ d{  –—†  | j                  |«       t        | j                  |«      x}t        «      rŒZ|\  }}|�	|�7 |«       r0	 t         |«       «      ƒ d{  –—† xs |}| j                  d¬«       n|�| j                  d¬«       |�|‚y7 Œ�# t        j                  $ r}|}Y d}~Œ¨d}~ww xY w# | j                  |«       w xY w7 Œn# t        $ r | j                   |«       r|nd|¬«       ‚ w xY w­w)aõ  
        End the holds taken through *via*, or every hold when it is ``None``, as one transition.

        Leaves the backend through *leave* when that ends the last hold, and always when *via* is ``None``. Arrivals
        wait while it runs, so none joins a hold the backend is letting go of. A transition already under way is waited
        out first: a task entering through *via* must not get a hold after the wrapper is gone. A cancellation is raised
        once the holds are settled.
        Nrƒ   r€   )r†   Ú_drop_holds_viar=   Ú_wait_until_doner   rK   ÚCancelledErrorrˆ   rž   r‹   rŒ   )	r4   rz   r    r¡   r£   Úsettledr+   r�   Údroppeds	            r&   Úretirez_TaskOwners.retire0  s?  è ø€ ð 7;ˆÜ D×$8Ñ$8¸Ó$=Ð=˜Ô?OÔPð&Ü&¤w×':Ñ':¸7Ó'CÓD×DÐDð —‘˜WÔ%ô  D×$8Ñ$8¸Ó$=Ð=˜Ô?OÕPð  ‰ˆˆgØˆ;˜4Ð+±
´ðÜ%8¹»Ó%A×AÒQÀ\�ð
 ×#Ñ#¨Ð#Õ.ØÐà×#Ñ#¨Ð#Ô.ØÐ#ØÐð $ð# EùÜ×)Ñ)ò %Ø$•ûð%ûð —‘˜WÕ%úð  BùÜ ò à×'Ñ'±Z´\©TÀtÐSZÐ'Ô[Øðüs|   ‚$D?§!C ÁCÁ	C Á2D?Â D?ÂD Â$DÂ%D Â-,D?ÃC ÃC:Ã.C5Ã0C= Ã5C:Ã:C= Ã=DÄD?ÄD Ä'D<Ä<D?c                óV  — | j                   5  | j                  r| j                  «       cd d d «       S |€0t        | j                  «      }| j                  j                  «        nwi }t        | j                  j                  «       «      D ]O  \  }}|j                  j                  |d «      x}€Œ%t        ||i¬«      ||<   |j                  rŒC| j                  |= ŒQ | j                  r|�d |fcd d d «       S | j                  }|d uxs |d u | _        ||fcd d d «       S # 1 sw Y   y xY w)Nr‚   )rs   rv   r™   Údictru   r–   ÚlistÚitemsro   r�   rn   rt   )r4   rz   rª   r�   rD   Úcountr�   s          r&   r¦   z_TaskOwners._drop_holds_viaV  s  € ð
 �Z‰Zñ 	!Ø×"Ò"Ø—|‘|“~÷	!ñ 	!ð ˆ{Ü˜tŸ{™{Ó+�Ø—‘×!Ñ!Õ#à�Ü"& t§{¡{×'8Ñ'8Ó':Ó";ò 2‘J�D˜$Ø!%§¡§¡°°dÓ!;Ð;˜ÑHÜ(1¸#¸u¸Ô(F˜ ™Ø#Ÿ{›{Ø $§¡¨DÑ 1ð	2ð
 �{Š{˜s˜Ø˜W�}÷	!ñ 	!ð —:‘:ˆDØ"&¨dÐ"2Ò"A°c¸T°kˆDÔØ˜�=÷#	!÷ 	!ò 	!ús#   �D³A;DÂ/DÃ DÃ7DÄD(N)r„   c               óN  — | j                   5  d|c| _        | _        |�c|ra|j                  «       D ]N  \  }}| j                  j                  |t        i ¬«      «      j                  j                  |j                  «       ŒP | j                  «        d d d «       y # 1 sw Y   y xY w)NFr‚   )
rs   rv   rt   r¯   ru   Ú
setdefaultrn   ro   Úupdater‰   )r4   r�   r„   r�   rD   s        r&   rŒ   z_TaskOwners._finish_transitionn  sŽ   € ð �Z‰Zñ 	Ø.3°TÐ+ˆDÔ ¤ØÐ¡EØ"'§+¡+£-ò b‘J�D˜$Ø—K‘K×*Ñ*¨4´À"Ô1EÓF×MÑM×TÑTÐUY×U`ÑU`Õaðbà�L‰LŒN÷	÷ 	ñ 	ús   �BBÂB$c                ó8   — t        «       }d | j                  |<   |S r0   )r=   rx   rB   s     r&   r™   z_TaskOwners._ticketx  s   € ä)9Ó);ˆØ $ˆ�‰�fÑØˆr%   c                ó~   — | j                   5  | j                  j                  |d «       d d d «       y # 1 sw Y   y xY wr0   )rs   rx   r�   rB   s     r&   rˆ   z_TaskOwners._forget~  s2   € Ø�Z‰Zñ 	,Ø�M‰M×Ñ˜f dÔ+÷	,÷ 	,ñ 	,ús   �3³<c                ó\   — | j                   i c}| _         |D ]  }|j                  d «       Œ y r0   )rx   rX   )r4   ÚwaitersrC   s      r&   r‰   z_TaskOwners._notify‚  s1   € Ø!%§¡°Ðˆ�”Øò 	$ˆFØ×Ñ˜dÕ#ñ	$r%   r`   )r�   úLiteral['read', 'write']rJ   rg   r8   rd   r�   Ústrrz   ÚobjectrŽ   z"Callable[[float], Awaitable[None]]r{   úCallable[[], bool]ra   rb   )r�   úasyncio.Task[object]r�   r¸   r�   r¹   rz   rº   r{   r»   r|   rd   ra   z1Literal['held', 'enter'] | ConcurrentFuture[None])rŸ   rd   r�   r¹   rz   rº   r    ú3Callable[[], asyncio.Future[_BackendOutcome[None]]]r¡   r»   ra   rb   )rz   úobject | Noner    r½   r¡   r»   ra   rb   )rz   r¾   ra   zftuple[Literal['read', 'write'] | None, dict[asyncio.Task[object], _TaskHold]] | ConcurrentFuture[None])r�   zLiteral['read', 'write'] | Noner„   z,dict[asyncio.Task[object], _TaskHold] | Nonera   rb   )ra   rh   ri   )r!   r"   r#   rj   r5   r‘   r‡   r¤   r«   r¦   rŒ   r™   rˆ   r‰   r$   r%   r&   rq   rq   œ   sk  „ ñó?ð-Uà&ð-Uð ð	-Uð
 ð-Uð ð-Uð ð-Uð 2ð-Uð %ð-Uð 
ó-Uð^""à"ð""ð 'ð""ð ð	""ð ð""ð %ð""ð ð""ð 
;ó""ðH*ð ð*ð ð	*ð
 ð*ð Cð*ð 'ð*ð 
ó*ðX$àð$ð Cð	$ð
 'ð$ð 
ó$ðL!Ø ð!à	oó!ð2 osñØ6ðØ?kðà	óóó,ô$r%   rq   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—   rq   )Ú	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&   r…   r…   ”  s+   € Ü×$Ñ$Ó&Ð&ˆÐ/ØTˆÜ˜3ÓÐØ€Kr%   c              ƒ  ó  K  — 	 t        | «      ƒ d {  –—†  t        | «       y 7 Œ# t        j                  $ rD}	 t        | «      ƒ d {  –—†7   n"# t        $ r}t        ||«       Y d }~nd }~ww xY w|cY d }~S d }~ww xY w­wr0   )r§   r   r¨   Ú_drain_futurer‹   Ú_raise_cancelled_errorÚ_future_result)Úfuturer£   r+   s      r&   rž   rž   ›  sv   è ø€ ðÜ˜vÓ&×&Ð&ô �6ÔØð 	'ùÜ×!Ñ!ò ð	8Ü Ó'×'Ò'øÜò 	8Ü" <°×7Ñ7ûð	8úàÕûðüsl   ‚A?„% ’#“% —A?£% ¥A<¹AÁA
ÁAÁA7Á	A-ÁA(Á#A7Á(A-Á-A7Á1A<Á2A?Á7A<Á<A?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r0   )r?   rk   Úsuppressr   r¨   r§   rÊ   ©rË   s    r&   rÈ   rÈ   ©  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r0   )r?   r   rO   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__r‹   )rË   Úoutcomer+   Úcontexts       r&   rÊ   rÊ   µ  s\   € Ø�m‰m‹o€GØ—‘ÐˆÐ'Ü�D˜'Ÿ-™-Ó(Ð(Ø×Ñ€GðØˆøÜò Ø#ˆÔØðús   ÁA ÁAc                ó€   ‡— | j                  «       Šdˆfd„}| j                  |t        |«      j                  |«       ‰S )Nc                óª   •— 	 | j                  «       }‰j                  |«       y # t        j                  $ r d}t        t	        |«      ¬«      }Y Œ>w xY w)Nz;the executor shut down before running the lock backend call©r+   )rÑ   r   r¨   r)   r˜   rX   )ÚcallrÑ   rš   rÓ   s      €r&   Úsettlez _run_in_executor.<locals>.settleÆ  sQ   ø€ ð	>Ø—[‘[“]ˆFð 	×Ñ˜6Õ"øô ×%Ñ%ò 	>ð PˆCÜ$¬<¸Ó+<Ô=ŠFð		>ús   ƒ% ¥*AÁA)rØ   ú#asyncio.Future[_BackendOutcome[_T]]ra   rb   )Úcreate_futureÚrun_in_executorÚ_capture_callÚadd_done_callback)ÚloopÚexecutorÚfuncrÙ   rÓ   s       @r&   Ú_run_in_executorrâ   Á  s<   ø€ ð 48×3EÑ3EÓ3G€Gõ#ð 	×Ñ˜¤=°$Ó7×IÑIÈ&ÔQØ€Nr%   c                ój   — 	 t         | «       ¬«      S # t        $ r}t        |¬«      cY d }~S d }~ww xY w©N)r*   r×   ©r)   r‹   )rá   r+   s     r&   rÝ   rÝ   Ô  s/   € ð,Ü¡T£VÔ,Ð,øÜò ,Ü UÔ+Õ+ûð,ús   ‚ “	2œ-§2­2c                óŽ   — |j                   x}�%|| ur!| j                   x}�t        ||«       || _         | |_         t        |«       y r0   )rÒ   r   r   )r£   r+   rÔ   Úcancellation_contexts       r&   rÉ   rÉ   Û  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ê   ç  s4   è ø€ ð,Ü¨9§_Ô5Ð5 _ùÜò ,Ü UÔ+Õ+ûð,üs0   ‚<„
 Ž� —<˜ š	9£4®9¯<´9¹<)r   r.   r    r)   rê   rÝ   rÈ   rÊ   rÉ   râ   rÄ   r§   )rÂ   z!ReadWriteLock | SoftReadWriteLockra   rq   )ra   r¼   )rË   z%asyncio.Future[_BackendOutcome[None]]ra   zasyncio.CancelledError | None)rË   rÚ   ra   r   )rË   zasyncio.Future[_T]ra   rb   )rß   zasyncio.AbstractEventLooprà   zExecutor | Nonerá   úCallable[[], _T]ra   rÚ   )rá   rë   ra   ú_BackendOutcome[_T])r£   zasyncio.CancelledErrorr+   r‹   ra   r   )ré   zAwaitable[_T]ra   rì   )@rj   Ú
__future__r   Ú__lazy_modules__r   rk   rL   r   r   Úconcurrent.futuresr   r=   Údataclassesr   Ú	threadingr	   Útypingr
   r   r   r   r   r   r   Úweakrefr   Úfilelock._apir   r   r   r   Úfilelock._errorr   Úcollections.abcr   r   r   r   Úfilelock._read_writer   Úfilelock._soft_rwr   r   r   r,   Ú	Exceptionr    r)   r.   rn   rq   r¿   rÀ   rÄ   r…   rž   rÈ   r§   rÊ   râ   rÝ   rÉ   rê   Ú__all__r$   r%   r&   ú<module>rû      sD  ðÚ Qå "âVÐ ã Û Û Ý Ý 9Ý !Ý ß R× RÑ RÝ %÷ó õ $áßCÑCÝ+å2Ý3áˆTƒ]€ð  !Ð �*Ó  ô	 yô 	ñ �$Ôô'�g˜b‘kó 'ó ð'÷
\"ñ \"ð~ ÷ð ó ð÷i$ñ i$ñX ZkÓYl€ÐVÓ lÙ!%£Ð �;Ó 'óóóó"ó&ó
	ðØ
#ðØ/>ðØFVðà(óó&,ó	!ó,ò�r%   