U
    "ºcr  ã                   @  sb   d dl mZ d dlZd dlZd dlmZmZmZ ddlm	Z	 ddl
mZ G dd„ de	ƒZdgZdS )	é    )ÚannotationsN)ÚEACCESÚEEXISTÚENOENTé   )ÚBaseFileLock)Úraise_on_exist_ro_filec                   @  s,   e Zd ZdZddœdd„Zddœdd„ZdS )	ÚSoftFileLockz.Simply watches the existence of the lock file.ÚNone)Úreturnc              
   C  s’   t | jƒ tjtjB tjB tjB }zt | j|¡}W nR tk
r† } z4|j	t
krRn$|j	tkr`‚ n|j	tkrvtjdkrv‚ W 5 d }~X Y nX || _d S )NÚwin32)r   Ú
_lock_fileÚosÚO_WRONLYÚO_CREATÚO_EXCLÚO_TRUNCÚopenÚOSErrorÚerrnor   r   r   ÚsysÚplatformÚ_lock_file_fd)ÚselfÚmodeÚfdÚ	exception© r   ú2/tmp/pip-unpacked-wheel-yt0gy6q2/filelock/_soft.pyÚ_acquire   s&    
ÿþýÿ

zSoftFileLock._acquirec                 C  s<   t  | j¡ d | _zt  | j¡ W n tk
r6   Y nX d S )N)r   Úcloser   Úremover   r   )r   r   r   r   Ú_release$   s    zSoftFileLock._releaseN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r"   r   r   r   r   r	      s   r	   )Ú
__future__r   r   r   r   r   r   r   Z_apir   Z_utilr   r	   Ú__all__r   r   r   r   Ú<module>   s   #ÿ