
    i\
                     V    S SK Jr  S SKrS SKrSSKJrJrJrJrJ	r	J
r
   " S S\5      rg)    )absolute_importN   )LockBase
LockFailed	NotLocked	NotMyLockLockTimeoutAlreadyLockedc                   :    \ rS rSrSrS
S jrS rS rS rS r	S	r
g)LinkLockFile
   zLock access to a file using atomic property of link(2).

>>> lock = LinkLockFile('somefile')
>>> lock = LinkLockFile('somefile', threaded=False)
Nc                 "    [        U R                  S5      R                  5         Ub  UOU R
                  n[        R                  " 5       nUb
  US:  a  X!-  n  [        R                  " U R                  U R                  5        g ! [         a    [	        SU R                  -  5      ef = f! [         a    [        R                  " U R                  5      R                  nUS:X  a   g Ubo  [        R                  " 5       U:  aV  [        R                  " U R                  5        US:  a  [        SU R                  -  5      e[!        SU R                  -  5      e[        R"                  " US L=(       a    US-  =(       d    S5         Of = fGM7  )	Nwbzfailed to create %sr      z&Timeout waiting to acquire lock for %sz%s is already lockedr   g?)openunique_namecloseIOErrorr   timeouttimeoslink	lock_fileOSErrorstatst_nlinkunlinkr	   pathr
   sleep)selfr   end_timenlinkss       Y/home/kali/github-search/github-env/lib/python3.13/site-packages/lockfile/linklockfile.pyacquireLinkLockFile.acquire   sh   	G!!4(..0 %0'dll99;7Q;H(($..9, C  	G2T5E5EEFF	G  L!1!12;;Q;  *tyy{X/E		$"2"23"Q;"- /=.2ii/8 #9 9 #00F04		1: #; ;JJwd2Cw|JsK%L	 s$   $B +B- #B*-:F)BF
Fc                 j   U R                  5       (       d  [        SU R                  -  5      e[        R                  R	                  U R
                  5      (       d  [        SU R                  -  5      e[        R                  " U R
                  5        [        R                  " U R                  5        g )Nz%s is not lockedz%s is locked, but not by me)		is_lockedr   r   r   existsr   r   r   r   r    s    r#   releaseLinkLockFile.release7   st    ~~.:;; 0 0119DIIEFF
		$""#
		$..!    c                 T    [         R                  R                  U R                  5      $ N)r   r   r(   r   r)   s    r#   r'   LinkLockFile.is_locked?   s    ww~~dnn--r,   c                     U R                  5       =(       a]    [        R                  R                  U R                  5      =(       a-    [        R
                  " U R                  5      R                  S:H  $ )Nr   )r'   r   r   r(   r   r   r   r)   s    r#   i_am_lockingLinkLockFile.i_am_lockingB   sN      8t//08(()22a7	9r,   c                     [         R                  R                  U R                  5      (       a!  [         R                  " U R                  5        g g r.   )r   r   r(   r   r   r)   s    r#   
break_lockLinkLockFile.break_lockG   s.    77>>$..))IIdnn% *r,    r.   )__name__
__module____qualname____firstlineno____doc__r$   r*   r'   r1   r4   __static_attributes__r6   r,   r#   r   r   
   s!    $L".9
&r,   r   )
__future__r   r   r    r   r   r   r   r	   r
   r   r6   r,   r#   <module>r?      s$    &  	 ?&8 ?&r,   