o
    ~em                     @  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	Zejd
kr<G dd deZnzd dlZW n	 eyK   Y nw dZG dd deZddgZdS )    )annotationsN)suppress)ENOSYS)cast   )BaseFileLock)ensure_directory_existsFwin32c                   @  $   e Zd ZdZd	ddZd	ddZdS )
UnixFileLockHUses the :func:`fcntl.flock` to hard lock the lock file on unix systems.returnNonec                 C     t NNotImplementedErrorself r   >D:\Projects\ConvertPro\env\Lib\site-packages\filelock/_unix.py_acquire      UnixFileLock._acquirec                 C  r   r   r   r   r   r   r   _release   r   UnixFileLock._releaseNr   r   __name__
__module____qualname____doc__r   r   r   r   r   r   r      s    
r   Tc                   @  r
   )
r   r   r   r   c              
   C  s   t | j tjtjB tjB }t| j|| jj}t	t
 t|| jj W d    n1 s/w   Y  zt|tjtjB  W n$ tyd } zt| |jtkrYd}t||W Y d }~d S d }~ww || j_d S )NzFFileSystem does not appear to support flock; user SoftFileLock instead)r   Z	lock_fileosO_RDWRO_CREATO_TRUNCopen_contextmoder   PermissionErrorZ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   4   s   r   Nr   r   r   r   r   r   r   !   s    
	has_fcntl)
__future__r   r"   sys
contextlibr   r.   r   typingr   Z_apir   Z_utilr   r4   platformr   r*   ImportError__all__r   r   r   r   <module>   s*    

