
    g                        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e      Zn	 d dlZdZ G d de      ZddgZy# e$ r Y w xY w)    )annotationsN)suppress)ENOSYS)Path)cast   )BaseFileLock)ensure_directory_existsFwin32c                       e Zd ZdZddZddZy)UnixFileLockHUses the :func:`fcntl.flock` to hard lock the lock file on unix systems.c                    t         NNotImplementedErrorselfs    C/var/www/openai/venv/lib/python3.12/site-packages/filelock/_unix.py_acquirezUnixFileLock._acquire       %%    c                    t         r   r   r   s    r   _releasezUnixFileLock._release   r   r   NreturnNone__name__
__module____qualname____doc__r   r    r   r   r   r      s    V	&	&r   r   Tc                       e Zd ZdZddZddZy)r   r   c                   t        | j                         t        j                  t        j                  z  }t        | j                        j                         s|t        j                  z  }t        j                  | j                  || j                  j                        }t        t              5  t        j                  || j                  j                         d d d        	 t        j                  |t        j                   t        j"                  z         || j                  _        y # 1 sw Y   QxY w# t&        $ r@}t        j(                  |       |j*                  t,        k(  rd}t/        |      |Y d }~y d }~ww xY w)NzEFileSystem does not appear to support flock; use SoftFileLock instead)r
   	lock_fileosO_RDWRO_TRUNCr   existsO_CREATopen_contextmoder   PermissionErrorfchmodfcntlflockLOCK_EXLOCK_NBlock_file_fdOSErrorcloseerrnor   r   )r   
open_flagsfd	exceptionmsgs        r   r   zUnixFileLock._acquire%   s    #DNN3RZZ/J'..0bjj(
T]]5G5GHB/*		"dmm001 +0B => .0* +*  B??f,aC-c2	A -Bs$   1+D,%5D8 ,D58	F6E<<Fc                    t        t        | j                  j                        }d | j                  _        t	        j
                  |t        j                         t        j                  |       y r   )	r   intr-   r5   r1   r2   LOCK_UNr'   r7   )r   r:   s     r   r   zUnixFileLock._release7   sC     c4==556B)-DMM&KKEMM*HHRLr   Nr   r   r#   r   r   r   r   "   s    V	0$	r   	has_fcntl)
__future__r   r'   sys
contextlibr   r8   r   pathlibr   typingr   _apir	   _utilr
   r@   platformr   r1   ImportError__all__r#   r   r   <module>rK      s    " 	 
      * 	<<7&| & 	| @ I  s   A' 'A/.A/