
    _i                    ~   S SK Jr  S SKrS SKrS SKJr  S SKJr  S SKJ	r	  S SK
Jr  SSKJr  SS	KJrJr  \R"                  S
:X  ak  S SKrS SKrS SKJr  SrSr\R.                  " SSS9r\R2                  /\R4                  l        \R8                  \R4                  l        SS jr " S S\5      rO " S S\5      rS/r g)    )annotationsN)suppress)EACCES)Path)cast   )BaseFileLock)ensure_directory_existsraise_on_not_writable_filewin32)wintypesi   l    kernel32T)use_last_errorc                    [         R                  U 5      nU[        :X  a$  [        R                  " 5       nUS:X  a  gUS:X  a  gg[        U[        -  5      $ )z
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      M/var/www/html/land-ocr/venv/lib/python3.13/site-packages/filelock/_windows.py_is_reparse_pointr      sS     ,,T2++'')CaxaxE8899    c                  ,    \ rS rSrSrSS jrSS jrSrg)WindowsFileLock/   WUses the :func:`msvcrt.locking` function to hard lock the lock file on Windows systems.c                   [        U R                  5        [        U R                  5        [        U R                  5      (       a  SU R                   3n[	        U5      e[
        R                  [
        R                  -  [
        R                  -  n [
        R                  " U R                  X R                  R                  5      n [        R                  " U[        R                  S5        X0R                  l        g ! [         a5  n[
        R                   " U5        UR"                  [$        :w  a  e  S nAg S nAff = f! [         a  nUR"                  [$        :w  a  e  S nAg S nAff = f)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   _acquireWindowsFileLock._acquire2   s
   &t~~6#DNN3 !00I$..IYZcl" 		**** 
4WWT^^UMM4F4FG
4NN2v: 24MM.  HHRL &0 1  ??f, -s0   5E &C? ?
D>	+D99D>
E*E%%E*c                v   [        SU R                  R                  5      nS U R                  l        [        R                  " U[        R
                  S5        [        R                  " U5        [        [        5         [        U R                  5      R                  5         S S S 5        g ! , (       d  f       g = f)Nintr   )r   r,   r1   r.   r/   LK_UNLCKr'   r2   r   r&   r   r%   unlink)r4   r7   s     r   _releaseWindowsFileLock._releaseP   sl    eT]]778B)-DMM&NN2v2HHRL'"T^^$++- #""s   =$B**
B8 NreturnNone__name__
__module____qualname____firstlineno____doc__r9   r?   __static_attributes__rA   r   r   r!   r!   /   s    e	4<	.r   r!   c                  ,    \ rS rSrSrSS jrSS jrSrg)r!   [   r#   c                    [         eNNotImplementedErrorr4   s    r   r9   r:   ^       %%r   c                    [         erO   rP   rR   s    r   r?   r@   a   rS   r   rA   NrB   rE   rA   r   r   r!   r!   [   s    e	&	&r   )r   strrC   r   )!
__future__r   r'   sys
contextlibr   r3   r   pathlibr   typingr   _apir	   _utilr
   r   platformr   r.   r   r   r   WinDLLr   LPCWSTRr   argtypesDWORDrestyper   r!   __all__rA   r   r   <module>rd      s    " 	 
      F<<7 $. ( j>I-5-=-=,>I  )+3>>I  (:((., (.X&, & r   