£Á°è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f8
                 @   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 j| ||| tjj| jd | _d S )Nr   )r   __init__ospathsplitunique_name)selfr   Zthreadedtimeout r   %/usr/lib/python3.6/symlinklockfile.pyr
      s    zSymlinkLockFile.__init__c             C   s   |d k	r|n| j }tj }|d k	r2|dkr2||7 }xytj| j| j W nt tk
r   | j rdd S |d k	rtj |kr|dkrtd| j	 nt
d| j	 tj|d k	r|d nd Y q4X d S q4W d S )Nr   z&Timeout waiting to acquire lock for %sz%s is already locked
   g?)r   timer   symlinkr   	lock_fileOSErrori_am_lockingr   r   r   Zsleep)r   r   Zend_timer   r   r   acquire   s$    
 zSymlinkLockFile.acquirec             C   s>   | j  std| j n| j s.td| j 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   r   r   r   release6   s
    zSymlinkLockFile.releasec             C   s   t jj| jS )N)r   r   islinkr   )r   r   r   r   r   =   s    zSymlinkLockFile.is_lockedc             C   s    t jj| jot j| j| jkS )N)r   r   r   r   readlinkr   )r   r   r   r   r   @   s    zSymlinkLockFile.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_lockD   s    zSymlinkLockFile.break_lock)TN)N)
__name__
__module____qualname____doc__r
   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   <module>   s   