
    ; j                    X   S SK Jr  S SKrS SKrS SKrS SKJr  S SKJrJ	r	J
r
  S SKJr  S SKJr  SSKJr  SS	KJr  S
r\R(                  S:X  a   " S S\5      rO@ S SKr\R.                  \R0                  \R2                  \R4                  4rSr " S S\5      rSS/rg! \\4 a     Nf = f)    )annotationsN)suppress)EAGAINENOSYSEWOULDBLOCK)Path)cast   )BaseFileLock)ensure_directory_existsFwin32c                  ,    \ rS rSrSrSS jrSS jrSrg)UnixFileLock   zHUses the :func:`fcntl.flock` to hard lock the lock file on unix systems.c                    [         eNNotImplementedErrorselfs    _/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/filelock/_unix.py_acquireUnixFileLock._acquire       %%    c                    [         er   r   r   s    r   _releaseUnixFileLock._release   r   r    NreturnNone)__name__
__module____qualname____firstlineno____doc__r   r   __static_attributes__r   r   r   r   r      s    V	&	&r   r   Tc                  6    \ rS rSrSrSS jrSS jrSS jrSrg)	r   %   a  
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                2   [        U R                  5        [        R                  [        R                  -  n[        [        SS 5      nUb  X-  nU[        R                  -  nU R                  5       n [        R                  " U R                  X5      nU R                  (       aB  [        [        5         [        R                   " X@R"                  R$                  5        S S S 5         [&        R(                  " U[&        R*                  [&        R,                  -  5        [        R.                  " U5      R0                  S:X  a  [        R2                  " U5        g X@R"                  l        g ! [         aG    U R                  (       a4  [        U R                  5      R                  R                  5       (       a   g e [         as    [        U R                  5      R                  5       (       d  e  [        R                  " U R                  U[        R                  ) -  U5      n GN! [         a      g f = ff = f! , (       d  f       GNa= f! [6         a  n[        R2                  " U5        UR8                  [:        :X  ar  [        [6        5         [        U R                  5      R=                  5         S S S 5        O! , (       d  f       O= fU R?                  5         U RA                  5          S nAg UR8                  [B        [D        1;  a  e  S nAg S nAff = f)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   r   .   s   #DNN3RZZ/J \48J%(
"**$J)IWWT^^ZC" %%o.IIb--"4"45 /4B => 88B<((A-HHRL13MM.K %  >>d4>>&:&A&A&H&H&J&J"  DNN+2244rzzk1I9UB(  /.  	??f,!'*T^^,335 +**//1MMO??6;*?? @	ss   3!E* 4+H9(6I *AH693H6-4H$$
H2.H61H22H69
I
L9L$J;2	L;
K		'L1LLc                    SSK Jn  [        R                  " SSS9  SSKJnJn  [        X5      (       a  X l        g UU l        g )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   rH   #UnixFileLock._fallback_to_soft_lock_   s/    +MM`mnoE2<T2U2U.N[gDNr   c                   [        SU R                  R                  5      nS U R                  l        [        [        5         [        U R                  5      R                  5         S S S 5        [        R                  " U[        R                  5        [        [        5         [        R                  " U5        S S S 5        g ! , (       d  f       Nb= f! , (       d  f       g = f)Nint)r	   r;   rD   r   rE   r   r-   rG   r=   r>   LOCK_UNr.   rC   )r   rL   s     r   r   r   g   s    eT]]778B)-DMM&'"T^^$++- #KKEMM*'" #" #" #"s   $C!C
C
C )rY   Nr    )	r#   r$   r%   r&   r'   r   rH   r   r(   r   r   r   r   r   %   s    	/	4b	h	r   	has_fcntl)
__future__r   r.   sysrU   
contextlibr   rF   r   r   r   pathlibr   typingr	   _apir   _utilr   r^   platformr   r=   r>   r?   r@   r]   _ImportErrorAttributeError__all__r   r   r   <module>rk      s    " 	 
   - -    * 	<<7&| &[[%--F 	I| IZ c ( s   2B B)(B)