PK APOCALYPSE V1

APOCALYPSE V1

Current Path : /opt/hc_python/lib/python3.12/site-packages/virtualenv/util/__pycache__/
Upload File :
Current File : //opt/hc_python/lib/python3.12/site-packages/virtualenv/util/__pycache__/lock.cpython-312.pyc

�

���g����dZddlmZddlZddlZddlmZmZddlm	Z	m
Z
ddlmZddl
mZmZddlmZmZej&e�ZGd	�d
e�ZiZe�ZGd�de�ZGd
�de�ZGd�de�Zgd�Zy)z8holds locking functionality that works across processes.�)�annotationsN)�ABC�abstractmethod)�contextmanager�suppress)�Path)�Lock�RLock)�FileLock�Timeoutc�8��eZdZd�fd�Zd�fd�	Zd�fd�	Z�xZS)�_CountedFileLockc�>��tjj|�}tjj|�s-t	t
�5tj|�ddd�t�|�!|�d|_	t�|_y#1swY�/xYw�Nr)�os�path�dirname�isdirr�OSError�makedirs�super�__init__�countr
�thread_safe)�self�	lock_file�parent�	__class__s   ��C/opt/hc_python/lib/python3.12/site-packages/virtualenv/util/lock.pyrz_CountedFileLock.__init__sg���������+���w�w�}�}�V�$��'�"����F�#�#�	����#���
� �7���#�"�s�B�Bc����|jj|�dn|��st|j��|jdk(rt
�|�||�|xjdz
c_y)N���)�timeoutr�)r�acquirerrrr)rr"�
poll_intervalrs   �rr$z_CountedFileLock.acquiresU������'�'�g�o��7�'�S��$�.�.�)�)��:�:��?��G�O�G�]�3��
�
�a��
�c���|j5|jdkDr|jj�|jdk(rt�|�	|��t	|jdz
d�|_ddd�y#1swYyxYw)Nrr#)�force)rr�releaser�max)rr(rs  �rr)z_CountedFileLock.release#sd���
�
�
��z�z�A�~�� � �(�(�*��z�z�Q�����e��,��T�Z�Z�!�^�Q�/�D�J��
�
�s�A'A>�>B��return�None)Ng�������?�F)�__name__�
__module__�__qualname__rr$r)�
__classcell__�rs@rrrs���#��0�0r&rc�x�eZdZd	d�Zd
d�Zd�Zed��Zed��Zee	dd���Z
ee	d���Zy)�PathLockBasec�t�t|�}|j�r|j�|_y||_y�N)r�exists�resolver)r�folderrs   rrzPathLockBase.__init__1s&���F�|��&*�k�k�m�D�L�L�N��	���	r&c�N�|jj�d|j�d�S)N�(�))rr/r�rs r�__repr__zPathLockBase.__repr__5s$���.�.�)�)�*�!�D�I�I�;�a�8�8r&c�>�t|�|j|z�Sr7)�typer)r�others  r�__truediv__zPathLockBase.__truediv__8s���t�D�z�$�)�)�e�+�,�,r&c��t�r7��NotImplementedErrorr>s r�	__enter__zPathLockBase.__enter__;���!�!r&c��t�r7rE�r�exc_type�exc_val�exc_tbs    r�__exit__zPathLockBase.__exit__?rHr&c��t�r7rE�r�name�no_blocks   r�lock_for_keyzPathLockBase.lock_for_keyC�
��"�!r&c��t�r7rE�rrQs  r�non_reentrant_lock_for_keyz'PathLockBase.non_reentrant_lock_for_keyHrTr&Nr+)r,�strr.)r/r0r1rr?rCrrGrNrrSrW�r&rr5r50sq��>�9�-��"��"��"��"���"���"���"���"r&r5c���eZdZd�fd�Zdd�Zed��Zdd�Zd�Zd�Z	d
d�Z
ed��Zed
d	��Z
ed
��Z�xZS)�ReentrantFileLockc�2��t�|�|�d|_yr7)rr�_lock)rr:rs  �rrzReentrantFileLock.__init__Os���
���� ���
r&c��t|j|�d�z�}t5|tvrt	|�t|<t|cddd�S#1swYyxYw�Nz.lock)rXr�_store_lock�_lock_storer)rrQrs   r�_create_lockzReentrantFileLock._create_lockSsG����	�	�t�f�E�N�2�3�	�
���+�)9�)�)D��I�&��y�)��[�[�s�#A�Ac���|�Tt5|j5|jdk(r tj	|j
d�ddd�ddd�yy#1swY�xYw#1swYyxYwr)r`rrra�popr��locks r�	_del_lockzReentrantFileLock._del_lockZsJ�����d�.�.��:�:��?��O�O�D�N�N�D�9�/����.�.����s"�
A$�0A�A$�A!	�A$�$A-c�:�|j|j�yr7)rgr]r>s r�__del__zReentrantFileLock.__del__as�����t�z�z�"r&c�d�|j�|_|j|j�yr7)rbr]�
_lock_filer>s rrGzReentrantFileLock.__enter__ds"���&�&�(��
�����
�
�#r&c�~�|j|j�|j|j�d|_yr7)�_releaser]rgrJs    rrNzReentrantFileLock.__exit__hs)���
�
�d�j�j�!����t�z�z�"���
r&c�d�tt�5tjt	|j
��ddd�	|j
d�y#1swY�xYw#t$rF|r�tjd|j�|j�|j
�YywxYw)Ng-C��6?z/lock file %s present, will block until released)rrrrrXrr$r�LOGGER�debugrr))rrfrRs   rrkzReentrantFileLock._lock_filemsz���g�
��K�K��D�I�I��'��	��L�L�� �	�
��
�	����L�L�J�D�N�N�[��L�L�N��L�L�N�	�s�)A�A �A� AB/�.B/c�$�|j�yr7)r)res rrmzReentrantFileLock._release}s�����r&c#�K�|j|�}		|j||�d��|j|�	|j|�d}y#|j|�wxYw#|j|�d}wxYw�wr7)rbrkrmrg)rrQrRrfs    rrSzReentrantFileLock.lock_for_key�so����� � ��&��	�
$�����h�/���
�
�d�#��N�N�4� ��D���
�
�d�#���N�N�4� ��D�s,�B�A�A(�B�A%�%A(�(A=�=Bc#�K�tt|j|�d�z��5d��ddd�y#1swYyxYw�wr_)rrXrrVs  rrWz,ReentrantFileLock.non_reentrant_lock_for_key�s0����
�c�$�)�)���e�n�"<�=�
>��?�
>�
>�s�%A�5�	A�>�Ar+)�r.)r/r0r1rrb�staticmethodrgrirGrNrkrmrrSrWr2r3s@rr[r[Nsq����*��:��:�#�$��
� �����
��
����r&r[c�:�eZdZd�Zd�Zedd��Zed��Zy)�NoOpFileLockc��t�r7rEr>s rrGzNoOpFileLock.__enter__����!�!r&c��t�r7rErJs    rrNzNoOpFileLock.__exit__�ryr&c#�K�d��y�wr7rYrPs   rrSzNoOpFileLock.lock_for_key��	����
���c#�K�d��y�wr7rYrVs  rrWz'NoOpFileLock.non_reentrant_lock_for_key�r|r}Nr.)r/r0r1rGrNrrSrWrYr&rrwrw�s4��"�"��������r&rw)rwr[r)�__doc__�
__future__r�loggingr�abcrr�
contextlibrr�pathlibr�	threadingr	r
�filelockrr�	getLoggerr/rorrar`r5r[rw�__all__rYr&r�<module>r�sz��>�"��	�#�/��!�&�	��	�	�8�	$��0�x�0�6���f��"�3�"�<C��C�L
�<�
� �r&

if you don't want to be vaporized in a nuclear explosion, i simply have to become nuclear myself… i am atomic