Ë
    °ë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mZ d dlm	Z	m
Z
mZ d dlmZmZmZmZ d dlmZmZmZ d dlmZmZ d	Zd
ed<   dZded<    ej6                  dej8                  «      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$y)é    )Úannotations)Ú
contextlibzfilelock._identityzfilelock._utilÚmathN)Úsuppress)ÚFinalÚLiteralÚ
NamedTuple)Ú	host_nameÚowner_is_current_processÚowner_is_staleÚprocess_start_token)ÚSoftFileLockÚ_read_lock_fileÚparse_decimal)Ú	pin_inodeÚ	write_allz
filelock/2z
Final[str]Ú	_PROTOCOLiÿÿÿz
Final[int]Ú_MAX_PIDz#[0-9]+(?:\.[0-9]+)?(?:e[+-][0-9]+)?zFinal[re.Pattern[str]]Ú	_DURATION)Ú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edˆ fd
„«       Ze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_modec                ó"   — | j                  «       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    ú]/home/oem/CyberBrain26-unified/dev-env/.venv/lib/python3.12/site-packages/filelock/_marker.pyÚownerzMarkerSoftFileLock.owner$   s   € ð ×ÑÓ!Ð!ó    c                óB   — | j                  «       x}€dS |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˜Ð<ˆtÐKÀ%Ç)Á)ÐKr#   c                ó„   — | j                  «       }|duxr+ t        |j                  |j                  |j                  «      S )z°
        Whether the marker on disk names this process.

        :returns: ``True`` when the marker names this process's PID, hostname and, when recorded, start token

        N)r   r   r%   ÚhostnameÚstartr&   s     r!   Úis_lock_held_by_usz%MarkerSoftFileLock.is_lock_held_by_us8   s;   € ð × Ñ Ó"ˆØ˜DÐ ÒeÔ%=¸e¿i¹iÈÏÉÐY^×YdÑYdÓ%eÐer#   c                ó$   — | j                  «        y)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_breakC   s   € ð 	�‰Õr#   c                ó  •— t        t        t        «      5  t        | j                  «      5 }t        | j                  «      \  }}|d |j                  hvr	 d d d «       d d d «       y t        |«      x}€t        ‰| �%  «        nV|j                  dk7  rGt        |j                  |j                  |j                  «      r| j                  ||j                  «       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w©Nr   )r   ÚOSErrorÚ
ValueErrorr   Ú
_lock_pathr   Úst_inoÚparse_markerÚsuperÚ_try_break_stale_lockÚmoder   r%   r(   r)   Ú
_take_over)r    ÚpinnedÚcontentÚmarkerr"   Ú	__class__s        €r!   r6   z(MarkerSoftFileLock._try_break_stale_lockL   sÎ   ø€ Ü”gœzÓ*ñ 	3¬I°d·o±oÓ,Fð 	3È&Ü-¨d¯o©oÓ>‰OˆG�Và˜d F§M¡MÐ2Ñ2Ø÷		3÷ 	3ð 	3ô
 & gÓ.Ð.�Ð7Ü‘Ñ-Õ/Ø—‘˜yÒ(¬^¸E¿I¹IÀuÇ~Á~ÐW\×WbÑWbÔ-cØ—‘ ¨¯	©	Ô2÷	3÷ 	3÷ 	3ñ 	3ú÷ 	3ð 	3ús/   –C6¬*C*ÁC6Á'A2C*ÃC6Ã*C3	Ã/C6Ã6C?c                ól   •— t        |«      x}�|j                  |j                  fS t        ‰| �  |«      S ©N)r4   r%   r(   r5   Ú_recorded_holder)Úclsr:   r"   r<   s      €r!   r?   z#MarkerSoftFileLock._recorded_holderW   s6   ø€ ä! 'Ó*Ð*ˆEÐ7Ø—9‘9˜eŸn™nÐ,Ð,Ü‰wÑ'¨Ó0Ð0r#   c                ó  •— t        |«      x}€t        ‰| �	  ||«      S |j                  dk(  xsV |j                  |k7  xs |j
                  t        «       k7  xr, t        |j                  |j
                  |j                  «       S r/   )	r4   r5   Ú_marker_is_liver7   r%   r(   r
   r   r)   )r@   r:   Úbreaker_pidr"   r<   s       €r!   rB   z"MarkerSoftFileLock._marker_is_live]   sx   ø€ ä! 'Ó*Ð*ˆEÐ3Ü‘7Ñ*¨7°KÓ@Ð@Ø�z‰z˜YÑ&ò 
Ø�Y‰Y˜+Ñ%ÒF¨¯©¼9»;Ñ)Fò KÜ" 5§9¡9¨e¯n©n¸e¿k¹kÓJÐJð	
r#   c                ó˜   — t        t        t        «      5  t        t	        | j
                  «      d   «      cd d d «       S # 1 sw Y   y xY w)Nr   )r   r0   r1   r4   r   r2   r   s    r!   r   zMarkerSoftFileLock._read_ownerf   s>   € Ü”gœzÓ*ñ 	EÜ¤°·±Ó @ÀÑ CÓD÷	E÷ 	Eñ 	Eàús   •!A Á A	c                óJ   — t        |t        | j                  «       «      «       y r>   )r   Úencode_markerÚ_published_record)r    Úfds     r!   Ú_write_lock_infoz#MarkerSoftFileLock._write_lock_infok   s   € Ü�"”m D×$:Ñ$:Ó$<Ó=Õ>r#   c           	     óž   — t        t        j                  «       t        «       | j                  t        t        j                  «       «      ¬«      S )N)r%   r(   r7   r)   )ÚOwnerRecordÚosÚgetpidr
   r   r   r   s    r!   rG   z$MarkerSoftFileLock._published_recordn   s4   € ÜÜ—	‘	“Ü“[Ø×!Ñ!Ü%¤b§i¡i£kÓ2ô	
ð 	
r#   )ÚreturnúOwnerRecord | None)rN   ú
int | None)rN   Úbool)rN   ÚNone)r:   ú
str | NonerN   ztuple[int, str] | None)r:   rS   rC   ÚintrN   rQ   )rH   rT   rN   rR   )rN   rK   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__Úpropertyr"   r%   r*   r-   r6   Úclassmethodr?   rB   r   rI   rG   Ú__classcell__)r<   s   @r!   r   r      s‘   ø… ÙKð )€K�Ó(àò"ó ð"ð òLó ðLð òfó ðfóõ	3ð ô1ó ð1ð
 ô
ó ð
óó
?÷
r#   r   c                  óZ   — 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<   y)rK   z7Keep optional metadata when reading unknown lock modes.rT   r%   Ústrr(   r   r7   NrS   Útokenzfloat | NoneÚlease_durationrP   r)   )rU   rV   rW   rX   rY   r_   r`   r)   © r#   r!   rK   rK   w   s2   … ÙAà	ƒHØƒMØ
ƒOØ€Eˆ:ÓØ#'€N�LÓ'Ø€Eˆ:Ôr#   rK   c                ó¬  — t         d| j                  › �d| j                  › �d| j                  › �g}| j                  �|j                  d| j                  › �«       | j                  �|j                  d| j                  ›�«       | j                  �|j                  d| j                  › �«       dj                  d„ |D «       «      j                  «       S )	z>Render an owner record as the bytes a protocol 2 marker holds.zpid=zhost=zmode=ztoken=z	duration=zstart=Ú c              3  ó&   K  — | ]	  }|› d �–— Œ y­w)ú
Nra   )Ú.0Úlines     r!   ú	<genexpr>z encode_marker.<locals>.<genexpr>‹   s   è ø€ Ò1 4�d�V˜2”;Ñ1ùs   ‚)
r   r%   r(   r7   r_   Úappendr`   r)   ÚjoinÚencode)ÚrecordÚliness     r!   rF   rF   ‚   s»   € ä˜$˜vŸz™z˜lÐ+¨u°V·_±_Ð4EÐ-FÈ%ÐPV×P[ÑP[È}ÐH]Ð^€EØ‡|�|ÐØ�‰�v˜fŸl™l˜^Ð,Ô-Ø×ÑÐ(Ø�‰�y ×!6Ñ!6Ð 9Ð:Ô;Ø‡|�|ÐØ�‰�v˜fŸl™l˜^Ð,Ô-Ø�7‰7Ñ1¨5Ô1Ó1×8Ñ8Ó:Ð:r#   c                óÚ   — | r4| d   dk7  s,| j                  «       j                  «       x}r|d   t        k7  ryi }|dd D ]   }|j                  d«      \  }}}|s y|||<   Œ" t	        |«      S )zcReturn the owner a protocol 2 marker names, or ``None`` when the record is malformed or protocol 1.éÿÿÿÿre   r   Né   ú=)ÚstripÚ
splitlinesr   Ú	partitionÚ_build_record)r:   rm   Úfieldsrg   ÚkeyÚ	separatorÚvalues          r!   r4   r4   Ž   sˆ   € ñ �g˜b‘k TÒ)¸7¿=¹=»?×;UÑ;UÓ;WÐ2W°%Ð2WÐ\aÐbcÑ\dÔhqÒ\qØØ€FØ�a�b�	ò ˆØ $§¡¨sÓ 3ÑˆˆY˜ÙÙØˆˆsŠð	ô
 ˜Ó Ð r#   c                óÞ  — | j                  d«      x}€y |dv r|nd}| j                  d«      }|r d| vsd| v rt        j                  | d   «      sy 	 t        | d   «      }d| v rt	        | d   «      nd }d| v rt        | d   «      nd }d|cxk  r	t        k  sy  y | j                  d	«      }|d
k(  r|r|�t        j                  |«      r|dkD  sy t        ||||||¬«      S # t
        $ r Y y w xY w)Nr7   >   r   r   r   Úhostr%   Údurationr)   rp   r_   r   r   )r%   r(   r7   r_   r`   r)   )
Úgetr   Ú	fullmatchr   Úfloatr1   r   r   ÚisfiniterK   )rv   Ú	publishedr7   r(   r%   r|   r)   r_   s           r!   ru   ru   œ   s  € ð
 —Z‘Z Ó'Ð'ˆ	Ð0ØØ*3Ð7MÑ*M™YÐS\€DØ�z‰z˜&Ó!€HÙ�u FÑ*¨z¸VÑ/CÌI×L_ÑL_Ð`fÐgqÑ`rÔLsØðÜ˜F 5™MÓ*ˆØ0:¸fÑ0D”5˜ 
Ñ+Ô,È$ˆØ29¸VÑ2C”˜f W™oÔ.Èˆð �Ô”xÒØð  ØØ�J‰J�wÓ€Eð ˆw‚¡¨Ð)9Ä$Ç-Á-ÐPXÔBYÐ^fÐijÒ^jØÜ˜3¨¸ÀEÐZbÐjoÔpÐpøô ò Ùðús   Á6C  Ã 	C,Ã+C,)r   r   rK   rF   r4   )rl   rK   rN   Úbytes)r:   rS   rN   rO   )rv   zdict[str, str]rN   rO   )%Ú
__future__r   Ú__lazy_modules__r   rL   Úrer   r   Útypingr   r   r	   Úfilelock._identityr
   r   r   r   Úfilelock._softr   r   r   Úfilelock._utilr   r   r   rY   r   ÚcompileÚASCIIr   r   r   rK   rF   r4   ru   Ú__all__ra   r#   r!   ú<module>r�      s¦   ðÞ "âQÐ ã Û 	Û 	Ý ß -Ñ -ç gÓ gß GÑ Gß /ð
 %€	ˆ:Ó $à €ˆ*Ó  ð %/ B§J¡JÐ/UÐWY×W_ÑW_Ó$`€	Ð!Ó `ð Ð3Ñ4€	ôV
˜ô V
ôr�*ô ó	;ó!óqò6�r#   