Current File : //opt/cloudlinux/venv/lib/python3.11/site-packages/virtualenv/util/__pycache__/lock.cpython-311.pyc
�

r�d����dZddlZddlZddlmZmZddlmZddlm	Z	ddl
mZmZddl
mZmZGd�d	e��ZiZe��ZGd
�de���ZGd
�de��ZGd�de��Zgd�ZdS)z7holds locking functionality that works across processes�N)�ABCMeta�abstractmethod)�contextmanager)�Path)�Lock�RLock)�FileLock�Timeoutc�6��eZdZ�fd�Zd�fd�	Zd�fd�	Z�xZS)	�_CountedFileLockc�F��tj�|��}tj�|��s&	tj|��n#t
$rYnwxYwt
���|��d|_t��|_
dS�Nr)�os�path�dirname�isdir�makedirs�OSError�super�__init__�countr�thread_safe)�self�	lock_file�parent�	__class__s   ��e/builddir/build/BUILD/cloudlinux-venv-1.0.2/venv/lib/python3.11/site-packages/virtualenv/util/lock.pyrz_CountedFileLock.__init__s���������+�+���w�}�}�V�$�$�	�
���F�#�#�#�#���
�
�
���
����
������#�#�#���
� �7�7����s�A�
A#�"A#N皙�����?c����|j5|jdkr"t���||��|xjdz
c_ddd��dS#1swxYwYdS)Nr�)rrr�acquire)r�timeout�
poll_intervalrs   �rr!z_CountedFileLock.acquires����
�
�	�	��z�Q����������7�7�7��J�J�!�O�J�J�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�>A�A�AFc����|j5|jdkr"t���|���t	|jdz
d��|_ddd��dS#1swxYwYdS)Nr )�forcer)rrr�release�max)rr%rs  �rr&z_CountedFileLock.releases����
�
�	0�	0��z�Q��������e��,�,�,��T�Z�!�^�Q�/�/�D�J�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�	0�	0s�AA!�!A%�(A%)Nr�F)�__name__�
__module__�__qualname__rr!r&�
__classcell__�rs@rrr
st�������	#�	#�	#�	#�	#�������0�0�0�0�0�0�0�0�0�0�rc��eZdZd�Zd�Zd�Zd�Zed���Zed���Z	ee
dd�����Zee
d	�����Zd
S)�PathLockBasec��t|��}|���r|���n||_dS�N)r�exists�resolver)r�folderrs   rrzPathLockBase.__init__+s1���F�|�|��&*�k�k�m�m�=�D�L�L�N�N�N���	�	�	r.c�0�|jj�d|j�d�S)N�(�))rr)r�rs r�__repr__zPathLockBase.__repr__/s ���.�)�8�8�D�I�8�8�8�8r.c�B�t|��|j|z��Sr2)�typer�r�others  r�__div__zPathLockBase.__div__2s���t�D�z�z�$�)�e�+�,�,�,r.c�,�|�|��Sr2)r?r=s  r�__truediv__zPathLockBase.__truediv__5s���|�|�E�"�"�"r.c��t�r2��NotImplementedErrorr9s r�	__enter__zPathLockBase.__enter__8���!�!r.c��t�r2rC�r�exc_type�exc_val�exc_tbs    r�__exit__zPathLockBase.__exit__<rFr.Fc��t�r2rC�r�name�no_blocks   r�lock_for_keyzPathLockBase.lock_for_key@�
��"�!r.c��t�r2rC�rrOs  r�non_reentrant_lock_for_keyz'PathLockBase.non_reentrant_lock_for_keyErRr.Nr()
r)r*r+rr:r?rArrErLrrQrU�r.rr0r0*s�������>�>�>�9�9�9�-�-�-�#�#�#��"�"��^�"��"�"��^�"���"�"�"��^��^�"���"�"��^��^�"�"�"r.r0)�	metaclassc���eZdZ�fd�Zd
d�Zed���Zd�Zd�Zd�Z	dd	�Z
ed
���Zedd���Z
ed���Z�xZS)�ReentrantFileLockc�X��t���|��d|_dSr2)rr�_lock)rr5rs  �rrzReentrantFileLock.__init__Ls&���
������ � � ���
�
�
r.�c���t|j|�d�z��}t5|tvrt	|��t|<t|cddd��S#1swxYwYdS�Nz.lock)�strr�_store_lock�_lock_storer)rrOrs   r�_create_lockzReentrantFileLock._create_lockPs�����	�t�N�N�N�2�3�3�	�
�	*�	*���+�+�)9�)�)D�)D��I�&��y�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�	*�	*s�-A�A �#A c���|�lt5|j5|jdkr t�|jd��ddd��n#1swxYwYddd��dS#1swxYwYdSdSr)r`rrra�popr��locks r�	_del_lockzReentrantFileLock._del_lockWs������
>�
>��%�>�>��z�Q���#������=�=�=�>�>�>�>�>�>�>�>�>�>�>����>�>�>�>�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>����
>�
>�
>�
>�
>�
>��s3�A"�,A
�A"�
A	�A"�A	�A"�"A&�)A&c�:�|�|j��dSr2)rgr[r9s r�__del__zReentrantFileLock.__del___s�����t�z�"�"�"�"�"r.c�l�|���|_|�|j��dSr2)rbr[�
_lock_filer9s rrEzReentrantFileLock.__enter__bs/���&�&�(�(��
�����
�#�#�#�#�#r.c�|�|�|j��|�|j��d|_dSr2)�_releaser[rgrHs    rrLzReentrantFileLock.__exit__fs5���
�
�d�j�!�!�!����t�z�"�"�"���
�
�
r.Fc�N�	tjt|j����n#t$rYnwxYw	|�d��dS#t$rI|r�tjd|j	��|�
��|���YdSwxYw)Ng-C��6?z/lock file %s present, will block until released)rrr_rrr!r
�logging�debugrr&)rrfrPs   rrkzReentrantFileLock._lock_fileks���	��K��D�I���'�'�'�'���	�	�	��D�	����	��L�L�� � � � � ���	�	�	��
���M�K�T�^�\�\�\��L�L�N�N�N��L�L�N�N�N�N�N�N�	���s�&)�
6�6�A�AB$�#B$c�.�|���dSr2)r&res rrmzReentrantFileLock._release|s���������r.c#�4K�|�|��}		|�||��dV�|�|��n#|�|��wxYw	|�|��d}dS#|�|��d}wxYwr2)rbrkrmrg)rrOrPrfs    rrQzReentrantFileLock.lock_for_key�s������ � ��&�&��	�
$�����h�/�/�/������
�
�d�#�#�#�#���
�
�d�#�#�#�#����#��N�N�4� � � ��D�D�D��
�N�N�4� � � ��D�K�K�K�Ks�A
�A>�
A!�!A>�>Bc#�K�tt|j|�d�z����5dV�ddd��dS#1swxYwYdSr^)rr_rrTs  rrUz,ReentrantFileLock.non_reentrant_lock_for_key�s�����
�c�$�)��n�n�n�"<�=�=�
>�
>�	�	��E�E�E�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�<�A�A)r\r()r)r*r+rrb�staticmethodrgrirErLrkrmrrQrUr,r-s@rrYrYKs�������������*�*�*�*��>�>��\�>�#�#�#�$�$�$����
����"����\���
�
�
��^�
�����^�����r.rYc�H�eZdZd�Zd�Zedd���Zed���ZdS)�NoOpFileLockc��t�r2rCr9s rrEzNoOpFileLock.__enter__����!�!r.c��t�r2rCrHs    rrLzNoOpFileLock.__exit__�rxr.Fc#�K�dV�dSr2rVrNs   rrQzNoOpFileLock.lock_for_key������
�����r.c#�K�dV�dSr2rVrTs  rrUz'NoOpFileLock.non_reentrant_lock_for_key�r{r.Nr()r)r*r+rErLrrQrUrVr.rrvrv�sm������"�"�"�"�"�"������^������^���r.rv)rvrYr
)�__doc__ror�abcrr�
contextlibr�pathlibr�	threadingrr�filelockr	r
rrar`r0rYrv�__all__rVr.r�<module>r�sg��=�=�����	�	�	�	�'�'�'�'�'�'�'�'�%�%�%�%�%�%�������!�!�!�!�!�!�!�!�&�&�&�&�&�&�&�&�0�0�0�0�0�x�0�0�0�2���d�f�f��"�"�"�"�"�W�"�"�"�"�BE�E�E�E�E��E�E�E�P
�
�
�
�
�<�
�
�
� �����r.