o
    ;“br  ã                   @  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„Zd	dd„ZdS )
ÚSoftFileLockz.Simply watches the existence of the lock file.ÚreturnÚNonec              
   C  s°   t | jƒ tjtjB tjB tjB }z	t | j|¡}W n8 tyR } z,|j	t
kr(n|j	tkr.‚ |j	tkr@tjdkrG‚ W Y d }~d S W Y d }~d S W Y d }~d S d }~ww || _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   ú0/usr/lib/python3/dist-packages/filelock/_soft.pyÚ_acquire   s.   
ÿþýÿ

û€û
	zSoftFileLock._acquirec                 C  s:   t  | j¡ d | _z	t  | j¡ W d S  ty   Y d S w )N)r   Úcloser   Úremover   r   )r   r   r   r   Ú_release$   s   ÿzSoftFileLock._releaseN)r
   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r"   r   r   r   r   r	      s    
r	   )Ú
__future__r   r   r   r   r   r   r   Ú_apir   Ú_utilr   r	   Ú__all__r   r   r   r   Ú<module>   s    #ÿ