
    ʆhs-                    h   S r SSKJr  SSKrSSKrSSKJrJrJrJ	r	J
r
Jr  SSKJr  SSKJr  SSKJr  \(       a  SSKJr  \R&                  " S	5      R(                  rS
rSrSrSrSrSrSrSrSrSrS
r S
r!Sr"Sr#Sr$Sr%S
r&Sr'Sr(Sr)Sr*Sr+Sr,\&r-\'r.\+r/S
r0Sr1Sr2Sr3Sr4Sr5 " S S\Rl                  5      r7S3S jr8S3S jr9S3S  jr:\Rv                  " S!5      r<\<Rz                  r=\\=l>        \8\=l?        \\
\\\\R                  " \5      \R                  " \75      \
4\=lA        \<R                  rB\\Bl>        \9\Bl?        \	\\\
\\\4\BlA        \<R                  rC\\Cl>        \4\ClA        \<R                  rD\\Dl>        \8\Dl?        \\R                  " \75      4\DlA        \<R                  rF\\Fl>        \9\Fl?        \
\\\	4\FlA        \<R                  rG\\Gl>        \8\Gl?        \4\GlA        \<R                  rH\\Hl>        \:\Hl?        \\\4\HlA        \<R                  rI\\Il>        \9\Il?        \\\
\4\IlA        \<R                  rJ\\Jl>        \8\Jl?        \\
\
\R                  " \75      \4\JlA        \<R                  rK\\Kl>        \8\Kl?        \\\\R                  " \75      4\KlA        \<R                  rL\\Ll>        \:\Ll?        \\\\4\LlA         " S" S#\Rl                  5      rM\R                  " \M5      rN\rO\" S$ \!\"\#/5      rP\" S% \\\\\\\\/5      rQS&rRS'rSS4S( jrTS5S) jrUS6S* jrVS7S+ jrWS8S, jrXS9S- jrY\" S.S/9 " S0 S15      5       rZS:S2 jr[g);u  :module: watchdog.observers.winapi
:synopsis: Windows API-Python interface (removes dependency on ``pywin32``).
:author: theller@ctypes.org (Thomas Heller)
:author: will@willmcgugan.com (Will McGugan)
:author: ryan@rfk.id.au (Ryan Kelly)
:author: yesudeep@gmail.com (Yesudeep Mangalapilly)
:author: thomas.amland@gmail.com (Thomas Amland)
:author: contact@tiger-222.fr (Mickaël Schoentgen)
:platforms: windows
    )annotationsN)BOOLDWORDHANDLELPCWSTRLPVOIDLPWSTR)	dataclass)reduce)TYPE_CHECKING)Any                   @      i   i   @      i  i        i  i  c                  <    \ rS rSrS\4S\4S\4S\4S\4S\44rSrg	)

OVERLAPPEDI   InternalInternalHighOffset
OffsetHighPointerhEvent N)	__name__
__module____qualname____firstlineno__r   r   r   _fields___static_attributes__r$       Q/opt/services/DDDS/venv/lib/python3.13/site-packages/watchdog/observers/winapi.pyr   r   I   s9    	V	 	5	u	F	6Hr+   r   c                >    U (       d  [         R                  " 5       eU$ NctypesWinErrorvaluefuncargss      r,   _errcheck_boolr6   T   s    ooKr+   c                |    U (       d  [         R                  " 5       eU [        :X  a  [         R                  " 5       eU$ r.   )r0   r1   INVALID_HANDLE_VALUEr2   s      r,   _errcheck_handler9   Z   s-    oo$$ooKr+   c                <    U S:X  a  [         R                  " 5       eU$ )Nl    r/   r2   s      r,   _errcheck_dwordr;   b   s    
ooKr+   kernel32c                  J    \ rS rSrS\4S\4S\4S\R                  S-  44rSrg)	FileNotifyInformation   NextEntryOffsetActionFileNameLengthFileNamer   r$   N)	r%   r&   r'   r(   r   r0   c_charr)   r*   r$   r+   r,   r>   r>      s2    	E"	5	5!	fmma')	Hr+   r>   c                
    X-  $ r.   r$   xys     r,   <lambda>rI          r+   c                
    X-  $ r.   r$   rF   s     r,   rI   rI      rJ   r+   i   i   c                   / nUS:  a  [         R                  " U [        5      S   n[         R                  " U5      [        R
                  R                  -   n[         R                  " XCR                  5      nUR                  UR                  UR                  S5      45        UR                  nUS::  a   U$ XS  n X-  nUS:  a  M  U$ )Nr   zutf-16)r0   castLPFNI	addressofr>   rC   offset	string_atrB   appendrA   decoder@   )read_buffern_bytesresultsfniptrfilenamenum_to_skips          r,   _parse_event_bufferr[     s    G
A+kk+u-a0s#&;&D&D&K&KK##C););<

HOOH$=>?))! N ",/ A+ Nr+   c                ~    [         R                  " [        5      n[        X[        [        5        UR
                  U:g  $ r.   )r0   create_unicode_bufferPATH_BUFFER_SIZEGetFinalPathNameByHandleWVOLUME_NAME_NTr3   )handlepathbuffs      r,   _is_observed_path_deletedrd     s1     ''(89Df,<nM::r+   c                 j   [         R                  " S5      n [        S[        [	        U 5      U R
                  R                  S5      5      n[         R                  " U5      n[         R                  " [        5      n[         R                  " U[         R                  " U5      U5        UR                  U4$ )N.r   zutf-8)r0   r]   r>   FILE_ACTION_DELETED_SELFlenr3   encodesizeofcreate_string_bufferr^   memmoverO   raw)rb   event
event_sizerc   s       r,   %_generate_observed_path_deleted_eventrp     s    '',D!!%=s4y$**J[J[\cJdeEu%J&&'78D
NN4))%0*=88Zr+   c           	     D    [        U [        [        S[        [        S5      $ )z9Returns a Windows handle to the specified directory path.N)CreateFileWFILE_LIST_DIRECTORYWATCHDOG_FILE_SHARE_FLAGSOPEN_EXISTINGWATCHDOG_FILE_FLAGS)rb   s    r,   get_directory_handlerw   (  s$    ! r+   c                     [        U S 5        [        U 5        g ! [         aC    [        R                  " [
        5         [        U 5        S S S 5         g ! , (       d  f        g = ff = fr.   )
CancelIoExCloseHandleOSError
contextlibsuppress	Exception)ra   s    r,   close_directory_handler   5  sM     64 F    + ,+++ s&    $A'A
A'
A#	A'#A'c          
        [         R                  " [        5      n[        5       n [	        U [         R
                  " U5      [        U5      U[        [         R
                  " U5      SS5        UR                  [        UR                  5      4$ ! [         aL  nUR                  [        :X  a  UR                  S4s SnA$ [        X5      (       a  [        5       s SnA$ e SnAff = f)zRead changes to the directory using the specified directory handle.

https://timgolden.me.uk/pywin32-docs/win32file__ReadDirectoryChangesW_meth.html
Nr   )r0   rk   BUFFER_SIZEr   ReadDirectoryChangesWbyrefrh   WATCHDOG_FILE_NOTIFY_FLAGSr{   winerrorERROR_OPERATION_ABORTEDrm   rd   rp   intr3   )ra   rb   	recursiveevent_buffernbyteses         r,   read_directory_changesr   >  s    
 ..{;LWFLL&&LL 		
( S...  ::00##Q&& %V228::s0   AB 
C$!C9C$?CC$CC$T)unsafe_hashc                      \ rS rSr% S\S'   S\S'   \SS j5       r\SS j5       r\SS j5       r\SS	 j5       r	\SS
 j5       r
\SS j5       rSrg)WinAPINativeEventi]  r   actionstrsrc_pathc                (    U R                   [        :H  $ r.   )r   FILE_ACTION_CREATEDselfs    r,   is_addedWinAPINativeEvent.is_addedb      {{111r+   c                (    U R                   [        :H  $ r.   )r   FILE_ACTION_REMOVEDr   s    r,   
is_removedWinAPINativeEvent.is_removedf  r   r+   c                (    U R                   [        :H  $ r.   )r   FILE_ACTION_MODIFIEDr   s    r,   is_modifiedWinAPINativeEvent.is_modifiedj  s    {{222r+   c                (    U R                   [        :H  $ r.   )r   FILE_ACTION_RENAMED_OLD_NAMEr   s    r,   is_renamed_old WinAPINativeEvent.is_renamed_oldn      {{:::r+   c                (    U R                   [        :H  $ r.   )r   FILE_ACTION_RENAMED_NEW_NAMEr   s    r,   is_renamed_new WinAPINativeEvent.is_renamed_newr  r   r+   c                (    U R                   [        :H  $ r.   )r   FILE_ACTION_REMOVED_SELFr   s    r,   is_removed_self!WinAPINativeEvent.is_removed_selfv  s    {{666r+   r$   N)returnbool)r%   r&   r'   r(   __annotations__propertyr   r   r   r   r   r   r*   r$   r+   r,   r   r   ]  s    KM2 2 2 2 3 3 ; ; ; ; 7 7r+   r   c               |    [        XUS9u  p4[        X45      nU VVs/ s H  u  pg[        Xg5      PM     snn$ s  snnf )N)r   )r   r[   r   )ra   rb   r   bufr   eventsr   r   s           r,   read_eventsr   {  s;    (KKC -FHNO4DFf/OOOs   8)r3   z
Any | Noner4   r   r5   r   r   r   )rT   bytesrU   r   r   zlist[tuple[int, str]])ra   r   rb   r   r   r   )r   tuple[bytes, int])rb   r   r   r   )ra   r   r   None)ra   r   rb   r   r   r   r   r   )ra   r   rb   r   r   r   r   zlist[WinAPINativeEvent])\__doc__
__future__r   r|   r0   ctypes.wintypesr   r   r   r   r   r	   dataclassesr
   	functoolsr   typingr   r   c_void_pr3   r8   FILE_NOTIFY_CHANGE_FILE_NAMEFILE_NOTIFY_CHANGE_DIR_NAMEFILE_NOTIFY_CHANGE_ATTRIBUTESFILE_NOTIFY_CHANGE_SIZEFILE_NOTIFY_CHANGE_LAST_WRITEFILE_NOTIFY_CHANGE_LAST_ACCESSFILE_NOTIFY_CHANGE_CREATIONFILE_NOTIFY_CHANGE_SECURITYFILE_FLAG_BACKUP_SEMANTICSFILE_FLAG_OVERLAPPEDrs   FILE_SHARE_READFILE_SHARE_WRITEFILE_SHARE_DELETEru   r`   r   FILE_ACTION_DELETEDr   r   r   rg   FILE_ACTION_OVERFLOWFILE_ACTION_ADDEDr   r   THREAD_TERMINATEWAIT_ABANDONEDWAIT_IO_COMPLETIONWAIT_OBJECT_0WAIT_TIMEOUTr   	Structurer   r6   r9   r;   WinDLLr<   r   restypeerrcheckPOINTERargtypesrr   rz   ry   CreateEventWCreateEventSetEventWaitForSingleObjectExCreateIoCompletionPortGetQueuedCompletionStatusPostQueuedCompletionStatusr_   r>   rN   rv   rt   r   r   r^   r[   rd   rp   rw   r   r   r   r   r$   r+   r,   <module>r      sZ  	 #   H H !    r*00   $ "  $   % !& # $ ' !            !   ( ) 3      !!  ==$ 66  $  !/  

		
NN5
NN:
	"   "" ' 		
		
  "" y   

 $
 

NN:
 
 ## ' 
	   " I  66  %  !0  
	"   "88 !'  "2  


		#   %>> $(  !%3  "



NN:	&  " &@@ %)  "&4  #
		
NN:	'  # %>> $)  !%4  "

			&  "F,,  	,-
 1 "  $$#%%#&#	 (    
 /> t7 7 7:Pr+   