§
    dŠtjÖ2  ã                  ó&  — U d dl mZ d dl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mZ dd	lmZmZmZ dd
lmZ ddlmZmZmZmZ dZded<   dZ ded<   dZ!ded<   dZ"ded<    G d„ de¦  «        Z#d%d„Z$d&d „Z%d'd$„Z&dgZ'dS )(é    )ÚannotationsN)Úsuppress)ÚEACCESÚEEXISTÚEPERM)ÚPath)ÚFinalé   )ÚBaseFileLockÚ_raise_grouped_errors)Ú	host_nameÚowner_is_staleÚprocess_start_token)ÚSTRICT_SOFT_SENTINEL_RECORD)Úbreak_lock_fileÚensure_directory_existsÚraise_on_not_writable_fileÚ	write_allg       @zFinal[float]Ú_MALFORMED_LOCK_AGE_THRESHOLDi   z
Final[int]Ú_MAX_LOCK_FILE_SIZEé
   Ú_UNLINK_MAX_RETRIESé   Ú#_MARKER_WITH_START_TOKEN_LINE_COUNTc                  óÌ   — e Zd ZU dZdZded<   dZded<   dZded	<   dZded
<   dd„Z	dd„Z
dd„Zedd„¦   «         Zed d„¦   «         Zed!d„¦   «         Zdd„Zdd„Zd"d„Zd#d„ZdS )$ÚSoftFileLockaz  
    Cooperative file lock based on a shared existence marker.

    Unlike :class:`UnixFileLock <filelock.UnixFileLock>` and :class:`WindowsFileLock <filelock.WindowsFileLock>`, this
    lock does not use OS-level locking primitives. Instead, it creates the lock file with ``O_CREAT | O_EXCL`` and
    treats its existence as the lock indicator. The filesystem must provide coherent exclusive creation and directory
    updates to each participating process. A crash can leave the marker behind.

    The marker contains the holder's PID and hostname. A contender may remove it when it can no longer find a same-host
    process with that PID. A configured :attr:`~filelock.BaseFileLock.lifetime` also permits removal based on marker
    age, including while the holder remains alive. Age-based expiry can overlap protected operations and does not
    provide strict mutual exclusion.

    TÚboolÚ_lifetime_supported)ÚStrictSoftFileLockÚSoftFileLeaseztuple[str, str] | NoneÚ_lifetime_replacementsFÚ_preserve_lock_file_supportedÚ_on_acquired_supportedÚreturnÚNonec                ób  — t          | j        ¦  «         t          | j        ¦  «         t          j        t          j        z  t          j        z  t          j        z  }t          t          dd ¦  «        x}�||z  }	 t          j	        | j        ||  
                    ¦   «         ¦  «        }n]# t          $ rP}|j        t          k    s!|j        t          k    rt          j        dk    s‚ |                      ¦   «          Y d }~d S d }~ww xY w|                      |¦  «         |                      |¦  «         d S )NÚ
O_NOFOLLOWÚwin32)r   Ú	lock_filer   ÚosÚO_WRONLYÚO_CREATÚO_EXCLÚO_TRUNCÚgetattrÚopenÚ
_open_modeÚOSErrorÚerrnor   r   ÚsysÚplatformÚ_try_break_stale_lockÚ_mark_descriptor_pendingÚ_publish_held_marker)ÚselfÚflagsÚ
o_nofollowÚfdÚ	exceptions        úL/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/filelock/_soft.pyÚ_acquirezSoftFileLock._acquire3   s  € Ý" 4¤>Ñ2Ô2Ð2Ý ¤Ñ/Ô/Ð/õ ”�bœjÑ(­2¬9Ñ4µr´zÑAˆÝ!¥" l°DÑ9Ô9Ð9ˆJÐFØ�ZÑˆEð	Ý”˜œ¨°·²Ñ0AÔ0AÑBÔBˆBˆBøÝð 	ð 	ð 	à”¥6Ò)Ð)¨i¬oÅÒ.GÐ.GÍCÌLÐ\cÒLcÐLcàØ×&Ò&Ñ(Ô(Ð(ØˆFˆFˆFˆFˆFøøøøð	øøøð 	×%Ò% bÑ)Ô)Ð)Ø×!Ò! "Ñ%Ô%Ð%Ð%Ð%s   Á:-B( Â(
DÂ2AC=Ã=Dr<   Úintc                ó  — d }	 t          t          j        |¦  «        ¦  «        }|                      |¦  «         nµ# t          $ r¨ |                      ¦   «          t          j        |¦  «         t          t          ¦  «        5  |�Pt          t          j	        | j
        ¦  «        ¦  «        |k    r&t          | j
        ¦  «                             ¦   «          d d d ¦  «         n# 1 swxY w Y   ‚ w xY w|                      ||¦  «         d S ©N)Ú_file_identityr*   ÚfstatÚ_write_lock_infoÚBaseExceptionÚ_mark_descriptor_releasedÚcloser   r2   Úlstatr)   r   ÚunlinkÚ_mark_descriptor_owned)r9   r<   Úidentitys      r>   r8   z!SoftFileLock._publish_held_markerG   s;  € ð ,0ˆð		Ý%¥b¤h¨r¡l¤lÑ3Ô3ˆHØ×!Ò! "Ñ%Ô%Ð%Ð%øÝð 	ð 	ð 	Ø×*Ò*Ñ,Ô,Ð,ÝŒH�R‰LŒLˆLÝ�'Ñ"Ô"ð 2ð 2ØÐ'­N½2¼8ÀDÄNÑ;SÔ;SÑ,TÔ,TÐX`Ò,`Ð,`Ý˜œÑ(Ô(×/Ò/Ñ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð ð	øøøð 	×#Ò# B¨Ñ1Ô1Ð1Ð1Ð1s/   „6; »AC-ÂAC ÃC-Ã C$	Ã$C-Ã'C$	Ã(C-c                ó´  — t          t          t          ¦  «        5  t          | j        ¦  «        \  }}}|t
          k    r	 d d d ¦  «         d S t          |¦  «        }|€Ct          j        ¦   «         |z
  t          k    rt          | j        ||¦  «         	 d d d ¦  «         d S t          |Ž rt          | j        ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rB   )r   r2   Ú
ValueErrorÚ_read_lock_filer)   r   Ú_parse_lock_holderÚtimer   r   r   )r9   ÚcontentÚmtimeÚinoÚholders        r>   r6   z"SoftFileLock._try_break_stale_lockX   sR  € Ý•g�zÑ*Ô*ð 	<ð 	<Ý"1°$´.Ñ"AÔ"AÑˆG�U˜CØÕ5Ò5Ð5Øð	<ð 	<ð 	<ñ 	<ô 	<ð 	<ð 	<ð 	<õ (¨Ñ0Ô0ˆFàˆ~õ ”9‘;”; Ñ&Õ*GÒGÐGÝ# D¤N°E¸3Ñ?Ô?Ð?Øð	<ð 	<ð 	<ñ 	<ô 	<ð 	<ð 	<ð 	<õ ˜vÐ&ð <Ý ¤°°sÑ;Ô;Ð;ð	<ð 	<ð 	<ñ 	<ô 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<øøøð 	<ð 	<ð 	<ð 	<ð 	<ð 	<s   ›%CÁACÂ!CÃCÃCc                óè   — t          j        ¦   «         › dt          ¦   «         › d�}t          t          j        ¦   «         ¦  «        x}�||› d�z  }t	          | |                     ¦   «         ¦  «         d S )Nú
)r*   Úgetpidr   r   r   Úencode)r<   ÚinfoÚtokens      r>   rE   zSoftFileLock._write_lock_infoj   sk   € õ
 ”)‘+”+Ð0Ð0¥¡¤Ð0Ð0Ð0ˆÝ(­¬©¬Ñ5Ô5Ð5ˆEÐBØ�u�L�L�LÑ ˆDÝ�"�d—k’k‘m”mÑ$Ô$Ð$Ð$Ð$ó    ú
int | Nonec                óæ   — t          t          t          ¦  «        5  t          t	          | j        ¦  «        d         ¦  «        }|�|d         cddd¦  «         S 	 ddd¦  «         n# 1 swxY w Y   dS )z¿
        The PID of the process holding this lock, read from the lock file.

        :returns: the PID as an integer, or ``None`` if the lock file does not exist or cannot be parsed

        r   N)r   r2   rN   rP   rO   r)   )r9   rU   s     r>   ÚpidzSoftFileLock.pidt   sÄ   € õ •g�zÑ*Ô*ð 	!ð 	!Ý'­¸¼Ñ(GÔ(GÈÔ(JÑKÔKˆFØÐ!Ø˜a”yð	!ð 	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!à!ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð ˆts   ›1A&Á&A*Á-A*c                ó4  — t          t          t          ¦  «        5  t          t	          | j        ¦  «        d         ¦  «        }|�;|\  }}}|t          j        ¦   «         k    o|t          ¦   «         k    cddd¦  «         S 	 ddd¦  «         n# 1 swxY w Y   dS )z©
        Whether this lock is held by the current process.

        :returns: ``True`` if the lock file exists and names the current process's PID and hostname

        r   NF)	r   r2   rN   rP   rO   r)   r*   rX   r   )r9   rU   r_   ÚhostnameÚ_s        r>   Úis_lock_held_by_uszSoftFileLock.is_lock_held_by_us‚   sþ   € õ •g�zÑ*Ô*ð 	Fð 	FÝ'­¸¼Ñ(GÔ(GÈÔ(JÑKÔKˆFØÐ!Ø#)Ñ ��X˜qØ�bœi™kœkÒ)ÐE¨h½)¹+¼+Ò.Eð		Fð 	Fð 	Fð 	Fñ 	Fô 	Fð 	Fð 	Fà!ð	Fð 	Fð 	Fñ 	Fô 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Føøøð 	Fð 	Fð 	Fð 	Fð
 ˆus   ›ABÂBÂBc                ó¬   — t          t          ¦  «        5  t          | j        ¦  «                             ¦   «          ddd¦  «         dS # 1 swxY w Y   dS )zNForcibly break the lock by removing the lock file, regardless of who holds it.N)r   r2   r   r)   rJ   )r9   s    r>   Ú
break_lockzSoftFileLock.break_lock‘   s�   € å•gÑÔð 	*ð 	*Ý�”Ñ Ô ×'Ò'Ñ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð 	*ð 	*s   •'A	Á	AÁAc                óì  — | j         j        }|€J ‚d }t          t          ¦  «        5  t	          t          j        |¦  «        ¦  «        }d d d ¦  «         n# 1 swxY w Y   |                      ¦   «          	 |                      |d¬¦  «         nR# t          $ rE}	 |  
                    |¦  «         n(# t          $ r}t          d||¦  «         Y d }~nd }~ww xY w‚ d }~ww xY w|  
                    |¦  «         d S )NF)Údefault_suppressesz4lock descriptor close and marker cleanup both failed)Ú_contextÚlock_file_fdr   r2   rC   r*   rD   rG   Ú_close_released_fdrF   Ú_unlink_held_markerr   )r9   r<   rL   Úclose_errorÚcleanup_errors        r>   Ú_releasezSoftFileLock._release–   sx  € ØŒ]Ô'ˆØˆ~ˆ~ˆ~ð ,0ˆÝ•gÑÔð 	4ð 	4Ý%¥b¤h¨r¡l¤lÑ3Ô3ˆHð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4ð 	×&Ò&Ñ(Ô(Ð(ð	Ø×#Ò# B¸5Ð#ÑAÔAÐAÐAøåð 		ð 		ð 		ðØ×(Ò(¨Ñ2Ô2Ð2Ð2øÝ ð ð ð Ý%ØJØØ!ñô ð ð ð ð ð ð øøøøðøøøð øøøøð		øøøð 	× Ò  Ñ*Ô*Ð*Ð*Ð*sM   §"AÁAÁAÁ5B Â
CÂB.Â-CÂ.
CÂ8CÃ	CÃCÃCÃCrL   útuple[int, int] | Nonec                óV  — |€d S t           j        dk    r|                      |¦  «         d S t          t          ¦  «        5  t          t          j        | j        ¦  «        ¦  «        |k    r&t          | j        ¦  «         
                    ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S )Nr(   )r4   r5   Ú_windows_unlink_if_oursr   r2   rC   r*   rI   r)   r   rJ   )r9   rL   s     r>   rk   z SoftFileLock._unlink_held_marker±   sá   € ØÐØˆFÝŒ<˜7Ò"Ð"Ø×(Ò(¨Ñ2Ô2Ð2Ð2Ð2å�'Ñ"Ô"ð 2ð 2Ý!¥"¤(¨4¬>Ñ":Ô":Ñ;Ô;¸xÒGÐGÝ˜œÑ(Ô(×/Ò/Ñ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð 2ð 2s   Á ABÂB"Â%B"útuple[int, int]c                ó˜  — d}t          t          ¦  «        D ]²}	 t          t          j        | j        ¦  «        ¦  «        |k    r d S t          | j        ¦  «                             ¦   «           d S # t          $ rM}|j	        t          t          hvrY d }~ d S |t          dz
  k     rt          j        |¦  «         |dz  }Y d }~Œ«d }~ww xY wd S )Ngü©ñÒMbP?r
   é   )Úranger   rC   r*   rI   r)   r   rJ   r2   r3   r   r   rQ   Úsleep)r9   rL   Úretry_delayÚattemptÚexcs        r>   rq   z$SoftFileLock._windows_unlink_if_ours»   sê   € ØˆÝÕ0Ñ1Ô1ð 	ð 	ˆGðÝ!¥"¤(¨4¬>Ñ":Ô":Ñ;Ô;¸xÒGÐGØ�F�FÝ�T”^Ñ$Ô$×+Ò+Ñ-Ô-Ð-ð ��øõ ð %ð %ð %Ø”9¥V­U OÐ3Ð3Ø�F�F�F�F�F�FØÕ0°1Ñ4Ò4Ð4Ý”J˜{Ñ+Ô+Ð+Ø 1Ñ$�Køøøøøøøøøð%øøøð	ð 	s#   š*A0Á&A0Á0
CÁ:CÂ'CÃCN)r$   r%   )r<   r@   r$   r%   )r$   r]   )r$   r   )rL   ro   r$   r%   )rL   rr   r$   r%   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__r!   r"   r#   r?   r8   r6   ÚstaticmethodrE   Úpropertyr_   rc   re   rn   rk   rq   © r\   r>   r   r      s]  € € € € € € ðð ð  !%ÐÐ$Ð$Ð$Ñ$ð 6]ÐÐ\Ð\Ð\Ñ\ð +0Ð!Ð/Ð/Ð/Ñ/ð $)ÐÐ(Ð(Ð(Ñ(ð&ð &ð &ð &ð(2ð 2ð 2ð 2ð"<ð <ð <ð <ð$ ð%ð %ð %ñ „\ð%ð ðð ð ñ „Xðð ðð ð ñ „Xðð*ð *ð *ð *ð
+ð +ð +ð +ð62ð 2ð 2ð 2ðð ð ð ð ð r\   r   Ústúos.stat_resultr$   rr   c                ó   — | j         | j        fS rB   )Úst_devÚst_ino)r‚   s    r>   rC   rC   Î   s   € ð Œ9�b”iÐÐr\   ÚpathÚstrútuple[str | None, float, int]c           	     ó6  — t          j        | ¦  «        }t          j        |j        ¦  «        sd |j        |j        fS t          j        | t           j        t          t           dd¦  «        z  t          t           dd¦  «        z  ¦  «        }	 t          j
        |¦  «        }t          j        |j        ¦  «        s#d |j        |j        ft          j        |¦  «         S t          j        |t          dz   ¦  «        }t          j        |¦  «         n# t          j        |¦  «         w xY wt          |¦  «        t          k    rNt          t           ¦  «        5  |                     d¦  «        |j        |j        fcd d d ¦  «         S # 1 swxY w Y   d |j        |j        fS )Nr'   r   Ú
O_NONBLOCKr
   zutf-8)r*   rI   ÚstatÚS_ISREGÚst_modeÚst_mtimer†   r0   ÚO_RDONLYr/   rD   rH   Úreadr   Úlenr   ÚUnicodeDecodeErrorÚdecode)r‡   r‚   r<   Údatas       r>   rO   rO   Ô   s¦  € õ
 
Œ�$‰Œ€BÝŒ<˜œ
Ñ#Ô#ð ,Ø�R”[ "¤)Ð+Ð+õ 
Œ�•r”{¥W­R°¸qÑ%AÔ%AÑAÅGÍBÐP\Ð^_ÑD`ÔD`Ñ`Ñ	aÔ	a€BðÝŒX�b‰\Œ\ˆÝŒ|˜BœJÑ'Ô'ð 	0Ø˜œ b¤iÐ/õ 	Œ�‰Œˆˆõ Œw�rÕ.°Ñ2Ñ3Ô3ˆå
Œ�‰Œˆˆø�Œ�‰ŒˆˆøøøÝ
ˆ4�y„yÕ'Ò'Ð'ÝÕ(Ñ)Ô)ð 	@ð 	@Ø—;’;˜wÑ'Ô'¨¬°b´iÐ?ð	@ð 	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@à�”˜bœiÐ'Ð's$   Â;D ÃD ÄD#Å"FÆFÆFrR   ú
str | Noneú"tuple[int, str, int | None] | Nonec                ó^  — | r7t          |                      ¦   «                              ¦   «         x}¦  «        dvrd S 	 t          |d         ¦  «        }t          |¦  «        t          k    rt          |d         ¦  «        nd }n# t
          $ r Y d S w xY wd|cxk    rdk    sn d S ||d         |fS )N>   rt   r   r   rt   r
   iÿÿÿ)r’   ÚstripÚ
splitlinesr@   r   rN   )rR   Úlinesr_   Ústart_tokens       r>   rP   rP   í   sÐ   € ð
 ð •c 7§=¢=¡?¤?×#=Ò#=Ñ#?Ô#?Ð?˜%Ñ@Ô@ÈÐNÐNØˆtðÝ�%˜”(‰mŒmˆÝ'*¨5¡z¤zÕ5XÒ'XÐ'X•c˜% œ(‘m”m�mÐ^bˆˆøÝð ð ð Øˆtˆtðøøøð �Ð Ð Ò Ð �yÒ Ð Ð Ð ØˆtØ��a”˜+Ð%Ð%s   ½AB Â
BÂB)r‚   rƒ   r$   rr   )r‡   rˆ   r$   r‰   )rR   r–   r$   r—   )(Ú
__future__r   r*   rŒ   r4   rQ   Ú
contextlibr   r3   r   r   r   Úpathlibr   Útypingr	   Ú_apir   r   Ú	_identityr   r   r   Ú_soft_protocolr   Ú_utilr   r   r   r   r   r~   r   r   r   r   rC   rO   rP   Ú__all__r�   r\   r>   ú<module>r¦      sÅ  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø €€€Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bà.1Ð Ð 1Ð 1Ð 1Ñ 1Ø"&Ð Ð &Ð &Ð &Ñ &Ø"$Ð Ð $Ð $Ð $Ñ $Ø23Ð #Ð 3Ð 3Ð 3Ñ 3ðtð tð tð tð t�<ñ tô tð tðn ð  ð  ð  ð(ð (ð (ð (ð2&ð &ð &ð &ð, ð€€€r\   