File: //usr/local/lib/python3.10/dist-packages/virtualenv/util/__pycache__/lock.cpython-310.pyc
o
3�h� � @ s� d Z ddlmZ ddlZddlZddlmZmZ ddlm Z m
Z
ddlmZ ddl
mZmZ ddlmZmZ e�e�ZG d d
� d
e�Zi Ze� ZG dd� de�ZG d
d� de�ZG dd� de�Zg d�ZdS )z8holds locking functionality that works across processes.� )�annotationsN)�ABC�abstractmethod)�contextmanager�suppress)�Path)�Lock�RLock)�FileLock�Timeoutc s: e Zd Zd� fdd�Zd
� fdd� Zd� fd
d� Z� ZS )�_CountedFileLock�return�Nonec sh t j�|�}t j�|�s%tt��
t �|� W d � n1 s w Y t� �|� d| _ t
� | _d S �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.pyr s
�z_CountedFileLock.__init__N皙�����?c sn | j j|d u r dn|d�st| j��| jdkr.z t� �||� W n
ty- | j �� � w | jd7 _d S )N���)�timeoutr � )r �acquirer r r r �
BaseException�release)r r# �
poll_intervalr r r r% s
�z_CountedFileLock.acquireFc s� | j �; | jdkr.| jdkrt� j|d� | jd8 _| jdkr6| j �� W d � d S W d � d S W d � d S 1 sAw Y d S )Nr r$ )�force)r r r r'