§
    xÅjs-  ã                  óÐ  — d Z ddlmZ ddlZddlZddlmZmZmZm	Z	m
Z
mZ ddlmZ ddlmZ ddlmZ erddlmZ  ej        d	¦  «        j        Zd
ZdZdZdZdZdZdZdZdZdZd
Z d
Z!dZ"dZ#dZ$dZ%d
Z&dZ'dZ(dZ)dZ*dZ+dZ,e&Z-e'Z.e+Z/d
Z0dZ1dZ2dZ3dZ4dZ5 G d„ dej6        ¦  «        Z7dGd$„Z8dGd%„Z9dGd&„Z: ej;        d'¦  «        Z<e<j=        Z=ee=_>        e8e=_?        ee
eee ej@        e¦  «         ej@        e7¦  «        e
fe=_A        e<jB        ZBeeB_>        e9eB_?        e	eee
eeefeB_A        e<jC        ZCeeC_>        efeC_A        e<jD        ZDeeD_>        e8eD_?        e ej@        e7¦  «        feD_A        e<jE        ZFeeF_>        e9eF_?        e
eee	feF_A        e<jG        ZGeeG_>        e8eG_?        efeG_A        e<jH        ZHeeH_>        e:eH_?        eeefeH_A        e<jI        ZIeeI_>        e9eI_?        eee
efeI_A        e<jJ        ZJeeJ_>        e8eJ_?        ee
e
 ej@        e7¦  «        efeJ_A        e<jK        ZKeeK_>        e8eK_?        eee ej@        e7¦  «        feK_A        e<jL        ZLeeL_>        e:eL_?        eeeefeL_A         G d(„ d)ej6        ¦  «        ZM ej@        eM¦  «        ZNeZO ed*„ e!e"e#g¦  «        ZP ed+„ eeeeeeeeg¦  «        ZQd,ZRd-ZSdHd3„ZTdId9„ZUdJd;„ZVdKd<„ZWdLd>„ZXdMd@„ZY edA¬B¦  «         G dC„ dD¦  «        ¦   «         ZZdNdF„Z[dS )Ou›  :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                  ó6   — e Zd ZdefdefdefdefdefdeffZdS )Ú
OVERLAPPEDÚInternalÚInternalHighÚOffsetÚ
OffsetHighÚPointerÚhEventN)Ú__name__Ú
__module__Ú__qualname__r   r   r   Ú_fields_© ó    úJC:\Projects\Historical\venv\Lib\site-packages\watchdog/observers/winapi.pyr   r   I   sE   € € € € € à	�VÐØ	˜Ð Ø	�5ÐØ	�uÐØ	�FÐØ	�6Ðð€H€H€Hr(   r   Úvalueú
Any | NoneÚfuncr   ÚargsÚreturnc                ó0   — | st          j        ¦   «         ‚|S ©N©ÚctypesÚWinError©r*   r,   r-   s      r)   Ú_errcheck_boolr5   T   s   € Øð  ÝŒoÑÔÐØ€Kr(   c                ól   — | st          j        ¦   «         ‚| t          k    rt          j        ¦   «         ‚|S r0   )r2   r3   ÚINVALID_HANDLE_VALUEr4   s      r)   Ú_errcheck_handler8   Z   s7   € Øð  ÝŒoÑÔÐØÕ$Ò$Ð$ÝŒoÑÔÐØ€Kr(   c                ó8   — | dk    rt          j        ¦   «         ‚|S )Nl   ÿÿ r1   r4   s      r)   Ú_errcheck_dwordr:   b   s    € Ø�
ÒÐÝŒoÑÔÐØ€Kr(   Úkernel32c                  ó:   — e Zd Zdefdefdefdej        dz  ffZdS )ÚFileNotifyInformationÚNextEntryOffsetÚActionÚFileNameLengthÚFileNamer   N)r#   r$   r%   r   r2   Úc_charr&   r'   r(   r)   r=   r=   Ô   s<   € € € € € à	˜EÐ"Ø	�5ÐØ	˜5Ð!Ø	�f”m aÑ'Ð)ð	€H€H€Hr(   r=   c                ó   — | |z  S r0   r'   ©ÚxÚys     r)   ú<lambda>rG   ä   ó
   € ��Q‘€ r(   c                ó   — | |z  S r0   r'   rD   s     r)   rG   rG   ì   rH   r(   i ú  i   Úread_bufferÚbytesÚn_bytesÚintúlist[tuple[int, str]]c                óz  — g }|dk    r²t          j        | t          ¦  «        d         }t          j        |¦  «        t          j        j        z   }t          j        ||j        ¦  «        }| 	                    |j
        |                     d¦  «        f¦  «         |j        }|dk    rn| |d …         } ||z  }|dk    °²|S )Nr   zutf-16)r2   ÚcastÚLPFNIÚ	addressofr=   rA   ÚoffsetÚ	string_atr@   Úappendr?   Údecoder>   )rJ   rL   ÚresultsÚfniÚptrÚfilenameÚnum_to_skips          r)   Ú_parse_event_bufferr\     s¼   € Ø€GØ
�AŠ+ˆ+ÝŒk˜+¥uÑ-Ô-¨aÔ0ˆÝÔ˜sÑ#Ô#Õ&;Ô&DÔ&KÑKˆÝÔ# C¨Ô);Ñ<Ô<ˆØ�Š˜œ
 H§O¢O°HÑ$=Ô$=Ð>Ñ?Ô?Ð?ØÔ)ˆØ˜!ÒÐØØ! + , ,Ô/ˆØ�;Ñˆð �AŠ+ˆ+ð €Nr(   Úhandler   ÚpathÚstrÚboolc                ó‚   — t          j        t          ¦  «        }t          | |t          t          ¦  «         |j        |k    S r0   )r2   Úcreate_unicode_bufferÚPATH_BUFFER_SIZEÚGetFinalPathNameByHandleWÚVOLUME_NAME_NTr*   )r]   r^   Úbuffs      r)   Ú_is_observed_path_deletedrg     s7   € õ Ô'Õ(8Ñ9Ô9€DÝ˜f dÕ,<½nÑMÔMÐMØŒ:˜ÒÐr(   útuple[bytes, int]c                 ó^  — t          j        d¦  «        } t          dt          t	          | ¦  «        | j                             d¦  «        ¦  «        }t          j        |¦  «        }t          j        t          ¦  «        }t          j
        |t          j        |¦  «        |¦  «         |j        |fS )Nú.r   zutf-8)r2   rb   r=   ÚFILE_ACTION_DELETED_SELFÚlenr*   ÚencodeÚsizeofÚcreate_string_bufferrc   ÚmemmoverR   Úraw)r^   ÚeventÚ
event_sizerf   s       r)   Ú%_generate_observed_path_deleted_eventrt     s‰   € åÔ'¨Ñ,Ô,€DÝ! !Õ%=½sÀ4¹y¼yÈ$Ì*×J[ÒJ[Ð\cÑJdÔJdÑeÔe€EÝ”˜uÑ%Ô%€JÝÔ&Õ'7Ñ8Ô8€DÝ
„N�4�Ô)¨%Ñ0Ô0°*Ñ=Ô=Ð=ØŒ8�ZÐÐr(   c           	     óT   — t          | t          t          dt          t          d¦  «        S )z9Returns a Windows handle to the specified directory path.N)ÚCreateFileWÚFILE_LIST_DIRECTORYÚWATCHDOG_FILE_SHARE_FLAGSÚOPEN_EXISTINGÚWATCHDOG_FILE_FLAGS)r^   s    r)   Úget_directory_handler{   (  s)   € åØÝÝ!ØÝÝØñô ð r(   ÚNonec                óì   — 	 t          | d ¦  «         t          | ¦  «         d S # t          $ rF t          j        t
          ¦  «        5  t          | ¦  «         d d d ¦  «         Y d S # 1 swxY w Y   Y d S w xY wr0   )Ú
CancelIoExÚCloseHandleÚOSErrorÚ
contextlibÚsuppressÚ	Exception)r]   s    r)   Úclose_directory_handler„   5  sÓ   € ð Ý�6˜4Ñ Ô Ð Ý�FÑÔÐÐÐøÝð  ð  ð  ÝÔ ¥Ñ+Ô+ð 	 ð 	 Ý˜ÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð øøøs3   ‚# £#A3ÁA$ÁA3Á$A(	Á(A3Á+A(	Á,A3Á2A3Ú	recursivec          
     óÊ  — t          j        t          ¦  «        }t          ¦   «         }	 t	          | t          j        |¦  «        t          |¦  «        |t          t          j        |¦  «        dd¦  «         nT# t          $ rG}|j	        t          k    r|j        dfcY d}~S t          | |¦  «        rt          ¦   «         cY d}~S ‚ d}~ww xY w|j        t          |j        ¦  «        fS )z�Read changes to the directory using the specified directory handle.

    https://timgolden.me.uk/pywin32-docs/win32file__ReadDirectoryChangesW_meth.html
    Nr   )r2   ro   ÚBUFFER_SIZEr   ÚReadDirectoryChangesWÚbyrefrl   ÚWATCHDOG_FILE_NOTIFY_FLAGSr€   ÚwinerrorÚERROR_OPERATION_ABORTEDrq   rg   rt   rM   r*   )r]   r^   r…   Úevent_bufferÚnbytesÚes         r)   Úread_directory_changesr�   >  s  € õ
 Ô.­{Ñ;Ô;€LÝ‰WŒW€FðÝØÝŒL˜Ñ&Ô&Ý�ÑÔØÝ&ÝŒL˜Ñ Ô ØØñ		
ô 		
ð 		
ð 		
øõ ð ð ð ØŒ:Õ0Ò0Ð0ØÔ# QÐ&Ð&Ð&Ð&Ð&Ð&Ð&õ % V¨TÑ2Ô2ð 	;Ý8Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:àøøøøðøøøð Ô�S ¤Ñ.Ô.Ð.Ð.s0   ©AA6 Á6
CÂ CÂCÂCÂ;CÃCÃCT)Úunsafe_hashc                  ó´   — e Zd ZU ded<   ded<   edd„¦   «         Zedd„¦   «         Zedd	„¦   «         Zedd
„¦   «         Zedd„¦   «         Z	edd„¦   «         Z
dS )ÚWinAPINativeEventrM   Úactionr_   Úsrc_pathr.   r`   c                ó"   — | j         t          k    S r0   )r”   ÚFILE_ACTION_CREATED©Úselfs    r)   Úis_addedzWinAPINativeEvent.is_addedb  ó   € àŒ{Õ1Ò1Ð1r(   c                ó"   — | j         t          k    S r0   )r”   ÚFILE_ACTION_REMOVEDr˜   s    r)   Ú
is_removedzWinAPINativeEvent.is_removedf  r›   r(   c                ó"   — | j         t          k    S r0   )r”   ÚFILE_ACTION_MODIFIEDr˜   s    r)   Úis_modifiedzWinAPINativeEvent.is_modifiedj  s   € àŒ{Õ2Ò2Ð2r(   c                ó"   — | j         t          k    S r0   )r”   ÚFILE_ACTION_RENAMED_OLD_NAMEr˜   s    r)   Úis_renamed_oldz WinAPINativeEvent.is_renamed_oldn  ó   € àŒ{Õ:Ò:Ð:r(   c                ó"   — | j         t          k    S r0   )r”   ÚFILE_ACTION_RENAMED_NEW_NAMEr˜   s    r)   Úis_renamed_newz WinAPINativeEvent.is_renamed_newr  r¥   r(   c                ó"   — | j         t          k    S r0   )r”   ÚFILE_ACTION_REMOVED_SELFr˜   s    r)   Úis_removed_selfz!WinAPINativeEvent.is_removed_selfv  s   € àŒ{Õ6Ò6Ð6r(   N)r.   r`   )r#   r$   r%   Ú__annotations__Úpropertyrš   rž   r¡   r¤   r¨   r«   r'   r(   r)   r“   r“   ]  sæ   € € € € € € à€K€K�KØ€M€M�Màð2ð 2ð 2ñ „Xð2ð ð2ð 2ð 2ñ „Xð2ð ð3ð 3ð 3ñ „Xð3ð ð;ð ;ð ;ñ „Xð;ð ð;ð ;ð ;ñ „Xð;ð ð7ð 7ð 7ñ „Xð7ð 7ð 7r(   r“   úlist[WinAPINativeEvent]c               ód   — t          | ||¬¦  «        \  }}t          ||¦  «        }d„ |D ¦   «         S )N)r…   c                ó4   — g | ]\  }}t          ||¦  «        ‘ŒS r'   )r“   )Ú.0r”   r•   s      r)   ú
<listcomp>zread_events.<locals>.<listcomp>~  s(   € ÐOÐOÐOÑ4D°F¸HÕ˜f hÑ/Ô/ÐOÐOÐOr(   )r�   r\   )r]   r^   r…   ÚbufrŽ   Úeventss         r)   Úread_eventsrµ   {  s=   € Ý(¨°ÀÐKÑKÔK�K€CˆÝ   fÑ-Ô-€FØOÐOÈÐOÑOÔOÐOr(   )r*   r+   r,   r   r-   r   r.   r   )rJ   rK   rL   rM   r.   rN   )r]   r   r^   r_   r.   r`   )r.   rh   )r^   r_   r.   r   )r]   r   r.   r|   )r]   r   r^   r_   r…   r`   r.   rh   )r]   r   r^   r_   r…   r`   r.   r®   )\Ú__doc__Ú
__future__r   r�   r2   Úctypes.wintypesr   r   r   r   r   r	   Údataclassesr
   Ú	functoolsr   Útypingr   r   Úc_void_pr*   r7   Ú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_OVERLAPPEDrw   ÚFILE_SHARE_READÚFILE_SHARE_WRITEÚFILE_SHARE_DELETEry   re   r—   ÚFILE_ACTION_DELETEDr    r£   r§   rk   ÚFILE_ACTION_OVERFLOWÚFILE_ACTION_ADDEDr�   rª   ÚTHREAD_TERMINATEÚWAIT_ABANDONEDÚWAIT_IO_COMPLETIONÚWAIT_OBJECT_0ÚWAIT_TIMEOUTrŒ   Ú	Structurer   r5   r8   r:   ÚWinDLLr;   rˆ   ÚrestypeÚerrcheckÚPOINTERÚargtypesrv   r   r~   ÚCreateEventWÚCreateEventÚSetEventÚWaitForSingleObjectExÚCreateIoCompletionPortÚGetQueuedCompletionStatusÚPostQueuedCompletionStatusrd   r=   rQ   rz   rx   rŠ   r‡   rc   r\   rg   rt   r{   r„   r�   r“   rµ   r'   r(   r)   ú<module>rß      sï  ðð	ð 	ð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø €€€Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  àð ØÐÐÐÐÐð '�v” rÑ*Ô*Ô0Ð ð  $Ð Ø"Ð Ø $Ð ØÐ Ø %Ð Ø!&Ð Ø#Ð Ø$Ð à'Ð Ø!Ð ØÐ Ø€ØÐ ØÐ Ø€à€ð Ð ØÐ ØÐ Ø Ð Ø Ð Ø!Ð ØÐ ð (Ð Ø)Ð Ø3Ð àÐ ð €ØÐ Ø€Ø€ð Ð ðð ð ð ð �Ô!ñ ô ð ðð ð ð ðð ð ð ðð ð ð ð ˆ6Œ=˜Ñ$Ô$€à Ô6Ð Ø $Ð Ô Ø!/Ð Ô à
Ø
Ø	ØØ	Ø€F„N�5ÑÔØ€F„N�:ÑÔØ
ð	"Ð Ô ð Ô"€Ø€Ô Ø'€Ô àØ	Ø	Ø
Ø	Ø	Ø
ð€Ô ð Ô"€Ø€Ô Ø�y€Ô àÔ €
Ø€
Ô Ø$€
Ô à
Ø€F„N�:ÑÔð€
Ô ð
 Ô#€Ø€Ô Ø'€Ô à
ØØØð	€Ô ð Ô€Ø€Ô Ø"€Ô Ø�I€Ô à Ô6Ð Ø %Ð Ô Ø!0Ð Ô à
Ø	Øð"Ð Ô ð "Ô8Ð Ø!'Ð Ô Ø"2Ð Ô à
Ø
Ø
Ø	ð	#Ð Ô ð %Ô>Ð Ø$(Ð Ô !Ø%3Ð Ô "à
Ø
Ø
Ø€F„N�:ÑÔØ	ð&Ð Ô "ð &Ô@Ð Ø%)Ð Ô "Ø&4Ð Ô #à
Ø	Ø	Ø€F„N�:ÑÔð	'Ð Ô #ð %Ô>Ð Ø$)Ð Ô !Ø%4Ð Ô "à
Ø
Ø	Ø	ð	&Ð Ô "ðð ð ð ð ˜FÔ,ñ ô ð ð 	ˆŒÐ,Ñ-Ô-€ð
 1Ð Ø"˜FØÐàØØðñô Ð ð $˜VØÐà$Ø#Ø%ØØ%Ø#Ø&Ø#ð	ñô Ð ð( €ð Ð ðð ð ð ðð ð ð ð ð  ð  ð  ð
ð 
ð 
ð 
ð ð  ð  ð  ð/ð /ð /ð /ð> €�tÐÑÔð7ð 7ð 7ð 7ð 7ñ 7ô 7ñ Ôð7ð:Pð Pð Pð Pð Pð Pr(   