§
    ¿"½jU  ã                  óü   — U d dl m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mZmZ ddlmZmZ ddlmZmZ d	Zd
ed<   dZded<   ed         Z G d„ de¦  «        Z G d„ de	¦  «        Zd d„Zd!d„Zd"d„Zg d¢ZdS )#é    )ÚannotationsN)Úsuppress)ÚFinalÚLiteralÚ
NamedTupleé   )Ú	host_nameÚowner_is_staleÚprocess_start_token)ÚSoftFileLockÚ_read_lock_file)Úbreak_lock_fileÚ	write_allz
filelock/2z
Final[str]Ú	_PROTOCOLiÿÿÿz
Final[int]Ú_MAX_PID)ÚleaseÚ	exclusiveÚunknownc                  óœ   ‡ — e Zd ZU dZdZded<   edd„¦   «         Zedd	„¦   «         Zedd„¦   «         Z	dd„Z
dˆ fd„Zdd„Zdd„Zdd„Zˆ xZS )ÚMarkerSoftFileLockzAAn existence lock whose marker carries a protocol 2 owner record.r   Ú	OwnerModeÚ_owner_modeÚreturnúOwnerRecord | Nonec                ó*   — |                       ¦   «         S )z­
        The owner named by the marker on disk.

        :returns: the published record, or ``None`` when no marker exists or its record is malformed or protocol 1

        )Ú_read_owner©Úselfs    úP/home/spazio/kingdom_calls/venv/lib/python3.11/site-packages/filelock/_marker.pyÚownerzMarkerSoftFileLock.owner   s   € ð ×ÒÑ!Ô!Ð!ó    ú
int | Nonec                ó@   — |                       ¦   «         x}€dn|j        S )z¬
        The PID of the process holding this lock, read from the marker.

        :returns: the PID, or ``None`` when no marker exists or its record is unreadable

        N)r   Úpid©r   r    s     r   r$   zMarkerSoftFileLock.pid'   s&   € ð "&×!1Ò!1Ñ!3Ô!3Ð3˜Ð<ˆtˆtÀ%Ä)ÐKr!   Úboolc                ó˜   — |                       ¦   «         }|duo2|j        t          j        ¦   «         k    o|j        t          ¦   «         k    S )z“
        Whether the marker on disk names this process.

        :returns: ``True`` when the marker's PID and hostname match this process

        N)r   r$   ÚosÚgetpidÚhostnamer	   r%   s     r   Úis_lock_held_by_usz%MarkerSoftFileLock.is_lock_held_by_us1   sE   € ð × Ò Ñ"Ô"ˆØ˜DÐ Ð_ U¤Yµ"´)±+´+Ò%=Ð_À%Ä.ÕT]ÑT_ÔT_ÒB_Ð_r!   ÚNonec                ó.   — |                       ¦   «          dS )a-  
        Remove the marker whoever holds it, so a later contender can acquire.

        Forced breaking voids mutual exclusion: the previous holder keeps running and keeps using whatever the lock
        protects. Reserve it for an operator clearing a marker whose holder is known to be gone.
        N)Ú
break_lockr   s    r   Úforce_breakzMarkerSoftFileLock.force_break<   s   € ð 	�ŠÑÔÐÐÐr!   c                ó�  •— t          t          t          ¦  «        5  t          | j        ¦  «        }t          |d         ¦  «        x}€!t          ¦   «                              ¦   «          nE|j        dk    r:t          |j
        |j        |j        ¦  «        rt          | j        g|dd …         ¢R Ž  d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r   r   )r   ÚOSErrorÚ
ValueErrorr   Ú	lock_fileÚparse_markerÚsuperÚ_try_break_stale_lockÚmoder
   r$   r*   Ústartr   )r   Úsnapshotr    Ú	__class__s      €r   r6   z(MarkerSoftFileLock._try_break_stale_lockE   sü   ø€ Ý•g�zÑ*Ô*ð 	?ð 	?Ý=LÈTÌ^Ñ=\Ô=\ˆHå% h¨q¤kÑ2Ô2Ð2�Ð;Ý‘”×-Ò-Ñ/Ô/Ð/Ð/Ø”˜yÒ(Ð(­^¸E¼IÀuÄ~ÐW\ÔWbÑ-cÔ-cÐ(Ý ¤Ð>°¸!¸"¸"´Ð>Ð>Ð>Ð>ð	?ð 	?ð 	?ñ 	?ô 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?øøøð 	?ð 	?ð 	?ð 	?ð 	?ð 	?s   œBB;Â;B?ÃB?c                ó¸   — t          t          t          ¦  «        5  t          t	          | j        ¦  «        d         ¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )Nr   )r   r1   r2   r4   r   r3   r   s    r   r   zMarkerSoftFileLock._read_ownerN   s�   € Ý•g�zÑ*Ô*ð 	Dð 	DÝ¥°´Ñ ?Ô ?ÀÔ BÑCÔCð	Dð 	Dð 	Dð 	Dñ 	Dô 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Døøøð 	Dð 	Dð 	Dð 	Dàˆts   ›'AÁAÁAÚfdÚintc                ód   — t          |t          |                      ¦   «         ¦  «        ¦  «         d S )N)r   Úencode_markerÚ_published_record)r   r<   s     r   Ú_write_lock_infoz#MarkerSoftFileLock._write_lock_infoS   s,   € Ý�"•m D×$:Ò$:Ñ$<Ô$<Ñ=Ô=Ñ>Ô>Ð>Ð>Ð>r!   ÚOwnerRecordc           	     ó¨   — t          t          j        ¦   «         t          ¦   «         | j        t          t          j        ¦   «         ¦  «        ¬¦  «        S )N)r$   r*   r7   r8   )rB   r(   r)   r	   r   r   r   s    r   r@   z$MarkerSoftFileLock._published_recordV   s@   € ÝÝ”	‘”Ý‘[”[ØÔ!Ý%¥b¤i¡k¤kÑ2Ô2ð	
ñ 
ô 
ð 	
r!   )r   r   )r   r"   )r   r&   )r   r,   )r<   r=   r   r,   )r   rB   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__Úpropertyr    r$   r+   r/   r6   r   rA   r@   Ú__classcell__)r:   s   @r   r   r      s  ø€ € € € € € ØKÐKð )€KÐ(Ð(Ð(Ñ(àð"ð "ð "ñ „Xð"ð ðLð Lð Lñ „XðLð ð`ð `ð `ñ „Xð`ðð ð ð ð?ð ?ð ?ð ?ð ?ð ?ðð ð ð ð
?ð ?ð ?ð ?ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r!   r   c                  ó\   — e Zd ZU dZded<   ded<   ded<   dZd	ed
<   dZded<   dZded<   dS )rB   z7Keep optional metadata when reading unknown lock modes.r=   r$   Ústrr*   r   r7   Nú
str | NoneÚtokenzfloat | NoneÚlease_durationr"   r8   )rD   rE   rF   rG   rH   rN   rO   r8   © r!   r   rB   rB   _   sf   € € € € € € ØAÐAà€H€H�HØ€M€M�MØ€O€O�OØ€EÐÐÐÑØ#'€NÐ'Ð'Ð'Ñ'Ø€EÐÐÐÑÐÐr!   rB   Úrecordr   Úbytesc                ó‚  — t           d| j        › �d| j        › �d| j        › �g}| j        �|                     d| j        › �¦  «         | j        �|                     d| j        ›�¦  «         | j        �|                     d| j        › �¦  «         d                     d	„ |D ¦   «         ¦  «         	                    ¦   «         S )
z>Render an owner record as the bytes a protocol 2 marker holds.zpid=zhost=zmode=Nztoken=z	duration=zstart=Ú c              3  ó    K  — | ]	}|› d �V — Œ
dS )Ú
NrP   )Ú.0Úlines     r   ú	<genexpr>z encode_marker.<locals>.<genexpr>s   s(   è è € Ð1Ð1 4�d�;�;�;Ð1Ð1Ð1Ð1Ð1Ð1r!   )
r   r$   r*   r7   rN   ÚappendrO   r8   ÚjoinÚencode)rQ   Úliness     r   r?   r?   j   sÑ   € åÐ+˜vœzÐ+Ð+Ð-F°V´_Ð-FÐ-FÐH]ÐPVÔP[ÐH]ÐH]Ð^€EØ„|ÐØ�ŠÐ,˜fœlÐ,Ð,Ñ-Ô-Ð-ØÔÐ(Ø�ŠÐ: Ô!6Ð:Ð:Ñ;Ô;Ð;Ø„|ÐØ�ŠÐ,˜fœlÐ,Ð,Ñ-Ô-Ð-Ø�7Š7Ð1Ð1¨5Ð1Ñ1Ô1Ñ1Ô1×8Ò8Ñ:Ô:Ð:r!   ÚcontentrM   r   c                óþ   — | r9|                       ¦   «                              ¦   «         x}r|d         t          k    rdS i }|dd…         D ]%}|                     d¦  «        \  }}}|s dS |||<   Œ&t	          |¦  «        S )zcReturn the owner a protocol 2 marker names, or ``None`` when the record is malformed or protocol 1.r   Nr   Ú=)ÚstripÚ
splitlinesr   Ú	partitionÚ_build_record)r^   r]   ÚfieldsrX   ÚkeyÚ	separatorÚvalues          r   r4   r4   v   sš   € àð  G§M¢M¡O¤O×$>Ò$>Ñ$@Ô$@Ð@˜5ð ÀUÈ1ÄXÕQZÒEZÐEZØˆtØ€FØ�a�b�b”	ð ð ˆØ $§¢¨sÑ 3Ô 3ÑˆˆY˜Øð 	Ø�4�4Øˆˆs‰ˆÝ˜Ñ Ô Ð r!   re   údict[str, str]c                ó  — |                       d¦  «        x}€d S |dv r|nd}|                       d¦  «        }|rd| vrd S 	 t          | d         ¦  «        }d| v rt          | d         ¦  «        nd }d| v rt          | d         ¦  «        nd }n# t          $ r Y d S w xY wd|cxk    rt          k    sn d S |                       d	¦  «        }|d
k    r |�|�t          j        |¦  «        r|dk    sd S t          ||||||¬¦  «        S )Nr7   >   r   r   r   Úhostr$   Údurationr8   r   rN   r   r   )r$   r*   r7   rN   rO   r8   )Úgetr=   Úfloatr2   r   ÚmathÚisfiniterB   )re   Ú	publishedr7   r*   r$   rl   r8   rN   s           r   rd   rd   ƒ   s_  € ð
 —Z’Z Ñ'Ô'Ð'ˆ	Ð0ØˆtØ*3Ð7MÐ*MÐ*M˜Y˜YÐS\€DØ�zŠz˜&Ñ!Ô!€HØð �u FÐ*Ð*ØˆtðÝ�&˜”-Ñ Ô ˆØ0:¸fÐ0DÐ0D•5˜ 
Ô+Ñ,Ô,Ð,È$ˆØ(/°6Ð(9Ð(9•�F˜7”OÑ$Ô$Ð$¸tˆˆøÝð ð ð Øˆtˆtðøøøà�ÐÐÒÐ•xÒÐÐÐØˆtØ�JŠJ�wÑÔ€Eð ˆw‚€˜E˜M¨XÐ-=ÅdÄmÐT\ÑF]ÔF]Ð-=ÐbjÐmnÒbnÐbnØˆtÝ˜3¨¸ÀEÐZbÐjoÐpÑpÔpÐps   Á AB Â
BÂB)r   r   rB   r?   r4   )rQ   rB   r   rR   )r^   rM   r   r   )re   ri   r   r   )Ú
__future__r   ro   r(   Ú
contextlibr   Útypingr   r   r   Ú	_identityr	   r
   r   Ú_softr   r   Ú_utilr   r   r   rH   r   r   r   rB   r?   r4   rd   Ú__all__rP   r!   r   ú<module>ry      s�  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -à EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -ð
 %€	Ð $Ð $Ð $Ñ $à €Ð  Ð  Ð  Ñ  ð Ð3Ô4€	ðE
ð E
ð E
ð E
ð E
˜ñ E
ô E
ð E
ðPð ð ð ð �*ñ ô ð ð	;ð 	;ð 	;ð 	;ð
!ð 
!ð 
!ð 
!ðqð qð qð qð8ð ð €€€r!   