§
    eÉÝj(�  ã                  óD  — U d dl mZ g d¢Zd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
mZ d dlmZmZmZ d dlmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZmZmZmZ d dlmZ d dl m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' ej(        dk    rd dl)m*Z* d dl)m+Z, nd dl m,Z, dZ-de.d<   dZ/de.d<   dZ0de.d<   dZ1de.d<   ej2        ej3        z  Z4de.d<   dZ5de.d<    e6¦   «         Z7de.d <    ej8        ¦   «         Z9d!e.d"<    G d#„ d$e¦  «        Z:d@d)„Z;dAd-„Z<dBd/„Z=dCd3„Z>dDd6„Z?dEd:„Z@dFd<„ZAdGd>„ZBg d?¢ZCdS )Hé    )Úannotations)	Ú
contextlibzfilelock._identityzfilelock._soft_protocolzfilelock._utilÚ	itertoolsÚpathlibÚreÚsecretsÚtypingN)Úsuppress)ÚEACCESÚEEXISTÚEPERM)Úislice)ÚPath)ÚFinal)ÚBaseFileLockÚ_raise_grouped_errors)Ú	host_nameÚowner_is_current_processÚowner_is_staleÚprocess_start_token)ÚSTRICT_SOFT_SENTINEL_RECORD)Úbreak_lock_fileÚexchange_namesÚexchange_supportedÚ	pin_inodeÚraise_on_not_writable_fileÚremove_own_fileÚ	write_allÚwin32)Úopen_read_without_oplock_wait)Úunlink_without_oplock_wait)Úunlink_pathg       @zFinal[float]ÚMALFORMED_LOCK_AGE_THRESHOLDi   z
Final[int]Ú_MAX_LOCK_FILE_SIZEé
   Ú_UNLINK_MAX_RETRIESé   Ú#_MARKER_WITH_START_TOKEN_LINE_COUNTÚ_OTHERS_WRITEÚ z
Final[str]Ú_RECORDLESS_MARKERzFinal[set[str]]Ú_CLAIMS_IN_PROGRESSzFinal[threading.Lock]Ú_CLAIMS_LOCKc                  ó´  ‡ — e Zd ZU dZdZded<   dZded<   dZded	<   dZded
<   dZ	ded<   dZ
ded<   ded<   dFd„ZdGd„ZdFd„ZdFd„ZdHd„ZdHd„ZdId „ZdJd"„ZdKd&„ZdLd(„ZdMd)„ZedNd,„¦   «         ZdOd/„ZdPd1„ZdQd2„ZedRd4„¦   «         ZedGd5„¦   «         ZedSd6„¦   «         ZedTd7„¦   «         Z dFd8„Z!dUˆ fd:„Z"dFd;„Z#dVd=„Z$dWd?„Z%dXd@„Z&dFdA„Z'dFdB„Z(dYdC„Z)dZdE„Z*ˆ xZ+S )[ÚSoftFileLockaz  
    Cooperative file lock based on a shared existence marker.

    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. The filesystem must provide coherent exclusive creation and directory
    updates to each participating process. A crash can leave the marker behind.

    The marker contains the holder's PID and hostname. A contender may remove it when it can no longer find a same-host
    process with that PID. A configured :attr:`~filelock.BaseFileLock.lifetime` also permits removal based on marker
    age, including while the holder remains alive. Age-based expiry can overlap protected operations and does not
    provide strict mutual exclusion.

    TÚboolÚ_lifetime_supported)ÚStrictSoftFileLockÚSoftFileLeaseztuple[str, str] | NoneÚ_lifetime_replacementsFÚ_preserve_lock_file_supportedÚ_on_acquired_supportedNz+tuple[tuple[float, int, int], float] | NoneÚ_marker_seenútuple[int, int] | NoneÚ_marker_cleanupz	list[int]Ú_marker_fdsÚreturnÚNonec                ó   — |                       ¦   «          t          | j        ¦  «         t          j        t          j        z  t          j        z  t          j        z  }t          t          dd ¦  «        x}�||z  }	 t          j	        | j        ||  
                    ¦   «         t           z  ¦  «        }n]# t          $ rP}|j        t          k    s!|j        t          k    rt           j        dk    s‚ |                      ¦   «          Y d }~d S d }~ww xY wd }	 t'          t          j        |¦  «        ¦  «        }|                      |¦  «         |                      |¦  «         |                      |¦  «         |                      ||¦  «         d S # t2          $ �r9 |                      ¦   «          	 t           j        dk    rAt7          t          ¦  «        5  t9          | j        |¦  «         d d d ¦  «         n# 1 swxY w Y   	 t          j        |¦  «         t           j        dk    r|                      |¦  «         n–# t           j        dk    r|                      |¦  «         w w xY w# 	 t          j        |¦  «         t           j        dk    r|                      |¦  «         w w # t           j        dk    r|                      |¦  «         w w xY wxY w‚ w xY w)NÚ
O_NOFOLLOWr   )Ú_finish_marker_cleanupr   Ú
_lock_pathÚosÚO_WRONLYÚO_CREATÚO_EXCLÚO_TRUNCÚgetattrÚopenÚ
_open_moder)   ÚOSErrorÚerrnor   r   ÚsysÚplatformÚ_try_break_stale_lockÚ_file_identityÚfstatÚ_mark_descriptor_pendingÚ_apply_explicit_modeÚ_write_lock_infoÚ_mark_descriptor_ownedÚBaseExceptionÚ_mark_descriptor_releasedr
   r   ÚcloseÚ_unlink_held_marker)ÚselfÚflagsÚ
o_nofollowÚfdÚ	exceptionÚidentitys         úV/home/spazio/cosmos_universe_media/venv/lib/python3.11/site-packages/filelock/_soft.pyÚ_acquirezSoftFileLock._acquire`   s÷  € Ø×#Ò#Ñ%Ô%Ð%Ý" 4¤?Ñ3Ô3Ð3õ ”�bœjÑ(­2¬9Ñ4µr´zÑAˆÝ!¥" l°DÑ9Ô9Ð9ˆJÐFØ�ZÑˆEð	Ý”˜œ¨%°·²Ñ1BÔ1BÅmÀ^Ñ1SÑTÔTˆBˆBøÝð 	ð 	ð 	à”¥6Ò)Ð)¨i¬oÅÒ.GÐ.GÍCÌLÐ\cÒLcÐLcàØ×&Ò&Ñ(Ô(Ð(ØˆFˆFˆFˆFˆFøøøøð	øøøð ,0ˆð	Ý%¥b¤h¨r¡l¤lÑ3Ô3ˆHØ×)Ò)¨"Ñ-Ô-Ð-Ø×%Ò% bÑ)Ô)Ð)Ø×!Ò! "Ñ%Ô%Ð%Ø×'Ò'¨¨HÑ5Ô5Ð5Ð5Ð5øÝð 	ñ 	ð 	Ø×*Ò*Ñ,Ô,Ð,ð;Ý”< 7Ò*Ð*õ "¥'Ñ*Ô*ð =ð =Ý'¨¬¸Ñ<Ô<Ð<ð=ð =ð =ñ =ô =ð =ð =ð =ð =ð =ð =øøøð =ð =ð =ð =ð;Ý”H˜R‘L”L�Lå”| wÒ.Ð.Ø×0Ò0°Ñ:Ô:Ð:øøõ ”| wÒ.Ð.Ø×0Ò0°Ñ:Ô:Ð:Ð:ð /øøøøð;Ý”H˜R‘L”L�Lå”| wÒ.Ð.Ø×0Ò0°Ñ:Ô:Ð:Ð:ð /ø•s”| wÒ.Ð.Ø×0Ò0°Ñ:Ô:Ð:Ð:ð /øøøøøøàð	øøøsŒ   Á:6B1 Â1
DÂ;ADÄDÄA6F	 Æ	KÆ)$I ÇG/Ç#I Ç/G3	Ç3I Ç6G3	Ç7I Ç;H5È&KÈ5(IÉKÉ KÉ"JÉ6'KÊ(K	ËKËKr[   Úintc                óæ   — | j         rgt          j        dk    rYt          t          ¦  «        5  t          j        || j        j        t           z  ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S d S d S ©Nr   )
Úhas_explicit_moderK   rL   r
   ÚPermissionErrorrA   ÚfchmodÚ_contextÚmoder)   )rX   r[   s     r^   rQ   z!SoftFileLock._apply_explicit_modeŒ   sÒ   € ð Ô!ð 	C¥c¤l°gÒ&=Ð&=Ý�/Ñ*Ô*ð Cð CÝ”	˜"˜dœmÔ0µM°>ÑAÑBÔBÐBðCð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cð Cð Cð	Cð 	CÐ&=Ð&=s   ¬)A"Á"A&Á)A&c                óê  — t          t          t          ¦  «        5  t          | j        ¦  «        5 }t          | j        ¦  «        \  }}|d |j        hvr	 d d d ¦  «         d d d ¦  «         d S |t          k    r	 d d d ¦  «         d d d ¦  «         d S |t          k    r	 d d d ¦  «         d d d ¦  «         d S t          |¦  «        }|€Z|  
                    |¦  «        t          k    r#|                      |t          |¦  «        ¦  «         	 d d d ¦  «         d d d ¦  «         d S t          |Ž r|                      ||d         ¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S ©Nr   )r
   rI   Ú
ValueErrorr   r@   Ú_read_lock_fileÚst_inor   r+   Ú_parse_lock_holderÚ_marker_unchanged_forr#   Ú
_take_overÚ_placeholder_breakerr   )rX   ÚpinnedÚcontentÚmarkerÚholders        r^   rM   z"SoftFileLock._try_break_stale_lock“   s°  € Ý•g�zÑ*Ô*ð 	3ð 	3­I°d´oÑ,FÔ,Fð 	3È&Ý-¨d¬oÑ>Ô>‰OˆG�VØ˜d F¤MÐ2Ð2Ð2Øð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð Õ5Ò5Ð5Øð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð Õ,Ò,Ð,Øð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3õ (¨Ñ0Ô0ˆFàˆ~ð ×-Ò-¨fÑ5Ô5Õ9UÒUÐUØ—O’O FÕ,@ÀÑ,IÔ,IÑJÔJÐJØð#	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3õ& ˜vÐ&ð 3Ø—’ ¨¨q¬	Ñ2Ô2Ð2ð)	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð 	3ð 	3se   ›E(°$EÁE(Á,EÁ8E(ÂEÂE(Â4AEÄE(Ä%EÅE(ÅE	ÅE(ÅE	ÅE(Å(E,Å/E,c                óö  — | j         j        x}€d S t          t          ¦  «        5  t	          | j        ¦  «        5 }t          | j        ¦  «        \  }}|d |j        hvst          j        ¦   «         |j	        z
  |k     r	 d d d ¦  «         d d d ¦  «         d S |  
                    |¦  «        }|                      ||€d n|d         ¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S ri   )rf   Úlifetimer
   rI   r   r@   rk   rl   ÚtimeÚst_mtimeÚ_recorded_holderro   )rX   rv   rq   rr   rs   rt   s         r^   Ú_try_break_expired_lockz$SoftFileLock._try_break_expired_lockª   s×  € ØœÔ.Ð.ˆHÐ7ØˆFÝ•gÑÔð 	Kð 	K¥	¨$¬/Ñ :Ô :ð 	K¸få-¨d¬oÑ>Ô>‰OˆG�VØ˜d F¤MÐ2Ð2Ð2µd´i±k´kÀFÄOÑ6SÐV^Ò6^Ð6^Øð		Kð 	Kð 	Kñ 	Kô 	Kð 	Kð 	Kð 	Kð 	Kñ 	Kô 	Kð 	Kð 	Kð 	Kð
 ×*Ò*¨7Ñ3Ô3ˆFØ�OŠO˜F¨F¨N D DÀÀqÄ	ÑJÔJÐJð	Kð 	Kð 	Kñ 	Kô 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Køøøð 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Kñ 	Kô 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Køøøð 	Kð 	Kð 	Kð 	Kð 	Kð 	KsA   ¥C.ºACÁ=C.Â5CÃ
C.ÃC	ÃC.ÃC	ÃC.Ã.C2Ã5C2rs   úos.stat_resultÚbreaker_pidú
int | Nonec                ó’   — t          ¦   «         r|                      ||¦  «         d S t          | j        |j        |j        ¦  «         d S ©N)r   Ú_take_over_by_exchanger   r@   rx   rl   )rX   rs   r|   s      r^   ro   zSoftFileLock._take_overµ   sM   € õ ÑÔð 	MØ×'Ò'¨°Ñ<Ô<Ð<Ð<Ð<å˜DœO¨V¬_¸f¼mÑLÔLÐLÐLÐLó    c                óº  — t          j        | j        ¦  «        x}j        |j        k    s|j        |j        k    rd S |�|                      ||¦  «        rd S | j        › dt          j        ¦   «         › dt          j        d¦  «        › �}t           j	        t           j
        z  t           j        z  t          t           dd¦  «        z  }t          j        |||                      ¦   «         t           z  ¦  «        }|                      |¦  «         dx}}	 t#          t          j        |¦  «        ¦  «        }	|                      |¦  «         |                      |¦  «         t+          || j        ¦  «        s	 |s|                      |||¬¦  «         d S d S d}t          j        |¦  «        x}
j        |j        k    s|
j        |j        k    r	 |s|                      |||¬¦  «         d S d S t/          |¦  «                             ¦   «          d}|                      ||	¦  «         d}|s|                      |||¬¦  «         d S d S # |s|                      |||¬¦  «         w w xY w)	Nú.break.ú.é   r>   r   F)Úput_backT)rA   Úlstatr@   rx   rl   Ú_restore_stranded_markerÚgetpidr   Ú	token_hexrB   rC   rD   rF   rG   rH   r)   rP   rN   rO   rQ   rR   r   Ú_abandon_take_overr   ÚunlinkrS   )rX   rs   r|   ÚcurrentÚasiderY   r[   Ú	exchangedÚheldr]   Útakens              r^   r€   z#SoftFileLock._take_over_by_exchangeÀ   s”  € Ý”x ¤Ñ0Ô0Ð0ˆGÔ:¸f¼oÒMÐMÐQXÔQ_ÐciÔcpÒQpÐQpØˆFØÐ" t×'DÒ'DÀ[ÐRXÑ'YÔ'YÐ"ØˆFØœ/ÐWÐWµ"´)±+´+ÐWÐWÅÔ@QÐRTÑ@UÔ@UÐWÐWˆÝ”{¥R¤ZÑ/µ"´)Ñ;½gÅbÈ,ÐXYÑ>ZÔ>ZÑZˆÝ”G˜E 5¨$¯/ª/Ñ*;Ô*;½}¸nÑ*LÑMÔMˆØ×%Ò% bÑ)Ô)Ð)Ø Ð ˆ	�Dð	GÝ,­R¬X°b©\¬\Ñ:Ô:ˆHØ×%Ò% bÑ)Ô)Ð)Ø×!Ò! "Ñ%Ô%Ð%Ý! %¨¬Ñ9Ô9ð Øð ð GØ×'Ò'¨¨E¸IÐ'ÑFÔFÐFÐFÐFðGð Gð ˆIÝœ %™œÐ(�Ô2°f´oÒEÐEÈÌÐY_ÔYfÒIfÐIfØð ð GØ×'Ò'¨¨E¸IÐ'ÑFÔFÐFÐFÐFðGð Gõ �‰KŒK×ÒÑ Ô Ð ØˆIØ×'Ò'¨¨HÑ5Ô5Ð5ØˆDàð GØ×'Ò'¨¨E¸IÐ'ÑFÔFÐFÐFÐFðGð Gø�4ð GØ×'Ò'¨¨E¸IÐ'ÑFÔFÐFÐFðGøøøs   ÄA H= Æ6H= Ç$;H= È=Ic                ót   ‡ ‡‡— ‰                       ‰¦  «        x}€dS t          ˆˆˆ fd„|D ¦   «         ¦  «        S )NTc              3  óP   •K  — | ] \  }}‰                      |‰‰|¬ ¦  «        V — Œ!dS ))ÚadoptN)Ú_recover_claimed)Ú.0ÚpathÚ	abandonedr|   rs   rX   s      €€€r^   ú	<genexpr>z8SoftFileLock._restore_stranded_marker.<locals>.<genexpr>ä   sA   øè è € ÐwÐwÑYhÐY]Ð_h�4×(Ò(¨¨{¸FÈ)Ð(ÑTÔTÐwÐwÐwÐwÐwÐwr�   )Ú_stranded_candidatesÚany)rX   r|   rs   Ú
candidatess   ``` r^   rˆ   z%SoftFileLock._restore_stranded_markerÛ   sO   øøø€ ð ×3Ò3°KÑ@Ô@Ð@ˆJÐIØ�4ÝÐwÐwÐwÐwÐwÐwÐlvÐwÑwÔwÑwÔwÐwr�   úlist[tuple[str, bool]] | Nonec                ó°  — t           j                             | j        ¦  «        \  }}t	          j        t	          j        |¦  «        › d|› d�¦  «        }t	          j        t	          j        |¦  «        › d�¦  «        }g }t          j        |pt           j        ¦  «        5 }|D �]}| 	                    d¬¦  «        sŒt          t          |¦  «        |j        z  ¦  «        }	|                     |j        ¦  «        r|                     |	df¦  «         Œp|                     |j        ¦  «        x}
r�t          |
d         ¦  «        t          j        ¦   «         k    }|s>t#          t          |
d         ¦  «        t%          ¦   «         d ¦  «        s d d d ¦  «         d S |                     |	|f¦  «         �Œ	 d d d ¦  «         n# 1 swxY w Y   t'          |¦  «        S )Nz	\.break\.z\.[0-9a-f]{32}z\.restore\.(\d+)\.[0-9a-f]{32}F)Úfollow_symlinksé   )rA   r—   Úsplitr@   r   ÚcompileÚescapeÚscandirÚcurdirÚis_fileÚstrr   ÚnameÚ	fullmatchÚappendr`   r‰   r   r   Úsorted)rX   r|   Ú	directoryr¨   ÚstrandedÚclaimedrœ   ÚentriesÚentryr—   ÚfoundÚourss               r^   rš   z!SoftFileLock._stranded_candidatesæ   s  € Ýœ'Ÿ-š-¨¬Ñ8Ô8‰ˆ	�4Ýœ*­¬°4©¬Ð%`Ð%`À;Ð%`Ð%`Ð%`ÑaÔaˆÝœ­¬	°$©¬Ð$YÐ$YÐ$YÑZÔZˆØ-/ˆ
ÝŒZ˜	Ð.¥R¤YÑ/Ô/ð 	4°7Ø ð 
4ñ 
4�Ø—}’}°U�}Ñ;Ô;ð ØÝ�4 	™?œ?¨U¬ZÑ7Ñ8Ô8�Ø×%Ò% e¤jÑ1Ô1ð 4Ø×%Ò% t¨U mÑ4Ô4Ð4Ð4Ø%×/Ò/°´
Ñ;Ô;Ð;�Uð 4Ý˜u Qœx™=œ=­B¬I©K¬KÒ7�DØ ð $¥Nµ3°u¸Q´x±=´=Å)Á+Ä+ÈtÑ$TÔ$Tð $Ø#ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð ×%Ò% t¨T lÑ3Ô3Ð3ùð
4ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4õ �jÑ!Ô!Ð!s   ÂC,F>ÆF>Æ>GÇGr—   r§   r”   c               ó’  — |r|n1| j         › dt          j        ¦   «         › dt          j        d¦  «        › �}t          |¦  «        sdS 	 |sD	 t          |¦  «                             |¦  «         n # t          $ r Y t          |¦  «         dS w xY w|  
                    |||¦  «        t          |¦  «         S # t          |¦  «         w xY w)Nz	.restore.r„   r…   T)r@   rA   r‰   r   rŠ   Ú_begin_claimr   ÚrenamerI   Ú
_end_claimÚ_restore_claimed)rX   r—   r|   rs   r”   Úowns         r^   r•   zSoftFileLock._recover_claimedù   sâ   € ð
 #Ðj�T�T¨4¬?Ð(jÐ(jÅRÄYÁ[Ä[Ð(jÐ(jÕSZÔSdÐegÑShÔShÐ(jÐ(jˆÝ˜CÑ Ô ð 	Ø�4ð	Øð  ð Ý˜‘J”J×%Ò% cÑ*Ô*Ð*Ð*øÝð  ð  ð  Øõ �s‰OŒOˆOˆOˆOð	 øøøà×(Ò(¨¨k¸6ÑBÔBå�s‰OŒOˆOˆOø�J�s‰OŒOˆOˆOøøøs0   Á	B5 Á"A/ Á.B5 Á/
BÁ9B5 ÂBÂB5 Â5Cr¸   c                ó.  — 	 t          |¦  «        \  }}n'# t          $ r |                      ||¦  «         Y dS w xY w|                      ||¦  «        sOt	          t          ¦  «        5  t          |¦  «                             ¦   «          d d d ¦  «         n# 1 swxY w Y   dS t	          t          ¦  «        5  t          j        | j	        ¦  «        }|j
        |j        f|j
        |j        fk    r{t          || j	        ¦  «        rft          j        |¦  «        j
        |j
        k    r/t          |¦  «                             ¦   «          	 d d d ¦  «         dS t          || j	        ¦  «         d d d ¦  «         n# 1 swxY w Y   |                      ||¦  «         dS ©NTF)rk   rI   Ú_return_claimÚ_marker_is_liver
   r   rŒ   rA   r‡   r@   rl   rx   r   )rX   r¸   r|   rs   rr   Ú_r�   s          r^   r·   zSoftFileLock._restore_claimed  s%  € ð	Ý(¨Ñ-Ô-‰JˆG�Q�QøÝð 	ð 	ð 	Ø×Ò˜s KÑ0Ô0Ð0Ø�4�4ð	øøøð ×#Ò# G¨[Ñ9Ô9ð 	Ý�'Ñ"Ô"ð #ð #Ý�S‘	”	× Ò Ñ"Ô"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #à�5å•gÑÔð 		5ð 		5Ý”h˜tœÑ/Ô/ˆGØ” Ô 0Ð1°f´mÀVÄ_Ð5UÒUÐUÕZhØ�T”_ñ[ô [ÐUõ ”8˜C‘=”=Ô'¨6¬=Ò8Ð8Ý˜‘I”I×$Ò$Ñ&Ô&Ð&Øð		5ð 		5ð 		5ñ 		5ô 		5ð 		5ð 		5ð 		5õ ˜s D¤OÑ4Ô4Ð4ð		5ð 		5ð 		5ñ 		5ô 		5ð 		5ð 		5ð 		5ð 		5ð 		5ð 		5øøøð 		5ð 		5ð 		5ð 		5ð 	×Ò˜3 Ñ,Ô,Ð,Øˆts7   ‚ • 9¸9Á&"BÂBÂBÂ5BE4ÅE4Å4E8Å;E8c           
     óâ   — t          t          ¦  «        5  t          |¦  «                             | j        › d|› dt          j        d¦  «        › �¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nrƒ   r„   r…   )r
   rI   r   rµ   r@   r   rŠ   )rX   r¸   r|   s      r^   r»   zSoftFileLock._return_claim#  sÆ   € å•gÑÔð 	_ð 	_Ý�‰IŒI×Ò ¤Ð]Ð]¸Ð]Ð]ÅgÔFWÐXZÑF[ÔF[Ð]Ð]Ñ^Ô^Ð^ð	_ð 	_ð 	_ñ 	_ô 	_ð 	_ð 	_ð 	_ð 	_ð 	_ð 	_ð 	_øøøð 	_ð 	_ð 	_ð 	_ð 	_ð 	_s   •AA$Á$A(Á+A(rr   ú
str | Nonec                ó¸   — |t           k    rdS |t          k    rdS t          |¦  «        x}d uo-|d         |k    p|d         t          ¦   «         k    o	t	          |Ž  S )NTr   r    )r   r+   rm   r   r   )Úclsrr   r|   rt   s       r^   r¼   zSoftFileLock._marker_is_live(  ss   € àÕ1Ò1Ð1Ø�4ØÕ(Ò(Ð(à�4õ *¨'Ñ2Ô2Ð2ˆV¸4Ð?ð ,Ø˜”˜kÒ)ÐE¨V°A¬Y½)¹+¼+Ò-Eð,å" FÐ+Ð+ð	
r�   rŽ   r†   c          	     ó   — |                       ¦   «          	 |rt          || j        ¦  «         	 t          j        |¦  «        }| j        |fD ]�}t          t          ¦  «        5  t          j                             t          j	        |¦  «        |¦  «        r!t          |¦  «                             ¦   «          d d d ¦  «         n# 1 swxY w Y   Œ‚	 t          j        |¦  «         d S # t          j        |¦  «         w xY w# 	 t          j        |¦  «        }| j        |fD ]�}t          t          ¦  «        5  t          j                             t          j	        |¦  «        |¦  «        r!t          |¦  «                             ¦   «          d d d ¦  «         n# 1 swxY w Y   Œ‚	 t          j        |¦  «         w # t          j        |¦  «         w xY wxY wr   )rU   r   r@   rA   rO   r
   ÚFileNotFoundErrorr—   Úsamestatr‡   r   rŒ   rV   )rX   r[   rŽ   r†   r¸   r¨   s         r^   r‹   zSoftFileLock._abandon_take_over6  s  € Ø×&Ò&Ñ(Ô(Ð(ð	Øð 7Ý˜u d¤oÑ6Ô6Ð6ðåœX b™\œ\�Ø!œ_¨eÐ4ð 0ð 0�DÝ!Õ"3Ñ4Ô4ð 0ð 0Ýœ7×+Ò+­B¬H°T©N¬N¸CÑ@Ô@ð 0Ý  ™JœJ×-Ò-Ñ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0øð0õ
 ”˜‘”���ø•”˜‘”��øøøøðåœX b™\œ\�Ø!œ_¨eÐ4ð 0ð 0�DÝ!Õ"3Ñ4Ô4ð 0ð 0Ýœ7×+Ò+­B¬H°T©N¬N¸CÑ@Ô@ð 0Ý  ™JœJ×-Ò-Ñ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0øð0õ
 ”˜‘”��ø•”˜‘”��øøøøøøsx   –C= ®3C$ Á!ACÂ5C$ ÃC	ÃC$ ÃC	Ã	C$ Ã$C:Ã=GÃ?3F4Ä2AF	ÆF4ÆFÆF4ÆFÆF4ÆGÆ4G
Ç
GÚfloatc                ó¦   — t          j        ¦   «         }|j        |j        |j        f}| j        x}�|d         |k    r||f| _        dS ||d         z
  S )Nr   g        r    )rw   Ú	monotonicrx   rl   Úst_ctime_nsr7   )rX   rs   ÚnowÚkeyÚseens        r^   rn   z"SoftFileLock._marker_unchanged_forF  s]   € õ
 ”^Ñ%Ô%ˆØ”_ f¤m°VÔ5GÐGˆØÔ%Ð%ˆDÐ.°$°q´'¸S².°.Ø # S ˆDÔØ�3Ø�T˜!”W‰}Ðr�   c                ón  — t          t          t          ¦  «        5  t          | j        ¦  «        d         x}t
          k    r	 d d d ¦  «         dS |                      |¦  «        x}r8|d         t          ¦   «         k    r d|d         › d|d         › �cd d d ¦  «         S d d d ¦  «         n# 1 swxY w Y   d S )Nr   z_an owner that recorded no PID (a filelock release before 3.22, or one still writing its record)r    zpid z on )r
   rI   rj   rk   r@   r+   ry   r   )rX   rr   rt   s      r^   Ú_unprobeable_holderz SoftFileLock._unprobeable_holderR  s+  € å•g�zÑ*Ô*ð 	9ð 	9Ý*¨4¬?Ñ;Ô;¸AÔ>Ð>�ÕCUÒUÐUØxð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð ×/Ò/°Ñ8Ô8Ð8�ð 9¸fÀQ¼iÍ9É;Ì;Ò>VÐ>VØ8˜f QœiÐ8Ð8¨V°A¬YÐ8Ð8ð		9ð 	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9ð
 ˆts   ›'B*ÁAB*Â*B.Â1B.útuple[int, str] | Nonec                ó<   — t          |¦  «        x}€d n	|d d…         S )Né   )rm   )rÁ   rr   rt   s      r^   ry   zSoftFileLock._recorded_holder[  s)   € å"4°WÑ"=Ô"=Ð=˜ÐFˆtˆtÈFÐSUÐTUÐSUÌJÐVr�   c                óè   — t          j        ¦   «         › dt          ¦   «         › d�}t          t          j        ¦   «         ¦  «        x}�||› d�z  }t	          | |                     ¦   «         ¦  «         d S )NÚ
)rA   r‰   r   r   r   Úencode)r[   ÚinfoÚtokens      r^   rR   zSoftFileLock._write_lock_info_  sk   € õ
 ”)‘+”+Ð0Ð0¥¡¤Ð0Ð0Ð0ˆÝ(­¬©¬Ñ5Ô5Ð5ˆEÐBØ�u�L�L�LÑ ˆDÝ�"�d—k’k‘m”mÑ$Ô$Ð$Ð$Ð$r�   c                óæ   — t          t          t          ¦  «        5  t          t	          | j        ¦  «        d         ¦  «        }|�|d         cddd¦  «         S 	 ddd¦  «         n# 1 swxY w Y   dS )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

        r   N)r
   rI   rj   rm   rk   r@   ©rX   rt   s     r^   ÚpidzSoftFileLock.pidi  sÄ   € õ •g�zÑ*Ô*ð 	!ð 	!Ý'­¸¼Ñ(HÔ(HÈÔ(KÑLÔLˆFØÐ!Ø˜a”yð	!ð 	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!à!ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð ˆts   ›1A&Á&A*Á-A*c                óè   — t          t          t          ¦  «        5  t          t	          | j        ¦  «        d         ¦  «        x}�t          |Ž cddd¦  «         S 	 ddd¦  «         n# 1 swxY w Y   dS )zÒ
        Whether this lock is held by the current process.

        :returns: ``True`` if the lock file exists and names the current process's PID, hostname and, when recorded,
            start token

        r   NF)r
   rI   rj   rm   rk   r@   r   r×   s     r^   Úis_lock_held_by_uszSoftFileLock.is_lock_held_by_usw  sÅ   € õ •g�zÑ*Ô*ð 	9ð 	9Ý,­_¸T¼_Ñ-MÔ-MÈaÔ-PÑQÔQÐQ�Ð^Ý/°Ð8ð	9ð 	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9Ø^ð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9ð ˆus   ›2A'Á'A+Á.A+c                ó¬   — t          t          ¦  «        5  t          | j        ¦  «                             ¦   «          ddd¦  «         dS # 1 swxY w Y   dS )zNForcibly break the lock by removing the lock file, regardless of who holds it.N)r
   rI   r   r@   rŒ   ©rX   s    r^   Ú
break_lockzSoftFileLock.break_lock…  s�   € å•gÑÔð 	+ð 	+Ý�”Ñ!Ô!×(Ò(Ñ*Ô*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð 	+ð 	+s   •'A	Á	AÁAÚforcec               ó¨   •— 	 t          ¦   «                              |¬¦  «         |                      ¦   «          d S # |                      ¦   «          w xY w)N)rÞ   )ÚsuperÚ_release_currentr?   )rX   rÞ   Ú	__class__s     €r^   rá   zSoftFileLock._release_currentŠ  sU   ø€ ð	*Ý‰GŒG×$Ò$¨5Ð$Ñ1Ô1Ð1ð ×'Ò'Ñ)Ô)Ð)Ð)Ð)øˆD×'Ò'Ñ)Ô)Ð)Ð)øøøs	   ƒ"; »Ac                ó  — | j         j        }|€J ‚d }t          t          ¦  «        5  t	          t          j        |¦  «        ¦  «        }d d d ¦  «         n# 1 swxY w Y   t          j        dk    r|  	                    ||¦  «         d S |  
                    ||¦  «        }|                      ¦   «          	 |                      |d¬¦  «         |s|                      |¦  «         d S d S # |s|                      |¦  «         w w xY w)Nr   F©Údefault_suppresses)rf   Úlock_file_fdr
   rI   rN   rA   rO   rK   rL   Ú_release_then_unlinkÚ_unlink_open_markerrU   Ú_close_released_fdrW   )rX   r[   r]   Úunlinkeds       r^   Ú_releasezSoftFileLock._release‘  s[  € ØŒ]Ô'ˆØˆ~ˆ~ˆ~ð ,0ˆÝ•gÑÔð 	4ð 	4Ý%¥b¤h¨r¡l¤lÑ3Ô3ˆHð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4åŒ<˜7Ò"Ð"Ø×%Ò% b¨(Ñ3Ô3Ð3Ð3Ð3ð #×6Ò6°r¸8ÑDÔDˆHð ×*Ò*Ñ,Ô,Ð,ð7Ø×'Ò'¨¸uÐ'ÑEÔEÐEð  ð 7Ø×,Ò,¨XÑ6Ô6Ð6Ð6Ð6ð7ð 7ø�xð 7Ø×,Ò,¨XÑ6Ô6Ð6Ð6ð7øøøs   §"AÁAÁAÂ3C% Ã%C?r]   c                ó‚  — | j         5  |g| _        || _        |                      ¦   «          	 |                      ¦   «          nQ# t
          $ rD}	 |                      ¦   «          n(# t
          $ r}t          d||¦  «         Y d }~nd }~ww xY w‚ d }~ww xY w|                      ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S )Nz4lock descriptor close and marker cleanup both failed)Ú_transition_lockr:   r9   rU   Ú_close_marker_fdrT   r?   r   )rX   r[   r]   Úclose_errorÚcleanup_errors        r^   rç   z!SoftFileLock._release_then_unlink«  sT  € ð Ô"ð 	*ð 	*Ø "˜tˆDÔØ#+ˆDÔ Ø×*Ò*Ñ,Ô,Ð,ðØ×%Ò%Ñ'Ô'Ð'Ð'øå ð 	ð 	ð 	ðØ×/Ò/Ñ1Ô1Ð1Ð1øÝ$ð ð ð Ý)ØNØ#Ø%ñô ð ð ð ð ð ð øøøøðøøøð øøøøð	øøøð ×'Ò'Ñ)Ô)Ð)ð#	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð 	*ð 	*sX   ˆ$B4­AÁB4Á
BÁA"Á!BÁ"
BÁ,BÁ=BÂBÂBÂBÂB4Â4B8Â;B8útuple[str, ...]c                óh   — t          t                               | j        | j        f¦  «        ¦  «        S r   )ÚtupleÚdictÚfromkeysr@   Ú	lock_filerÜ   s    r^   Ú_marker_nameszSoftFileLock._marker_namesÁ  s'   € õ •T—]’] D¤O°T´^Ð#DÑEÔEÑFÔFÐFr�   c                óZ  — |€dS d}|                       ¦   «         D ]k}	 t          t          j        |¦  «        ¦  «        |k    r$t	          |¦  «                             ¦   «           dS d}ŒO# t          $ r Y Œ[t          $ r Y  dS w xY w|r"	 t          |¦  «         n# t          $ r Y dS w xY wdS rº   )	r÷   rN   rA   r‡   r   rŒ   rÃ   rI   Ú_leave_released_record)rX   r[   r]   Úreplacedr¨   s        r^   rè   z SoftFileLock._unlink_open_markerÆ  só   € ØÐØ�4ØˆØ×&Ò&Ñ(Ô(ð 		ð 		ˆDðÝ!¥"¤(¨4¡.¤.Ñ1Ô1°XÒ=Ð=Ý˜‘J”J×%Ò%Ñ'Ô'Ð'Ø˜4˜4Ø��øÝ$ð ð ð Ø�Ýð ð ð Ø�u�u�uðøøøàð 	ðÝ& rÑ*Ô*Ð*Ð*øÝð ð ð Ø�u�uðøøøàˆts0   žAA*Á'A*Á*
BÁ6	BÂBÂ
B Â
B(Â'B(c                ó~  — | j         �³| j                             d¬¦  «        rš	 t          t          ¦  «        5  |                      ¦   «          d d d ¦  «         n# 1 swxY w Y   | j         x}�|                      |¦  «         | j                             ¦   «          d S # | j                             ¦   «          w xY wd S d S )NF)Úblocking)r9   rí   Úacquirer
   rI   rî   Ú_windows_unlink_if_oursÚrelease)rX   r]   s     r^   r?   z#SoftFileLock._finish_marker_cleanupÛ  s  € àÔÐ+°Ô0E×0MÒ0MÐW\Ð0MÑ0]Ô0]Ð+ð0å�gÑ&Ô&ð ,ð ,Ø×)Ò)Ñ+Ô+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,à $Ô 4Ð4�HÐAØ×0Ò0°Ñ:Ô:Ð:àÔ%×-Ò-Ñ/Ô/Ð/Ð/Ð/ø�Ô%×-Ò-Ñ/Ô/Ð/Ð/øøøð ,Ð+Ð+Ð+s.   ¤B ¸AÁB ÁAÁB Á AÁ!!B ÂB8c                óB  — 	 t          t          t          j        t	          t          t          | ¦  «                             dg ¦  «        j        d ¦  «        d¦  «        ¦  «        ¦  «         d S # t          $ r Y d S t          $ r |                      d¬¦  «        s‚ Y d S w xY w)Nr:   r    Frä   )ÚlistÚmaprA   rV   r   ÚiterÚvarsÚ
setdefaultÚpopÚ
IndexErrorrI   Ú_suppresses_close_errorrÜ   s    r^   rî   zSoftFileLock._close_marker_fdç  s¶   € ð	Ý••R”X�v¥d­4°©:¬:×+@Ò+@ÀÐPRÑ+SÔ+SÔ+WÐY]Ñ&^Ô&^Ð`aÑbÔbÑcÔcÑdÔdÐdÐdÐdøÝð 	ð 	ð 	ØˆFˆFÝð 	ð 	ð 	Ø×/Ò/À5Ð/ÑIÔIð Øðð ð ð	øøøs   ‚A)A- Á-
BÁ: BÂBc                óŽ  — t           j        dk    r|�|                      |¦  «         d S d S |                      ¦   «         D ]„}t	          t
          ¦  «        5  t          t          j        |¦  «        ¦  «        |k    r0t          |¦  «         
                    ¦   «          	 d d d ¦  «          d S 	 d d d ¦  «         n# 1 swxY w Y   Œ…d S rb   )rK   rL   rþ   r÷   r
   rI   rN   rA   r‡   r   rŒ   )rX   r]   r¨   s      r^   rW   z SoftFileLock._unlink_held_markerò  s(  € ÝŒ<˜7Ò"Ð"ØÐ#Ø×,Ò,¨XÑ6Ô6Ð6Ð6Ð6ð $Ð#ð ×*Ò*Ñ,Ô,ð ð �Ý�gÑ&Ô&ð ð Ý%¥b¤h¨t¡n¤nÑ5Ô5¸ÒAÐAÝ˜T™
œ
×)Ò)Ñ+Ô+Ð+Øðð ð ñ ô ð ð ð ð ØAðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øðð s   ÁAB9Â9B=	Ã B=	útuple[int, int]c                ó&  — d}t          t          ¦  «        D ]ù}	 |                      ¦   «         D ]x}t          t          ¦  «        5  t          t          j        |¦  «        ¦  «        |k    r$d | _        t          |¦  «         	 d d d ¦  «          n	 d d d ¦  «         n# 1 swxY w Y   Œyn_# t          $ rR}|j        t          t          hv r3|| _        |t          dz
  k     rt          j        |¦  «         |dz  }Y d }~ŒãY d }~nd }~ww xY wd | _         d S d S )Ngü©ñÒMbP?r    rÐ   )Úranger&   r÷   r
   rÃ   rN   rA   r‡   r9   r"   rI   rJ   r   r   rw   Úsleep)rX   r]   Úretry_delayÚattemptr¨   Úexcs         r^   rþ   z$SoftFileLock._windows_unlink_if_oursý  s¢  € ØˆÝÕ0Ñ1Ô1ð 	ð 	ˆGðØ ×.Ò.Ñ0Ô0ð "ð "�DÝ!Õ"3Ñ4Ô4ð "ð "Ý)­"¬(°4©.¬.Ñ9Ô9¸XÒEÐEð 48˜DÔ0Ý'¨Ñ-Ô-Ð-Ø!ð"ð "ð "ñ "ô "ð "ð "ð "ØEð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "øøøõ ð ð ð Ø”9¥­ Ð/Ð/à+3�DÔ(ØÕ!4°qÑ!8Ò8Ð8Ýœ
 ;Ñ/Ô/Ð/Ø# qÑ(˜Ø�H�H�H�Hð 0Ð/Ð/Ð/Ð/øøøøðøøøð $(ˆDÔ ØˆFˆFð+	ð 	sB   š*B(Á=BÂB(ÂB(ÂBÂB(Â"BÂ#B(Â(
DÂ2AC?Ã?D)r;   r<   ©r[   r`   r;   r<   )rs   r{   r|   r}   r;   r<   )r|   r`   rs   r{   r;   r0   )r|   r`   r;   r�   )
r—   r§   r|   r`   rs   r{   r”   r0   r;   r0   )r¸   r§   r|   r`   rs   r{   r;   r0   )r¸   r§   r|   r`   r;   r<   )rr   r¿   r|   r`   r;   r0   )r[   r`   rŽ   r§   r†   r0   r;   r<   )rs   r{   r;   rÅ   )r;   r¿   )rr   r¿   r;   rÎ   )r;   r}   )r;   r0   )rÞ   r0   r;   r<   )r[   r`   r]   r8   r;   r<   )r;   rñ   )r[   r`   r]   r8   r;   r0   )r]   r8   r;   r<   )r]   r
  r;   r<   ),Ú__name__Ú
__module__Ú__qualname__Ú__doc__r1   Ú__annotations__r4   r5   r6   r7   r9   r_   rQ   rM   rz   ro   r€   rˆ   rš   r•   r·   r»   Úclassmethodr¼   r‹   rn   rÍ   ry   ÚstaticmethodrR   ÚpropertyrØ   rÚ   rÝ   rá   rë   rç   r÷   rè   r?   rî   rW   rþ   Ú__classcell__)râ   s   @r^   r/   r/   ;   s]  ø€ € € € € € ðð ð  !%ÐÐ$Ð$Ð$Ñ$ð 6]ÐÐ\Ð\Ð\Ñ\ð +0Ð!Ð/Ð/Ð/Ñ/ð $)ÐÐ(Ð(Ð(Ñ(ð AE€LÐDÐDÐDÑDð /3€OÐ2Ð2Ð2Ñ2ð ÐÐÑð*ð *ð *ð *ðXCð Cð Cð Cð3ð 3ð 3ð 3ð.	Kð 	Kð 	Kð 	Kð	Mð 	Mð 	Mð 	MðGð Gð Gð Gð6	xð 	xð 	xð 	xð"ð "ð "ð "ð&ð ð ð ð$ð ð ð ð0_ð _ð _ð _ð
 ð
ð 
ð 
ñ „[ð
ðð ð ð ð 
ð 
ð 
ð 
ðð ð ð ð ðWð Wð Wñ „[ðWð ð%ð %ð %ñ „\ð%ð ðð ð ñ „Xðð ðð ð ñ „Xðð+ð +ð +ð +ð
*ð *ð *ð *ð *ð *ð7ð 7ð 7ð 7ð4*ð *ð *ð *ð,Gð Gð Gð Gð
ð ð ð ð*
0ð 
0ð 
0ð 
0ð	ð 	ð 	ð 	ð	ð 	ð 	ð 	ðð ð ð ð ð ð ð r�   r/   Ústr{   r;   r
  c                ó   — | j         | j        fS r   )Úst_devrl   )r  s    r^   rN   rN     s   € ð Œ9�b”iÐÐr�   r¨   ú
str | Pathr0   c                óÒ   — t           5  t          | ¦  «        j        x}t          v r	 d d d ¦  «         dS t                               |¦  «         	 d d d ¦  «         dS # 1 swxY w Y   d S )NFT)r-   r   r¨   r,   Úadd)r¨   rÊ   s     r^   r´   r´     sÉ   € å	ð ð Ý˜‘:”:”?Ð"ˆCÕ':Ð:Ð:Øðð ð ñ ô ð ð ð õ 	×Ò Ñ$Ô$Ð$Øð	ð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ˆA´AÁA Á#A r<   c                óž   — t           5  t                               t          | ¦  «        j        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r   )r-   r,   Údiscardr   r¨   )r¨   s    r^   r¶   r¶   &  sˆ   € Ý	ð 5ð 5Ý×#Ò#¥D¨¡J¤J¤OÑ4Ô4Ð4ð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5ð 5ð 5s   ˆ-AÁAÁ	Arr   r¿   r}   c                ó  — | �,|                       dx}¦  «        r|                      d¦  «        sd S t          t          ¦  «        5  t	          |                      |¦  «        d d…         ¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )Nzfilelock/break
rÒ   éÿÿÿÿ)Ú
startswithÚendswithr
   rj   Úparse_decimalÚremoveprefix)rr   Úplaceholders     r^   rp   rp   +  sÙ   € à€˜g×0Ò0Ð@RÐ1R°ÑSÔS€Ð[b×[kÒ[kÐlpÑ[qÔ[q€ØˆtÝ	•*Ñ	Ô	ð Eð EÝ˜W×1Ò1°+Ñ>Ô>¸sÀ¸sÔCÑDÔDðEð Eð Eð Eñ Eô Eð Eð Eð Eð Eð Eð Eøøøð Eð Eð Eð Eàˆ4s   Á*A<Á<B ÂB r[   r`   c                óž   — t           j        dk    r<t          j        | dx}d¦  «         t          j        | t          |¦  «        ¦  «         d S d S )Nr   s   filelock/released
r   )rK   rL   rA   ÚpwriteÚ	ftruncateÚlen)r[   Úreleaseds     r^   rù   rù   4  sQ   € õ „|�wÒÐÝ
Œ	�"Ð"8Ð8�h¸!Ñ<Ô<Ð<Ý
Œ�R�˜X™œÑ'Ô'Ð'Ð'Ð'ð Ðr�   r—   r§   ú!tuple[str | None, os.stat_result]c           	     ó  — t          j        | ¦  «        }t          j        |j        ¦  «        sd |fS t
          j        dk    rt          | ¦  «        }nMt          j        | t           j	        t          t           dd¦  «        z  t          t           dd¦  «        z  ¦  «        }	 t          j        |¦  «        }t          j        |j        ¦  «        sd |ft          j        |¦  «         S t          j        |t          dz   ¦  «        }t          j        |¦  «         n# t          j        |¦  «         w xY wt          |¦  «        t          k    rCt!          t"          ¦  «        5  |                     d¦  «        |fcd d d ¦  «         S # 1 swxY w Y   d |fS )Nr   r>   r   Ú
O_NONBLOCKr    zutf-8)rA   r‡   ÚstatÚS_ISREGÚst_moderK   rL   r    rG   ÚO_RDONLYrF   rO   rV   Úreadr$   r-  r
   ÚUnicodeDecodeErrorÚdecode)r—   r  r[   Údatas       r^   rk   rk   =  s”  € õ
 
Œ�$‰Œ€BÝŒ<˜œ
Ñ#Ô#ð Ø�Rˆxˆõ „|�wÒÐå*¨4Ñ0Ô0ˆˆåŒW�T�2œ;­µ°\À1Ñ)EÔ)EÑEÍÕPRÐT`ÐbcÑHdÔHdÑdÑeÔeˆðÝŒX�b‰\Œ\ˆÝŒ|˜BœJÑ'Ô'ð 	Ø˜�8õ 	Œ�‰Œˆˆõ Œw�rÕ.°Ñ2Ñ3Ô3ˆå
Œ�‰Œˆˆø�Œ�‰ŒˆˆøøøÝ
ˆ4�y„yÕ'Ò'Ð'ÝÕ(Ñ)Ô)ð 	,ð 	,Ø—;’;˜wÑ'Ô'¨Ð+ð	,ð 	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,à�ˆ8€Os$   Â 0D Ã%D ÄD-ÅF Æ FÆFú"tuple[int, str, int | None] | Nonec                óˆ  — | rL|                       d¦  «        r7t          |                      ¦   «                              ¦   «         x}¦  «        dvrd S 	 t	          |d         ¦  «        }t          |¦  «        t
          k    rt	          |d         ¦  «        nd }n# t          $ r Y d S w xY wd|cxk    rdk    sn d S ||d         |fS )NrÒ   >   rÐ   r'   r   rÐ   r    iÿÿÿ)r&  r-  ÚstripÚ
splitlinesr'  r(   rj   )rr   ÚlinesrØ   Ústart_tokens       r^   rm   rm   Z  së   € ð ð ˜'×*Ò*¨4Ñ0Ô0ð µCÀÇÂÁÄ×A[ÒA[ÑA]ÔA]Ð8]¸Ñ4^Ô4^ÐflÐ4lÐ4lØˆtðÝ˜E !œHÑ%Ô%ˆÝ14°U±´Õ?bÒ1bÐ1b•m E¨!¤HÑ-Ô-Ð-ÐhlˆˆøÝð ð ð Øˆtˆtðøøøð �Ð Ð Ò Ð �yÒ Ð Ð Ð ØˆtØ��a”˜+Ð%Ð%s   ÁAB Â
B%Â$B%Útextc                ó˜   — |                       ¦   «         r|                      ¦   «         sd| ›�}t          |¦  «        ‚t          | ¦  «        S )zú
    Read a PID or start token as a writer formats it: ASCII digits only.

    :raises ValueError: for anything else ``int()`` would accept, such as ``1_000``, surrounding whitespace, a sign or
        non-ASCII digits; no filelock writes those

    znot a decimal integer: )ÚisasciiÚisdigitrj   r`   )r@  Úmsgs     r^   r'  r'  q  sH   € ð �LŠL‰NŒNð ˜tŸ|š|™~œ~ð Ø0¨Ð0Ð0ˆÝ˜‰oŒoÐÝˆt‰9Œ9Ðr�   )r#   r/   r'  )r  r{   r;   r
  )r¨   r  r;   r0   )r¨   r  r;   r<   )rr   r¿   r;   r}   r  )r—   r§   r;   r/  )rr   r¿   r;   r:  )r@  r§   r;   r`   )DÚ
__future__r   Ú__lazy_modules__rA   r   r   r2  rK   Ú	threadingrw   r   r
   rJ   r   r   r   r   r   r   r   r	   r   Úfilelock._apir   r   Úfilelock._identityr   r   r   r   Úfilelock._soft_protocolr   Úfilelock._utilr   r   r   r   r   r   r   rL   Úfilelock._windowsr    r!   r"   r#   r  r$   r&   r(   ÚS_IWGRPÚS_IWOTHr)   r+   Úsetr,   ÚLockr-   r/   rN   r´   r¶   rp   rù   rk   rm   r'  Ú__all__© r�   r^   ú<module>rS     sU  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "ð
ð 
ð 
Ð ð 
€	€	€	Ø 	€	€	€	Ø €€€Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gØ ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð „<�7ÒÐØ?Ð?Ð?Ð?Ð?Ð?ØKÐKÐKÐKÐKÐKÐKà*Ð*Ð*Ð*Ð*Ð*à-0Ð Ð 0Ð 0Ð 0Ñ 0Ø"&Ð Ð &Ð &Ð &Ñ &Ø"$Ð Ð $Ð $Ð $Ñ $Ø23Ð #Ð 3Ð 3Ð 3Ñ 3à œL¨4¬<Ñ7€Ð 7Ð 7Ð 7Ñ 7à!#Ð Ð #Ð #Ð #Ñ #Ø'* s¡u¤uÐ Ð ,Ð ,Ð ,Ñ ,Ø&4 i¤nÑ&6Ô&6€Ð 6Ð 6Ð 6Ñ 6ðYð Yð Yð Yð Y�<ñ Yô Yð Yðx ð  ð  ð  ðð ð ð ð5ð 5ð 5ð 5ð
ð ð ð ð(ð (ð (ð (ðð ð ð ð:&ð &ð &ð &ð.ð ð ð ðð ð €€€r�   