HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/lib/python3.10/dist-packages/virtualenv/util/__pycache__/lock.cpython-310.pyc
o

3�h��@s�dZddlmZddlZddlZddlmZmZddlm	Z	m
Z
ddlmZddl
mZmZddlmZmZe�e�ZGd	d
�d
e�ZiZe�ZGdd�de�ZGd
d�de�ZGdd�de�Zgd�ZdS)z8holds locking functionality that works across processes.�)�annotationsN)�ABC�abstractmethod)�contextmanager�suppress)�Path)�Lock�RLock)�FileLock�Timeoutcs:eZdZd�fdd�Zd
�fdd�	Zd�fd
d�	Z�ZS)�_CountedFileLock�return�Nonecshtj�|�}tj�|�s%tt��
t�|�Wd�n1s wYt��|�d|_	t
�|_dS�Nr)�os�path�dirname�isdirr�OSError�makedirs�super�__init__�countr	�thread_safe)�self�	lock_file�parent��	__class__��?/usr/local/lib/python3.10/dist-packages/virtualenv/util/lock.pyrs
�z_CountedFileLock.__init__N皙�����?csn|jj|dur	dn|d�st|j��|jdkr.z	t��||�Wn
ty-|j���w|jd7_dS)N���)�timeoutr�)r�acquirerrrr�
BaseException�release)rr#�
poll_intervalrrr r%s


�z_CountedFileLock.acquireFcs�|j�;|jdkr.|jdkrt�j|d�|jd8_|jdkr6|j��Wd�dSWd�dSWd�dS1sAwYdS)Nrr$)�force)rrrr')rr)rrr r''s


��"�z_CountedFileLock.release�r
r)Nr!�F)�__name__�
__module__�__qualname__rr%r'�
__classcell__rrrr rs
rc@sbeZdZddd�Zddd�Zdd	�Zed
d��Zedd
��Zee	ddd���Z
ee	dd���ZdS)�PathLockBaser
rcCs(t|�}|��r|��|_dS||_dS�N)r�exists�resolver)r�folderrrrr r7s zPathLockBase.__init__�strcCs|jj�d|j�d�S)N�(�))rr,r�rrrr �__repr__;szPathLockBase.__repr__cCst|�|j|�Sr1)�typer)r�otherrrr �__truediv__>szPathLockBase.__truediv__cC�t�r1��NotImplementedErrorr8rrr �	__enter__A�zPathLockBase.__enter__cCr=r1r>�r�exc_type�exc_val�exc_tbrrr �__exit__ErAzPathLockBase.__exit__FcCr=r1r>�r�name�no_blockrrr �lock_for_keyI�zPathLockBase.lock_for_keycCr=r1r>�rrHrrr �non_reentrant_lock_for_keyNrKz'PathLockBase.non_reentrant_lock_for_keyNr*)r
r5r+)r,r-r.rr9r<rr@rFrrJrMrrrr r06s



r0cs~eZdZd�fdd�Zddd�Zedd	��Zdd
d�Zdd
�Zdd�Z	ddd�Z
edd��Zeddd��Z
edd��Z�ZS)�ReentrantFileLockr
rcst��|�d|_dSr1)rr�_lock)rr4rrr rUs
zReentrantFileLock.__init__�cCsXt|j|�d��}t�|tvrt|�t|<t|Wd�S1s%wYdS�Nz.lock)r5r�_store_lock�_lock_storer)rrHrrrr �_create_lockYs$�zReentrantFileLock._create_lockc	Cs�|dur@t�0|j�|jdkrt�|jd�Wd�n1s!wYWd�dSWd�dS1s9wYdSdSr)rRrrrS�popr��lockrrr �	_del_lock`s
�P��zReentrantFileLock._del_lockcCs|�|j�dSr1)rXrOr8rrr �__del__gszReentrantFileLock.__del__cCs|��|_|�|j�dSr1)rTrO�
_lock_filer8rrr r@js
zReentrantFileLock.__enter__cCs"|�|j�|�|j�d|_dSr1)�_releaserOrXrBrrr rFns
zReentrantFileLock.__exit__FcCs�tt��t�t|j��Wd�n1swYz|�d�WdSty@|r.�t�	d|j
�|��|��YdSw)Ng-C��6?z/lock file %s present, will block until released)rrrrr5rr%r�LOGGER�debugrr')rrWrIrrr rZss
��zReentrantFileLock._lock_filecCs|��dSr1)r'rVrrr r[�szReentrantFileLock._releasec	cs`�|�|�}z!z|�||�dVW|�|�n|�|�wW|�|�d}dS|�|�d}wr1)rTrZr[rX)rrHrIrWrrr rJ�s�


�zReentrantFileLock.lock_for_keyccsF�tt|j|�d����dVWd�dS1swYdSrQ)rr5rrLrrr rM�s�"�z,ReentrantFileLock.non_reentrant_lock_for_keyr*)rPr+)r,r-r.rrT�staticmethodrXrYr@rFrZr[rrJrMr/rrrr rNTs




rNc@s6eZdZdd�Zdd�Zeddd��Zedd	��Zd
S)�NoOpFileLockcCr=r1r>r8rrr r@��zNoOpFileLock.__enter__cCr=r1r>rBrrr rF�r`zNoOpFileLock.__exit__Fcc��dVdSr1rrGrrr rJ���
zNoOpFileLock.lock_for_keyccrar1rrLrrr rM�rbz'NoOpFileLock.non_reentrant_lock_for_keyNr+)r,r-r.r@rFrrJrMrrrr r_�sr_)r_rNr)�__doc__�
__future__r�loggingr�abcrr�
contextlibrr�pathlibr�	threadingrr	�filelockr
r�	getLoggerr,r\rrSrRr0rNr_�__all__rrrr �<module>s"
!F