+
    ‘°³j¥/  ã                  ó  € R t ^ RIHt ^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	H
t
Ht ^ RIHtHtHtHtHtHt ^RIHt ]	'       d!   ^ RIHtHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHt ]
! R4      t ]! R4      t! ! R R4      t" ! R R4      t#RR.t$R# )zIAsync wrapper around :class:`SoftReadWriteLock` for use with ``asyncio``.)ÚannotationsN)Úasynccontextmanager)ÚTYPE_CHECKINGÚ	ParamSpecÚTypeVar)Ú_BackendOutcomeÚ_capture_callÚ_drain_futureÚ_future_resultÚ_raise_cancelled_errorÚ_wait_until_done)ÚSoftReadWriteLock)ÚAsyncGeneratorÚCallable)Úfutures)ÚTracebackType)ÚAcquireReturnProxy)ÚLeaseCompromiseÚ_PÚ_Rc                  ó¬  € ] tR t^"tRtR5RRRRRRRRR	R
RRRRRR/R R lllt]R R l4       t]R R l4       t]R R l4       t	]R R l4       t
]R R l4       t]R R l4       t]R R l4       t]R6RR/R R lll4       t]R6RR/R  R! lll4       tR6RR/R" R# llltR6RR/R$ R% llltR&R'/R( R) lltR* R+ ltR, R- ltR. R/ ltR0 R1 ltR2 R3 ltR4tR# )7ÚAsyncSoftReadWriteLocka9  
Async wrapper around :class:`SoftReadWriteLock` for ``asyncio`` applications.

The sync class's blocking filesystem operations run on a thread pool via ``loop.run_in_executor()``. The
underlying :class:`SoftReadWriteLock` handles reentrancy, upgrade/downgrade rules, fork handling, the heartbeat
and stale eviction, and singleton behavior.

:param lock_file: path to the lock file; the protocol directory lives next to it as ``<lock_file>.rw``
:param timeout: maximum wait time in seconds; ``-1`` means block indefinitely
:param blocking: if ``False``, raise :class:`~filelock.Timeout` immediately on contention
:param is_singleton: if ``True``, reuse existing :class:`SoftReadWriteLock` instances per resolved path
:param heartbeat_interval: seconds between heartbeat refreshes; default 30 s
:param stale_threshold: seconds a holder record may stay unchanged before a contender evicts it; defaults to
    ``3 * heartbeat_interval``
:param poll_interval: seconds between acquire retries under contention; default 0.25 s
:param on_compromise: called from the heartbeat thread with a :class:`~filelock.LeaseCompromise` when the hold is
    lost
:param loop: event loop for ``run_in_executor``; ``None`` uses the running loop
:param executor: executor for ``run_in_executor``; ``None`` uses the default executor

.. versionadded:: 3.27.0

ÚblockingTÚis_singletonÚheartbeat_intervalg      >@Ústale_thresholdNÚpoll_intervalg      Ð?Úon_compromiseÚloopÚexecutorc               óD   € V ^8„  d   QhRRRRRRRRRRR	R
RRRRRRRRRR/# )é   Ú	lock_filezstr | os.PathLike[str]ÚtimeoutÚfloatr   Úboolr   r   r   úfloat | Noner   r   z(Callable[[LeaseCompromise], None] | Noner   ú asyncio.AbstractEventLoop | Noner   úfutures.Executor | NoneÚreturnÚNone© )Úformats   "ÚY/home/luca/screen-checking/.venv/lib/python3.14/site-packages/filelock/_soft_rw/_async.pyÚ__annotate__Ú#AsyncSoftReadWriteLock.__annotate__;   sy   € ÷ "ñ "à)ð"ð ð"ð
 ð"ð ð"ð "ð"ð &ð"ð ð"ð @ð"ð /ð"ð *ð"ð 
ñ"ó    c               	ó‚   € \         P                  ! 4       V n        \        VVVVVVVVR 7      V n        W�n        W n        R# ))r   r   r   r   r   r   N)ÚosÚgetpidÚ_creator_pidr   Ú_lockÚ_loopÚ	_executor)Úselfr"   r#   r   r   r   r   r   r   r   r   s   &&&$$$$$$$$r-   Ú__init__ÚAsyncSoftReadWriteLock.__init__;   sB   € ô ŸIšI›KˆÔÜ&ØØØØ%Ø1Ø+Ø'Ø'ô	
ˆŒ
ð Œ
Ø!Žr0   c               ó   € V ^8„  d   QhRR/# )r!   r)   Ústrr+   )r,   s   "r-   r.   r/   X   s   € ÷ $ñ $˜3ñ $r0   c                ó.   € V P                   P                  # )z4The path to the lock file passed to the constructor.)r5   r"   ©r8   s   &r-   r"   Ú AsyncSoftReadWriteLock.lock_fileW   s   € ð �z‰z×#Ñ#Ð#r0   c               ó   € V ^8„  d   QhRR/# )r!   r)   r$   r+   )r,   s   "r-   r.   r/   ]   s   € ÷ "ñ "˜ñ "r0   c                ó.   € V P                   P                  # )z\The default timeout applied when ``acquire_read`` / ``acquire_write`` is called without one.)r5   r#   r>   s   &r-   r#   ÚAsyncSoftReadWriteLock.timeout\   s   € ð �z‰z×!Ñ!Ð!r0   c               ó   € V ^8„  d   QhRR/# )r!   r)   r%   r+   )r,   s   "r-   r.   r/   b   s   € ÷ #ñ #˜$ñ #r0   c                ó.   € V P                   P                  # )zYWhether ``acquire_*`` defaults to blocking; ``False`` makes contention raise immediately.)r5   r   r>   s   &r-   r   ÚAsyncSoftReadWriteLock.blockinga   s   € ð �z‰z×"Ñ"Ð"r0   c               ó   € V ^8„  d   QhRR/# )r!   r)   z
int | Noner+   )r,   s   "r-   r.   r/   g   s   € ÷ %ñ %˜Jñ %r0   c                ó.   € V P                   P                  # )z_The generation the current hold was granted at, a fencing token; ``None`` when no lock is held.)r5   Ú
generationr>   s   &r-   rH   Ú!AsyncSoftReadWriteLock.generationf   ó   € ð �z‰z×$Ñ$Ð$r0   c               ó   € V ^8„  d   QhRR/# )r!   r)   zLeaseCompromise | Noner+   )r,   s   "r-   r.   r/   l   s   € ÷ %ñ %Ð2ñ %r0   c                ó.   € V P                   P                  # )z;How the current hold was lost, or ``None`` while it stands.)r5   Ú
compromiser>   s   &r-   rM   Ú!AsyncSoftReadWriteLock.compromisek   rJ   r0   c               ó   € V ^8„  d   QhRR/# )r!   r)   r'   r+   )r,   s   "r-   r.   r/   q   s   € ÷ ñ Ð6ñ r0   c                ó   € V P                   # )zNThe event loop used for ``run_in_executor``, or ``None`` for the running loop.)r6   r>   s   &r-   r   ÚAsyncSoftReadWriteLock.loopp   s   € ð �z‰zÐr0   c               ó   € V ^8„  d   QhRR/# )r!   r)   r(   r+   )r,   s   "r-   r.   r/   v   s   € ÷ ñ Ð1ñ r0   c                ó   € V P                   # )zPThe executor used for ``run_in_executor``, or ``None`` for the default executor.)r7   r>   s   &r-   r   ÚAsyncSoftReadWriteLock.executoru   s   € ð �~‰~Ðr0   c               ó$   € V ^8„  d   QhRRRRRR/# ©r!   r#   r&   r   úbool | Noner)   zAsyncGenerator[None]r+   )r,   s   "r-   r.   r/   {   s"   € ÷ !ñ ! |ð !Èð !Ð`tñ !r0   c              óÂ   "  € V P                  WR7      G Rj  x€L
   R5x € V P                  4       G Rj  x€L
  R#  L$ L  T P                  4       G Rj  x€L 
  i ; i5i)aŸ  
Async context manager that acquires and releases a shared read lock.

:param timeout: maximum wait time in seconds, or ``None`` to use the instance default
:param blocking: if ``False``, raise :class:`~filelock.Timeout` immediately; ``None`` uses the instance default

:raises RuntimeError: if a write lock is already held on this instance
:raises Timeout: if the lock cannot be acquired within *timeout* seconds

©r   N)Úacquire_readÚrelease©r8   r#   r   s   &&$r-   Ú	read_lockÚ AsyncSoftReadWriteLock.read_lockz   sN   é € ð ×Ñ ÐÓ;×;Ð;ð	!Üà—,‘,“.× Ò ñ	 	<ñ !ø�$—,‘,“.× Ò üó>   ‚A˜=™AžA £A¶?·A¿AÁAÁAÁAÁAc               ó$   € V ^8„  d   QhRRRRRR/# rV   r+   )r,   s   "r-   r.   r/   �   s"   € ÷ !ñ !¨ð !È+ð !Ðauñ !r0   c              óÂ   "  € V P                  WR7      G Rj  x€L
   R5x € V P                  4       G Rj  x€L
  R#  L$ L  T P                  4       G Rj  x€L 
  i ; i5i)aÁ  
Async context manager that acquires and releases an exclusive write lock.

:param timeout: maximum wait time in seconds, or ``None`` to use the instance default
:param blocking: if ``False``, raise :class:`~filelock.Timeout` immediately; ``None`` uses the instance default

:raises RuntimeError: if a read lock is already held, or a write lock is held by a different thread
:raises Timeout: if the lock cannot be acquired within *timeout* seconds

rY   N)Úacquire_writer[   r\   s   &&$r-   Ú
write_lockÚ!AsyncSoftReadWriteLock.write_lockŒ   sN   é € ð × Ñ  Ð Ó<×<Ð<ð	!Üà—,‘,“.× Ò ñ	 	=ñ !ø�$—,‘,“.× Ò ür_   c               ó$   € V ^8„  d   QhRRRRRR/# ©r!   r#   r&   r   rW   r)   Ú$AsyncAcquireSoftReadWriteReturnProxyr+   )r,   s   "r-   r.   r/   ž   ó$   € ÷ ?ñ ?Ø#ð?Ø9Dð?à	-ñ?r0   c             ƒ  óÌ   "  € V P                  4        V P                  \        P                  ! V P                  P
                  WR7      4      G Rj  x€L
  \        V R7      #  L5i)aÞ  
Acquire a shared read lock.

See :meth:`SoftReadWriteLock.acquire_read` for reentrancy / upgrade / fork semantics. The blocking work runs
inside ``run_in_executor`` so other coroutines on the same loop keep progressing while this call waits.

:param timeout: maximum wait time in seconds, or ``None`` to use the instance default
:param blocking: if ``False``, raise :class:`~filelock.Timeout` immediately; ``None`` uses the instance default

:returns: a proxy usable as an async context manager to release the lock

:raises RuntimeError: if a write lock is already held, if this instance was invalidated by
    :func:`os.fork`, or if :meth:`close` was called
:raises Timeout: if the lock cannot be acquired within *timeout* seconds

rY   N©Úlock)Ú_raise_if_inheritedÚ_run_acquireÚ	functoolsÚpartialr5   rZ   rg   r\   s   &&$r-   rZ   Ú#AsyncSoftReadWriteLock.acquire_readž   sO   é € ð& 	× Ñ Ô"Ø×Ñ¤	× 1Ò 1°$·*±*×2IÑ2IÈ7Ô fÓg×gÐgÜ3¸Ô>Ð>ñ 	hùó   ‚AA$ÁA"ÁA$c               ó$   € V ^8„  d   QhRRRRRR/# rf   r+   )r,   s   "r-   r.   r/   µ   rh   r0   c             ƒ  óÌ   "  € V P                  4        V P                  \        P                  ! V P                  P
                  WR7      4      G Rj  x€L
  \        V R7      #  L5i)aÀ  
Acquire an exclusive write lock.

See :meth:`SoftReadWriteLock.acquire_write` for the writer-preferring semantics. The blocking work runs inside
``run_in_executor``.

:param timeout: maximum wait time in seconds, or ``None`` to use the instance default
:param blocking: if ``False``, raise :class:`~filelock.Timeout` immediately; ``None`` uses the instance default

:returns: a proxy usable as an async context manager to release the lock

:raises RuntimeError: if a read lock is already held, if a write lock is held by a different thread, if
    this instance was invalidated by :func:`os.fork`, or if :meth:`close` was called
:raises Timeout: if the lock cannot be acquired within *timeout* seconds

rY   Nrj   )rl   rm   rn   ro   r5   rb   rg   r\   s   &&$r-   rb   Ú$AsyncSoftReadWriteLock.acquire_writeµ   sO   é € ð& 	× Ñ Ô"Ø×Ñ¤	× 1Ò 1°$·*±*×2JÑ2JÈGÔ gÓh×hÐhÜ3¸Ô>Ð>ñ 	iùrq   ÚforceFc               ó    € V ^8„  d   QhRRRR/# )r!   ru   r%   r)   r*   r+   )r,   s   "r-   r.   r/   Ì   s   € ÷ 
=ñ 
= dð 
=°tñ 
=r0   c             ƒ  ó¼   "  € V P                   \        P                  ! 4       8X  d2   V P                  V P                  P
                  VR7      G Rj  x€L
  R# R#  L5i)zÓ
Release one level of the current lock.

:param force: if ``True``, release the lock completely regardless of the current lock level

:raises RuntimeError: if no lock is currently held and *force* is ``False``

)ru   N)r4   r2   r3   Ú_runr5   r[   )r8   ru   s   &$r-   r[   ÚAsyncSoftReadWriteLock.releaseÌ   sC   é € ð ×Ñ¤§	¢	£Ô+Ø—)‘)˜DŸJ™J×.Ñ.°e�)Ó<×<Ò<ñ ,Ù<ùs   ‚AAÁAÁ	Ac               ó   € V ^8„  d   QhRR/# ©r!   r)   r*   r+   )r,   s   "r-   r.   r/   Ø   s   € ÷ .ñ .˜Tñ .r0   c              ƒ  ó¸   "  € V P                   \        P                  ! 4       8X  d0   V P                  V P                  P
                  4      G Rj  x€L
  R# R#  L5i)zRRelease any held lock and release the underlying filesystem resources. Idempotent.N)r4   r2   r3   rx   r5   Úcloser>   s   &r-   r}   ÚAsyncSoftReadWriteLock.closeØ   s=   é € à×Ñ¤§	¢	£Ô+Ø—)‘)˜DŸJ™J×,Ñ,Ó-×-Ò-ñ ,Ù-ùs   ‚AAÁAÁ	Ac               ó   € V ^8„  d   QhRR/# r{   r+   )r,   s   "r-   r.   r/   Ý   s   € ÷ $ñ $ Tñ $r0   c                	ó„   € V P                   \        P                  ! 4       8w  d   R V P                   R2p\	        V4      hR# )zAsyncSoftReadWriteLock on z4 was inherited across fork; construct a new instanceN)r4   r2   r3   r"   ÚRuntimeError)r8   Úmsgs   & r-   rl   Ú*AsyncSoftReadWriteLock._raise_if_inheritedÝ   s:   € Ø×Ñ¤§	¢	£Ô+Ø.¨t¯~©~Ð.>Ð>rÐsˆCÜ˜sÓ#Ð#ñ ,r0   c               ó    € V ^8„  d   QhRRRR/# )r!   Úacquirez Callable[[], AcquireReturnProxy]r)   r*   r+   )r,   s   "r-   r.   r/   â   s   € ÷ 'ñ 'Ð*Jð 'Ètñ 'r0   c              ƒ  	óÖ  "  € V P                  V4      p \        V4      G R j  x€L
  \        T4       R #  L  \        P                   d›   p \	        T4      G R j  x€L 
  M#  \
         d   p\        Y44        R p?MR p?ii ; i \	        T P                  T P                  P                  4      4      G R j  x€L 
  h   \
         d   p\        Y44        R p?h R p?ii ; iR p?ii ; i5i©N)
Ú_submitr   ÚasyncioÚCancelledErrorr	   ÚBaseExceptionr   r5   r[   r
   )r8   r…   Úacquire_futureÚcancellationÚerrors   &&   r-   rm   Ú#AsyncSoftReadWriteLock._run_acquireâ   sÄ   é € ð
 Ÿ™ gÓ.ˆð	Ü" >Ó2×2Ð2ô 	�~Ö&ñ 3øÜ×%Ñ%ô 		ð<Ü# NÓ3×3Ò3øÜ ô <Ü& |×;Ñ;ûð<úð<Ü# D§L¡L°·±×1CÑ1CÓ$DÓE×EÑEð øô !ô <Ü& |×;Ð;Øûð<þð		üs—   ‚C)•7 £5¤7 ¨C)µ7 ·C&ÁA"ÁAÁA"Á!C!Á"BÁ-A=Á8C!Á=BÂC!Â1B>Â7B:Â8B>Â=C!Â>CÃ	CÃC!ÃCÃC!Ã!C&Ã&C)c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r!   ÚfuncúCallable[_P, _R]Úargsú_P.argsÚkwargsú	_P.kwargsr)   r   r+   )r,   s   "r-   r.   r/   ö   s*   € ÷ &ñ &Ð/ð &¸ð &È9ð &ÐY[ñ &r0   c              �  	ó$  "  € V P                   ! V.VO5/ VB p \        V4      G R j  x€L
  \        T4      #  L  \        P                   d?   p \	        T4      G R j  x€L 
  h   \
         d   p\        YV4        R p?h R p?ii ; iR p?ii ; i5ir‡   )rˆ   r   r‰   rŠ   r	   r‹   r   r
   )r8   r‘   r“   r•   Úfuturer�   rŽ   s   &&*,   r-   rx   ÚAsyncSoftReadWriteLock._runö   s�   é € ð —’˜dÐ4 TÒ4¨VÑ4ˆð	Ü" 6Ó*×*Ð*ô ˜fÓ%Ð%ñ +øÜ×%Ñ%ô 	ð<Ü# FÓ+×+Ñ+ð øô !ô <Ü& |×;Ð;Øûð<þð	üsa   ‚Bš: ¨8©: ­B¸: ºBÁA%ÁA!ÁA%Á$BÁ%BÁ0B Á;BÂ BÂBÂBÂBc               ó(   € V ^8„  d   QhRRRRRRRR/# )	r!   r‘   r’   r“   r”   r•   r–   r)   z#asyncio.Future[_BackendOutcome[_R]]r+   )r,   s   "r-   r.   r/     s2   € ÷ mñ mØ$ðmØ-4ðmØ@Iðmà	,ñmr0   c           	     	óÆ   € V P                   ;'       g    \        P                  ! 4       pVP                  V P                  \
        \        P                  ! V.VO5/ VB 4      # r‡   )r6   r‰   Úget_running_loopÚrun_in_executorr7   r   rn   ro   )r8   r‘   r“   r•   r   s   &&*, r-   rˆ   ÚAsyncSoftReadWriteLock._submit  sO   € ð �z‰z×7Ð7œW×5Ò5Ó7ˆØ×#Ñ# D§N¡N´MÄ9×CTÒCTÐUYÐCkÐ\`ÒCkÐdjÑCkÓlÐlr0   )r4   r7   r5   r6   )éÿÿÿÿr‡   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r9   Úpropertyr"   r#   r   rH   rM   r   r   r   r]   rc   rZ   rb   r[   r}   rl   rm   rx   rˆ   Ú__static_attributes__r+   r0   r-   r   r   "   sw  † ññ0"ð
 ð"ð "ð"ð %)ð"ð )-ð"ð  $ð"ð CGð"ð 26ð"ð -1÷"ð "ð8 ô$ó ð$ð ô"ó ð"ð ô#ó ð#ð ô%ó ð%ð ô%ó ð%ð ôó ðð ôó ðð ñ!ÐW[÷ !ó ð!ð" ñ!ÐX\÷ !ó ð!ñ"?ØGK÷?ð ?ñ.?ØGK÷?ð ?ð.
=¨U÷ 
=õ.õ
$õ
'õ(&÷mñ mr0   r   c                  ó>   € ] tR tRtRtR R ltR R ltR R ltR	tR
# )rg   i  zTAsync context-aware object that releases an :class:`AsyncSoftReadWriteLock` on exit.c               ó    € V ^8„  d   QhRRRR/# )r!   rk   r   r)   r*   r+   )r,   s   "r-   r.   Ú1AsyncAcquireSoftReadWriteReturnProxy.__annotate__  s   € ÷ ñ Ð3ð ¸ñ r0   c                	ó   € Wn         R # r‡   rj   )r8   rk   s   &&r-   r9   Ú-AsyncAcquireSoftReadWriteReturnProxy.__init__  s   € ØŽ	r0   c               ó   € V ^8„  d   QhRR/# )r!   r)   r   r+   )r,   s   "r-   r.   r©     s   € ÷ ñ Ð"8ñ r0   c              ƒ  	ó"   "  € V P                   # 5ir‡   rj   r>   s   &r-   Ú
__aenter__Ú/AsyncAcquireSoftReadWriteReturnProxy.__aenter__  s   é € Ø�y‰yÐùs   ‚c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r!   Úexc_typeztype[BaseException] | NoneÚ	exc_valuezBaseException | NoneÚ	tracebackzTracebackType | Noner)   r*   r+   )r,   s   "r-   r.   r©     s2   € ÷ "ñ "à,ð"ð (ð"ð (ð	"ð
 
ñ"r0   c              ƒ  	óV   "  € V P                   P                  4       G R j  x€L
  R #  L5ir‡   )rk   r[   )r8   r±   r²   r³   s   &&&&r-   Ú	__aexit__Ú.AsyncAcquireSoftReadWriteReturnProxy.__aexit__  s   é € ð �i‰i×ÑÓ!×!Ô!ùs   ‚) '¡)rj   N)	r    r¡   r¢   r£   r¤   r9   r®   rµ   r¦   r+   r0   r-   rg   rg     s   † Ù^õõ÷"ñ "r0   rg   )%r¤   Ú
__future__r   r‰   rn   r2   Ú
contextlibr   Útypingr   r   r   Úfilelock._asyncr   r   r	   r
   r   r   Ú_syncr   Úcollections.abcr   r   Ú
concurrentr   Útypesr   Úfilelock._apir   Úfilelock._leaser   r   r   r   rg   Ú__all__r+   r0   r-   Ú<module>rÂ      sx   ðÙ Oå "ã Û Û 	Ý *ß 4Ñ 4÷÷ õ %çß8Ý"Ý#å0Ý/áˆtƒ_€ÙˆTƒ]€÷fmñ fm÷R"ñ "ð& +Øð‚r0   