o
    7Di                     @   sp   d dl mZmZ d dlZd dlZze W n ey   eZY nw 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u r2ddl}| \}}t	
| t	| ~~|t_ddl}|tj| _| j }z|d W n |jyT   Y dS w | 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executeOperationalErrorcommitatexitregister)
selfpaththreadedtimeoutr   _fdr   r   cr    r$   P/var/www/Datamplify/venv/lib/python3.10/site-packages/lockfile/sqlitelockfile.pyr      s*   




zSQLiteLockFile.__init__c                 C   s8  |d ur|n| j }t }|d ur|dkr||7 }|d u r d}n|dkr'd}n|d }| j }	 |  sf|d| j| jf | j  |d| jf |	 }t
|dkrd|d| jf | j  nd S |d| jf |	 }t
|dkrzd S |d urt |kr|dkrtd	| j td
| j t| q1)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   rowsr$   r$   r%   acquire5   sP   



zSQLiteLockFile.acquirec                 C   s\   |   std| j |  st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   fetchoner3   r$   r$   r%   r2      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*   r3   r$   r$   r%   r1      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   r3   r$   r$   r%   
break_lock   s
   
zSQLiteLockFile.break_lock)TN)N)__name__
__module____qualname____doc__r   r   r0   r4   r2   r)   r1   r6   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    