
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ùýUV‚  ã                   @   sr   d dl mZmZ d dlZd dlZze W n ek
r@   eZY nX ddlm	Z	m
Z
mZmZmZ G dd„ de	ƒZdS )é    )Úabsolute_importÚdivisionNé   )ÚLockBaseÚ	NotLockedÚ	NotMyLockÚLockTimeoutÚAlreadyLockedc                   @   sP   e Zd ZdZdZddd„Zddd„Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ ZdS )ÚSQLiteLockFilezDemonstrate SQL-based locking.NTc           
      C   sÐ   t  | |||¡ t| jƒ| _t| jƒ| _tjdkrdddl}| ¡ \}}t	 
|¡ t	 |¡ ~~|t_ddl}| tj¡| _| j ¡ }z| d¡ W n |jk
r¨   Y n$X | j ¡  ddl}	|	 t	jtj¡ dS )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ÚexecuteZOperationalErrorÚcommitÚatexitÚregister)
ÚselfÚpathZthreadedÚtimeoutr   Z_fdr   r   Úcr   © r!   úH/opt/alt/python38/lib/python3.8/site-packages/lockfile/sqlitelockfile.pyr      s(    




zSQLiteLockFile.__init__c                 C   sD  |d k	r|n| j }t ¡ }|d k	r2|dkr2||7 }|d kr@d}n|dkrNd}n|d }| j ¡ }|  ¡ sÌ| d| j| jf¡ | j ¡  | d| jf¡ | 	¡ }t
|ƒdkrÆ| d| jf¡ | j ¡  qôd S n(| d| jf¡ | 	¡ }t
|ƒdkrôd S |d k	�r4t ¡ |k�r4|dk�r&td| j ƒ‚ntd	| j ƒ‚t |¡ q`d S )
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   Úrowsr!   r!   r"   Úacquire5   sL    

ü
þþþ
þzSQLiteLockFile.acquirec                 C   s\   |   ¡ std| j ƒ‚|  ¡ s4td| j|  ¡ f ƒ‚| j ¡ }| 	d| jf¡ | j 
¡  d S )Nz%s is not lockedz#%s is locked, but not by me (by %s)r$   )r&   r   r   Úi_am_lockingr   r   Ú_who_is_lockingr   r   r   r   ©r   r   r!   r!   r"   Úreleaset   s    ÿ
þzSQLiteLockFile.releasec                 C   s&   | j  ¡ }| d| jf¡ | ¡ d S )Nz2select unique_name from locks  where lock_file = ?r   )r   r   r   r   Zfetchoner0   r!   r!   r"   r/   €   s
    
þzSQLiteLockFile._who_is_lockingc                 C   s*   | j  ¡ }| d| jf¡ | ¡ }|  S )Nz(select * from locks  where lock_file = ?)r   r   r   r   r'   )r   r   r,   r!   r!   r"   r&   ‡   s    
þzSQLiteLockFile.is_lockedc                 C   s*   | j  ¡ }| d| j| jf¡ | ¡   S )Nz?select * from locks  where lock_file = ?    and unique_name = ?)r   r   r   r   r   r'   r0   r!   r!   r"   r.   �   s
    

ýzSQLiteLockFile.i_am_lockingc                 C   s(   | j  ¡ }| d| jf¡ | j  ¡  d S )Nz&delete from locks  where lock_file = ?)r   r   r   r   r   r0   r!   r!   r"   Ú
break_lock—   s
    
þzSQLiteLockFile.break_lock)TN)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r-   r1   r/   r&   r.   r2   r!   r!   r!   r"   r
      s   
"
?r
   )Ú
__future__r   r   r%   r   r   Ú	NameErrorÚstrÚ r   r   r   r   r	   r
   r!   r!   r!   r"   Ú<module>   s   
