U
    "cb                     @  s   d dl mZ 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 ejdkrpd dlZG d	d
 d
e	ZnG dd
 d
e	Zd
gZdS )    )annotationsN)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 )	WindowsFileLockWUses the :func:`msvcrt.locking` function to hard lock the lock file on windows systems.Nonereturnc              
   C  s   t | j tjtjB tjB }zt| j|}W n. tk
r\ } z|jt	krL W 5 d }~X Y n<X zt
|t
jd W n tk
r   t| 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-unpacked-wheel-yt0gy6q2/filelock/_windows.py_acquire   s"    

WindowsFileLock._acquirec                 C  sV   t t| j}d | _t|tjd t| zt| j	 W n t
k
rP   Y nX d S r   )r   intr   r   r   ZLK_UNLCKr   r   remover   r   )r   r   r   r   r    _release%   s    
WindowsFileLock._releaseN__name__
__module____qualname____doc__r!   r%   r   r   r   r    r	      s   r	   c                   @  s,   e Zd ZdZddddZddddZdS )	r	   r
   r   r   c                 C  s   t d S NNotImplementedErrorr   r   r   r    r!   6   s    r"   c                 C  s   t d S r,   r-   r/   r   r   r    r%   9   s    r&   Nr'   r   r   r   r    r	   3   s   )
__future__r   r   sysr   r   typingr   Z_apir   Z_utilr   platformr   r	   __all__r   r   r   r    <module>   s   
%