§
    eÉÝjP  ã                  óv  — 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#<   dGd'„Z5dHd)„Z6dId-„Z7dJd/„Z8dKd2„Z9dJd3„Z:dLd:„Z;dMd<„Z<dNdB„Z=dOdE„Z>g dF¢Z?dS )PzKSeparate 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dS )Ú _AsyncTransitionUnavailableErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    úW/home/spazio/cosmos_universe_media/venv/lib/python3.11/site-packages/filelock/_async.pyr    r    '   s   € € € € € Ø€Dr%   r    T)Úfrozenc                  ó,   — e Zd ZU dZded<   dZded<   dS )Ú_BackendOutcomeNz	_T | NoneÚvaluezBaseException | NoneÚerror)r!   r"   r#   r*   Ú__annotations__r+   r$   r%   r&   r)   r)   +   s4   € € € € € € à€EÐÐÐÑØ"&€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dS )Ú_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.
    ÚreturnÚNonec                óR   — t          ¦   «         | _        t          ¦   «         | _        d S ©N)r	   Ú_queue_lockr   Ú_queue©Úselfs    r&   Ú__init__z_AsyncTransitionGate.__init__9   s   € Ý(,©¬ˆÔÝ<A¹G¼GˆŒˆˆr%   úAsyncGenerator[None]c               ó"  K  — t          ¦   «         }	 |                      |¦  «         |                     ¦   «         s |                      |dd d d¬¦  «        ƒ d {V —† d W V — |                      |¦  «         d S # |                      |¦  «         w xY w)NTgš™™™™™©?©ÚblockingÚcancel_checkÚdeadlineÚpoll_interval©ÚConcurrentFutureÚ_joinÚdoneÚ_wait_for_turnÚ_leave©r6   Útickets     r&   Úholdz_AsyncTransitionGate.hold=   s§   è è € å)9Ñ);Ô);ˆð	 Ø�JŠJ�vÑÔÐØ—;’;‘=”=ð wØ×)Ò)¨&¸4ÈdÐ]aÐquÐ)ÑvÔvÐvÐvÐvÐvÐvÐvÐvØˆEˆEˆEˆEà�KŠK˜ÑÔÐÐÐøˆD�KŠK˜ÑÔÐÐøøøó   ’AA7 Á7Br;   Úboolr<   úCallable[[], bool] | Noner=   úfloat | Noner>   Úfloatc              ó"  K  — t          ¦   «         }	 |                      |¦  «         |                     ¦   «         s |                      |||||¬¦  «        ƒ d {V —† d W V — |                      |¦  «         d S # |                      |¦  «         w xY w)Nr:   r?   )r6   r;   r<   r=   r>   rF   s         r&   Úhold_for_acquirez%_AsyncTransitionGate.hold_for_acquireH   sÁ   è è € õ *:Ñ);Ô);ˆð	 Ø�JŠJ�vÑÔÐØ—;’;‘=”=ð Ø×)Ò)ØØ%Ø!-Ø%Ø"/ð *ñ ô ð ð ð ð ð ð ð ð ˆEˆEˆEˆEà�KŠK˜ÑÔÐÐÐøˆD�KŠK˜ÑÔÐÐøøørH   rF   úConcurrentFuture[None]c             ƒ  óŽ  K  — |st           ‚t          j        |¦  «        }|                     ¦   «         s‘|� |¦   «         rt           ‚|}|�3|t	          j        ¦   «         z
  x}dk    rt           ‚t          ||¦  «        }t          j        |f|¬¦  «        ƒ d {V —† |                      ¦   «          |                     ¦   «         ¯�d S d S )Nr   ©Útimeout)	r    r   Úwrap_futurerB   ÚtimeÚperf_counterÚminÚwaitÚ_settle_head)	r6   rF   r;   r<   r=   r>   ÚwaiterÚwait_intervalÚ	remainings	            r&   rC   z#_AsyncTransitionGate._wait_for_turn`   sì   è è € ð ð 	3Ý2Ð2ÝÔ$ VÑ,Ô,ˆØ—+’+‘-”-ð 
	 ØÐ'¨L¨L©N¬NÐ'Ý6Ð6Ø)ˆMØÐ#Ø!)­DÔ,=Ñ,?Ô,?Ñ!?Ð?�IÀAÒEÐEÝ:Ð:Ý # M°9Ñ =Ô =�Ý”, ˜y°-Ð@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@à×ÒÑÔÐð —+’+‘-”-ð 
	 ð 
	 ð 
	 ð 
	 ð 
	 r%   c                óÔ   — | j         5  | j                             |¦  «         t          | j        ¦  «        dk    r|                     d ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Né   )r3   r4   ÚappendÚlenÚ
set_resultrE   s     r&   rA   z_AsyncTransitionGate._joinx   s®   € ØÔð 	(ð 	(ØŒK×Ò˜vÑ&Ô&Ð&Ý�4”;ÑÔ 1Ò$Ð$Ø×!Ò! $Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	(ð 	(s   ˆAAÁA!Á$A!c                óÞ   — | j         5  	 | j                             |¦  «         n# t          $ r Y d d d ¦  «         d S w xY w|                      ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S r2   )r3   r4   ÚremoveÚ
ValueErrorÚ_settle_head_lockedrE   s     r&   rD   z_AsyncTransitionGate._leave~   sç   € ØÔð 	'ð 	'ðØ”×"Ò" 6Ñ*Ô*Ð*Ð*øÝð ð ð àð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ðøøøð ×$Ò$Ñ&Ô&Ð&ð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð 	'ð 	's,   ˆA"Š%¤A"¥
>¯A"½>¾A"Á"A&Á)A&c                ón   — | j         5  |                      ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S r2   )r3   rd   r5   s    r&   rX   z!_AsyncTransitionGate._settle_head‡   s�   € ØÔð 	'ð 	'Ø×$Ò$Ñ&Ô&Ð&ð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð 	'ð 	's   ˆ*ª.±.c                óˆ   — | j         r8| j         d         x}                     ¦   «         s|                     d ¦  «         d S d S d S )Nr   )r4   rB   r`   )r6   Úheads     r&   rd   z(_AsyncTransitionGate._settle_head_locked‹   sV   € ØŒ;ð 	"¨¬°A¬Ð 6 ×<Ò<Ñ>Ô>ð 	"Ø�OŠO˜DÑ!Ô!Ð!Ð!Ð!ð	"ð 	"ð 	"ð 	"r%   N©r/   r0   )r/   r8   )
r;   rI   r<   rJ   r=   rK   r>   rL   r/   r8   )rF   rO   r;   rI   r<   rJ   r=   rK   r>   rL   r/   r0   ©rF   rO   r/   r0   )r!   r"   r#   Ú__doc__r7   Ú
contextlibÚasynccontextmanagerrG   rN   rC   rA   rD   rX   rd   r$   r%   r&   r.   r.   1   sâ   € € € € € ðð ðDð Dð Dð Dð Ô#ð ð  ð  ñ $Ô#ð ð Ô#ð ð  ð  ñ $Ô#ð ð. ð  ð  ð  ð0(ð (ð (ð (ð'ð 'ð 'ð 'ð'ð 'ð 'ð 'ð"ð "ð "ð "ð "ð "r%   r.   c                  ó   — e Zd ZU dZded<   dS )Ú	_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                  óh   — e Zd ZdZd-d„Zd.d„Zd/d„Zd0d„Zd1d„Zd2d!„Z	d"d#œd3d'„Z
d4d)„Zd5d+„Zd-d,„Zd"S )6Ú_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.
    r/   r0   c                ór   — t          ¦   «         | _        d | _        i | _        d| _        d| _        i | _        d S )NFr   )r	   Ú_lockÚ_modeÚ_holdsÚ_transitioningÚ_waiting_writersÚ_waitersr5   s    r&   r7   z_TaskOwners.__init__§   s8   € Ý"&¡&¤&ˆŒ
Ø6:ˆŒ
Ø=?ˆŒØ#ˆÔØ !ˆÔð =?ˆŒˆˆr%   ÚmodeúLiteral['read', 'write']rR   rL   r;   rI   Ú	lock_fileÚstrÚviaÚobjectÚenterú"Callable[[float], Awaitable[None]]ÚjoinableúCallable[[], bool]c          
   ƒ  óL  K  — t          ¦   «         }t          ||¬¦  «        }|r|dk     rd nt          j        ¦   «         |z   }	d}
	 t	          |                      ||||||
¬¦  «        x}t          ¦  «        �r	 |r|	�&t          j        ¦   «         |	k    rt          |¦  «        ‚|dk    r3|
s1d}
| j        5  | xj	        dz  c_	        d d d ¦  «         n# 1 swxY w Y   |	€d n|	t          j        ¦   «         z
  }t          j        t          j        |¦  «        f|¬¦  «        ƒ d {V —† |                      |¦  «         n# |                      |¦  «         w xY wt	          |                      ||||||
¬¦  «        x}t          ¦  «        �°|
rC| j        5  | xj	        dz  c_	        |                      ¦   «          d d d ¦  «         n# 1 swxY w Y   nK# |
rD| j        5  | xj	        dz  c_	        |                      ¦   «          d d d ¦  «         w # 1 swxY w Y   w w xY w|d	k    rd S 	  ||	€d
n#t          d|	t          j        ¦   «         z
  ¦  «        ¦  «        ƒ d {V —† n%# t           $ r |                      d ¬¦  «         ‚ w xY w|                      ||t%          |di¬¦  «        i¬¦  «         d S )N)r;   r   F)r}   r�   Úwaiting_writerÚwriteTr]   rQ   Úheldéÿÿÿÿg        ©ry   ©ro   ©ry   Úholds)Ú_current_taskr   rT   rU   Ú
isinstanceÚ_admitr@   r   rs   rw   r   rW   rS   Ú_forgetÚ_notifyÚmaxÚBaseExceptionÚ_finish_transitionrn   )r6   ry   rR   r;   r{   r}   r   r�   Útaskr=   r„   Ú	admissionrW   s                r&   Úacquirez_TaskOwners.acquire±   sô  è è € õ ‰ŒˆÝ-¨gÀÐIÑIÔIˆØ'ÐY¨7°Qª;¨;�4�4½DÔ<MÑ<OÔ<OÐRYÑ<YˆØˆð	#ÝØ!Ÿ[š[Ø˜$ 	¨s¸XÐVdð )ñ ô ð �	õ !ñ	ô ñ ,ð
,Ø#ð 1¨Ð(<ÅÔARÑATÔATÐX`ÒA`ÐA`Ý% iÑ0Ô0Ð0Ø˜w’�¨~�Ø)-˜Ø!œZð 7ð 7Ø Ð1Ô1°QÑ6Ð1Ô1ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7à#+Ð#3˜4˜4¸ÅDÔDUÑDWÔDWÑ9W�DÝ!œ,­Ô(;¸IÑ(FÔ(FÐ'HÐRVÐWÑWÔWÐWÐWÐWÐWÐWÐWÐWà—L’L Ñ+Ô+Ð+Ð+ø�D—L’L Ñ+Ô+Ð+Ð+øøøõ! Ø!Ÿ[š[Ø˜$ 	¨s¸XÐVdð )ñ ô ð �	õ !ñ	ô ñ ,ð$ ð #Ø”Zð #ð #ØÐ)Ô)¨QÑ.Ð)Ô)Ø—L’L‘N”N�Nð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #øøð ð #Ø”Zð #ð #ØÐ)Ô)¨QÑ.Ð)Ô)Ø—L’L‘N”N�Nð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð #ð#øøøð ˜ÒÐØˆFð	Ø�%˜hÐ.˜˜µC¸¸XÍÔHYÑH[ÔH[Ñ=[Ñ4\Ô4\Ñ]Ô]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ð]øÝð 	ð 	ð 	Ø×#Ò#¨Ð#Ñ.Ô.Ð.Øð	øøøð 	×Ò T°$½	È#ÈqÈÐ8RÑ8RÔ8RÐ1SÐÑTÔTÐTÐTÐTs‹   Á1G
 Á7;D9 Â2CÃD9 ÃCÃD9 ÃCÃAD9 Ä#G
 Ä9EÅ4G
 Æ%F>Æ>GÇGÇ

HÇ%HÇ9HÈH	È	HÈH	ÈHÈ7I É"I8r”   úasyncio.Task[object]r„   ú1Literal['held', 'enter'] | ConcurrentFuture[None]c          
     óÞ  — | j         5  | j        �1| j        s* |¦   «         s | j                             ¦   «          d | _        | j                             |¦  «        x}�m| j        |k    r.d|› d|› d|dk    rdnd› d|dk    rdnd› d	�	}t          |¦  «        ‚|j                             |d
¦  «        dz   |j        |<   	 d d d ¦  «         dS | j        |z
  }	| j        sg|dk    r5| j        dk    r*|	s(t          |di¬¦  «        | j        |<   	 d d d ¦  «         dS | j        s%|dk    s|	sd|c| _        | _        	 d d d ¦  «         dS |  
                    ¦   «         cd d d ¦  «         S # 1 swxY w Y   d S )NzCannot acquire z	 lock on z: already holding a Úreadr…   z lock (Ú	downgradeÚupgradez not allowed)r   r]   r†   r‰   Tr   )rs   rt   rv   ru   ÚclearÚgetÚRuntimeErrorro   rw   rn   Ú_ticket)
r6   r”   ry   r{   r}   r�   r„   rG   ÚmsgÚwriters_aheads
             r&   rŽ   z_TaskOwners._admità   sh  € ð ŒZð 	"ð 	"ð ŒzÐ%¨dÔ.AÐ%È(È(É*Ì*Ð%Ø”×!Ò!Ñ#Ô#Ð#Ø!�”
ØœŸš¨Ñ-Ô-Ð-�Ð:Ø”: Ò%Ð%ðX¨$ð Xð X¸ð Xð XØ&*¨f¢n n˜7˜7¸&ðXð Xà+/°6ª>¨>˜K˜K¸yðXð Xð Xð õ
 ' sÑ+Ô+Ð+Ø#'¤;§?¢?°3¸Ñ#:Ô#:¸QÑ#>�”˜CÑ Øð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð  !Ô1°NÑBˆMØÔ&ð #Ø˜6’>�> d¤j°FÒ&:Ð&:À=Ð&:Ý(1¸#¸q¸Ð(BÑ(BÔ(B�D”K Ñ%Ø!ð)	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð* ”{ð #¨°ª¨¸}¨Ø6:¸DÐ3�DÔ'¨¬Ø"ð/	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð0 —<’<‘>”>ð1	"ð 	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	"ð 	"s$   ˆB5E"Ã
?E"ÄE"ÅE"Å"E&Å)E&ÚforceÚleaveú3Callable[[], asyncio.Future[_BackendOutcome[None]]]Ú
still_heldc             ƒ  óp  K  — t          ¦   «         }| j        5  | j                             |¦  «        x}�	||j        vr%|r	 d d d ¦  «         d S d|› d�}t          |¦  «        ‚|s4|j        |         dk    r#|j        |xx         dz  cc<   	 d d d ¦  «         d S |j                             |¦  «        }	|j        r	 d d d ¦  «         d S | j        |= | j        r	 d d d ¦  «         d S d| _        | j        }
d d d ¦  «         n# 1 swxY w Y    |¦   «         s+|  	                    d ¬¦  «         d|› d�}t          |¦  «        ‚	 t           |¦   «         ¦  «        ƒ d {V —†}n># t          $ r1 |	|j        |<   |  	                     |¦   «         r|
nd ||i¬¦  «         ‚ w xY w|  	                    d ¬¦  «         |�|‚d S )NzCannot release a lock on z3 that is not held by this task through this wrapperr]   Trˆ   z that is not held by this taskrŠ   )rŒ   rs   ru   rž   ro   rŸ   Úpoprv   rt   r“   Ú_drain_cancellationr’   )r6   r£   r{   r}   r¤   r¦   r”   rG   r¡   Úremovedry   Úcancellations               r&   Úreleasez_TaskOwners.release  sÝ  è è € õ ‰ŒˆØŒZð 	ð 	ØœŸš¨Ñ-Ô-Ð-�Ð6¸#ÀTÄ[Ð:PÐ:PØð Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð q°)ÐpÐpÐp�Ý" 3Ñ'Ô'Ð'Øð ˜Tœ[¨Ô-°Ò1Ð1Ø”˜CÐ Ð Ô  AÑ%Ð Ð Ñ Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð ”k—o’o cÑ*Ô*ˆGØŒ{ð Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð ”˜DÐ!ØŒ{ð Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð #'ˆDÔØ”:ˆDð!	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð" ˆz‰|Œ|ð 	$Ø×#Ò#¨Ð#Ñ.Ô.Ð.ØW¨iÐWÐWÐWˆCÝ˜sÑ#Ô#Ð#ð	Ý!4°U°U±W´WÑ!=Ô!=Ð=Ð=Ð=Ð=Ð=Ð=ˆLˆLøÝð 	ð 	ð 	Ø&ˆDŒK˜Ñð ×#Ò#°°±´Ð)G¨¨À4ÐPTÐVZÈ|Ð#Ñ\Ô\Ð\Øð	øøøð 	×Ò TÐÑ*Ô*Ð*ØÐ#àÐð $Ð#s5   ˜)C?Á>C?Â"C?ÃC?Ã%C?Ã?DÄDÅ E Å;Fúobject | Nonec             ƒ  óÖ  K  — d}t          |                      |¦  «        x}t          ¦  «        r¡	 t          t	          j        |¦  «        ¦  «        ƒ d{V —† n# t          j        $ r}|}Y d}~nd}~ww xY w|                      |¦  «         n# |                      |¦  «         w xY wt          |                      |¦  «        x}t          ¦  «        °¡|\  }}|�|�t |¦   «         rj	 t           |¦   «         ¦  «        ƒ d{V —†p|}n2# t          $ r% |  
                     |¦   «         r|nd|¬¦  «         ‚ w xY w|  
                    d¬¦  «         n|�|  
                    d¬¦  «         |�|‚dS )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   rS   ÚCancelledErrorr�   r©   r’   r“   )	r6   r}   r¤   r¦   r«   Úsettledr+   ry   Údroppeds	            r&   Úretirez_TaskOwners.retire0  sÓ  è è € ð 7;ˆÝ D×$8Ò$8¸Ñ$=Ô$=Ð=˜Õ?OÑPÔPð 	&ð&Ý&¥wÔ':¸7Ñ'CÔ'CÑDÔDÐDÐDÐDÐDÐDÐDÐDÐDøÝÔ)ð %ð %ð %Ø$������øøøøð%øøøð —’˜WÑ%Ô%Ð%Ð%ø�—’˜WÑ%Ô%Ð%Ð%øøøõ  D×$8Ò$8¸Ñ$=Ô$=Ð=˜Õ?OÑPÔPð 	&ð  ‰ˆˆgØˆ;˜4Ð+°
°
±´Ð+ðÝ%8¸¸¹¼Ñ%AÔ%AÐAÐAÐAÐAÐAÐAÐQÀ\��øÝ ð ð ð à×'Ò'°Z°Z±\´\Ð-K¨T¨TÀtÐSZÐ'Ñ[Ô[Ð[Øðøøøð ×#Ò#¨Ð#Ñ.Ô.Ð.Ð.ØÐà×#Ò#¨Ð#Ñ.Ô.Ð.ØÐ#ØÐð $Ð#s;   °'A ÁB ÁA3Á'A.Á)B Á.A3Á3B ÂB#Ã$D Ä/D3úftuple[Literal['read', 'write'] | None, dict[asyncio.Task[object], _TaskHold]] | ConcurrentFuture[None]c                ó2  — | j         5  | j        r |                      ¦   «         cd d d ¦  «         S |€.t          | j        ¦  «        }| j                             ¦   «          noi }t          | j                             ¦   «         ¦  «        D ]F\  }}|j         	                    |d ¦  «        x}�$t          ||i¬¦  «        ||<   |j        s| j        |= ŒG| j        r|�d |fcd d d ¦  «         S | j        }|d up|d u | _        ||fcd d d ¦  «         S # 1 swxY w Y   d S )Nr‰   )rs   rv   r    Údictru   r�   ÚlistÚitemsro   r¨   rn   rt   )r6   r}   r³   r”   rG   Úcountry   s          r&   r¯   z_TaskOwners._drop_holds_viaV  s´  € ð
 ŒZð 	!ð 	!ØÔ"ð &Ø—|’|‘~”~ð	!ð 	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð ˆ{Ý˜tœ{Ñ+Ô+�Ø”×!Ò!Ñ#Ô#Ð#Ð#à�Ý"& t¤{×'8Ò'8Ñ':Ô':Ñ";Ô";ð 2ð 2‘J�D˜$Ø!%¤§¢°°dÑ!;Ô!;Ð;˜ÐHÝ(1¸#¸u¸Ð(FÑ(FÔ(F˜ ™Ø#œ{ð 2Ø $¤¨DÐ 1øØŒ{ð %˜s˜Ø˜W�}ð	!ð 	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð ”:ˆDØ"&¨dÐ"2Ð"A°c¸T°kˆDÔØ˜�=ð#	!ð 	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð 	!ð 	!s   ˆD°B+DÃ(DÄDÄDN)r‹   úLiteral['read', 'write'] | Noner‹   ú,dict[asyncio.Task[object], _TaskHold] | Nonec               óT  — | j         5  d|c| _        | _        |�b|r`|                     ¦   «         D ]K\  }}| j                             |t          i ¬¦  «        ¦  «        j                             |j        ¦  «         ŒL|  	                    ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S )NFr‰   )
rs   rv   rt   r¹   ru   Ú
setdefaultrn   ro   Úupdater�   )r6   ry   r‹   r”   rG   s        r&   r“   z_TaskOwners._finish_transitionn  sñ   € ð ŒZð 	ð 	Ø.3°TÐ+ˆDÔ ¤ØÐ EÐØ"'§+¢+¡-¤-ð bð b‘J�D˜$Ø”K×*Ò*¨4µÀ"Ð1EÑ1EÔ1EÑFÔFÔM×TÒTÐUYÔU`ÑaÔaÐaÐaØ�LŠL‰NŒNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ˆBBÂB!Â$B!rO   c                ó6   — t          ¦   «         }d | j        |<   |S r2   )r@   rx   rE   s     r&   r    z_TaskOwners._ticketx  s   € å)9Ñ);Ô);ˆØ $ˆŒ�fÑØˆr%   rF   c                ó|   — | j         5  | j                             |d ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r2   )rs   rx   r¨   rE   s     r&   r�   z_TaskOwners._forget~  s†   € ØŒZð 	,ð 	,ØŒM×Ò˜f dÑ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,ð 	,ð 	,s   ˆ1±5¸5c                óX   — | j         i c}| _         |D ]}|                     d ¦  «         Œd S r2   )rx   r`   )r6   ÚwaitersrF   s      r&   r�   z_TaskOwners._notify‚  sB   € Ø!%¤°Ðˆ�”Øð 	$ð 	$ˆFØ×Ò˜dÑ#Ô#Ð#Ð#ð	$ð 	$r%   rh   )ry   rz   rR   rL   r;   rI   r{   r|   r}   r~   r   r€   r�   r‚   r/   r0   )r”   r—   ry   rz   r{   r|   r}   r~   r�   r‚   r„   rI   r/   r˜   )r£   rI   r{   r|   r}   r~   r¤   r¥   r¦   r‚   r/   r0   )r}   r­   r¤   r¥   r¦   r‚   r/   r0   )r}   r­   r/   rµ   )ry   r»   r‹   r¼   r/   r0   )r/   rO   ri   )r!   r"   r#   rj   r7   r–   rŽ   r¬   r´   r¯   r“   r    r�   r�   r$   r%   r&   rq   rq   œ   sÿ   € € € € € ðð ð?ð ?ð ?ð ?ð-Uð -Uð -Uð -Uð^""ð ""ð ""ð ""ðH*ð *ð *ð *ðX$ð $ð $ð $ðL!ð !ð !ð !ð2 osðð ð ð ð ð ðð ð ð ð,ð ,ð ,ð ,ð$ð $ð $ð $ð $ð $r%   rq   zHFinal[WeakKeyDictionary[ReadWriteLock | SoftReadWriteLock, _TaskOwners]]Ú_TASK_OWNERSzFinal[Lock]Ú_TASK_OWNERS_LOCKÚ	sync_lockú!ReadWriteLock | SoftReadWriteLockr/   c                ó  — t          ¦   «         5  t          5  t                               | ¦  «        x}€t	          ¦   «         x}t          | <   |cddd¦  «         cddd¦  «         S # 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )zNSingleton wrappers share one sync lock, so they must share its task holds too.N)r   rÅ   rÄ   rž   rq   )rÆ   Úownerss     r&   Ú_task_owners_forrÊ   Œ  s$  € å	Ñ	Ô	ð ð Õ.ð ð Ý"×&Ò& yÑ1Ô1Ð1ˆFÐ:Ý/:©}¬}Ð<ˆF•\ )Ñ,Øðð ð ð ñ ô ð ð ð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s4   �A>—6A&ÁA>Á&A*	Á*A>Á-A*	Á.A>Á>BÂBr—   c                 óR   — 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%   Úfutureú%asyncio.Future[_BackendOutcome[None]]úasyncio.CancelledError | Nonec              ƒ  ó  K  — 	 t          | ¦  «        ƒ d {V —† n\# t          j        $ rJ}	 t          | ¦  «        ƒ d {V —† n'# t          $ r}t          ||¦  «         Y d }~nd }~ww xY w|cY d }~S d }~ww xY wt          | ¦  «         d S r2   )r°   r   r±   Ú_drain_futurer’   Ú_raise_cancelled_errorÚ_future_result)rÍ   r«   r+   s      r&   r©   r©   ›  sà   è è € ðÝ˜vÑ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&øÝÔ!ð ð ð ð	8Ý Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'øÝð 	8ð 	8ð 	8Ý" <°Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7øøøøð	8øøøàÐÐÐÐÐÐøøøøðøøøõ �6ÑÔÐØˆ4s=   „ šA3ªA ¿A.Á 
A$Á
AÁA.ÁA$Á$A.Á(A3Á.A3ú#asyncio.Future[_BackendOutcome[_T]]c              ƒ  ó
  K  — |                       ¦   «         s_t          j        t          j        ¦  «        5  t          | ¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   |                       ¦   «         ¯_t          | ¦  «        S r2   )rB   rk   Úsuppressr   r±   r°   rÓ   ©rÍ   s    r&   rÑ   rÑ   ©  sÁ   è è € Ø�kŠk‰mŒmð +ÝÔ ¥Ô!7Ñ8Ô8ð 	+ð 	+Ý" 6Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð �kŠk‰mŒmð +õ ˜&Ñ!Ô!Ð!s   µAÁAÁAúasyncio.Future[_T]r0   c              ƒ  ól   K  — |                       ¦   «         st          j        | f¦  «        ƒ d {V —† d S d S r2   )rB   r   rW   r×   s    r&   r°   r°   °  sJ   è è € Ø�;Š;‰=Œ=ð &ÝŒl˜F˜9Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ð&ð &r%   c                ó¦   — |                       ¦   «         }|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Ó   µ  sf   € Ø�mŠm‰oŒo€GØ”ÐˆÐ'Ý�D˜'œ-Ñ(Ô(Ð(ØÔ€GðØˆøÝð ð ð Ø#ˆÔØðøøøs	   »= ½AÚloopúasyncio.AbstractEventLoopÚexecutorúExecutor | NoneÚfuncúCallable[[], _T]c                óš   ‡— |                       ¦   «         Šdˆfd„}|                      |t          |¦  «                             |¦  «         ‰S )NÚcallrÔ   r/   r0   c                óÆ   •— 	 |                       ¦   «         }n4# t          j        $ r" d}t          t	          |¦  «        ¬¦  «        }Y nw xY w‰                     |¦  «         d S )Nz;the executor shut down before running the lock backend call©r+   )rÛ   r   r±   r)   rŸ   r`   )ræ   rÛ   r¡   rÝ   s      €r&   Úsettlez _run_in_executor.<locals>.settleÆ  su   ø€ ð	>Ø—[’[‘]”]ˆFˆFøÝÔ%ð 	>ð 	>ð 	>ð PˆCÝ$­<¸Ñ+<Ô+<Ð=Ñ=Ô=ˆFˆFˆFð		>øøøð
 	×Ò˜6Ñ"Ô"Ð"Ð"Ð"s   ƒ ˜.A	ÁA	)ræ   rÔ   r/   r0   )Úcreate_futureÚrun_in_executorÚ_capture_callÚadd_done_callback)rß   rá   rã   ré   rÝ   s       @r&   Ú_run_in_executorrî   Á  sa   ø€ ð 48×3EÒ3EÑ3GÔ3G€Gð#ð #ð #ð #ð #ð #ð 	×Ò˜¥=°$Ñ7Ô7×IÒIÈ&ÑQÔQÐQØ€Nr%   ú_BackendOutcome[_T]c                ó‚   — 	 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 T¡V¤VÐ,Ñ,Ô,Ð,øÝð ,ð ,ð ,Ý UÐ+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+øøøøð,øøøs   ‚ š
>¤9³>¹>r«   úasyncio.CancelledErrorr+   r’   r   c                óŒ   — |j         x}�$|| ur | j         x}�t          ||¦  «         || _         | |_         t          |¦  «         d S r2   )rÜ   r   r   )r«   r+   rÞ   Úcancellation_contexts       r&   rÒ   rÒ   Û  s`   € ð Ô$Ð$ˆÐ1°gÀ\Ð6QÐ6QØ$0Ô$<Ð<Ð ÐIÝ% gÐ/CÑDÔDÐDØ#*ˆÔ Ø$€EÔÝ˜%Ñ Ô Ð Ð Ð r%   Ú	awaitableúAwaitable[_T]c              ƒ  ó‚   K  — 	 t          | ƒ d {V —†¬¦  «        S # t          $ r}t          |¬¦  «        cY d }~S d }~ww xY wrñ   rò   )rö   r+   s     r&   Ú_capture_awaitablerù   ç  sg   è è € ð,Ý¨9 _ _ _ _ _ _Ð5Ñ5Ô5Ð5øÝð ,ð ,ð ,Ý UÐ+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+øøøøð,øøøs   „ š
>¤9³>¹>)r   r.   r    r)   rù   rì   rÑ   rÓ   rÒ   rî   rÊ   r°   )rÆ   rÇ   r/   rq   )r/   r—   )rÍ   rÎ   r/   rÏ   )rÍ   rÔ   r/   r   )rÍ   rØ   r/   r0   )rß   rà   rá   râ   rã   rä   r/   rÔ   )rã   rä   r/   rï   )r«   ró   r+   r’   r/   r   )rö   r÷   r/   rï   )@rj   Ú
__future__r   Ú__lazy_modules__r   rk   rT   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     sÂ  ðØ QÐ QÐ Qà "Ð "Ð "Ð "Ð "Ð "àVÐVÐVÐ à €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ %Ð %Ð %Ð %Ð %Ð %ðð ð ð ð ð ð ð ð ð ð ð ð $Ð #Ð #Ð #Ð #Ð #àð 4ØCÐCÐCÐCÐCÐCÐCÐCÐCÐCØ+Ð+Ð+Ð+Ð+Ð+à2Ð2Ð2Ð2Ð2Ð2Ø3Ð3Ð3Ð3Ð3Ð3à€WˆT�]„]€ð  !Ð Ð  Ð  Ð  Ñ  ð	ð 	ð 	ð 	ð 	 yñ 	ô 	ð 	ð €�$ÐÑÔð'ð 'ð 'ð 'ð '�g˜b”kñ 'ô 'ñ Ôð'ð
\"ð \"ð \"ð \"ð \"ñ \"ô \"ð \"ð~ ðð ð ð ð ñ ô ñ „ðði$ð i$ð i$ð i$ð i$ñ i$ô i$ð i$ðX ZkÐYjÑYlÔYl€Ð lÐ lÐ lÑ lØ!% ¡¤Ð Ð 'Ð 'Ð 'Ñ 'ðð ð ð ðð ð ð ðð ð ð ð"ð "ð "ð "ð&ð &ð &ð &ð
	ð 	ð 	ð 	ðð ð ð ð&,ð ,ð ,ð ,ð	!ð 	!ð 	!ð 	!ð,ð ,ð ,ð ,ðð ð €€€r%   