
    pi                       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mZ ej"                  d
k(  rpd dlZd dlZd dlmZ dZdZ ej.                  dd      Zej2                  gej4                  _        ej8                  ej4                  _        ddZ G d de      ZdgZ y G d de      ZdgZ y)    )annotationsN)suppress)EACCES)Path)cast   )BaseFileLock)ensure_directory_existsraise_on_not_writable_filewin32)wintypesi   l    kernel32T)use_last_errorc                    t         j                  |       }|t        k(  r!t        j                         }|dk(  ry|dk(  ryyt        |t        z        S )a  
        Check if a path is a reparse point (symlink, junction, etc.) on Windows.

        :param path: Path to check
        :return: True if path is a reparse point, False otherwise
        :raises OSError: If GetFileAttributesW fails for reasons other than file-not-found
           F   )	_kernel32GetFileAttributesWINVALID_FILE_ATTRIBUTESctypesget_last_errorboolFILE_ATTRIBUTE_REPARSE_POINT)pathattrserrs      S/opt/services/ai/voice_agent/venv/lib/python3.12/site-packages/filelock/_windows.py_is_reparse_pointr      sS     ,,T2++'')CaxaxE8899    c                       e Zd ZdZddZddZy)WindowsFileLockWUses the :func:`msvcrt.locking` function to hard lock the lock file on Windows systems.c                   t        | j                         t        | j                         t        | j                        rd| j                   }t	        |      t
        j                  t
        j                  z  t
        j                  z  }	 t        j                  | j                  || j                  j                        }	 t        j                  |t        j                  d       || j                  _        y # t        $ r3}t        j                   |       |j"                  t$        k7  r Y d }~y d }~ww xY w# t        $ r}|j"                  t$        k7  r Y d }~y d }~ww xY w)Nz1Lock file is a reparse point (symlink/junction): r   )r   	lock_filer
   r   OSErrorosO_RDWRO_CREATO_TRUNCopen_contextmodemsvcrtlockingLK_NBLCKlock_file_fdcloseerrnor   )selfmsgflagsfd	exceptions        r   _acquirezWindowsFileLock._acquire2   s   &t~~6#DNN3 !0I$..IYZcl" 		**** 
4WWT^^UDMM4F4FG
4NN2v: 24DMM.  HHRL &0 1  ??f, -s0   5D9 %C: :	D6)D11D69	E EE c                h   t        d| j                  j                        }d | j                  _        t        j                  |t        j
                  d       t        j                  |       t        t              5  t        | j                        j                          d d d        y # 1 sw Y   y xY w)Nintr   )r   r+   r0   r-   r.   LK_UNLCKr&   r1   r   r%   r   r$   unlink)r3   r6   s     r   _releasezWindowsFileLock._releaseP   su    eT]]778B)-DMM&NN2v2HHRL'" .T^^$++-. . .s   ;$B((B1NreturnNone__name__
__module____qualname____doc__r8   r=    r   r   r!   r!   /   s    e	4<	.r   r!   c                       e Zd ZdZddZddZy)r!   r"   c                    t         NNotImplementedErrorr3   s    r   r8   zWindowsFileLock._acquire^       %%r   c                    t         rI   rJ   rL   s    r   r=   zWindowsFileLock._releasea   rM   r   Nr>   rA   rF   r   r   r!   r!   [   s    e	&	&r   )r   strr?   r   )!
__future__r   r&   sys
contextlibr   r2   r   pathlibr   typingr   _apir	   _utilr
   r   platformr   r-   r   r   r   WinDLLr   LPCWSTRr   argtypesDWORDrestyper   r!   __all__rF   r   r   <module>r^      s    " 	 
      F<<7 $. ( j>I-5-=-=,>I  )+3>>I  (:((., (.n &, & r   