U
    @f                     @  sz   d dl mZ d dlZd dlZd dlmZ d dlmZmZ d dl	m
Z
 ddlmZ ddlmZmZ G d	d
 d
eZd
gZdS )    )annotationsN)suppress)EACCESEEXIST)Path   )BaseFileLock)ensure_directory_existsraise_on_not_writable_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tjB tjB tjB }zt| j|| j	j
}W nB tk
r } z$|jtksv|jtkrttjdksv W 5 d }~X Y n
X || j	_d S )Nwin32)r
   	lock_filer	   osO_WRONLYO_CREATO_EXCLO_TRUNCopen_contextmodeOSErrorerrnor   r   sysplatformlock_file_fd)selfflagsZfile_handler	exception r    2/tmp/pip-unpacked-wheel-hpj4h646/filelock/_soft.py_acquire   s*    

zSoftFileLock._acquirec              	   C  sL   | j jd k	stt| j j d | j _tt t| j	  W 5 Q R X d S )N)
r   r   AssertionErrorr   closer   r   r   r   unlink)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   
contextlibr   r   r   r   pathlibr   Z_apir   Z_utilr	   r
   r   __all__r    r    r    r!   <module>   s   !