o ùýUV ã@sdddlmZmZddlZddlZddlZddlZddlmZm Z m Z m Z m Z m Z Gdd„deƒZdS)é)Úabsolute_importÚdivisionNé)ÚLockBaseÚ LockFailedÚ NotLockedÚ NotMyLockÚ LockTimeoutÚ AlreadyLockedc@sDeZdZdZddd„Zddd„Zdd „Zd d „Zd d „Zdd„Z dS)Ú MkdirLockFilez"Lock file by creating a directory.TNcCs6t ||||¡tj |jd|j|j|jf¡|_ dS)zs >>> lock = MkdirLockFile('somefile') >>> lock = MkdirLockFile('somefile', threaded=False) z%s.%s%sN) rÚ__init__ÚosÚpathÚjoinÚ lock_fileÚhostnameÚtnameÚpidÚ unique_name)ÚselfrÚthreadedÚtimeout©rú8/usr/lib/python3/dist-packages/lockfile/mkdirlockfile.pyr s þ ÿzMkdirLockFile.__init__cCs|dur|n|j}t ¡}|dur|dkr||7}|dur d}ntd|dƒ} zt |j¡WnHtyxt ¡d}|j t j krotj   |j ¡rMYdS|durit ¡|kri|dkrbtd|j ƒ‚td|j ƒ‚t |¡ntd|jƒ‚Yn wt|j d ƒ ¡dSq() Nrgš™™™™™¹?é Trz&Timeout waiting to acquire lock for %sz%s is already lockedzfailed to create %sÚwb)rÚtimeÚmaxr ÚmkdirrÚOSErrorÚsysÚexc_infoÚerrnoÚEEXISTrÚexistsrr r ÚsleeprÚopenÚclose)rrÚend_timeÚwaitÚerrrrrÚacquires<   þÿ ýðçzMkdirLockFile.acquirecCsN| ¡s td|jƒ‚tj |j¡std|jƒ‚t |j¡t |j ¡dS)Nz%s is not lockedz%s is locked, but not by me) Ú is_lockedrrr r$rrÚunlinkÚrmdirr©rrrrÚreleaseAs  zMkdirLockFile.releasecCstj |j¡S©N)r rr$rr/rrrr,IszMkdirLockFile.is_lockedcCs| ¡o tj |j¡Sr1)r,r rr$rr/rrrÚ i_am_lockingLs ÿzMkdirLockFile.i_am_lockingcCsJtj |j¡r#t |j¡D] }t tj |j|¡¡q t |j¡dSdSr1)r rr$rÚlistdirr-rr.)rÚnamerrrÚ break_lockPs ýzMkdirLockFile.break_lock)TNr1) Ú__name__Ú __module__Ú __qualname__Ú__doc__r r+r0r,r2r5rrrrr s  & r )Ú __future__rrrr r r"Úrrrrr r r rrrrÚs