U
    xÊ¹jÓ  ã                   @  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 ddlmZ dd	lmZ d
Zejdkr„G dd„ deƒZn6zd dlZW n ek
r¤   Y nX dZG dd„ deƒZddgZdS )é    )ÚannotationsN)Úsuppress)ÚENOSYS)ÚPath)Úcasté   )ÚBaseFileLock)Úensure_directory_existsFÚwin32c                   @  s,   e Zd ZdZddœdd„Zddœdd„ZdS )	ÚUnixFileLockúHUses the :func:`fcntl.flock` to hard lock the lock file on unix systems.ÚNone©Úreturnc                 C  s   t ‚d S ©N©ÚNotImplementedError©Úself© r   úM/var/www/html/bwave/python/venv/lib/python3.8/site-packages/filelock/_unix.pyÚ_acquire   s    úUnixFileLock._acquirec                 C  s   t ‚d S r   r   r   r   r   r   Ú_release   s    úUnixFileLock._releaseN©Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r      s   r   Tc                   @  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 | jƒ tjtjB }t| jƒ ¡ s.|tjO }t | j|| j	j
¡}ttƒ� t || j	j
¡ W 5 Q R X zt |tjtjB ¡ W nD tk
rÂ } z&t |¡ |jtkr²d}t|ƒ|‚W 5 d }~X Y n
X || j	_d S )NzEFileSystem does not appear to support flock; use SoftFileLock instead)r	   Z	lock_fileÚosÚO_RDWRÚO_TRUNCr   ÚexistsÚO_CREATÚopenÚ_contextÚmoder   ÚPermissionErrorÚfchmodÚfcntlÚflockZLOCK_EXZLOCK_NBÚOSErrorÚcloseÚerrnor   r   Úlock_file_fd)r   Z
open_flagsÚfdÚ	exceptionÚmsgr   r   r   r   %   s    




r   c                 C  s2   t t| jjƒ}d | j_t |tj¡ t |¡ d S r   )	r   Úintr&   r/   r*   r+   ZLOCK_UNr    r-   )r   r0   r   r   r   r   7   s    r   Nr   r   r   r   r   r   "   s   Ú	has_fcntl)Ú
__future__r   r    ÚsysÚ
contextlibr   r.   r   Úpathlibr   Útypingr   Z_apir   Z_utilr	   r4   Úplatformr   r*   ÚImportErrorÚ__all__r   r   r   r   Ú<module>   s(   

 þ