
    UV                     r    d dl mZmZ d dlZd dlZd dlZd dlZddlmZm	Z	m
Z
mZmZmZ  G d de          ZdS )    )absolute_importdivisionN   )LockBase
LockFailed	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 )MkdirLockFilez"Lock file by creating a directory.TNc                     t          j        | |||           t          j                            | j        | j        d| j        | j                  | _	        dS )zs
        >>> lock = MkdirLockFile('somefile')
        >>> lock = MkdirLockFile('somefile', threaded=False)
        .N)
r   __init__ospathjoin	lock_filehostnametnamepidunique_name)selfr   threadedtimeouts       8/usr/lib/python3/dist-packages/lockfile/mkdirlockfile.pyr   zMkdirLockFile.__init__   s]    
 	$h888 7<<59]]]59ZZ59XX)?@ @    c                    ||n| j         }t          j                    }||dk    r||z  }|d}nt          d|dz            }	 	 t          j        | j                   t          | j        d                                           d S # t          $ r t          j                    d         }|j        t          j        k    rt          j                            | j                  rY d S |Kt          j                    |k    r4|dk    rt!          d| j        z            t#          d| j        z            t          j        |           nt'          d	| j        z            Y nw xY w#)
Nr   g?
   Twbr   z&Timeout waiting to acquire lock for %sz%s is already lockedzfailed to create %s)r   timemaxr   mkdirr   openr   closeOSErrorsysexc_infoerrnoEEXISTr   existsr
   r   sleepr   )r   r   end_timewaiterrs        r   acquirezMkdirLockFile.acquire   s   $0''dl9;;7Q;;H?DDq'B,''D	(((, T%t,,22444-  M M MlnnQ'9,,w~~d&677 *ty{{X/E/E"Q;;"- /=.2i/8 #9 #9 9
 #00F04	1: #; #; ;Jt$$$$ %%:T^%KLLL %$!M	s   B AE#'A9E#"E#c                 6   |                                  st          d| j        z            t          j                            | j                  st          d| j        z            t          j        | j                   t          j        | j	                   d S )Nz%s is not lockedz%s is locked, but not by me)
	is_lockedr   r   r   r+   r   r	   unlinkrmdirr   r   s    r   releasezMkdirLockFile.releaseA   s    ~~ 	G.:;;; 011 	G9DIEFFF
	$"###
     r   c                 J    t           j                            | j                  S N)r   r   r+   r   r5   s    r   r2   zMkdirLockFile.is_lockedI   s    w~~dn---r   c                 r    |                                  o#t          j                            | j                  S r8   )r2   r   r   r+   r   r5   s    r   i_am_lockingzMkdirLockFile.i_am_lockingL   s-       1t/00	2r   c                 *   t           j                            | j                  rnt          j        | j                  D ]9}t          j        t           j                            | j        |                     :t          j        | j                   d S d S r8   )r   r   r+   r   listdirr3   r   r4   )r   names     r   
break_lockzMkdirLockFile.break_lockP   s|    7>>$.)) 	%
4>22 > >	"',,t~t<<====HT^$$$$$	% 	%r   )TNr8   )
__name__
__module____qualname____doc__r   r0   r6   r2   r:   r>    r   r   r   r      s        ,,@ @ @ @$ $ $ $L! ! !. . .2 2 2% % % % %r   r   )
__future__r   r   r!   r   r'   r)    r   r   r   r	   r
   r   r   rC   r   r   <module>rF      s    0 0 0 0 0 0 0 0  				 



                H% H% H% H% H%H H% H% H% H% H%r   