Ë
    ùÇ:jã  ã                  óT  — 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j0                  ej2                  ej4                  fZdZ G d„ de«      ZddgZy# eef$ r Y Œw xY w)é    )ÚannotationsN)Úsuppress)ÚEAGAINÚENOSYSÚEWOULDBLOCK)ÚPath)Ú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    úc/home/mcse/projects/srt_converter/srt-converter-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   Tc                  ó(   — e Zd ZdZdd„Zdd„Zdd„Zy)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.
        c                óà  — t        | j                  «       t        j                  t        j                  z  }t        t        dd «      }|�||z  }|t        j                  z  }| j                  «       }	 t        j                  | j                  ||«      }| j                  rBt        t        «      5  t        j                   || j"                  j$                  «       d d d «       	 t'        j(                  |t&        j*                  t&        j,                  z  «       t        j.                  |«      j0                  dk(  rt        j2                  |«       y || 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# 1 sw Y   �ŒGxY w# t6        $ r¸}t        j2                  |«       |j8                  t:        k(  rmt        t6        «      5  t        | j                  «      j=                  «        d d d «       n# 1 sw Y   nxY w| j?                  «        | jA                  «        Y d }~y |j8                  tB        tD        hvr‚ Y d }~y 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¡NÔ3ÜŸ™¤R§Z¡ZÑ/ˆJÜ ¤ \°4Ó8ˆJØÐ%Ø˜jÑ(�
Øœ"Ÿ*™*Ñ$ˆJØŸ™Ó)ˆIðÜ—W‘W˜TŸ^™^¨Z¸ÓC�ð" ×%Ò%ÜœoÓ.ñ 6Ü—I‘I˜b $§-¡-×"4Ñ"4Ô5÷6ð4Ü—‘˜B¤§¡´·±Ñ =Ô>ô —8‘8˜B“<×(Ñ(¨AÒ-Ü—H‘H˜R•Là13�D—M‘MÕ.øôK %ò ð —>’>¤d¨4¯>©>Ó&:×&AÑ&A×&HÑ&HÔ&JÙØÜ"ò ô ˜DŸN™NÓ+×2Ñ2Ô4ØðÜŸ™ §¡°¼r¿z¹z¸kÑ1IÈ9ÓU‘BøÜ(ò Úðúò ðú÷6ñ 6ûô ò 	Ü—‘˜”Ø—?‘?¤fÒ,Ü!¤'Ó*ñ 6Ü˜TŸ^™^Ó,×3Ñ3Ô5÷6÷ 6ñ 6úà×/Ñ/Ô1Ø—M‘M”OÜØ—?‘?¬6´;Ð*?Ñ?Øô @ûð	ús   Á3!E" Â/+HÃ#5H, Å"AHÆ&-HÇ3HÈHÈ	HÈHÈHÈHÈHÈH)È,	K-È57K(É,$JÊ	K(ÊJ"	Ê'K(Ë
K(Ë(K-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)	Ú_softrI   ÚwarningsÚwarnÚasynciorL   rM   Ú
isinstanceÚ	__class__)r   rI   rL   rM   s       r   rB   z#UnixFileLock._fallback_to_soft_lock_   s1   € Ý+ä�M‰MÐ`ÐmnÕoßEä2<¸TÐCTÔ2UÐ.ˆD�NÐ[gˆD�Nr   c                ó®  — t        d| j                  j                  «      }d | j                  _        t        t        «      5  t        | j                  «      j                  «        d d d «       t        j                  |t        j                  «       t        t        «      5  t        j                  |«       d d d «       y # 1 sw Y   Œ[xY w# 1 sw Y   y xY w)NÚint)r	   r5   r>   r   r?   r   r'   rA   r7   r8   ÚLOCK_UNr(   r=   )r   rF   s     r   r   zUnixFileLock._releaseg   s•   € Ü�e˜TŸ]™]×7Ñ7Ó8ˆBØ)-ˆD�M‰MÔ&Üœ'Ó"ñ .Ü�T—^‘^Ó$×+Ñ+Ô-÷.ä�K‰K˜œEŸM™MÔ*Üœ'Ó"ñ Ü—‘˜”÷ð ÷.ð .ú÷ð ús   Á$B?Â CÂ?CÃCNr   )r   r    r!   r"   r   rB   r   r#   r   r   r   r   %   s   „ ñ	ó/	4ób	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ðZ Øð�øðc ˜Ð(ò Ùðús   Á2B ÂB'Â&B'