a
    h/	                  	   @  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rG dd deZnLz d dlZejejejejfZW n eefy   Y n0 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 )	UnixFileLockHUses the :func:`fcntl.flock` to hard lock the lock file on unix systems.Nonereturnc                 C  s   t d S NNotImplementedErrorself r   </var/www/auris/lib/python3.9/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 d    n1 sp0    Y  zt|tjtjB  W nF ty } z.t| |jtkrd}t||W Y d }~nd }~0 0 || 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flockLOCK_EX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 d| jj}d | j_t|tj t| d S )Nint)r   r&   r1   r*   r+   LOCK_UNr    r/   )r   r2   r   r   r   r   9   s    r   Nr   r   r   r   r   r   $   s   	has_fcntl)
__future__r   r    sys
contextlibr   r0   r   pathlibr   typingr   Z_apir   Z_utilr	   r7   platformr   r*   r+   r,   r-   r6   _ImportErrorAttributeError__all__r   r   r   r   <module>   s*   

 