
    UV                         d dl mZmZ d dlZd dlZ	 e n# e$ r eZY nw xY wddlm	Z	m
Z
mZmZmZ  G d de	          ZdS )    )absolute_importdivisionN   )LockBase	NotLocked	NotMyLockLockTimeoutAlreadyLockedc                   D    e Zd ZdZdZddZddZd Zd Zd Z	d	 Z
d
 ZdS )SQLiteLockFilezDemonstrate SQL-based locking.NTc                    t          j        | |||           t          | j                  | _        t          | j                  | _        t
          j        Qddl}|                                \  }}t          j
        |           t          j        |           ~~|t
          _        ddl}|                    t
          j                  | _        | j                                        }	 |                    d           | j                                         ddl}	|	                    t          j        t
          j                   dS # |j        $ r Y dS w xY w)zu
        >>> 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
             9/usr/lib/python3/dist-packages/lockfile/sqlitelockfile.pyr   zSQLiteLockFile.__init__   sG   
 	$h888 00"4#344 (OOO"**,,KCHSMMMIfX$*N!!//.*?@@O""$$	>II     O""$$$MMMOOBI~'<===== ' 	 	 	DD	s   )E 
EEc                    ||n| j         }t          j                    }||dk    r||z  }|d}n|dk    rd}n|dz  }| j                                        }	 |                                 s|                    d| j        | j        f           | j                                         |                    d| j        f           |	                                }t          |          dk    r6|                    d| j        f           | j                                         nGd S |                    d| j        f           |	                                }t          |          dk    rd S |Kt          j                    |k    r4|dk    rt          d	| j        z            t          d
| j        z            t          j        |           r)Nr   g?
   Tz;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'   acquirezSQLiteLockFile.acquire5   s   $0''dl9;;7Q;;H?DD\\DDR<D'')).	>>##   * !%0@A	C C C
 &&(((   9 $ 024 4 4 ((t99q==NN $=$($4#68 8 8 O**,,,, F   9 $ 024 4 4 ((t99>>F "ty{{X'='=Q;;% '5&*i'0 1 1 1
 ((>(JKKK Jt].	    c                 x   |                                  st          d| j        z            |                                 s,t	          | j        d|                                 d          | j                                        }|	                    d| j        f           | j        
                                 d S )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'   releasezSQLiteLockFile.releaset   s    ~~ 	<.:;;;  "" 	H!---t/C/C/E/E/E/EG H H H'')) 1(*	, 	, 	, 	     r4   c                     | j                                         }|                    d| j        f           |                                d         S )Nz2select unique_name from locks  where lock_file = ?r   )r   r   r   r   fetchoner9   s     r'   r8   zSQLiteLockFile._who_is_locking   sO    '')) /(	* 	* 	*   ##r4   c                     | j                                         }|                    d| j        f           |                                }|  S )Nz(select * from locks  where lock_file = ?)r   r   r   r   r-   )r!   r   r2   s      r'   r,   zSQLiteLockFile.is_locked   sS    '')) /(	* 	* 	*   8|r4   c                     | j                                         }|                    d| j        | j        f           |                                  S )Nz?select * from locks  where lock_file = ?    and unique_name = ?)r   r   r   r   r   r-   r9   s     r'   r7   zSQLiteLockFile.i_am_locking   sW    '')) 1 (89	; 	; 	; (((((r4   c                     | j                                         }|                    d| j        f           | j                                          d S )Nz&delete from locks  where lock_file = ?)r   r   r   r   r   r9   s     r'   
break_lockzSQLiteLockFile.break_lock   sT    '')) /(	* 	* 	* 	     r4   )TN)N)__name__
__module____qualname____doc__r   r   r3   r:   r8   r,   r7   r@    r4   r'   r   r      s        $$F >  >  >  >D= = = =~
! 
! 
!$ $ $  ) ) )! ! ! ! !r4   r   )
__future__r   r   r+   r   r   	NameErrorstr r   r   r   r	   r
   r   rE   r4   r'   <module>rJ      s    0 0 0 0 0 0 0 0  				GG   GGG I H H H H H H H H H H H H HN! N! N! N! N!X N! N! N! N! N!s    