Viewing File: /usr/lib/python3.6/site-packages/pip/_vendor/lockfile/__pycache__/sqlitelockfile.cpython-36.pyc
3
aj @ sr d dl mZmZ d dlZd dlZye W n ek
r@ eZY nX ddlm Z m
Z
mZmZm
Z
G dd de ZdS ) )absolute_importdivisionN )LockBase NotLocked NotMyLockLockTimeout
AlreadyLockedc @ sP e Zd ZdZdZdddZdddZdd Zd
d Zdd
Z dd Z
dd ZdS )SQLiteLockFilezDemonstrate SQL-based locking.NTc
C s t j| ||| t| j| _t| j| _tjdkrdddl}|j \}}t j
| t j| ~~|t_ddl}|j
tj| _| jj }y|jd W n |jk
r Y n$X | jj ddl} | jt jtj dS )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_fileunique_namer
testdbtempfileZmkstemposcloseunlinksqlite3Zconnect
connectioncursorexecuteZOperationalErrorcommitatexitregister)
selfpathZthreadedtimeoutr Z_fdr r cr r $/usr/lib/python3.6/sqlitelockfile.pyr s(
zSQLiteLockFile.__init__c C sH |d k r|n| j }tj }|d k r2|dkr2||7 }|d kr@d}n|dkrNd}n|d }| jj }x| j s|jd| j| jf | jj |jd| jf |j }t
|dkr|jd| jf | jj qd S n(|jd| jf |j }t
|dkrd S |d k r6tj |kr6|dkr(td| j nt
d | j tj| qbW d S )
Nr g?
z;insert into locks (lock_file, unique_name) values (?, ?)z*select * from locks where unique_name = ?r z(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 fetchalllenr r r Zsleep)r r Zend_timewaitr rowsr r r acquire5 sD
zSQLiteLockFile.acquirec C s\ | j std| j | j s4td| j| j f | jj }|j d| jf | jj
d S )Nz%s is not lockedz#%s is locked, but not by me (by %s)z(delete from locks where unique_name = ?)r# r r i_am_lockingr r _who_is_lockingr r r r )r r r r r releaset s
zSQLiteLockFile.releasec C s&