
    UV8
                     Z    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e          Z
dS )    )absolute_importN   )LockBase	NotLocked	NotMyLockLockTimeoutAlreadyLockedc                   :    e Zd ZdZd
dZddZd Zd Zd Zd	 Z	dS )SymlinkLockFilez'Lock access to a file using symlink(2).TNc                     t          j        | |||           t          j                            | j                  d         | _        d S )Nr   )r   __init__ospathsplitunique_name)selfr   threadedtimeouts       :/usr/lib/python3/dist-packages/lockfile/symlinklockfile.pyr   zSymlinkLockFile.__init__   s=    $h8887==)9::1=    c                    ||n| j         }t          j                    }||dk    r||z  }	 	 t          j        | j        | j                   d S # t          $ r |                                 rY d S |Kt          j                    |k    r4|dk    rt          d| j	        z            t          d| j	        z            t          j        ||dz  nd           Y nw xY w)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_times      r   acquirezSymlinkLockFile.acquire   s'    %0''dl9;;7Q;;H	
4+T^<<<& %  M M M$$&& MFF *ty{{X/E/E"Q;;"- /=.2i/8 #9 #9 9 #00F04	1: #; #; ;Jw/Bw||LLLLLM		s   A C0A(CCc                     |                                  st          d| j        z            |                                 st	          d| j        z            t          j        | j                   d S )Nz%s is not lockedz%s is locked, but not by me)	is_lockedr   r   r   r   r   unlinkr   r   s    r   releasezSymlinkLockFile.release6   sn    ~~ 	G.:;;;""$$ 	G9DIEFFF
	$.!!!!!r   c                 J    t           j                            | j                  S N)r   r   islinkr   r$   s    r   r"   zSymlinkLockFile.is_locked=   s    w~~dn---r   c                     t           j                            | j                  o!t          j        | j                  | j        k    S r'   )r   r   r(   r   readlinkr   r$   s    r   r   zSymlinkLockFile.i_am_locking@   s8    t~.. DK//43CC	Er   c                     t           j                            | j                  rt          j        | j                   d S d S r'   )r   r   r(   r   r#   r$   s    r   
break_lockzSymlinkLockFile.break_lockD   s<    7>>$.)) 	&Idn%%%%%	& 	&r   )TNr'   )
__name__
__module____qualname____doc__r   r    r%   r"   r   r,    r   r   r   r   
   s        11> > > >! ! ! !F" " ". . .E E E& & & & &r   r   )
__future__r   r   r    r   r   r   r   r	   r   r1   r   r   <module>r4      s    & & & & & & 				              <& <& <& <& <&h <& <& <& <& <&r   