+
    LV-j(  ã                  óÊ   € ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	H
t
HtHt ^ RIHt ^RIHt ^RIHtHtHt Rt^WtR	tR
tRt ! R R]4      tR R ltR R ltR.tR# )é    )ÚannotationsN)Úsuppress)ÚEACCESÚEEXISTÚEPERMÚESRCH)ÚPath)ÚBaseFileLock)Úbreak_lock_fileÚensure_directory_existsÚraise_on_not_writable_filei   i   g       @i   c                  óÄ   € ] tR t^tRtR R ltR R 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tR R ltR R ltRtR# )ÚSoftFileLocka�  
Portable file lock based on file existence.

Unlike :class:`UnixFileLock <filelock.UnixFileLock>` and :class:`WindowsFileLock <filelock.WindowsFileLock>`, this
lock does not use OS-level locking primitives. Instead, it creates the lock file with ``O_CREAT | O_EXCL`` and
treats its existence as the lock indicator. This makes it work on any filesystem but leaves stale lock files behind
if the process crashes without releasing the lock.

To mitigate stale locks, the lock file contains the PID and hostname of the holding process. On contention, if the
holder is on the same host and its PID no longer exists, the stale lock is broken automatically.

c               ó   € V ^8„  d   QhRR/# ©é   ÚreturnÚNone© )Úformats   "Ú_/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/filelock/_soft.pyÚ__annotate__ÚSoftFileLock.__annotate__#   s   € ÷ 6ñ 6˜$ñ 6ó    c                	ó¦  € \        V P                  4       \        V P                  4       \        P                  \        P
                  ,          \        P                  ,          \        P                  ,          p\        \        R R4      ;pe	   W,          p \        P                  ! V P                  WP                  4       4      pV P                  V4       W0P                  n        R#   \         d\   pTP                  \         8X  g,   TP                  \"        8X  d   \$        P&                  R8X  g   h T P)                  4         Rp?R# Rp?ii ; i)Ú
O_NOFOLLOWNÚwin32)r   Ú	lock_filer   ÚosÚO_WRONLYÚO_CREATÚO_EXCLÚO_TRUNCÚgetattrÚopenÚ
_open_modeÚ_write_lock_infoÚ_contextÚlock_file_fdÚOSErrorÚerrnor   r   ÚsysÚplatformÚ_try_break_stale_lock)ÚselfÚflagsÚ
o_nofollowÚfile_handlerÚ	exceptions   &    r   Ú_acquireÚSoftFileLock._acquire#   së   € Ü" 4§>¡>Ô2Ü §¡Ô/ä�K‰KÜ�j‰jõä�i‰iõô �j‰jõð 	ô "¤" l°DÓ9Ð9ˆJÒFØÕˆEð
	6ÜŸ7š7 4§>¡>°5¿/¹/Ó:KÓLˆLð ×!Ñ! ,Ô/Ø)5�M‰MÖ&øô ô 	)à—‘¤6Ô)¨i¯o©oÄÔ.GÌCÏLÉLÐ\cÔLcàØ×&Ñ&×(Ò(ûð	)ús   Â/C* Ã*EÃ5AEÅEc               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   r   :   s   € ÷ 3ñ 3 tñ 3r   c                	ó’  € \        \        \        4      ;_uu_ 4        \        V P                  4      w  r\        V4      pVfG   \        P                  ! 4       V,
          \        8¼  d   \        V P                  V4        R R R 4       R # Vw  rEpV\        P                  ! 4       8w  d    R R R 4       R # V P                  V4      '       dK   \        P                  R8w  g   Vf    R R R 4       R # V P                  V4      pVe   Wv8X  d    R R R 4       R # \        V P                  V4       R R R 4       R #   + '       g   i     R # ; i©Nr   )r   r*   Ú
ValueErrorÚ_read_lock_filer   Ú_parse_lock_holderÚtimeÚ_MALFORMED_LOCK_AGE_THRESHOLDr   ÚsocketÚgethostnameÚ_is_process_aliver,   r-   Ú_get_process_creation_time)r/   ÚcontentÚmtimeÚholderÚpidÚhostnameÚcreation_timeÚactuals   &       r   r.   Ú"SoftFileLock._try_break_stale_lock:   sú   € Ü”gœz×*Õ*Ü,¨T¯^©^Ó<‰NˆGÜ'¨Ó0ˆFàŠ~ô —9’9“; Õ&Ô*GÔGÜ# D§N¡N°EÔ:Ø÷ +Ñ*ð ,2Ñ(ˆC˜=Øœ6×-Ò-Ó/Ô/Ø÷ +Ñ*ð  ×%Ñ% c×*Ò*Ü—<‘< 7Ô*¨mÒ.CØ÷% +Ñ*ð& ×8Ñ8¸Ó=�Ø’> VÔ%<Ø÷+ +Ñ*ô0 ˜DŸN™N¨EÔ2÷1 +×*×*Ò*ús*   �A#D5Â
 D5Â4D5ÃD5Ã/D5ÄD5Ä5E	c               ó    € V ^8„  d   QhRRRR/# )r   rE   Úintr   Úboolr   )r   s   "r   r   r   V   s   € ÷ ñ ˜sð  tñ r   c                	óº  € \         P                  R 8X  dd   ^ RIpVP                  P                  pVP                  \        ^ V 4      pV'       d   VP                  V4       R# VP                  4       \        8g  #  \        P                  ! V ^ 4       R#   \         d=   pTP                  \        8X  d    Rp?R# TP                  \        8X  d    Rp?R# h Rp?ii ; i)r   NTF)r,   r-   ÚctypesÚwindllÚkernel32ÚOpenProcessÚ_WIN_SYNCHRONIZEÚCloseHandleÚGetLastErrorÚ_WIN_ERROR_INVALID_PARAMETERr   Úkillr*   r+   r   r   )rE   rN   rP   ÚhandleÚexcs   &    r   r@   ÚSoftFileLock._is_process_aliveU   s¨   € ä�<‰<˜7Ô"Ûà—}‘}×-Ñ-ˆHØ×)Ñ)Ô*:¸A¸sÓCˆFßØ×$Ñ$ VÔ,ÙØ×(Ñ(Ó*Ô.JÑJÐJð	Ü�GŠG�C˜ŒOñ øô ô 	Ø�y‰yœEÔ!ÝØ�y‰yœEÔ!ÝØûð	ús$   Á:B ÂCÂCÂ9CÃCÃCc               ó    € V ^8„  d   QhRRRR/# )r   rE   rK   r   ú
int | Noner   )r   s   "r   r   r   k   s   € ÷ Hñ H¨ð H°
ñ Hr   c           	     ó¢  € \         P                  R8w  d   R# ^ RIp^ RIHp VP                  P
                  pVP                  \        ^ V 4      pV'       g   R#  VP                  4       pVP                  4       pVP                  4       pVP                  4       pVP                  VVP                  V4      VP                  V4      VP                  V4      VP                  V4      4      '       g    VP                  V4       R#  VP                  V4       VP                  ^ ,          VP                  ,          #   TP                  T4       i ; i)zRReturn the process creation FILETIME as an integer on Windows, ``None`` otherwise.r   N)Úwintypes)r,   r-   rN   r]   rO   rP   rQ   Ú&_WIN_PROCESS_QUERY_LIMITED_INFORMATIONÚFILETIMEÚGetProcessTimesÚbyrefrS   ÚdwHighDateTimeÚdwLowDateTime)	rE   rN   r]   rP   rW   ÚcreationÚ	exit_timeÚkernel_timeÚ	user_times	   &        r   rA   Ú'SoftFileLock._get_process_creation_timej   s  € ô �<‰<˜7Ô"ÙÛÝ#à—=‘=×)Ñ)ˆØ×%Ñ%Ô&LÈaÐQTÓUˆßÙð	)Ø×(Ñ(Ó*ˆHØ ×)Ñ)Ó+ˆIØ"×+Ñ+Ó-ˆKØ ×)Ñ)Ó+ˆIØ×+Ñ+ØØ—‘˜XÓ&Ø—‘˜YÓ'Ø—‘˜[Ó)Ø—‘˜YÓ'÷ò ð à× Ñ  Ö(ðð × Ñ  Ô(Ø×'Ñ'¨2Õ-°×1GÑ1GÕGÐGøð × Ñ  Õ(ús   ÁBD; Ä;Ec               ó    € V ^8„  d   QhRRRR/# )r   ÚfdrK   r   r   r   )r   s   "r   r   r   ˆ   s   € ÷ (ñ (˜Sð ( Tñ (r   c                	óª  € \        \        4      ;_uu_ 4        \        P                  ! 4        R \        P
                  ! 4        R 2p\        P                  R8X  d8   \        P                  \        P                  ! 4       4      ;pe   W R 2,          p\        P                  ! WP                  4       4       RRR4       R#   + '       g   i     R# ; i)Ú
r   N)r   r*   r   Úgetpidr>   r?   r,   r-   r   rA   ÚwriteÚencode)rj   ÚinfoÚcts   &  r   r'   ÚSoftFileLock._write_lock_info‡   s‰   € ä”g×ÕÜ—i’i“k�] "¤V×%7Ò%7Ó%9Ð$:¸"Ð=ˆDÜ�|‰|˜wÔ&´,×2YÑ2YÔZ\×ZcÒZcÓZeÓ2fÐ,f¨BÒ+sØ˜$˜b˜	Õ!�Ü�HŠH�RŸ™›Ô'÷	 ××Òús   ˜BCÃC	c               ó   € V ^8„  d   QhRR/# )r   r   r[   r   )r   s   "r   r   r   �   s   € ÷ ñ �Zñ r   c                óò   € \        \        \        4      ;_uu_ 4        \        \	        V P
                  4      ^ ,          4      pVe   V^ ,          uuRRR4       #  RRR4       R#   + '       g   i     R# ; i)z§
The PID of the process holding this lock, read from the lock file.

:returns: the PID as an integer, or ``None`` if the lock file does not exist or cannot be parsed

N)r   r*   r9   r;   r:   r   )r/   rD   s   & r   rE   ÚSoftFileLock.pid�   sY   € ô ”gœz×*Õ*Ü'¬¸¿¹Ó(GÈÕ(JÓKˆFØÒ!Ø˜a•y÷ +Ò*à!÷ +ñ ÷	 +Ö*ñ ús   �2A%Á%A6	c               ó   € V ^8„  d   QhRR/# )r   r   rL   r   )r   s   "r   r   r   ž   s   € ÷ ñ  Dñ r   c                óZ  € \        \        \        4      ;_uu_ 4        \        \	        V P
                  4      ^ ,          4      pVeH   Vw  r#pV\        P                  ! 4       8H  ;'       d    V\        P                  ! 4       8H  uuRRR4       #  RRR4       R#   + '       g   i     R# ; i)z‘
Whether this lock is held by the current process.

:returns: ``True`` if the lock file exists and names the current process's PID and hostname

NF)
r   r*   r9   r;   r:   r   r   rm   r>   r?   )r/   rD   rE   rF   Ú_s   &    r   Úis_lock_held_by_usÚSoftFileLock.is_lock_held_by_us�   s€   € ô ”gœz×*Õ*Ü'¬¸¿¹Ó(GÈÕ(JÓKˆFØÒ!Ø#)Ñ �˜qØœbŸiši›kÑ)×NÐN¨h¼&×:LÒ:LÓ:NÑ.N÷	 +Ò*à!÷ +ñ
 ÷ +Ö*ñ
 ús   �ABÁ+BÂB*	c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   r   ¬   s   € ÷ *ñ *˜Dñ *r   c                ó´   € \        \        4      ;_uu_ 4        \        V P                  4      P	                  4        RRR4       R#   + '       g   i     R# ; i)zNForcibly break the lock by removing the lock file, regardless of who holds it.N)r   r*   r	   r   Úunlink©r/   s   &r   Ú
break_lockÚSoftFileLock.break_lock¬   s1   € ä”g×ÕÜ�—‘Ó ×'Ñ'Ô)÷ ××Òús   ˜$AÁA	c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   r   ±   s   € ÷ .ñ .˜$ñ .r   c                	ó¬  € V P                   P                  f   Q h\        P                  ! V P                   P                  4       R V P                   n        \        P
                  R8X  d   V P                  4        R # \        \        4      ;_uu_ 4        \        V P                  4      P                  4        R R R 4       R #   + '       g   i     R # ; ir8   )r(   r)   r   Úcloser,   r-   Ú_windows_unlink_with_retryr   r*   r	   r   r}   r~   s   &r   Ú_releaseÚSoftFileLock._release±   s�   € Ø�}‰}×)Ñ)Ò5Ð5Ð5Ü
�Š�—‘×+Ñ+Ô,Ø%)ˆ�‰Ô"Ü�<‰<˜7Ô"Ø×+Ñ+Ö-äœ'×"Õ"Ü�T—^‘^Ó$×+Ñ+Ô-÷ #×"×"Ò"ús   Â$CÃC	c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   r   »   s   € ÷ ñ ¨Dñ r   c                	óV  € ^
pRp\        V4       F(  p \        V P                  4      P                  4         R# 	  R#   \         d`   pTP
                  \        \        09  d    Rp? R# Y1^,
          8  d&   \        P                  ! T4       T^,          p Rp?K�   Rp?K“  Rp?ii ; i)é
   gü©ñÒMbP?N)
Úranger	   r   r}   r*   r+   r   r   r<   Úsleep)r/   Úmax_retriesÚretry_delayÚattemptrX   s   &    r   r„   Ú'SoftFileLock._windows_unlink_with_retry»   s„   € ØˆØˆÜ˜[Ö)ˆGð	Ü�T—^‘^Ó$×+Ñ+Ô-ò ó *øô ô %Ø—9‘9¤V¬U OÔ3ÞØ¨1�_Ô,Ü—J’J˜{Ô+Ø 1Õ$–Kõ -ûð%ús   ”#>¾B(Á	B#Á+,B#Â#B(r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r4   r.   Ústaticmethodr@   rA   r'   ÚpropertyrE   ry   r   r…   r„   Ú__static_attributes__r   r   r   r   r      s‹   † ñõ6õ.3ð6 ôó ðð( ôHó ðHð8 ô(ó ð(ð ôó ðð ôó ðõ*õ
.÷ñ r   r   c               ó    € V ^8„  d   QhRRRR/# )r   ÚpathÚstrr   ztuple[str | None, float]r   )r   s   "r   r   r   Ì   s   € ÷ ñ ˜#ð Ð":ñ r   c           	     óP  € \         P                  ! V \         P                  \        \         R ^ 4      ,          \        \         R^ 4      ,          4      p \         P                  ! V4      P
                  \         P                  ! V\        ^,           4      r2\         P                  ! V4       \        V4      \        8:  d6   \        \        4      ;_uu_ 4        VP                  R4      V3uuRRR4       # RV3#   \         P                  ! T4       i ; i  + '       g   i     RT3# ; i)r   Ú
O_NONBLOCKzutf-8N)r   r%   ÚO_RDONLYr$   ÚfstatÚst_mtimeÚreadÚ_MAX_LOCK_FILE_SIZErƒ   Úlenr   ÚUnicodeDecodeErrorÚdecode)r™   rj   rC   Údatas   &   r   r:   r:   Ì   sÈ   € ô 
�Š�”r—{‘{¤W¬R°¸qÓ%AÕAÄGÌBÐP\Ð^_ÓD`Õ`Ó	a€BðÜ—h’h˜r“l×+Ñ+¬R¯WªW°RÔ9LÈqÕ9PÓ-Qˆtä
�Š�ŒÜ
ˆ4ƒyÔ'Ô'ÜÔ(×)Õ)Ø—;‘;˜wÓ'¨Ð.÷ *Ò)à�ˆ;Ðøô	 	�Š��úç)Ö)à�ˆ;Ðús   ÁAC7 ÃDÃ7DÄD%	c               ó    € V ^8„  d   QhRRRR/# )r   rB   z
str | Noner   z"tuple[int, str, int | None] | Noner   )r   s   "r   r   r   Ý   s   € ÷ (ñ ( 
ð (Ð/Qñ (r   c                óD  € V '       d/   \        V P                  4       P                  4       ;p4      R9  d   R#  \        V^ ,          4      p\        V4      ^8X  d   \        V^,          4      MRp^Tu;8:  d
   R8:  g    R#  R# Y!^,          T3#   \         d     R# i ; i)r   N>   r   é   iÿÿÿ)r¢   ÚstripÚ
splitlinesrK   r9   )rB   ÚlinesrE   rG   s   &   r   r;   r;   Ý   s’   € ÷ ”c 7§=¡=£?×#=Ñ#=Ó#?Ð?˜%Ó@ÈÔNÙðÜ�%˜•(‹mˆÜ),¨U«°q¬œ˜E !�Hœ¸dˆð �Ö �yÕ Ùð !ÙØ�a•˜-Ð'Ð'øô ô Úðús   º6B ÂBÂB)Ú
__future__r   r   r>   r,   r<   Ú
contextlibr   r+   r   r   r   r   Úpathlibr	   Ú_apir
   Ú_utilr   r   r   rR   rU   r^   r=   r¡   r   r:   r;   Ú__all__r   r   r   Ú<module>r²      sl   ðÝ "ã 	Û Û 
Û Ý ß .Ó .Ý å ß WÑ WàÐ Ø!Ð Ø)/Ð &Ø #Ð ØÐ ôt�<ô tõnõ"(ð* ð‚r   