§
    /›jã  ã                  ó4  — 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
 d dlmZ d dlmZ ddlmZ dd	lmZ d
Zej        dk    r G d„ de¦  «        Zn=	 d dlZej        ej        ej        ej        fZdZn# eef$ r Y nw xY w G d„ de¦  «        ZddgZdS )é    )ÚannotationsN)Úsuppress)ÚEAGAINÚENOSYSÚEWOULDBLOCK)ÚPath)Úcasté   )ÚBaseFileLock)Úensure_directory_existsFÚwin32c                  ó"   — e Zd ZdZdd„Zdd„ZdS )ÚUnixFileLockzHUses the :func:`fcntl.flock` to hard lock the lock file on unix systems.ÚreturnÚNonec                ó   — t           ‚©N©ÚNotImplementedError©Úselfs    úK/home/lighthouse/health/venv/lib/python3.11/site-packages/filelock/_unix.pyÚ_acquirezUnixFileLock._acquire   ó   € Ý%Ð%ó    c                ó   — t           ‚r   r   r   s    r   Ú_releasezUnixFileLock._release   r   r   N©r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   © r   r   r   r      sB   € € € € € ØVÐVð	&ð 	&ð 	&ð 	&ð	&ð 	&ð 	&ð 	&ð 	&ð 	&r   r   Tc                  ó*   — e Zd ZdZdd„Zdd„Zdd„ZdS )	r   a0  
        Uses the :func:`fcntl.flock` to hard lock the lock file on unix systems.

        Lock file cleanup: Unix and macOS delete the lock file reliably after release, even in
        multi-threaded scenarios. Unlike Windows, Unix allows unlinking files that other processes
        have open.
        r   r   c                ó   — t          | j        ¦  «         t          j        t          j        z  }t          t          dd ¦  «        }|�||z  }|t          j        z  }|                      ¦   «         }	 t          j        | j        ||¦  «        }n³# t          $ r7 | j        r.t          | j        ¦  «        j                             ¦   «         rY d S ‚ t          $ rg t          | j        ¦  «                             ¦   «         s‚ 	 t          j        | j        |t          j         z  |¦  «        }n# t          $ r Y Y d S w xY wY nw xY w| j        rKt          t          ¦  «        5  t          j        || j        j        ¦  «         d d d ¦  «         n# 1 swxY w Y   	 t'          j        |t&          j        t&          j        z  ¦  «         t          j        |¦  «        j        dk    rt          j        |¦  «         d S || j        _        d S # t6          $ rÅ}t          j        |¦  «         |j        t:          k    r€t          t6          ¦  «        5  t          | j        ¦  «                             ¦   «          d d d ¦  «         n# 1 swxY w Y   |                      ¦   «          |                       ¦   «          Y d }~d S |j        tB          tD          hvr‚ Y d }~d S d }~ww xY w)NÚ
O_NOFOLLOWr   )#r   Ú	lock_fileÚosÚO_RDWRÚO_TRUNCÚgetattrÚO_CREATÚ
_open_modeÚopenÚFileNotFoundErrorr   ÚparentÚexistsÚPermissionErrorÚhas_explicit_moder   ÚfchmodÚ_contextÚmodeÚfcntlÚflockÚLOCK_EXÚLOCK_NBÚfstatÚst_nlinkÚcloseÚlock_file_fdÚOSErrorÚerrnor   ÚunlinkÚ_fallback_to_soft_lockr   r   r   )r   Ú
open_flagsÚ
o_nofollowÚ	open_modeÚfdÚ	exceptions         r   r   zUnixFileLock._acquire.   s>  € Ý# D¤NÑ3Ô3Ð3Ýœ¥R¤ZÑ/ˆJÝ ¥ \°4Ñ8Ô8ˆJØÐ%Ø˜jÑ(�
Ø�"œ*Ñ$ˆJØŸšÑ)Ô)ˆIðÝ”W˜Tœ^¨Z¸ÑCÔC��øÝ$ð ð ð ð ”>ð ¥d¨4¬>Ñ&:Ô&:Ô&A×&HÒ&HÑ&JÔ&Jð Ø�F�FØÝ"ð ð ð õ ˜DœNÑ+Ô+×2Ò2Ñ4Ô4ð ØðÝœ ¤°½r¼z¸kÑ1IÈ9ÑUÔU�B�BøÝ(ð ð ð Ø�F�F�Fðøøøð �Bðøøøð Ô%ð 6Ý�oÑ.Ô.ð 6ð 6Ý”I˜b $¤-Ô"4Ñ5Ô5Ð5ð6ð 6ð 6ñ 6ô 6ð 6ð 6ð 6ð 6ð 6ð 6øøøð 6ð 6ð 6ð 6ð4Ý”˜B¥¤µ´Ñ =Ñ>Ô>Ð>õ ”8˜B‘<”<Ô(¨AÒ-Ð-Ý”H˜R‘L”L�L�L�Là13�D”MÔ.Ð.Ð.øõ! ð 	ð 	ð 	Ý”˜‘”�Ø”?¥fÒ,Ð,Ý!¥'Ñ*Ô*ð 6ð 6Ý˜Tœ^Ñ,Ô,×3Ò3Ñ5Ô5Ð5ð6ð 6ð 6ñ 6ô 6ð 6ð 6ð 6ð 6ð 6ð 6øøøð 6ð 6ð 6ð 6à×/Ò/Ñ1Ô1Ð1Ø—M’M‘O”O�OØ�F�F�F�F�FØ”?­6µ;Ð*?Ð?Ð?Øð @Ð?Ð?Ð?Ð?Ð?øøøøð	øøøs�   Á/B Â<D;Ã
1D;Ã<)D&Ä%D;Ä&
D5Ä0D;Ä4D5Ä5D;Ä:D;Å FÆF	ÆF	Æ,G> Ç>
KÈ8KÉ 'I3É'KÉ3I7	É7KÉ:I7	É;+KÊ,KËKc                ó€   — ddl m} t          j        dd¬¦  «         ddlm}m} t          | |¦  «        r|n|| _        d S )Nr
   )ÚSoftFileLockzDflock not supported on this filesystem, falling back to SoftFileLocké   )Ú
stacklevel)ÚAsyncSoftFileLockÚBaseAsyncFileLock)	Ú_softrI   ÚwarningsÚwarnÚasynciorL   rM   Ú
isinstanceÚ	__class__)r   rI   rL   rM   s       r   rB   z#UnixFileLock._fallback_to_soft_lock_   se   € Ø+Ð+Ð+Ð+Ð+Ð+åŒMÐ`ÐmnÐoÑoÔoÐoØEÐEÐEÐEÐEÐEÐEÐEå2<¸TÐCTÑ2UÔ2UÐgÐ.Ð.Ð[gˆDŒNˆNˆNr   c                ó¶  — t          d| j        j        ¦  «        }d | j        _        t          t          ¦  «        5  t          | j        ¦  «                             ¦   «          d d d ¦  «         n# 1 swxY w Y   t          j	        |t          j
        ¦  «         t          t          ¦  «        5  t          j        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚint)r	   r5   r>   r   r?   r   r'   rA   r7   r8   ÚLOCK_UNr(   r=   )r   rF   s     r   r   zUnixFileLock._releaseg   s2  € Ý�e˜Tœ]Ô7Ñ8Ô8ˆBØ)-ˆDŒMÔ&Ý�'Ñ"Ô"ð .ð .Ý�T”^Ñ$Ô$×+Ò+Ñ-Ô-Ð-ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .åŒK˜�EœMÑ*Ô*Ð*Ý�'Ñ"Ô"ð ð Ý”˜‘”�ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s#   »'A.Á.A2Á5A2Â,CÃCÃCNr   )r   r    r!   r"   r   rB   r   r#   r   r   r   r   %   s_   € € € € € ð	ð 	ð/	4ð /	4ð /	4ð /	4ðb	hð 	hð 	hð 	hð	ð 	ð 	ð 	ð 	ð 	r   Ú	has_fcntl)Ú
__future__r   r(   ÚsysrO   Ú
contextlibr   r@   r   r   r   Úpathlibr   Útypingr	   Ú_apir   Ú_utilr   rW   Úplatformr   r7   r8   r9   r:   rV   Ú_ÚImportErrorÚAttributeErrorÚ__all__r#   r   r   ú<module>rd      s‡  ðØ "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *ð €	Ø„<�7ÒÐð&ð &ð &ð &ð &�|ñ &ô &ð &ð &ðØˆˆˆàŒ[˜%œ-¨¬¸¼ÐFˆð ˆ	ˆ	øð ˜Ð(ð ð ð Øˆðøøøð
Ið Ið Ið Ið I�|ñ Iô Ið IðZ Øð€€€s   ÁA9 Á9BÂB