[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@3.129.42.59: ~ $


��UV�$�
@s'dZddlmZddlZddlZddlZddlZddlZeed�smej	e_
eejd�s�ejjej_
dddd	d
ddd
dddddg
ZGdd�de�ZGdd�de�ZGdd�de�ZGdd	�d	e�ZGdd
�d
e�ZGdd�de�ZGdd�de�ZGdd
�d
e�ZGdd�de�ZGdd�de�Zdd�Zd d�Zd!d�Zd"d�Zdd#d�Zeed$�rd%d&l m!Z"e"j#Z$nd%d'l m%Z&e&j'Z$e$Z(dS)(a
lockfile.py - Platform-independent advisory file locks.

Requires Python 2.5 unless you apply 2.4.diff
Locking is done on a per-thread basis instead of a per-process basis.

Usage:

>>> lock = LockFile('somefile')
>>> try:
...     lock.acquire()
... except AlreadyLocked:
...     print 'somefile', 'is locked already.'
... except LockFailed:
...     print 'somefile', 'can\'t be locked.'
... else:
...     print 'got lock'
got lock
>>> print lock.is_locked()
True
>>> lock.release()

>>> lock = LockFile('somefile')
>>> print lock.is_locked()
False
>>> with lock:
...    print lock.is_locked()
True
>>> print lock.is_locked()
False

>>> lock = LockFile('somefile')
>>> # It is okay to lock twice from the same thread...
>>> with lock:
...     lock.acquire()
...
>>> # Though no counter is kept, so you can't unlock multiple times...
>>> print lock.is_locked()
False

Exceptions:

    Error - base class for other exceptions
        LockError - base class for all locking exceptions
            AlreadyLocked - Another thread or process already holds the lock
            LockFailed - Lock failed for some other reason
        UnlockError - base class for all unlocking exceptions
            AlreadyUnlocked - File was not locked.
            NotMyLock - File was locked but not by the current thread/process
�)�absolute_importN�current_thread�get_name�Error�	LockError�LockTimeout�
AlreadyLocked�
LockFailed�UnlockError�	NotLocked�	NotMyLock�LinkFileLock�
MkdirFileLock�SQLiteFileLock�LockBase�lockedc@seZdZdZdS)rzw
    Base class for other exceptions.

    >>> try:
    ...   raise Error
    ... except Exception:
    ...   pass
    N)�__name__�
__module__�__qualname__�__doc__�rr�/__init__.pyrJsc@seZdZdZdS)rz�
    Base class for error arising from attempts to acquire the lock.

    >>> try:
    ...   raise LockError
    ... except Error:
    ...   pass
    N)rrrrrrrrrVsc@seZdZdZdS)rz�Raised when lock creation fails within a user-defined period of time.

    >>> try:
    ...   raise LockTimeout
    ... except LockError:
    ...   pass
    N)rrrrrrrrrbsc@seZdZdZdS)rz�Some other thread/process is locking the file.

    >>> try:
    ...   raise AlreadyLocked
    ... except LockError:
    ...   pass
    N)rrrrrrrrrmsc@seZdZdZdS)r	z�Lock file creation failed for some other reason.

    >>> try:
    ...   raise LockFailed
    ... except LockError:
    ...   pass
    N)rrrrrrrrr	xsc@seZdZdZdS)r
z�
    Base class for errors arising from attempts to release the lock.

    >>> try:
    ...   raise UnlockError
    ... except Error:
    ...   pass
    N)rrrrrrrrr
�sc@seZdZdZdS)rz�Raised when an attempt is made to unlock an unlocked file.

    >>> try:
    ...   raise NotLocked
    ... except UnlockError:
    ...   pass
    N)rrrrrrrrr�sc@seZdZdZdS)rz�Raised when an attempt is made to unlock a file someone else locked.

    >>> try:
    ...   raise NotMyLock
    ... except UnlockError:
    ...   pass
    N)rrrrrrrrr�sc@s[eZdZdd�Zddd�Zdd�Zdd	�Zd
d�Zdd
�ZdS)�_SharedBasecCs
||_dS)N)�path)�selfrrrr�__init__�sz_SharedBase.__init__NcCstd��dS)a�
        Acquire the lock.

        * If timeout is omitted (or None), wait forever trying to lock the
          file.

        * If timeout > 0, try to acquire the lock for that many seconds.  If
          the lock period expires and the file is still locked, raise
          LockTimeout.

        * If timeout <= 0, raise AlreadyLocked immediately if the file is
          already locked.
        zimplement in subclassN)�NotImplemented)r�timeoutrrr�acquire�sz_SharedBase.acquirecCstd��dS)zX
        Release the lock.

        If the file is not locked, raise NotLocked.
        zimplement in subclassN)r)rrrr�release�sz_SharedBase.releasecCs|j�|S)z*
        Context manager support.
        )r)rrrr�	__enter__�s
z_SharedBase.__enter__cGs|j�dS)z*
        Context manager support.
        N)r)rZ_excrrr�__exit__�sz_SharedBase.__exit__cCsd|jj|jfS)Nz<%s: %r>)�	__class__rr)rrrr�__repr__�sz_SharedBase.__repr__)	rrrrrrr r!r#rrrrr�srcs^eZdZdZdd�fdd�Zdd�Zdd	�Zd
d�Zdd
�Z�S)rz.Base class for platform-specific lock classes.TNcs�tt|�j|�tjj|�d|_tj�|_	tj
�|_|r�tj
�}t|dt|��}d|d@|_n	d|_tjj|j�}tjj|d|j	|j|jt|j�f�|_||_dS)zi
        >>> lock = LockBase('somefile')
        >>> lock = LockBase('somefile', threaded=False)
        z.lock�identz-%xl���z	%s%s.%s%sN)�superrr�osr�abspathZ	lock_file�socket�gethostname�hostname�getpid�pid�	threadingr�getattr�hashZtname�dirname�join�unique_namer)rr�threadedr�tr$r1)r"rrr�s 			zLockBase.__init__cCstd��dS)z9
        Tell whether or not the file is locked.
        zimplement in subclassN)r)rrrr�	is_locked�szLockBase.is_lockedcCstd��dS)zA
        Return True if this object is locking the file.
        zimplement in subclassN)r)rrrr�i_am_locking�szLockBase.i_am_lockingcCstd��dS)zN
        Remove a lock.  Useful if a locking thread failed to unlock.
        zimplement in subclassN)r)rrrr�
break_lockszLockBase.break_lockcCsd|jj|j|jfS)Nz<%s: %r -- %r>)r"rr3r)rrrrr#szLockBase.__repr__)	rrrrrr6r7r8r#rr)r"rr�s!cOsmtjd|tdd�t|dt�s=|dd�}t|�dkr`|r`d|d<|||�S)Nz1Import from %s module instead of lockfile package�
stacklevel�r�Tr4)�warnings�warn�DeprecationWarning�
isinstance�str�len)�cls�mod�args�kwdsrrr�
_fl_helpers


rFcOs&ddlm}t|jd||�S)z�Factory function provided for backwards compatibility.

    Do not use in new code.  Instead, import LinkLockFile from the
    lockfile.linklockfile module.
    r;)�linklockfilezlockfile.linklockfile)r%rGrF�LinkLockFile)rDrErGrrrr
scOs&ddlm}t|jd||�S)z�Factory function provided for backwards compatibility.

    Do not use in new code.  Instead, import MkdirLockFile from the
    lockfile.mkdirlockfile module.
    r;)�
mkdirlockfilezlockfile.mkdirlockfile)r%rIrF�
MkdirLockFile)rDrErIrrrr%scOs&ddlm}t|jd||�S)z�Factory function provided for backwards compatibility.

    Do not use in new code.  Instead, import SQLiteLockFile from the
    lockfile.mkdirlockfile module.
    r;)�sqlitelockfilezlockfile.sqlitelockfile)r%rKrFZSQLiteLockFile)rDrErKrrrr0scs��fdd�}|S)aDecorator which enables locks for decorated function.

    Arguments:
     - path: path for lockfile.
     - timeout (optional): Timeout for acquiring lock.

     Usage:
         @locked('/var/run/myname', timeout=0)
         def myname(...):
             ...
    cs+tj�����fdd��}|S)Nc
s?t�d��}|j�z�||�SWd|j�XdS)Nr)�FileLockrr)rD�kwargs�lock)�funcrrrr�wrapperHs

z&locked.<locals>.decor.<locals>.wrapper)�	functools�wraps)rOrP)rr)rOr�decorGs'zlocked.<locals>.decorr)rrrSr)rrrr;s
�linkr;)rG)rI))rZ
__future__rrQr'r)r.r<�hasattr�
currentThreadr�Thread�getNamer�__all__�	Exceptionrrrrr	r
rr�objectrrrFr
rrrr%rGZ_llfrHZLockFilerIZ_mlfrJrLrrrr�<module>4sF	-:	

Filemanager

Name Type Size Permission Actions
__init__.cpython-35.opt-1.pyc File 10 KB 0644
__init__.cpython-35.pyc File 10 KB 0644
linklockfile.cpython-35.opt-1.pyc File 2.34 KB 0644
linklockfile.cpython-35.pyc File 2.34 KB 0644
mkdirlockfile.cpython-35.opt-1.pyc File 2.75 KB 0644
mkdirlockfile.cpython-35.pyc File 2.75 KB 0644
pidlockfile.cpython-35.opt-1.pyc File 4.91 KB 0644
pidlockfile.cpython-35.pyc File 4.91 KB 0644
sqlitelockfile.cpython-35.opt-1.pyc File 3.92 KB 0644
sqlitelockfile.cpython-35.pyc File 3.92 KB 0644
symlinklockfile.cpython-35.opt-1.pyc File 2.21 KB 0644
symlinklockfile.cpython-35.pyc File 2.21 KB 0644