§
    dŠtj"  ã                  ó´  — 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ng	 d dlZej        ej        ej        ej        fZdZ eee	eh¦  «        Zde d<   d!d„Z!d"d„Z"n# e#e$f$ r dZ%de d<   d#d„Z!d$d„Z"Y nw xY w G d„ de¦  «        Zej        dk    rddgZ&dS g d ¢Z&dS )%é    )Ú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dS )ÚUnixFileLockzHUses the :func:`fcntl.flock` to hard lock the lock file on unix systems.ÚreturnÚNonec                ó   — t           ‚©N©ÚNotImplementedError©Úselfs    úL/var/www/html/CA-Chatbot/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   TzFinal[frozenset[int]]Ú_CONTENTION_ERRNOSÚfdÚintr   Úboolc                ó°   — 	 t          j        | t           j        t           j        z  ¦  «         n'# t          $ r}|j        t          v rY d }~dS ‚ d }~ww xY wdS )NFT)ÚfcntlÚflockÚLOCK_EXÚLOCK_NBÚOSErrorÚerrnor&   )r'   Ú	exceptions     r   Ú_lock_fd_nonblockingr2   .   si   € ðÝ”˜B¥¤µ´Ñ =Ñ>Ô>Ð>Ð>øÝð ð ð Ø”?Õ&8Ð8Ð8Ø ˜5˜5˜5˜5˜5Øøøøøðøøøð �4s   ‚,/ ¯
A¹AÁAÁAr   c                óD   — t          j        | t           j        ¦  «         d S r   )r+   r,   ÚLOCK_UN)r'   s    r   Ú
_unlock_fdr5   9   s   € ÝŒK˜�EœMÑ*Ô*Ð*Ð*Ð*r   zfcntl is unavailablez
Final[str]Ú_FCNTL_UNAVAILABLEÚ_fdc                ó6   — t          t          t          ¦  «        ‚r   ©r/   r   r6   ©r7   s    r   r2   r2   "   ó   € Ý�&Õ"4Ñ5Ô5Ð5r   c                ó6   — t          t          t          ¦  «        ‚r   r9   r:   s    r   r5   r5   %   r;   r   c                  óJ   — 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
dS )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.
        r   r   c                óJ   — |                       ¦   «         }|� | j        |Ž  d S d S r   )Ú_acquire_nativeÚ_switch_to_soft_lock)r   Úmissing_flocks     r   r   zUnixFileLock._acquireE   s7   € Ø ×0Ò0Ñ2Ô2ˆMØÐ(Ø)�Ô)¨=Ð9Ð9Ð9Ð9ð )Ð(r   útuple[int, OSError] | Nonec                óÚ  — t          | j        ¦  «         t          j        }t	          t          dd ¦  «        x}�||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|                      |¦  «         	 t          |¦  «        }nT# t          $ rG}|j        t"          k    r)|                      ¦   «          t          j        |¦  «         ‚ ||fcY d }~S d }~ww xY w|r|                      |¦  «         n(|                      ¦   «          t          j        |¦  «         d S )NÚ
O_NOFOLLOW)r   Ú	lock_fileÚosÚO_RDWRÚgetattrÚO_CREATÚ
_open_modeÚopenÚFileNotFoundErrorr	   ÚparentÚexistsÚPermissionErrorÚ_mark_descriptor_pendingr2   r/   r0   r   Ú_mark_descriptor_releasedÚcloseÚ_finalize_locked_fd)r   Ú
open_flagsÚ
o_nofollowÚ	open_moder'   Úlockedr1   s          r   r?   zUnixFileLock._acquire_nativeJ   s  € Ý# D¤NÑ3Ô3Ð3õ œˆJÝ%¥b¨,¸Ñ=Ô=Ð=�
ÐJØ˜jÑ(�
Ø�"œ*Ñ$ˆJØŸšÑ)Ô)ˆIð Ý”W˜Tœ^¨Z¸ÑCÔC��øÝ$ð ð ð ð ”>ð  ¥d¨4¬>Ñ&:Ô&:Ô&A×&HÒ&HÑ&JÔ&Jð  Ø˜4˜4ØÝ"ð  ð  ð  õ ˜DœNÑ+Ô+×2Ò2Ñ4Ô4ð Øð Ýœ ¤°½r¼z¸kÑ1IÈ9ÑUÔU�B�BøÝ(ð  ð  ð  Ø˜4˜4˜4ð øøøð �Bð øøøð ×)Ò)¨"Ñ-Ô-Ð-ð%Ý-¨bÑ1Ô1��øÝð %ð %ð %Ø”?¥fÒ,Ð,Ø×2Ò2Ñ4Ô4Ð4Ý”H˜R‘L”L�LØØ˜9�}Ð$Ð$Ð$Ð$Ð$Ð$øøøøð%øøøð ð Ø×(Ò(¨Ñ,Ô,Ð,Ð,à×.Ò.Ñ0Ô0Ð0Ý”˜‘”�Ø�4sZ   Á"A> Á><D.Â=1D.Ã/)DÄD.Ä
D(Ä#D.Ä'D(Ä(D.Ä-D.ÅE Å
F(Å!<F#ÆF(Æ#F(r'   r(   rA   r/   c                ón  — d }t          t          ¦  «        5  t          j        |¦  «        x}j        |j        f}d d d ¦  «         n# 1 swxY w Y   |                      ¦   «          t          j        |¦  «         | j        r| j	        s| j
        �|‚t          t          ¦  «        5  t          j        | j        ¦  «        }||j        |j        fk    r&t          | j        ¦  «                             ¦   «          d d d ¦  «         n# 1 swxY w Y   |                      ¦   «          |                      ¦   «          d S r   )r   r/   rF   ÚfstatÚst_devÚst_inorQ   rR   Ú_fallback_to_softÚ_preserve_lock_fileÚ_on_acquiredÚlstatrE   r	   ÚunlinkÚ_fallback_to_soft_lockr   )r   r'   rA   ÚidentityrY   Úcurrents         r   r@   z!UnixFileLock._switch_to_soft_lockv   s¦  € ð 04ˆHÝ�'Ñ"Ô"ð Hð HÝ%'¤X¨b¡\¤\Ð1˜EÔ9¸5¼<ÐG�ðHð Hð Hñ Hô Hð Hð Hð Hð Hð Hð Høøøð Hð Hð Hð Hà×*Ò*Ñ,Ô,Ð,ÝŒH�R‰LŒLˆLØÔ)ð $¨TÔ-Eð $ÈÔIZÐIfð $Ð#Ý�'Ñ"Ô"ð 2ð 2Ýœ( 4¤>Ñ2Ô2�Ø ¤°´Ð?Ò?Ð?Ý˜œÑ(Ô(×/Ò/Ñ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð ×'Ò'Ñ)Ô)Ð)Ø�MŠM‰OŒOˆOˆOˆOs$   —#AÁA
ÁA
Â$ADÄDÄ	Dc                ó®  — d}	 t          j        |¦  «        }|j        dk    r,t          j        |d¦  «         |                      |¦  «         d}n7# t
          $ r* |                      ¦   «          t          j        |¦  «         ‚ w xY w|r$|                      ||j	        |j
        f¦  «         d S |                      ¦   «          t          j        |¦  «         d S )NFr   T)rF   rY   Úst_nlinkÚ	ftruncateÚ_apply_explicit_moder/   rQ   rR   Ú_mark_descriptor_ownedrZ   r[   )r   r'   ÚkeepÚstat_results       r   rS   z UnixFileLock._finalize_locked_fd‰   sæ   € ð ˆDð	Ý œh r™lœl�ØÔ'¨1Ò,Ð,Ý”L  QÑ'Ô'Ð'Ø×-Ò-¨bÑ1Ô1Ð1Ø�DøøÝð ð ð Ø×.Ò.Ñ0Ô0Ð0Ý”˜‘”�Øðøøøð ð Ø×+Ò+¨B°Ô1CÀ[ÔEWÐ0XÑYÔYÐYÐYÐYà×.Ò.Ñ0Ô0Ð0Ý”˜‘”���s   „AA Á4Bc                ó°   — | j         rNt          t          ¦  «        5  t          j        || j        j        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S d S r   )Úhas_explicit_moder   rO   rF   ÚfchmodÚ_contextÚmode©r   r'   s     r   rg   z!UnixFileLock._apply_explicit_modež   s    € ØÔ%ð 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ð 6ð 6ð 6ð6ð 6s   œ A	Á	AÁA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)	Ú_softrr   ÚwarningsÚwarnÚasyncioru   rv   Ú
isinstanceÚ	__class__)r   rr   ru   rv   s       r   ra   z#UnixFileLock._fallback_to_soft_lock£   sg   € ð ,Ð+Ð+Ð+Ð+Ð+åŒ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        ¦  «        }t          |¦  «         |                      ¦   «          |                      |d¬¦  «         d S )Nr(   T)Údefault_suppresses)r   rn   Úlock_file_fdr5   rQ   Ú_close_released_fdrp   s     r   r   zUnixFileLock._release­   sT   € Ý�e˜Tœ]Ô7Ñ8Ô8ˆBõ �r‰NŒNˆNØ×*Ò*Ñ,Ô,Ð,Ø×#Ò# B¸4Ð#Ñ@Ô@Ð@Ð@Ð@r   Nr    )r   rB   )r'   r(   rA   r/   r   r   ©r'   r(   r   r   )r!   r"   r#   r$   r   r?   r@   rS   rg   ra   r   r%   r   r   r   r   <   sµ   € € € € € ð	ð 	ð	:ð 	:ð 	:ð 	:ð
*	ð *	ð *	ð *	ðX	ð 	ð 	ð 	ð&	ð 	ð 	ð 	ð*	6ð 	6ð 	6ð 	6ð
	hð 	hð 	hð 	hð	Að 	Að 	Að 	Að 	Að 	Ar   Ú	has_fcntl)r   r2   r5   r‚   )r'   r(   r   r)   r�   )r7   r(   r   r)   )r7   r(   r   r   )'Ú
__future__r   rF   Úsysrx   Ú
contextlibr   r0   r   r   r   r   Úpathlibr	   Útypingr
   r   Ú_apir   Ú_utilr   r‚   Úplatformr   r+   r,   r-   r.   r4   Ú_Ú	frozensetr&   Ú__annotations__r2   r5   ÚImportErrorÚAttributeErrorr6   Ú__all__r%   r   r   ú<module>r‘      sD  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ð Ð Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *à€	Ø„<�7ÒÐð&ð &ð &ð &ð &�|ñ &ô &ð &ð &ð+ØˆˆˆàŒ[˜%œ-¨¬¸¼ÐFˆð ˆ	ð 5>°I¸vÀvÈ{Ð>[Ñ4\Ô4\ÐÐ\Ð\Ð\Ñ\ð		ð 		ð 		ð 		ð	+ð 	+ð 	+ð 	+ð 	+øð5 ˜Ð(ð 6ð 6ð 6Ø)?ÐÐ?Ð?Ð?Ñ?ð	6ð 	6ð 	6ð 	6ð	6ð 	6ð 	6ð 	6ð 	6ð 	6ð6øøøð:xAð xAð xAð xAð xA�|ñ xAô xAð xAðv „<�7ÒÐØ˜{Ð+€G€G€GàQÐQÐQ€G€G€Gs   ÁB ÂB2Â1B2