Ë
    ­Ó^j"  ã                  óÔ  — U d dl m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
mZ d dlmZ d dlmZmZ ddlmZ dd	lmZ d
Zej,                  dk(  r G d„ de«      ZnX	 d dlZej2                  ej4                  ej6                  ej8                  fZdZ eee	eh«      Zde d<   dd„Z!dd„Z" G d„ de«      Zej,                  dk(  rddgZ&yg d¢Z&y# e#e$f$ r dZ%de d<   dd„Z!dd„Z"Y Œ<w xY w)é    )ÚannotationsN)Úsuppress)ÚEACCESÚEAGAINÚENOSYSÚEWOULDBLOCK)ÚPath)ÚFinalÚcasté   )ÚBaseFileLock)Úensure_directory_existsFÚwin32c                  ó    — e Zd ZdZdd„Zdd„Zy)ÚUnixFileLockzHUses the :func:`fcntl.flock` to hard lock the lock file on unix systems.c                ó   — t         ‚©N©ÚNotImplementedError©Úselfs    úY/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/filelock/_unix.pyÚ_acquirezUnixFileLock._acquire   ó   € Ü%Ð%ó    c                ó   — t         ‚r   r   r   s    r   Ú_releasezUnixFileLock._release   r   r   N©ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   © r   r   r   r      s   „ ÙVó	&ô	&r   r   TzFinal[frozenset[int]]Ú_CONTENTION_ERRNOSc                óÂ   — 	 t        j                  | t         j                  t         j                  z  «       y# t        $ r}|j
                  t        v rY d }~y‚ d }~ww xY w)NFT)ÚfcntlÚflockÚLOCK_EXÚLOCK_NBÚOSErrorÚerrnor&   )ÚfdÚ	exceptions     r   Ú_lock_fd_nonblockingr0   .   sL   € ðÜ—‘˜B¤§¡´·±Ñ =Ô>ð
 øô	 ò Ø—?‘?Ô&8Ñ8Ü Øûðús   ‚58 ¸	AÁAÁAÁAc                óL   — t        j                  | t         j                  «       y r   )r(   r)   ÚLOCK_UN)r.   s    r   Ú
_unlock_fdr3   9   s   € Ü�K‰K˜œEŸM™MÕ*r   zfcntl is unavailablez
Final[str]Ú_FCNTL_UNAVAILABLEc                ó*   — t        t        t        «      ‚r   ©r,   r   r4   ©Ú_fds    r   r0   r0   "   ó   € Üœ&Ô"4Ó5Ð5r   c                ó*   — t        t        t        «      ‚r   r6   r7   s    r   r3   r3   %   r9   r   c                  óH   — e Zd ZdZd
d„Zdd„Zdd„Zdd„Zdd„Zd
d„Z	d
d„Z
y	)r   a,  
        Uses the :func:`fcntl.flock` to hard lock the lock file on unix systems.

        We leave the lock file in place after release. Unlinking a locked file on Unix splits
        waiters across inodes and breaks mutual exclusion for processes that coordinate via the
        same path.
        c                óH   — | j                  «       }|� | j                  |Ž  y y r   )Ú_acquire_nativeÚ_switch_to_soft_lock)r   Úmissing_flocks     r   r   zUnixFileLock._acquireE   s+   € Ø ×0Ñ0Ó2ˆMØÐ(Ø)�×)Ñ)¨=Ò9ð )r   c                óÔ  — t        | j                  «       t        j                  }t	        t        dd «      x}�||z  }|t        j
                  z  }| j                  «       }	 t        j                  | j                  ||«      }| j                  |«       	 t        |«      }|r| j)                  |«       y | j%                  «        t        j&                  |«       y # t        $ r= | j                  r/t        | j                  «      j                  j                  «       rY y ‚ t        $ rm t        | j                  «      j                  «       s‚ 	 t        j                  | j                  |t        j
                   z  |«      }n# t        $ r Y Y y w xY wY �Œw xY w# t        $ rG}|j                   t"        k7  r&| j%                  «        t        j&                  |«       ‚ ||fcY d }~S d }~ww xY w)NÚ
O_NOFOLLOW)r   Ú	lock_fileÚosÚO_RDWRÚgetattrÚO_CREATÚ
_open_modeÚopenÚFileNotFoundErrorr	   ÚparentÚexistsÚPermissionErrorÚ_mark_descriptor_pendingr0   r,   r-   r   Ú_mark_descriptor_releasedÚcloseÚ_finalize_locked_fd)r   Ú
open_flagsÚ
o_nofollowÚ	open_moder.   Úlockedr/   s          r   r=   zUnixFileLock._acquire_nativeJ   s™  € Ü# D§N¡NÔ3ô Ÿ™ˆJÜ%¤b¨,¸Ó=Ð=�
ÐJØ˜jÑ(�
Øœ"Ÿ*™*Ñ$ˆJØŸ™Ó)ˆIð Ü—W‘W˜TŸ^™^¨Z¸ÓC�ð" ×)Ñ)¨"Ô-ð%Ü-¨bÓ1�ñ Ø×(Ñ(¨Ô,ð ð ×.Ñ.Ô0Ü—‘˜”Øøô= %ò ð —>’>¤d¨4¯>©>Ó&:×&AÑ&A×&HÑ&HÔ&JÙØÜ"ò  ô ˜DŸN™NÓ+×2Ñ2Ô4Øð ÜŸ™ §¡°¼r¿z¹z¸kÑ1IÈ9ÓU‘BøÜ(ò  Úð úò ð ûô ò %Ø—?‘?¤fÒ,Ø×2Ñ2Ô4Ü—H‘H˜R”LØØ˜9�}Õ$ûð%ús[   Á"!C ÂF ÃAFÄ-FÅ3F Å?FÆ 	FÆ	FÆFÆFÆFÆ	G'Æ <G"ÇG'Ç"G'c                ó‚  — d }t        t        «      5  t        j                  |«      x}j                  |j
                  f}d d d «       | j                  «        t        j                  |«       | j                  r| j                  s| j                  �|‚t        t        «      5  t        j                  | j                  «      }||j                  |j
                  fk(  r#t        | j                  «      j                  «        d d d «       | j                  «        | j!                  «        y # 1 sw Y   ŒêxY w# 1 sw Y   Œ6xY wr   )r   r,   rC   ÚfstatÚst_devÚst_inorN   rO   Ú_fallback_to_softÚ_preserve_lock_fileÚ_on_acquiredÚlstatrB   r	   ÚunlinkÚ_fallback_to_soft_lockr   )r   r.   r?   ÚidentityrV   Úcurrents         r   r>   z!UnixFileLock._switch_to_soft_lockv   sö   € ð 04ˆHÜœ'Ó"ñ HÜ%'§X¡X¨b£\Ð1˜E×9Ñ9¸5¿<¹<ÐG�÷Hà×*Ñ*Ô,Ü�H‰H�RŒLØ×)Ò)¨T×-EÒ-EÈ×IZÑIZÐIfð $Ð#Üœ'Ó"ñ 2ÜŸ(™( 4§>¡>Ó2�Ø §¡°·±Ð?Ò?Ü˜Ÿ™Ó(×/Ñ/Ô1÷2ð ×'Ñ'Ô)Ø�M‰M�O÷Hð Hú÷2ð 2ús   ’.D)Â"AD5Ä)D2Ä5D>c                óª  — d}	 t        j                  |«      }|j                  dk7  r)t        j                  |d«       | j	                  |«       d}|r)| j                  ||j                  |j                  f«       y | j                  «        t        j                  |«       y # t
        $ r' | j                  «        t        j                  |«       ‚ w xY w)NFr   T)rC   rV   Úst_nlinkÚ	ftruncateÚ_apply_explicit_moder,   rN   rO   Ú_mark_descriptor_ownedrW   rX   )r   r.   ÚkeepÚstat_results       r   rP   z UnixFileLock._finalize_locked_fd‰   s²   € ð ˆDð	Ü Ÿh™h r›l�Ø×'Ñ'¨1Ò,Ü—L‘L  QÔ'Ø×-Ñ-¨bÔ1Ø�Dñ
 Ø×+Ñ+¨B°×1CÑ1CÀ[×EWÑEWÐ0XÕYà×.Ñ.Ô0Ü—‘˜•øô ò Ø×.Ñ.Ô0Ü—‘˜”Øðús   „AB" Â"0Cc                óº   — | j                   rCt        t        «      5  t        j                  || j
                  j                  «       d d d «       y y # 1 sw Y   y xY wr   )Úhas_explicit_moder   rL   rC   ÚfchmodÚ_contextÚmode©r   r.   s     r   rd   z!UnixFileLock._apply_explicit_modež   sJ   € Ø×%Ò%ÜœoÓ.ñ 6Ü—I‘I˜b $§-¡-×"4Ñ"4Ô5÷6ð 6ð &÷6ð 6ús   œ+AÁAc                ó„   — ddl m} t        j                  dd¬«       ddlm}m} t        | |«      r|| _        y || _        y )Nr   )ÚSoftFileLockzDflock not supported on this filesystem, falling back to SoftFileLocké   )Ú
stacklevel)ÚAsyncSoftFileLockÚBaseAsyncFileLock)	Ú_softro   ÚwarningsÚwarnÚasynciorr   rs   Ú
isinstanceÚ	__class__)r   ro   rr   rs   s       r   r^   z#UnixFileLock._fallback_to_soft_lock£   s3   € õ ,ä�M‰MÐ`ÐmnÕoßEä2<¸TÐCTÔ2UÐ.ˆD�NÐ[gˆD�Nr   c                ó    — t        d| j                  j                  «      }t        |«       | j	                  «        | j                  |d¬«       y )NÚintT)Údefault_suppresses)r   rk   Úlock_file_fdr3   rN   Ú_close_released_fdrm   s     r   r   zUnixFileLock._release­   s@   € Ü�e˜TŸ]™]×7Ñ7Ó8ˆBô �rŒNØ×*Ñ*Ô,Ø×#Ñ# B¸4Ð#Õ@r   Nr   )r   ztuple[int, OSError] | None)r.   r{   r?   r,   r   r    ©r.   r{   r   r    )r!   r"   r#   r$   r   r=   r>   rP   rd   r^   r   r%   r   r   r   r   <   s-   „ ñ	ó	:ó
*	óX	ó&	ó*	6ó
	hô	Ar   Ú	has_fcntl)r   r0   r3   r€   )r.   r{   r   Úboolr   )r8   r{   r   r�   )r8   r{   r   r    )'Ú
__future__r   rC   Úsysru   Ú
contextlibr   r-   r   r   r   r   Úpathlibr	   Útypingr
   r   Ú_apir   Ú_utilr   r€   Úplatformr   r(   r)   r*   r+   r2   Ú_Ú	frozensetr&   Ú__annotations__r0   r3   ÚImportErrorÚAttributeErrorr4   Ú__all__r%   r   r   ú<module>r�      sî   ðÞ "ã 	Û 
Û Ý ß 5Ó 5Ý ß å Ý *à€	Ø‡<�<�7Òô&�|õ &ð+Ûà�[‰[˜%Ÿ-™-¨¯©¸¿¹ÐFˆð ˆ	ñ 5>¸vÀvÈ{Ð>[Ó4\ÐÐ1Ó\ó		ó	+ôxA�|ô xAðv ‡<�<�7ÒØ˜{Ð+�GâQ�Gøðw ˜Ð(ò 6Ø)?Ð˜JÓ?ó	6õ	6ð6ús   Á2C ÃC'Ã&C'