
    i                     x    S SK JrJr  S SKrS SKr \  SSKJ	r	J
r
JrJrJr   " S S\	5      rg! \ a    \r N$f = f)    )absolute_importdivisionN   )LockBase	NotLocked	NotMyLockLockTimeoutAlreadyLockedc                   N    \ rS 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Srg)SQLiteLockFile   zDemonstrate SQL-based locking.Nc                    [         R                  " XX#5        [        U R                  5      U l        [        U R                  5      U l        [
        R                  cO  SSKnUR                  5       u  pV[        R                  " U5        [        R                  " U5        AAU[
        l        SSKnUR                  [
        R                  5      U l        U R                  R                  5       n UR!                  S5        U R                  R#                  5         SSKn	U	R'                  [        R                  [
        R                  5        g! UR(                   a     gf = f)z]
>>> lock = SQLiteLockFile('somefile')
>>> lock = SQLiteLockFile('somefile', threaded=False)
Nr   zGcreate table locks(   lock_file varchar(32),   unique_name varchar(32)))r   __init__unicode	lock_fileunique_namer   testdbtempfilemkstemposcloseunlinksqlite3connect
connectioncursorexecutecommitatexitregisterOperationalError)
selfpaththreadedtimeoutr   _fdr   r   cr   s
             [/home/kali/github-search/github-env/lib/python3.13/site-packages/lockfile/sqlitelockfile.pyr   SQLiteLockFile.__init__   s   
 	$h8 0"4#3#34  ("**,KCHHSMIIfX$*N!!//.*?*?@OO""$	>II   OO""$OOBII~'<'<= '' 		s   /E E E c                    Ub  UOU R                   n[        R                  " 5       nUb
  US:  a  X!-  nUc  SnOUS::  a  SnOUS-  nU R                  R                  5       n U R	                  5       (       d  UR                  SU R                  U R                  45        U R                  R                  5         UR                  SU R                  45        UR                  5       n[        U5      S:  a8  UR                  SU R                  45        U R                  R                  5         O>g UR                  SU R                  45        UR                  5       n[        U5      S:X  a  g UbO  [        R                  " 5       U:  a6  US:  a  [        SU R                  -  5      e[        S	U R                  -  5      e[        R                  " U5        GMt  )
Nr   g?
   z;insert into locks  (lock_file, unique_name)  values  (?, ?)z*select * from locks  where unique_name = ?r   (delete from locks  where unique_name = ?z&Timeout waiting to acquire lock for %sz%s is already locked)r%   timer   r   	is_lockedr   r   r   r   fetchalllenr	   r#   r
   sleep)r"   r%   end_timewaitr   rowss         r(   acquireSQLiteLockFile.acquire5   s   $0'dll99;7Q;H?D\DR<D'')>>##  * !%0@0@A	C
 &&(   9 $ 0 024 (t9q=NN $=$($4$4#68 OO**,    9 $ 0 024 (t9> "tyy{X'=Q;% '5&*ii'0 1 1
 ((>(JKK JJt]     c                    U R                  5       (       d  [        SU R                  -  5      eU R                  5       (       d+  [	        U R
                  < SU R                  5       < S35      eU R                  R                  5       nUR                  SU R
                  45        U R                  R                  5         g )Nz%s is not lockedz is locked, but not by me (by )r,   )r.   r   r#   i_am_lockingr   r   _who_is_lockingr   r   r   r   r"   r   s     r(   releaseSQLiteLockFile.releaset   s    ~~.:;;  ""!--t/C/C/EG H H'') 1((*	, 	 r7   c                     U R                   R                  5       nUR                  SU R                  45        UR	                  5       S   $ )Nz2select unique_name from locks  where lock_file = ?r   )r   r   r   r   fetchoner<   s     r(   r;   SQLiteLockFile._who_is_locking   sC    '') /(	*  ##r7   c                     U R                   R                  5       nUR                  SU R                  45        UR	                  5       nU(       $ )Nz(select * from locks  where lock_file = ?)r   r   r   r   r/   )r"   r   r4   s      r(   r.   SQLiteLockFile.is_locked   sE    '') /(	*  8r7   c                     U R                   R                  5       nUR                  SU R                  U R                  45        UR                  5       (       $ )Nz?select * from locks  where lock_file = ?    and unique_name = ?)r   r   r   r   r   r/   r<   s     r(   r:   SQLiteLockFile.i_am_locking   sK    '') 1 (8(89	; (((r7   c                     U R                   R                  5       nUR                  SU R                  45        U R                   R	                  5         g )Nz&delete from locks  where lock_file = ?)r   r   r   r   r   r<   s     r(   
break_lockSQLiteLockFile.break_lock   sA    '') /(	* 	 r7   )r   r   r   )TN)N)__name__
__module____qualname____firstlineno____doc__r   r   r5   r=   r;   r.   r:   rG   __static_attributes__ r7   r(   r   r      s/    $F >D=~
!$)!r7   r   )
__future__r   r   r-   r   r   	NameErrorstr r   r   r   r	   r
   r   rO   r7   r(   <module>rT      sC    0  	 I HN!X N!  Gs   . 99