3
‰d‰  ã               @   s˜   d dl Z d dlZd dlmZ d dlmZ ddlmZ dZej	dkrVG dd	„ d	eeƒZ
n6yd dlZW n ek
rv   Y nX d
ZG dd	„ d	eƒZ
dd	gZdS )é    N)ÚABC)Úcasté   )ÚBaseFileLockFÚwin32c               @   s   e Zd ZdZdS )ÚUnixFileLockzHUses the :func:`fcntl.flock` to hard lock the lock file on unix systems.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© r   r   ú2/tmp/pip-build-7vycvbft/filelock/filelock/_unix.pyr      s   r   Tc               @   s,   e Zd ZdZddœdd„Zddœdd„ZdS )r   zHUses the :func:`fcntl.flock` to hard lock the lock file on unix systems.N)Úreturnc             C   sb   t jt jB t jB }t j| j|ƒ}ytj|tjtj	B ƒ W n t
k
rV   t j|ƒ Y nX || _d S )N)ÚosÚO_RDWRÚO_CREATÚO_TRUNCÚopenZ
_lock_fileÚfcntlÚflockÚLOCK_EXÚLOCK_NBÚOSErrorÚcloseÚ_lock_file_fd)ÚselfZ	open_modeÚfdr   r   r   Ú_acquire   s    zUnixFileLock._acquirec             C   s.   t t| jƒ}d | _tj|tjƒ tj|ƒ d S )N)r   Úintr   r   r   ÚLOCK_UNr   r   )r   r   r   r   r   Ú_release$   s    zUnixFileLock._release)r   r	   r
   r   r   r    r   r   r   r   r      s   
Ú	has_fcntl)r   ÚsysÚabcr   Útypingr   Z_apir   r!   Úplatformr   r   ÚImportErrorÚ__all__r   r   r   r   Ú<module>   s   
