o
    7D©i8
  ã                   @   sL   d dl mZ d dlZd dlZddlmZmZmZmZm	Z	 G dd„ deƒZ
dS )é    )Úabsolute_importNé   )ÚLockBaseÚ	NotLockedÚ	NotMyLockÚLockTimeoutÚAlreadyLockedc                   @   sD   e Zd ZdZddd„Zddd„Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dS )ÚSymlinkLockFilez'Lock access to a file using symlink(2).TNc                 C   s(   t  | |||¡ tj | j¡d | _d S )Nr   )r   Ú__init__ÚosÚpathÚsplitÚunique_name)Úselfr   ÚthreadedÚtimeout© r   úQ/var/www/Datamplify/venv/lib/python3.10/site-packages/lockfile/symlinklockfile.pyr
      s   zSymlinkLockFile.__init__c                 C   sÀ   |d ur|n| j }t ¡ }|d ur|dkr||7 }	 zt | j| j¡ W d S  ty^   |  ¡ r3Y d S |d urOt ¡ |krO|dkrHtd| j	 ƒ‚t
d| j	 ƒ‚t |d urY|d nd¡ Y nw q)Nr   Tz&Timeout waiting to acquire lock for %sz%s is already lockedé
   gš™™™™™¹?)r   Útimer   Úsymlinkr   Ú	lock_fileÚOSErrorÚi_am_lockingr   r   r   Úsleep)r   r   Úend_timer   r   r   Úacquire   s,   îþÿñüzSymlinkLockFile.acquirec                 C   s<   |   ¡ std| j ƒ‚|  ¡ std| j ƒ‚t | j¡ d S )Nz%s is not lockedz%s is locked, but not by me)Ú	is_lockedr   r   r   r   r   Úunlinkr   ©r   r   r   r   Úrelease6   s
   zSymlinkLockFile.releasec                 C   s   t j | j¡S ©N)r   r   Úislinkr   r   r   r   r   r   =   s   zSymlinkLockFile.is_lockedc                 C   s    t j | j¡ot  | j¡| jkS r!   )r   r   r"   r   Úreadlinkr   r   r   r   r   r   @   s   ÿzSymlinkLockFile.i_am_lockingc                 C   s"   t j | j¡rt  | j¡ d S d S r!   )r   r   r"   r   r   r   r   r   r   Ú
break_lockD   s   ÿzSymlinkLockFile.break_lock)TNr!   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   r   r    r   r   r$   r   r   r   r   r	   
   s    

#r	   )Ú
__future__r   r   r   Ú r   r   r   r   r   r	   r   r   r   r   Ú<module>   s
    