Your IP : 18.118.252.215


Current Path : /opt/alt/python37/lib/python3.7/site-packages/filelock/__pycache__/
Upload File :
Current File : //opt/alt/python37/lib/python3.7/site-packages/filelock/__pycache__/_api.cpython-37.pyc

B

���a� �@s�ddlmZddlZddlZddlZddlZddlmZmZddl	m
Z
ddlmZddl
mZddlmZe�d	�ZGd
d�d�ZGdd
�d
e�Zd
dgZdS)�)�annotationsN)�ABC�abstractmethod)�Lock)�
TracebackType)�Any�)�TimeoutZfilelockc@sBeZdZdZddd�dd�Zdd�dd	�Zd
dddd
�dd�ZdS)�AcquireReturnProxyzDA context aware object that will release the lock file when exiting.�BaseFileLock�None)�lock�returncCs
||_dS)N)r
)�selfr
�r�>/opt/alt/python37/lib/python3.7/site-packages/filelock/_api.py�__init__szAcquireReturnProxy.__init__)rcCs|jS)N)r
)rrrr�	__enter__szAcquireReturnProxy.__enter__ztype[BaseException] | NonezBaseException | NonezTracebackType | None)�exc_type�	exc_value�	tracebackrcCs|j��dS)N)r
�release)rrrrrrr�__exit__szAcquireReturnProxy.__exit__N)�__name__�
__module__�__qualname__�__doc__rrrrrrrr
sr
c@s�eZdZdZd/dddd�dd�Zed	d
�dd��Zedd
�d
d��Zejddd�dd��Ze	dd
�dd��Z
e	dd
�dd��Zedd
�dd��Zd0dd�ddddd�dd �Z
d1ddd"�d#d$�Zdd
�d%d&�Zd'd(d)dd*�d+d,�Zdd
�d-d.�ZdS)2rz+Abstract base class for a file lock object.���zstr | os.PathLike[Any]�floatr)�	lock_file�timeoutrcCs*t�|�|_d|_||_t�|_d|_dS)a�
        Create a new lock object.

        :param lock_file: path to the file
        :param timeout: default timeout when acquiring the lock. It will be used as fallback value in the acquire
        method, if no timeout value (``None``) is given. If you want to disable the timeout, set it to a negative value.
         A timeout of 0 means, that there is exactly one attempt to acquire the file lock.
        Nr)�os�fspath�
_lock_file�
_lock_file_fdr r�_thread_lock�
_lock_counter)rrr rrrr)s

zBaseFileLock.__init__�str)rcCs|jS)z:return: path to the lock file)r#)rrrrrCszBaseFileLock.lock_filecCs|jS)zU
        :return: the default timeout value

        .. versionadded:: 2.0.0
        )�_timeout)rrrrr HszBaseFileLock.timeoutzfloat | str)�valuercCst|�|_dS)zX
        Change the default timeout value.

        :param value: the new value
        N)rr()rr)rrrr QscCst�dS)zbIf the file lock could be acquired, self._lock_file_fd holds the file descriptor of the lock file.N)�NotImplementedError)rrrr�_acquireZszBaseFileLock._acquirecCst�dS)z6Releases the lock and sets self._lock_file_fd to None.N)r*)rrrr�_release_szBaseFileLock._release�boolcCs
|jdk	S)z�

        :return: A boolean indicating if the lock file is holding the lock currently.

        .. versionchanged:: 2.0.0

            This was previously a method and is now a property.
        N)r$)rrrr�	is_lockedds
zBaseFileLock.is_lockedN皙�����?)�poll_intervallzfloat | Noner
)r �
poll_intervalr0rcCsT|dkr|j}|dk	r.d}tj|tdd�|}|j�|jd7_WdQRXt|�}|j}t��}y�x�|j�"|j	s�t
�d||�|��WdQRX|j	r�t
�d||�Pqhd|kr�t��|kr�nnt
�d	||�t
|j��qhd
}t
�||||�t�|�qhWWn<tk
�rH|j�td|jd�|_WdQRX�YnXt|d�S)az
        Try to acquire the file lock.

        :param timeout: maximum wait time for acquiring the lock, ``None`` means use the default :attr:`~timeout` is and
         if ``timeout < 0``, there is no timeout and this method will block until the lock could be acquired
        :param poll_interval: interval of trying to acquire the lock file
        :param poll_intervall: deprecated, kept for backwards compatibility, use ``poll_interval`` instead
        :raises Timeout: if fails to acquire lock within the timeout period
        :return: a context object that will unlock the file when the context is exited

        .. code-block:: python

            # You can use this method in the context manager (recommended)
            with lock.acquire():
                pass

            # Or use an equivalent try-finally construct:
            lock.acquire()
            try:
                pass
            finally:
                lock.release()

        .. versionchanged:: 2.0.0

            This method returns now a *proxy* object instead of *self*,
            so that it can be used in a with statement without side effects.

        Nz+use poll_interval instead of poll_intervall�)�
stacklevelrz#Attempting to acquire lock %s on %szLock %s acquired on %srz"Timeout on acquiring lock %s on %sz2Lock %s not acquired on %s, waiting %s seconds ...)r
)r �warnings�warn�DeprecationWarningr%r&�idr#�timer.�_LOGGER�debugr+r	�sleep�
BaseException�maxr
)rr r1r0�msg�lock_id�
lock_filenameZ
start_timerrr�acquireps>% zBaseFileLock.acquireF)�forcerc	Csr|j�b|jrd|jd8_|jdks*|rdt|�|j}}t�d||�|��d|_t�d||�WdQRXdS)a*
        Releases the file lock. Please note, that the lock is only completely released, if the lock counter is 0. Also
        note, that the lock file itself is not automatically deleted.

        :param force: If true, the lock counter is ignored and the lock is released in every case/
        rrz#Attempting to release lock %s on %szLock %s released on %sN)r%r.r&r7r#r9r:r,)rrBr?r@rrrr�szBaseFileLock.releasecCs|��|S)zE
        Acquire the lock.

        :return: the lock object
        )rA)rrrrr�szBaseFileLock.__enter__ztype[BaseException] | NonezBaseException | NonezTracebackType | None)rrrrcCs|��dS)z�
        Release the lock.

        :param exc_type: the exception type if raised
        :param exc_value: the exception value if raised
        :param traceback: the exception traceback if raised
        N)r)rrrrrrrr�s
zBaseFileLock.__exit__cCs|jdd�dS)z'Called when the lock object is deleted.T)rBN)r)rrrr�__del__�szBaseFileLock.__del__)r)Nr/)F)rrrrr�propertyrr �setterrr+r,r.rArrrrCrrrrr&s		F	r)�
__future__r�loggingr!r8r4�abcrr�	threadingr�typesr�typingr�_errorr	�	getLoggerr9r
r�__all__rrrr�<module>s
H

?>