Ë
    êmxis-  ã                  óP  — 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jl                  «      Z7d3d„Z8d3d„Z9d3d „Z: ejv                  d!«      Z<e<jz                  Z=ee=_>        e8e=_?        ee
eee ej€                  e«       ej€                  e7«      e
fe=_A        e<j„                  ZBeeB_>        e9eB_?        e	eee
eeefeB_A        e<j†                  ZCeeC_>        efeC_A        e<jˆ                  ZDeeD_>        e8eD_?        e ej€                  e7«      feD_A        e<jŠ                  ZFeeF_>        e9eF_?        e
eee	feF_A        e<jŽ                  ZGeeG_>        e8eG_?        efeG_A        e<j�                  ZHeeH_>        e:eH_?        eeefeH_A        e<j’                  ZIeeI_>        e9eI_?        eee
efeI_A        e<j”                  ZJeeJ_>        e8eJ_?        ee
e
 ej€                  e7«      efeJ_A        e<j–                  ZKeeK_>        e8eK_?        eee ej€                  e7«      feK_A        e<j˜                  ZLeeL_>        e:eL_?        eeeefeL_A         G d"„ d#ejl                  «      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'ZSd4d(„ZTd5d)„ZUd6d*„ZVd7d+„ZWd8d,„ZXd9d-„ZY ed.¬/«       G d0„ d1«      «       ZZd:d2„Z[y);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                  ó4   — e Zd ZdefdefdefdefdefdeffZy)Ú
OVERLAPPEDÚInternalÚInternalHighÚOffsetÚ
OffsetHighÚPointerÚhEventN)Ú__name__Ú
__module__Ú__qualname__r   r   r   Ú_fields_© ó    úP/home/htdocs/ttos/venv/lib/python3.12/site-packages/watchdog/observers/winapi.pyr   r   I   s9   „ à	�VÐØ	˜Ð Ø	�5ÐØ	�uÐØ	�FÐØ	�6Ðð�Hr(   r   c                ó2   — | st        j                  «       ‚|S ©N©ÚctypesÚWinError©ÚvalueÚfuncÚargss      r)   Ú_errcheck_boolr3   T   s   € ÙÜ�o‰oÓÐØ€Kr(   c                ól   — | st        j                  «       ‚| t        k(  rt        j                  «       ‚|S r+   )r-   r.   ÚINVALID_HANDLE_VALUEr/   s      r)   Ú_errcheck_handler6   Z   s-   € ÙÜ�o‰oÓÐØÔ$Ò$Ü�o‰oÓÐØ€Kr(   c                ó8   — | dk(  rt        j                  «       ‚|S )Nl   ÿÿ r,   r/   s      r)   Ú_errcheck_dwordr8   b   s   € Ø�
ÒÜ�o‰oÓÐØ€Kr(   Úkernel32c                  óB   — e Zd Zdefdefdefdej
                  dz  ffZy)ÚFileNotifyInformationÚNextEntryOffsetÚActionÚFileNameLengthÚFileNamer   N)r#   r$   r%   r   r-   Úc_charr&   r'   r(   r)   r;   r;   Ô   s2   „ à	˜EÐ"Ø	�5ÐØ	˜5Ð!Ø	�f—m‘m aÑ'Ð)ð	�Hr(   r;   c                ó   — | |z  S r+   r'   ©ÚxÚys     r)   ú<lambda>rE   ä   ó
   € ��Q‘€ r(   c                ó   — | |z  S r+   r'   rB   s     r)   rE   rE   ì   rF   r(   i ú  i   c                óŽ  — g }|dkD  r½t        j                  | t        «      d   }t        j                  |«      t        j
                  j                  z   }t        j                  ||j                  «      }|j                  |j                  |j                  d«      f«       |j                  }|dk  r	 |S | |d  } ||z  }|dkD  rŒ½|S )Nr   zutf-16)r-   ÚcastÚLPFNIÚ	addressofr;   r?   ÚoffsetÚ	string_atr>   Úappendr=   Údecoder<   )Úread_bufferÚn_bytesÚresultsÚfniÚptrÚfilenameÚnum_to_skips          r)   Ú_parse_event_bufferrW     sÀ   € Ø€GØ
�AŠ+Ü�k‰k˜+¤uÓ-¨aÑ0ˆÜ×Ñ˜sÓ#Ô&;×&DÑ&D×&KÑ&KÑKˆÜ×#Ñ# C¨×);Ñ);Ó<ˆØ�‰˜Ÿ
™
 H§O¡O°HÓ$=Ð>Ô?Ø×)Ñ)ˆØ˜!ÒØð €Nð " + ,Ð/ˆØ�;Ñˆð �A‹+ð €Nr(   c                ó~   — t        j                  t        «      }t        | |t        t        «       |j
                  |k7  S r+   )r-   Úcreate_unicode_bufferÚPATH_BUFFER_SIZEÚGetFinalPathNameByHandleWÚVOLUME_NAME_NTr0   )ÚhandleÚpathÚbuffs      r)   Ú_is_observed_path_deletedr`     s3   € ô ×'Ñ'Ô(8Ó9€DÜ˜f dÔ,<¼nÔMØ�:‰:˜ÑÐr(   c                 ó`  — t        j                  d«      } t        dt        t	        | «      | j
                  j                  d«      «      }t        j                  |«      }t        j                  t        «      }t        j                  |t        j                  |«      |«       |j                  |fS )Nú.r   zutf-8)r-   rY   r;   ÚFILE_ACTION_DELETED_SELFÚlenr0   ÚencodeÚsizeofÚcreate_string_bufferrZ   ÚmemmoverK   Úraw)r^   ÚeventÚ
event_sizer_   s       r)   Ú%_generate_observed_path_deleted_eventrl     s€   € ä×'Ñ'¨Ó,€DÜ! !Ô%=¼sÀ4»yÈ$Ï*É*×J[ÑJ[Ð\cÓJdÓe€EÜ—‘˜uÓ%€JÜ×&Ñ&Ô'7Ó8€DÜ
‡N�N�4œ×)Ñ)¨%Ó0°*Ô=Ø�8‰8�ZÐÐr(   c           	     óD   — 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_handlers   (  s$   € äØÜÜ!ØÜÜØóð r(   c                óÆ   — 	 t        | d «       t        | «       y # t        $ r= t        j                  t
        «      5  t        | «       d d d «       Y y # 1 sw Y   Y y xY ww xY wr+   )Ú
CancelIoExÚCloseHandleÚOSErrorÚ
contextlibÚsuppressÚ	Exception)r]   s    r)   Úclose_directory_handler{   5  sS   € ð Ü�6˜4Ô Ü�FÕøÜò  Ü× Ñ ¤Ó+ñ 	 Ü˜Ô÷	 ÷ 	 ó 	 úð ús&   ‚ š"A ¼AÁA ÁA	ÁA ÁA c          
     ó¼  — t        j                  t        «      }t        «       }	 t	        | t        j
                  |«      t        |«      |t        t        j
                  |«      dd«       |j                  t        |j                  «      fS # 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)z�Read changes to the directory using the specified directory handle.

    https://timgolden.me.uk/pywin32-docs/win32file__ReadDirectoryChangesW_meth.html
    Nr   )r-   rg   ÚBUFFER_SIZEr   ÚReadDirectoryChangesWÚbyrefrd   ÚWATCHDOG_FILE_NOTIFY_FLAGSrw   ÚwinerrorÚERROR_OPERATION_ABORTEDri   r`   rl   Úintr0   )r]   r^   Ú	recursiveÚevent_bufferÚnbytesÚes         r)   Úread_directory_changesrˆ   >  s»   € ô
 ×.Ñ.¬{Ó;€LÜ‹W€FðÜØÜ�L‰L˜Ó&Ü�ÓØÜ&Ü�L‰L˜Ó ØØô		
ð( ×ÑœS §¡Ó.Ð.Ð.øô ò Ø�:‰:Ô0Ò0Ø×#Ñ# QÐ&Õ&ô % V¨TÔ2Ü8Ó:Õ:àûðús0   ¥AB Â	CÂ CÂ4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
y)ÚWinAPINativeEventrƒ   ÚactionÚstrÚsrc_pathc                ó(   — | j                   t        k(  S r+   )rŒ   ÚFILE_ACTION_CREATED©Úselfs    r)   Úis_addedzWinAPINativeEvent.is_addedb  ó   € à�{‰{Ô1Ñ1Ð1r(   c                ó(   — | j                   t        k(  S r+   )rŒ   ÚFILE_ACTION_REMOVEDr‘   s    r)   Ú
is_removedzWinAPINativeEvent.is_removedf  r”   r(   c                ó(   — | j                   t        k(  S r+   )rŒ   ÚFILE_ACTION_MODIFIEDr‘   s    r)   Úis_modifiedzWinAPINativeEvent.is_modifiedj  s   € à�{‰{Ô2Ñ2Ð2r(   c                ó(   — | j                   t        k(  S r+   )rŒ   ÚFILE_ACTION_RENAMED_OLD_NAMEr‘   s    r)   Úis_renamed_oldz WinAPINativeEvent.is_renamed_oldn  ó   € à�{‰{Ô:Ñ:Ð:r(   c                ó(   — | j                   t        k(  S r+   )rŒ   ÚFILE_ACTION_RENAMED_NEW_NAMEr‘   s    r)   Úis_renamed_newz WinAPINativeEvent.is_renamed_newr  rž   r(   c                ó(   — | j                   t        k(  S r+   )rŒ   ÚFILE_ACTION_REMOVED_SELFr‘   s    r)   Úis_removed_selfz!WinAPINativeEvent.is_removed_selfv  s   € à�{‰{Ô6Ñ6Ð6r(   N)ÚreturnÚbool)r#   r$   r%   Ú__annotations__Úpropertyr“   r—   rš   r�   r¡   r¤   r'   r(   r)   r‹   r‹   ]  s‚   … àƒKØƒMàò2ó ð2ð ò2ó ð2ð ò3ó ð3ð ò;ó ð;ð ò;ó ð;ð ò7ó ñ7r(   r‹   c               ó†   — t        | ||¬«      \  }}t        ||«      }|D ��cg c]  \  }}t        ||«      ‘Œ c}}S c c}}w )N)r„   )rˆ   rW   r‹   )r]   r^   r„   Úbufr†   ÚeventsrŒ   rŽ   s           r)   Úread_eventsr¬   {  sA   € Ü(¨°ÀÔK�K€CˆÜ   fÓ-€FØHN×OÑ4D°F¸HÔ˜f hÕ/ÓOÐOùÓOs   £=)r0   z
Any | Noner1   r   r2   r   r¥   r   )rP   ÚbytesrQ   rƒ   r¥   zlist[tuple[int, str]])r]   r   r^   r�   r¥   r¦   )r¥   útuple[bytes, int])r^   r�   r¥   r   )r]   r   r¥   ÚNone)r]   r   r^   r�   r„   r¦   r¥   r®   )r]   r   r^   r�   r„   r¦   r¥   zlist[WinAPINativeEvent])\Ú__doc__Ú
__future__r   rx   r-   Úctypes.wintypesr   r   r   r   r   r	   Údataclassesr
   Ú	functoolsr   Útypingr   r   Úc_void_pr0   r5   Ú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_OVERLAPPEDro   ÚFILE_SHARE_READÚFILE_SHARE_WRITEÚFILE_SHARE_DELETErq   r\   r�   ÚFILE_ACTION_DELETEDr™   rœ   r    rc   ÚFILE_ACTION_OVERFLOWÚFILE_ACTION_ADDEDr–   r£   ÚTHREAD_TERMINATEÚWAIT_ABANDONEDÚWAIT_IO_COMPLETIONÚWAIT_OBJECT_0ÚWAIT_TIMEOUTr‚   Ú	Structurer   r3   r6   r8   ÚWinDLLr9   r~   ÚrestypeÚerrcheckÚPOINTERÚargtypesrn   rv   ru   ÚCreateEventWÚCreateEventÚSetEventÚWaitForSingleObjectExÚCreateIoCompletionPortÚGetQueuedCompletionStatusÚPostQueuedCompletionStatusr[   r;   rJ   rr   rp   r€   r}   rZ   rW   r`   rl   rs   r{   rˆ   r‹   r¬   r'   r(   r)   ú<module>rÙ      sj  ðñ	õ #ã Û ß H× HÝ !Ý Ý  áÝð '�v—‘ rÓ*×0Ñ0Ð ð  $Ð Ø"Ð Ø $Ð ØÐ Ø %Ð Ø!&Ð Ø#Ð Ø$Ð à'Ð Ø!Ð ØÐ Ø€ØÐ ØÐ Ø€à€ð Ð ØÐ ØÐ Ø Ð Ø Ð Ø!Ð ØÐ ð (Ð Ø)Ð Ø3Ð àÐ ð €ØÐ Ø€Ø€ð Ð ô�×!Ñ!ô óóóð ˆ6�=‰=˜Ó$€à ×6Ñ6Ð Ø $Ð Ô Ø!/Ð Ô à
Ø
Ø	ØØ	Ø€F‡N�N�5ÓØ€F‡N�N�:ÓØ
ð	"Ð Ô ð ×"Ñ"€Ø€Ô Ø'€Ô àØ	Ø	Ø
Ø	Ø	Ø
ð€Ô ð ×"Ñ"€Ø€Ô Ø�y€Ô à× Ñ €
Ø€
Ô Ø$€
Ô à
Ø€F‡N�N�:Óð€
Ô ð
 ×#Ñ#€Ø€Ô Ø'€Ô à
ØØØð	€Ô ð ×Ñ€Ø€Ô Ø"€Ô Ø�I€Ô à ×6Ñ6Ð Ø %Ð Ô Ø!0Ð Ô à
Ø	Øð"Ð Ô ð "×8Ñ8Ð Ø!'Ð Ô Ø"2Ð Ô à
Ø
Ø
Ø	ð	#Ð Ô ð %×>Ñ>Ð Ø$(Ð Ô !Ø%3Ð Ô "à
Ø
Ø
Ø€F‡N�N�:ÓØ	ð&Ð Ô "ð &×@Ñ@Ð Ø%)Ð Ô "Ø&4Ð Ô #à
Ø	Ø	Ø€F‡N�N�:Óð	'Ð Ô #ð %×>Ñ>Ð Ø$)Ð Ô !Ø%4Ð Ô "à
Ø
Ø	Ø	ð	&Ð Ô "ô˜F×,Ñ,ô ð 	ˆ�‰Ð,Ó-€ð
 1Ð Ù"ÙàØØðóÐ ñ $Ùà$Ø#Ø%ØØ%Ø#Ø&Ø#ð	óÐ ð( €ð Ð óóó ó
ó ó/ñ> �tÔ÷7ð 7ó ð7ô:Pr(   