Ë
    êmxiG  ã                  óô   — d dl mZ d dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
mZmZmZmZmZmZmZmZ d dlmZmZmZmZ d dlmZmZmZ erd dlmZ d dlmZ d d	lmZm Z  d d
lm!Z!  G d„ de«      Z" G d„ de«      Z#y)é    )ÚannotationsN)ÚTYPE_CHECKING)
ÚDirCreatedEventÚDirDeletedEventÚDirModifiedEventÚDirMovedEventÚFileCreatedEventÚFileDeletedEventÚFileModifiedEventÚFileMovedEventÚgenerate_sub_created_eventsÚgenerate_sub_moved_events)ÚDEFAULT_EMITTER_TIMEOUTÚDEFAULT_OBSERVER_TIMEOUTÚBaseObserverÚEventEmitter)Úclose_directory_handleÚget_directory_handleÚread_events)ÚHANDLE)ÚFileSystemEvent)Ú
EventQueueÚObservedWatch)ÚWinAPINativeEventc                  ó’   ‡ — e Zd ZdZeddœ	 	 	 	 	 	 	 	 	 dˆ fd„Zdd„Z ej                  «       dk(  rdˆ fd„Z	dd„Z
dd	„Zdd
„Zˆ xZS )ÚWindowsApiEmitterzmWindows API-based emitter that uses ReadDirectoryChangesW
    to detect file system changes for a watch.
    N©ÚtimeoutÚevent_filterc               ól   •— t         ‰| �  ||||¬«       t        j                  «       | _        d | _        y )Nr   )ÚsuperÚ__init__Ú	threadingÚLockÚ_lockÚ_whandle)ÚselfÚevent_queueÚwatchr   r   Ú	__class__s        €ú`/home/htdocs/ttos/venv/lib/python3.12/site-packages/watchdog/observers/read_directory_changes.pyr"   zWindowsApiEmitter.__init__$   s0   ø€ ô 	‰Ñ˜ e°WÈ<ÐÔXÜ—^‘^Ó%ˆŒ
Ø'+ˆ�ó    c                óL   — t        | j                  j                  «      | _        y ©N)r   r)   Úpathr&   ©r'   s    r+   Úon_thread_startz!WindowsApiEmitter.on_thread_start0   s   € Ü,¨T¯Z©Z¯_©_Ó=ˆ�r,   ÚPyPyc                ó>   •— ddl m} t        ‰| �  «         |d«       y)z7PyPy needs some time before receiving events, see #792.r   )Úsleepg{®Gáz„?N)Útimer4   r!   Ústart)r'   r4   r*   s     €r+   r6   zWindowsApiEmitter.start5   s   ø€ å"ä‰G‰MŒOÙ�$�Kr,   c                óH   — | j                   rt        | j                   «       y y r.   )r&   r   r0   s    r+   Úon_thread_stopz WindowsApiEmitter.on_thread_stop<   s   € Ø�=Š=Ü" 4§=¡=Õ1ð r,   c                óž   — | j                   sg S t        | j                   | j                  j                  | j                  j                  ¬«      S )N)Ú	recursive)r&   r   r)   r/   Úis_recursiver0   s    r+   Ú_read_eventszWindowsApiEmitter._read_events@   s3   € Ø�}Š}ØˆIÜ˜4Ÿ=™=¨$¯*©*¯/©/ÀTÇZÁZ×E\ÑE\Ô]Ð]r,   c                óô  — | j                  «       }| j                  5  d}|D �]>  }t        j                  j	                  | j
                  j                  |j                  «      }|j                  r|}ŒQ|j                  r”|}|}t        j                  j                  |«      rU| j                  t        ||«      «       | j
                  j                  sŒ²t        ||«      D ]  }| j                  |«       Œ ŒÕ| j                  t        ||«      «       Œñ|j                  rA| j                  t        j                  j                  |«      rt         nt"        |«      «       �Œ>|j$                  r�t        j                  j                  |«      }| j                   |rt&        nt(        |«      «       |s�Œ�| j
                  j                  s�Œ¨t+        |«      D ]  }	| j                  |	«       Œ �ŒË|j,                  r| j                  t/        |«      «       �Œó|j0                  s�Œ| j                  t3        | j
                  j                  «      «       | j5                  «        �ŒA 	 d d d «       y # 1 sw Y   y xY w)NÚ )r<   r%   Úosr/   Újoinr)   Úsrc_pathÚis_renamed_oldÚis_renamed_newÚisdirÚqueue_eventr   r;   r   r   Úis_modifiedr   r   Úis_addedr   r	   r   Ú
is_removedr
   Úis_removed_selfr   Ústop)
r'   r   Úwinapi_eventsÚlast_renamed_src_pathÚwinapi_eventrA   Ú	dest_pathÚsub_moved_eventrD   Úsub_created_events
             r+   Úqueue_eventszWindowsApiEmitter.queue_eventsE   sÛ  € Ø×)Ñ)Ó+ˆØ�Z‰Zñ 	 Ø$&Ð!Ø -ó  �ÜŸ7™7Ÿ<™<¨¯
©
¯©¸×9NÑ9NÓO�à×.Ò.Ø,4Ñ)Ø!×0Ò0Ø (�IØ4�HÜ—w‘w—}‘} YÔ/Ø×(Ñ(¬°xÀÓ)KÔLØŸ:™:×2Ó2Ü3LÈXÐW`Ó3aò B Ø $× 0Ñ 0°Õ AñBð ×(Ñ(¬¸À)Ó)LÕMØ!×-Ò-Ø×$Ñ$¼"¿'¹'¿-¹-ÈÔ:QÕ&6ÔWhÐjrÓ%sÖtØ!×*Ò*ÜŸG™GŸM™M¨(Ó3�EØ×$Ñ$Ð&T¹¥oÔDTÐV^Ó%_Ô`Û §¡×!8Ô!8Ü1LÈXÓ1Vò @Ð-Ø ×,Ñ,Ð->Õ?ò@à!×,Ò,Ø×$Ñ$Ô%5°hÓ%?Ö@Ø!×1Ô1Ø×$Ñ$¤_°T·Z±Z·_±_Ó%EÔFØ—I‘I–Kñ7 ÷	 ÷ 	 ñ 	 ús'   �B6I.ÃCI.Æ2I.Ç
AI.È#AI.É.I7)
r(   r   r)   r   r   Úfloatr   z"list[type[FileSystemEvent]] | NoneÚreturnÚNone)rS   rT   )rS   zlist[WinAPINativeEvent]©r   rR   rS   rT   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r"   r1   ÚplatformÚpython_implementationr6   r8   r<   rQ   Ú__classcell__©r*   s   @r+   r   r      st   ø„ ñð 1Ø;?ñ
,àð
,ð ð
,ð
 ð
,ð 9ð
,ð 
õ
,ó>ð &€x×%Ñ%Ó'¨6Ò1õ	ó2ó^÷
 r,   r   c                  ó*   ‡ — e Zd ZdZedœdˆ fd„Zˆ xZS )ÚWindowsApiObserverzdObserver thread that schedules watching directories and dispatches
    calls to event handlers.
    ©r   c               ó0   •— t         ‰| �  t        |¬«       y )Nr`   )r!   r"   r   )r'   r   r*   s     €r+   r"   zWindowsApiObserver.__init__l   s   ø€ Ü‰ÑÔ*°GÐÕ<r,   rU   )rV   rW   rX   rY   r   r"   r\   r]   s   @r+   r_   r_   g   s   ø„ ñð ,D÷ =ó =r,   r_   )$Ú
__future__r   Úos.pathr?   rZ   r#   Útypingr   Úwatchdog.eventsr   r   r   r   r	   r
   r   r   r   r   Úwatchdog.observers.apir   r   r   r   Úwatchdog.observers.winapir   r   r   Úctypes.wintypesr   r   r   r   r   r   r_   © r,   r+   ú<module>rj      s\   ðÝ "ã Û Û Ý  ÷÷ ÷ ÷ qÓ pß _Ñ _áÝ&å/ß@Ý;ôE ˜ô E ôP=˜õ =r,   