£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
3
Pf\
                 @   sP   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	m
Z
 G dd deZdS )    )absolute_importN   )LockBase
LockFailed	NotLocked	NotMyLockLockTimeoutAlreadyLockedc               @   s:   e Zd ZdZdddZdd Zdd Zd	d
 Zdd ZdS )LinkLockFilezLock access to a file using atomic property of link(2).

    >>> lock = LinkLockFile('somefile')
    >>> lock = LinkLockFile('somefile', threaded=False)
    Nc             C   s"  yt | jdj  W n" tk
r6   td| j Y nX |d k	rD|n| j}tj }|d k	rj|dkrj||7 }xytj| j| j	 W n t
k
r   tj| jj}|dkrd S |d k	rtj |krtj| j |dkrtd| j ntd| j tj|d k	r
|d pd Y qlX d S qlW d S )	Nwbzfailed to create %sr      z&Timeout waiting to acquire lock for %sz%s is already locked
   g?)openunique_namecloseIOErrorr   timeouttimeoslink	lock_fileOSErrorstatst_nlinkunlinkr   pathr	   Zsleep)selfr   Zend_timeZnlinks r   "/usr/lib/python3.6/linklockfile.pyacquire   s0    
$zLinkLockFile.acquirec             C   sP   | j  std| j ntjj| js4td| j tj| j tj| j d S )Nz%s is not lockedz%s is locked, but not by me)		is_lockedr   r   r   existsr   r   r   r   )r   r   r   r   release7   s    zLinkLockFile.releasec             C   s   t jj| jS )N)r   r   r!   r   )r   r   r   r   r    ?   s    zLinkLockFile.is_lockedc             C   s(   | j  o&tjj| jo&tj| jjdkS )Nr   )r    r   r   r!   r   r   r   )r   r   r   r   i_am_lockingB   s    zLinkLockFile.i_am_lockingc             C   s   t jj| jrt j| j d S )N)r   r   r!   r   r   )r   r   r   r   
break_lockG   s    zLinkLockFile.break_lock)N)	__name__
__module____qualname____doc__r   r"   r    r#   r$   r   r   r   r   r
   
   s   
&r
   )Z
__future__r   r   r    r   r   r   r   r   r	   r
   r   r   r   r   <module>   s    