
    i                     j    S SK JrJr  S SKrS SK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_importdivisionN   )LockBase
LockFailed	NotLocked	NotMyLockLockTimeoutAlreadyLockedc                   D    \ rS rSrSrSS jrSS jrS rS rS r	S	 r
S
rg)MkdirLockFile   z"Lock file by creating a directory.Nc                     [         R                  " XX#5        [        R                  R	                  U R
                  U R                  < SU R                  < U R                  < 35      U l	        g)z[
>>> lock = MkdirLockFile('somefile')
>>> lock = MkdirLockFile('somefile', threaded=False)
.N)
r   __init__ospathjoin	lock_filehostnametnamepidunique_name)selfr   threadedtimeouts       Z/home/kali/github-search/github-env/lib/python3.13/site-packages/lockfile/mkdirlockfile.pyr   MkdirLockFile.__init__   sL    
 	$h8 77<<59]]59ZZ59XX)?@    c                    Ub  UOU R                   n[        R                  " 5       nUb
  US:  a  X!-  nUc  SnO[        SUS-  5      n  [        R                  " U R
                  5        [        U R                  S5      R                  5         g ! [         a    [        R                  " 5       S   nUR                  [        R                  :X  a  [        R                  R                  U R                  5      (       a   g UbO  [        R                  " 5       U:  a6  US:  a  [!        SU R                  -  5      e[#        SU R                  -  5      e[        R$                  " U5         O['        SU R
                  -  5      ef = fGM?  )	Nr   g?
   wbr   z&Timeout waiting to acquire lock for %sz%s is already lockedzfailed to create %s)r   timemaxr   mkdirr   openr   closeOSErrorsysexc_infoerrnoEEXISTr   existsr
   r   sleepr   )r   r   end_timewaiterrs        r   acquireMkdirLockFile.acquire   sN   $0'dll99;7Q;H?Dq'B,'D(, T%%t,224-  MllnQ'99,ww~~d&6&677*tyy{X/E"Q;"- /=.2ii/8 #9 9
 #00F04		1: #; ;JJt$ %%:T^^%KLL'M s    B A.F A(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   r-   r   r	   unlinkrmdirr   r   s    r   releaseMkdirLockFile.releaseA   st    ~~.:;; 0 0119DIIEFF
		$""#
 r   c                 T    [         R                  R                  U R                  5      $ N)r   r   r-   r   r8   s    r   r5   MkdirLockFile.is_lockedI   s    ww~~dnn--r   c                     U R                  5       =(       a)    [        R                  R                  U R                  5      $ r<   )r5   r   r   r-   r   r8   s    r   i_am_lockingMkdirLockFile.i_am_lockingL   s,      1t//0	2r   c                 l   [         R                  R                  U R                  5      (       a  [         R                  " U R                  5       HA  n[         R
                  " [         R                  R                  U R                  U5      5        MC     [         R                  " U R                  5        g g r<   )r   r   r-   r   listdirr6   r   r7   )r   names     r   
break_lockMkdirLockFile.break_lockP   sd    77>>$..))

4>>2		"'',,t~~t<= 3HHT^^$ *r   )r   )TNr<   )__name__
__module____qualname____firstlineno____doc__r   r2   r9   r5   r?   rD   __static_attributes__ r   r   r   r      s%    ,@$L!.2%r   r   )
__future__r   r   r#   r   r)   r+    r   r   r   r	   r
   r   r   rL   r   r   <module>rO      s,    0  	 
  H%H H%r   