o ùýUV8 ã@sLddlmZddlZddlZddlmZmZmZmZm Z Gdd„deƒZ dS)é)Úabsolute_importNé)ÚLockBaseÚ NotLockedÚ NotMyLockÚ LockTimeoutÚ AlreadyLockedc@sDeZdZdZddd„Zddd„Zdd „Zd d „Zd d „Zdd„Z dS)ÚSymlinkLockFilez'Lock access to a file using symlink(2).TNcCs(t ||||¡tj |j¡d|_dS)Nr)rÚ__init__ÚosÚpathÚsplitÚ unique_name)Úselfr ÚthreadedÚtimeout©rú:/usr/lib/python3/dist-packages/lockfile/symlinklockfile.pyr szSymlinkLockFile.__init__cCsÀ|dur|n|j}t ¡}|dur|dkr||7} z t |j|j¡WdSty^| ¡r3YdS|durOt ¡|krO|dkrHtd|j ƒ‚t d|j ƒ‚t  |durY|dnd¡Ynwq)NrTz&Timeout waiting to acquire lock for %sz%s is already lockedé gš™™™™™¹?) rÚtimer ÚsymlinkrÚ lock_fileÚOSErrorÚ i_am_lockingrr rÚsleep)rrÚend_timerrrÚacquires, îþÿñüzSymlinkLockFile.acquirecCs<| ¡s td|jƒ‚| ¡std|jƒ‚t |j¡dS)Nz%s is not lockedz%s is locked, but not by me)Ú is_lockedrr rrr Úunlinkr©rrrrÚrelease6s zSymlinkLockFile.releasecCstj |j¡S©N)r r Úislinkrrrrrr=szSymlinkLockFile.is_lockedcCs tj |j¡ot |j¡|jkSr!)r r r"rÚreadlinkrrrrrr@sÿzSymlinkLockFile.i_am_lockingcCs"tj |j¡rt |j¡dSdSr!)r r r"rrrrrrÚ break_lockDsÿzSymlinkLockFile.break_lock)TNr!) Ú__name__Ú __module__Ú __qualname__Ú__doc__r rr rrr$rrrrr s  # r ) Ú __future__rr rÚrrrrrr rrrrÚs