ó
    Eñig  ã                  ó~  • 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

:returns: 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      ÚN/home/mande/repo/quber/.venv/lib/python3.13/site-packages/filelock/_windows.pyÚ_is_reparse_pointr      sS   € ô ×,Ñ,¨TÓ2ˆØÔ+Ó+ä×'Ò'Ó)ˆCØ�a‹xØØ�a‹xØàÜ�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é2   aV  
Uses the :func:`msvcrt.locking` function to hard lock the lock file on Windows systems.

Lock file cleanup: Windows attempts to delete the lock file after release, but deletion is
not guaranteed in multi-threaded scenarios where another thread holds an open handle. The lock
file may persist on disk, which does not affect lock correctness.
c                ó¬  • [        U R                  5        [        U R                  5        [        U R                  5      (       a  SU R                   3n[	        U5      e[
        R                  [
        R                  -  n [
        R                  " U R                  X R                  5       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ÚopenÚ
_open_modeÚmsvcrtÚlockingÚLK_NBLCKÚ_contextÚlock_file_fdÚcloseÚerrnor   )ÚselfÚmsgÚflagsÚfdÚ	exceptions        r   Ú_acquireÚWindowsFileLock._acquire;   sû   € Ü& t§~¡~Ô6Ü# D§N¡NÔ3ô ! §¡×0Ñ0ØIÈ$Ï.É.ÐIYÐZ�Ü˜c“lÐ"ô —	‘	Ü—*‘*ñð ð4Ü—W’W˜TŸ^™^¨U·O±OÓ4EÓF�ð
4Ü—N’N 2¤v§¡¸Ô:ð 24—M‘MÕ.øô ó Ü—H’H˜R”LØ —‘¬&Ó0Øô 1ûðûô ó Ø—?‘?¤fÓ,Øô -ûðús0   Â/D* Â1&C( Ã(
D'Ã2+D"Ä"D'Ä*
EÄ4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.   r/   r+   r,   ÚLK_UNLCKr&   r0   r   r%   r   r$   Úunlink)r2   r5   s     r   Ú_releaseÚWindowsFileLock._releaseX   sl   € Ü�e˜TŸ]™]×7Ñ7Ó8ˆBØ)-ˆD�M‰MÔ&Ü�NŠN˜2œvŸ™°Ô2Ü�HŠH�RŒLäœ'Õ"Ü�T—^‘^Ó$×+Ñ+Ô-÷ #×"Ö"ús   Á=$B*Â*
B8© N©ÚreturnÚNone©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r7   r=   Ú__static_attributes__r?   r   r   r!   r!   2   s   † ñ	ô	4÷:	.r   r!   c                  ó,   • \ rS rSrSrSS jrSS jrSrg)r!   éc   zWUses the :func:`msvcrt.locking` function to hard lock the lock file on Windows systems.c                ó   • [         e©N©ÚNotImplementedError©r2   s    r   r7   r8   f   ó   € Ü%Ð%r   c                ó   • [         erM   rN   rP   s    r   r=   r>   i   rQ   r   r?   Nr@   rC   r?   r   r   r!   r!   c   s   † Ùeô	&÷	&r   )r   ÚstrrA   r   )!Ú
__future__r   r&   ÚsysÚ
contextlibr   r1   r   Úpathlibr   Útypingr   Ú_apir	   Ú_utilr
   r   Úplatformr   r+   r   r   r   ÚWinDLLr   ÚLPCWSTRr   ÚargtypesÚDWORDÚrestyper   r!   Ú__all__r?   r   r   Ú<module>rb      s¨   ðÝ "ã 	Û 
Ý Ý Ý Ý å ß Fà‡<�<�7ÓÛÛÝð $.Ð Ø(Ðð —’˜j¸Ñ>€IØ-5×-=Ñ-=Ð,>€I× Ñ Ô)Ø+3¯>©>€I× Ñ Ô(ô:ô.-.˜,õ -.ôb&˜,ô &ð ð�r   