Ë
    ­Ó^jÖ2  ã                  ó  — U d dl m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mZ dd	lmZmZmZ dd
lmZ ddlmZmZmZmZ dZded<   dZ ded<   dZ!ded<   dZ"ded<    G d„ de«      Z#dd„Z$dd„Z%dd„Z&dgZ'y)é    )ÚannotationsN)Úsuppress)ÚEACCESÚEEXISTÚEPERM)ÚPath)ÚFinalé   )ÚBaseFileLockÚ_raise_grouped_errors)Ú	host_nameÚowner_is_staleÚprocess_start_token)ÚSTRICT_SOFT_SENTINEL_RECORD)Úbreak_lock_fileÚensure_directory_existsÚraise_on_not_writable_fileÚ	write_allg       @zFinal[float]Ú_MALFORMED_LOCK_AGE_THRESHOLDi   z
Final[int]Ú_MAX_LOCK_FILE_SIZEé
   Ú_UNLINK_MAX_RETRIESé   Ú#_MARKER_WITH_START_TOKEN_LINE_COUNTc                  ó¸   — 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d„Z	dd„Z
dd„Zedd„«       Zedd„«       Zedd„«       Zdd„Zdd„Zdd„Zdd„Zy)Ú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_supportedc                ór  — t        | j                  «       t        | j                  «       t        j                  t        j
                  z  t        j                  z  t        j                  z  }t        t        dd «      x}�||z  }	 t        j                  | j                  || j                  «       «      }| j%                  |«       | j'                  |«       y # t        $ rT}|j                  t        k(  s'|j                  t        k(  rt        j                   dk(  s‚ | j#                  «        Y d }~y d }~ww xY w)NÚ
O_NOFOLLOWÚwin32)r   Ú	lock_filer   ÚosÚO_WRONLYÚO_CREATÚO_EXCLÚO_TRUNCÚgetattrÚopenÚ
_open_modeÚOSErrorÚerrnor   r   ÚsysÚplatformÚ_try_break_stale_lockÚ_mark_descriptor_pendingÚ_publish_held_marker)ÚselfÚflagsÚ
o_nofollowÚfdÚ	exceptions        úY/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/filelock/_soft.pyÚ_acquirezSoftFileLock._acquire3   så   € Ü" 4§>¡>Ô2Ü §¡Ô/ô —‘œbŸj™jÑ(¬2¯9©9Ñ4´r·z±zÑAˆÜ!¤" l°DÓ9Ð9ˆJÐFØ�ZÑˆEð	Ü—‘˜Ÿ™¨°·±Ó0AÓBˆBð 	×%Ñ% bÔ)Ø×!Ñ! "Õ%øô ò 	à—‘¤6Ò)¨i¯o©oÄÒ.GÌCÏLÉLÐ\cÒLcàØ×&Ñ&Ô(Üûð	ús   Â/C Ã	D6Ã"A
D1Ä1D6c                óÚ  — d }	 t        t        j                  |«      «      }| j                  |«       | j                  ||«       y # t        $ r› | j                  «        t        j                  |«       t        t        «      5  |�Nt        t        j                  | j                  «      «      |k(  r#t        | j                  «      j                  «        d d d «       ‚ # 1 sw Y   ‚ xY ww xY w©N)Ú_file_identityr(   ÚfstatÚ_write_lock_infoÚBaseExceptionÚ_mark_descriptor_releasedÚcloser   r0   Úlstatr'   r   ÚunlinkÚ_mark_descriptor_owned)r7   r:   Úidentitys      r<   r6   z!SoftFileLock._publish_held_markerG   s¿   € ð ,0ˆð		Ü%¤b§h¡h¨r£lÓ3ˆHØ×!Ñ! "Ô%ð 	×#Ñ# B¨Õ1øô ò 	Ø×*Ñ*Ô,Ü�H‰H�RŒLÜœ'Ó"ñ 2ØÐ'¬N¼2¿8¹8ÀDÇNÁNÓ;SÓ,TÐX`Ò,`Ü˜Ÿ™Ó(×/Ñ/Ô1÷2ð ÷2ð úð	ús$   „/A Á=C*ÂACÃ	C*ÃC&	Ã"C*c                ó„  — t        t        t        «      5  t        | j                  «      \  }}}|t
        k(  r
	 d d d «       y t        |«      }|€?t        j                  «       |z
  t        k\  rt        | j                  ||«       	 d d d «       y t        |Ž rt        | j                  ||«       d d d «       y # 1 sw Y   y xY wr?   )r   r0   Ú
ValueErrorÚ_read_lock_filer'   r   Ú_parse_lock_holderÚtimer   r   r   )r7   ÚcontentÚmtimeÚinoÚholders        r<   r4   z"SoftFileLock._try_break_stale_lockX   sª   € Ü”gœzÓ*ñ 	<Ü"1°$·.±.Ó"AÑˆG�U˜CØÔ5Ò5Ø÷	<ð 	<ô (¨Ó0ˆFàˆ~ô —9‘9“; Ñ&Ô*GÒGÜ# D§N¡N°E¸3Ô?Ø÷	<ð 	<ô ˜vÑ&Ü §¡°°sÔ;÷	<÷ 	<ñ 	<ús   •$B6ÁAB6ÂB6Â6B?c                óÊ   — t        j                  «       › dt        «       › d�}t        t        j                  «       «      x}�||› d�z  }t	        | |j                  «       «       y )Nú
)r(   Úgetpidr   r   r   Úencode)r:   ÚinfoÚtokens      r<   rB   zSoftFileLock._write_lock_infoj   sT   € ô
 —)‘)“+�˜b¤£ ¨RÐ0ˆÜ(¬¯©«Ó5Ð5ˆEÐBØ�u�g˜R�LÑ ˆDÜ�"�d—k‘k“mÕ$ó    c                óº   — t        t        t        «      5  t        t	        | j
                  «      d   «      }|�|d   cddd«       S 	 ddd«       y# 1 sw Y   yxY w)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   r0   rK   rM   rL   r'   )r7   rR   s     r<   ÚpidzSoftFileLock.pidt   sZ   € ô ”gœzÓ*ñ 	!Ü'¬¸¿¹Ó(GÈÑ(JÓKˆFØÐ!Ø˜a‘y÷	!ñ 	!à!÷	!ð ÷		!ð ús   •(AÁAc                ó  — t        t        t        «      5  t        t	        | j
                  «      d   «      }|�5|\  }}}|t        j                  «       k(  xr |t        «       k(  cddd«       S 	 ddd«       y# 1 sw Y   yxY w)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

        r   NF)	r   r0   rK   rM   rL   r'   r(   rU   r   )r7   rR   r[   ÚhostnameÚ_s        r<   Úis_lock_held_by_uszSoftFileLock.is_lock_held_by_us‚   s~   € ô ”gœzÓ*ñ 	FÜ'¬¸¿¹Ó(GÈÑ(JÓKˆFØÐ!Ø#)Ñ ��X˜qØœbŸi™i›kÑ)ÒE¨h¼)»+Ñ.E÷		Fñ 	Fà!÷	Fð
 ÷	Fð
 ús   •AA8Á8Bc                ó’   — t        t        «      5  t        | j                  «      j	                  «        ddd«       y# 1 sw Y   yxY w)zNForcibly break the lock by removing the lock file, regardless of who holds it.N)r   r0   r   r'   rG   )r7   s    r<   Ú
break_lockzSoftFileLock.break_lock‘   s4   € ä”gÓñ 	*Ü�—‘Ó ×'Ñ'Ô)÷	*÷ 	*ñ 	*ús	   �$=½Ac                ó¸  — | j                   j                  }|€J ‚d }t        t        «      5  t	        t        j                  |«      «      }d d d «       | j                  «        	 | j                  |d¬«       | j                  |«       y # 1 sw Y   Œ?xY w# t        $ r;}	 | j                  |«       ‚ # t        $ r}t        d||«       Y d }~‚ d }~ww xY wd }~ww xY w)NF)Údefault_suppressesz4lock descriptor close and marker cleanup both failed)Ú_contextÚlock_file_fdr   r0   r@   r(   rA   rD   Ú_close_released_fdrC   Ú_unlink_held_markerr   )r7   r:   rI   Úclose_errorÚcleanup_errors        r<   Ú_releasezSoftFileLock._release–   sÜ   € Ø�]‰]×'Ñ'ˆØˆ~Ðˆ~ð ,0ˆÜ”gÓñ 	4Ü%¤b§h¡h¨r£lÓ3ˆH÷	4ð 	×&Ñ&Ô(ð	Ø×#Ñ# B¸5Ð#ÔAð 	× Ñ  Õ*÷%	4ð 	4ûô ò 		ðØ×(Ñ(¨Ô2ð øô !ò Ü%ØJØØ!÷ð ð
 ûðþð		úsG   ¬B	Á$B Â	BÂ	CÂB1Â0CÂ1	CÂ:CÃCÃCÃCÃCc                ó8  — |€y t         j                  dk(  r| j                  |«       y t        t        «      5  t        t        j                  | j                  «      «      |k(  r#t        | j                  «      j                  «        d d d «       y # 1 sw Y   y xY w)Nr&   )r2   r3   Ú_windows_unlink_if_oursr   r0   r@   r(   rF   r'   r   rG   )r7   rI   s     r<   rg   z SoftFileLock._unlink_held_marker±   sq   € ØÐØÜ�<‰<˜7Ò"Ø×(Ñ(¨Õ2äœ'Ó"ñ 2Ü!¤"§(¡(¨4¯>©>Ó":Ó;¸xÒGÜ˜Ÿ™Ó(×/Ñ/Ô1÷2÷ 2ñ 2ús   ¸ABÂBc                óˆ  — d}t        t        «      D ]T  }	 t        t        j                  | j
                  «      «      |k7  r y t        | j
                  «      j                  «         y  y # t        $ rN}|j                  t        t        hvrY d }~ y |t        dz
  k  rt        j                  |«       |dz  }Y d }~Œªd }~ww xY w)Ngü©ñÒMbP?r
   é   )Úranger   r@   r(   rF   r'   r   rG   r0   r1   r   r   rN   Úsleep)r7   rI   Úretry_delayÚattemptÚexcs        r<   rl   z$SoftFileLock._windows_unlink_if_ours»   s¢   € ØˆÜÔ0Ó1ò 	ˆGðÜ!¤"§(¡(¨4¯>©>Ó":Ó;¸xÒGÙÜ�T—^‘^Ó$×+Ñ+Ô-ñ ñ	øô ò %Ø—9‘9¤V¬U OÑ3ÝØÔ0°1Ñ4Ò4Ü—J‘J˜{Ô+Ø 1Ñ$�Kÿøð%ús#   –+A*Á#A*Á*	CÁ3B<Â&B<Â<CN)ÚreturnÚNone)r:   Úintrt   ru   )rt   z
int | None)rt   r   )rI   ztuple[int, int] | Nonert   ru   )rI   útuple[int, int]rt   ru   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__r!   r"   r#   r=   r6   r4   ÚstaticmethodrB   Úpropertyr[   r_   ra   rj   rg   rl   © rY   r<   r   r      sœ   … ñð  !%Ð˜Ó$ð 6]ÐÐ2Ó\ð +0Ð! 4Ó/ð $)Ð˜DÓ(ó&ó(2ó"<ð$ ò%ó ð%ð òó ðð òó ðó*ó
+ó62ôrY   r   c                ó2   — | j                   | j                  fS r?   )Úst_devÚst_ino)Ústs    r<   r@   r@   Î   s   € ð �9‰9�b—i‘iÐÐrY   c           	     óz  — t        j                  | «      }t        j                  |j                  «      sd |j
                  |j                  fS t        j                  | t         j                  t        t         dd«      z  t        t         dd«      z  «      }	 t        j                  |«      }t        j                  |j                  «      s.d |j
                  |j                  ft        j                  |«       S t        j                  |t        dz   «      }t        j                  |«       t        |«      t        k  rAt        t         «      5  |j#                  d«      |j
                  |j                  fcd d d «       S d |j
                  |j                  fS # t        j                  |«       w xY w# 1 sw Y   Œ<xY w)Nr%   r   Ú
O_NONBLOCKr
   zutf-8)r(   rF   ÚstatÚS_ISREGÚst_modeÚst_mtimer‚   r.   ÚO_RDONLYr-   rA   rE   Úreadr   Úlenr   ÚUnicodeDecodeErrorÚdecode)Úpathrƒ   r:   Údatas       r<   rL   rL   Ô   sB  € ô
 
�‰�$‹€BÜ�<‰<˜Ÿ
™
Ô#Ø�R—[‘[ "§)¡)Ð+Ð+ô 
�‰�”r—{‘{¤W¬R°¸qÓ%AÑAÄGÌBÐP\Ð^_ÓD`Ñ`Ó	a€BðÜ�X‰X�b‹\ˆÜ�|‰|˜BŸJ™JÔ'Ø˜Ÿ™ b§i¡iÐ/ô 	�‰��ô �w‰w�rÔ.°Ñ2Ó3ˆä
�‰�ŒÜ
ˆ4ƒyÔ'Ò'ÜÔ(Ó)ñ 	@Ø—;‘;˜wÓ'¨¯©°b·i±iÐ?÷	@ñ 	@à�—‘˜bŸi™iÐ'Ð'øô	 	�‰��ú÷	@ð 	@ús   ÂAF Ã9F Å(F1ÆF.Æ1F:c                ó
  — | r+t        | j                  «       j                  «       x}«      dvry 	 t        |d   «      }t        |«      t        k(  rt        |d   «      nd }d|cxk  rdk  sy  y ||d   |fS # t
        $ r Y y w xY w)N>   rn   r   r   rn   r
   iÿÿÿ)rŒ   ÚstripÚ
splitlinesrv   r   rK   )rO   Úlinesr[   Ústart_tokens       r<   rM   rM   í   s—   € ñ
 ”c 7§=¡=£?×#=Ñ#=Ó#?Ð?˜%Ó@ÈÑNØðÜ�%˜‘(‹mˆÜ'*¨5£zÔ5XÒ'X”c˜% ™(”mÐ^bˆð �Ô �yÒ Øð !ØØ��a‘˜+Ð%Ð%øô ò Ùðús   °0A6 Á6	BÂB)rƒ   zos.stat_resultrt   rw   )r�   Ústrrt   ztuple[str | None, float, int])rO   z
str | Nonert   z"tuple[int, str, int | None] | None)(Ú
__future__r   r(   r†   r2   rN   Ú
contextlibr   r1   r   r   r   Úpathlibr   Útypingr	   Ú_apir   r   Ú	_identityr   r   r   Ú_soft_protocolr   Ú_utilr   r   r   r   r   r|   r   r   r   r   r@   rL   rM   Ú__all__r   rY   r<   ú<module>r       s‹   ðÞ "ã 	Û Û 
Û Ý ß 'Ñ 'Ý Ý ç 5ß EÑ EÝ 7ß bÓ bà.1Ð ˜|Ó 1Ø"&Ð �ZÓ &Ø"$Ð �ZÓ $Ø23Ð # ZÓ 3ôt�<ô tón ó(ó2&ð, ð�rY   