File: //opt/alt/python37/lib/python3.7/site-packages/filelock/__pycache__/_windows.cpython-37.pyc
B
    ���a�  �               @  s�   d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	 ddl
mZ ddlm
Z
 ejd	kr|d dlZG d
d� de�ZnG dd� dee�ZdgZdS )
�    )�annotationsN)�ABC)�ENOENT)�cast�   )�BaseFileLock)�raise_on_exist_ro_fileZwin32c               @  s,   e Zd ZdZdd�dd�Zdd�dd�ZdS )	�WindowsFileLockzWUses the :func:`msvcrt.locking` function to hard lock the lock file on windows systems.�None)�returnc          
   C  s�   t | j� tjtjB tjB }yt�| j|�}W n. tk
r\ } z|jt	krL� W d d }~X Y n<X yt
�|t
jd� W n tk
r�   t�
|� Y nX || _d S )Nr   )r   �
_lock_file�os�O_RDWR�O_CREAT�O_TRUNC�open�OSError�errnor   �msvcrt�lockingZLK_NBLCK�close�
_lock_file_fd)�self�mode�fdZ	exception� r   �B/opt/alt/python37/lib/python3.7/site-packages/filelock/_windows.py�_acquire   s    
zWindowsFileLock._acquirec             C  sV   t t| j�}d | _t�|tjd� t�|� yt�| j	� W n t
k
rP   Y nX d S )Nr   )r   �intr   r   r   ZLK_UNLCKr
   r   �remover   r   )r   r   r   r   r   �_release&