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dlm	Z	 ddl
mZ ejdkrpd dlZG d	d
 d
e	ZnG dd
 d
e	eZd
gZdS )    N)ABC)ENOENT)cast   )BaseFileLock)raise_on_exist_ro_filewin32c               @   s,   e Zd ZdZddddZddddZdS )WindowsFileLockzWUses the :func:`msvcrt.locking` function to hard lock the lock file on windows systems.N)returnc             C   s   t | j tjtjB tjB }ytj| j|}W n. tk
r\ } z|jt	krL W Y d d }~X n<X yt
j|t
jd W n tk
r   tj| Y nX || _d S )Nr   )r   
_lock_fileosO_RDWRO_CREATO_TRUNCopenOSErrorerrnor   msvcrtlockingZLK_NBLCKclose_lock_file_fd)selfmodefd	exception r   5/tmp/pip-build-7vycvbft/filelock/filelock/_windows.py_acquire   s    

zWindowsFileLock._acquirec             C   sV   t t| j}d | _tj|tjd tj| ytj| j	 W n t
k
rP   Y nX d S )Nr   )r   intr   r   r   ZLK_UNLCKr   r   remover   r   )r   r   r   r   r   _release$   s    
zWindowsFileLock._release)__name__
__module____qualname____doc__r   r    r   r   r   r   r	      s   r	   c               @   s   e Zd ZdZdS )r	   zWUses the :func:`msvcrt.locking` function to hard lock the lock file on windows systems.N)r!   r"   r#   r$   r   r   r   r   r	   2   s   )r   sysabcr   r   r   typingr   Z_apir   Z_utilr   platformr   r	   __all__r   r   r   r   <module>   s   
%