
    ʆhG                        S SK Jr  S SKrS SKrS SKrS SKJr  S SKJ	r	J
r
JrJrJrJrJrJrJrJr  S SKJrJrJrJr  S SKJrJrJr  \(       a  S SKJr  S SKJr  S S	KJrJ r   S S
KJ!r!   " S S\5      r" " S S\5      r#g)    )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                     ^  \ rS rSrSr\SS.         SU 4S jjjrSS jr\R                  " 5       S:X  a  SU 4S jjr
SS	 jrSS
 jrSS jrSrU =r$ )WindowsApiEmitter   zeWindows API-based emitter that uses ReadDirectoryChangesW
to detect file system changes for a watch.
Ntimeoutevent_filterc               d   > [         TU ]  XX4S9  [        R                  " 5       U l        S U l        g )Nr   )super__init__	threadingLock_lock_whandle)selfevent_queuewatchr   r    	__class__s        a/opt/services/DDDS/venv/lib/python3.13/site-packages/watchdog/observers/read_directory_changes.pyr#   WindowsApiEmitter.__init__$   s,     	WX^^%
'+    c                L    [        U R                  R                  5      U l        g N)r   r*   pathr'   r(   s    r,   on_thread_start!WindowsApiEmitter.on_thread_start0   s    ,TZZ__=r.   PyPyc                >   > SSK Jn  [        TU ]  5         U" S5        g)z7PyPy needs some time before receiving events, see #792.r   )sleepg{Gz?N)timer7   r"   start)r(   r7   r+   s     r,   r9   WindowsApiEmitter.start5   s    "GMO$Kr.   c                R    U R                   (       a  [        U R                   5        g g r0   )r'   r   r2   s    r,   on_thread_stop WindowsApiEmitter.on_thread_stop<   s    =="4==1 r.   c                    U R                   (       d  / $ [        U R                   U R                  R                  U R                  R                  S9$ )N)	recursive)r'   r   r*   r1   is_recursiver2   s    r,   _read_eventsWindowsApiEmitter._read_events@   s3    }}I4==$**//TZZE\E\]]r.   c                   U R                  5       nU R                     SnU GH  n[        R                  R	                  U R
                  R                  UR                  5      nUR                  (       a  UnMW  UR                  (       a  UnUn[        R                  R                  U5      (       a\  U R                  [        XV5      5        U R
                  R                  (       a%  [        XV5       H  nU R                  U5        M     M  M  U R                  [        XV5      5        GM	  UR                  (       aH  U R                  [        R                  R                  U5      (       a  [         O["        " U5      5        GMb  UR$                  (       a  [        R                  R                  U5      nU R                  U(       a  [&        O[(        " U5      5        U(       aD  U R
                  R                  (       a&  [+        U5       H  n	U R                  U	5        M     GM  GM  GM  UR,                  (       a  U R                  [/        U5      5        GM6  UR0                  (       d  GMJ  U R                  [3        U R
                  R                  5      5        U R5                  5         GM     S S S 5        g ! , (       d  f       g = f)N )rA   r&   osr1   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_eventrG   	dest_pathsub_moved_eventrJ   sub_created_events
             r,   queue_eventsWindowsApiEmitter.queue_eventsE   s   ))+ZZ$&! -77<<

9N9NO..,4)!00 (I4Hww}}Y//((x)KL::223LX3a $ 0 0 A 4b 3 (()LM!--$$"''--:Q:Q&6Wh&hjr%st!**GGMM(3E$$oDT&TV^%_`!8!81LX1V- ,,->? 2W "9u ",,$$%5h%?@!111$$_TZZ__%EFIIK7 !. ZZs   I
J8,AJ88
K)r&   r'   )
r)   r   r*   r   r   floatr    z"list[type[FileSystemEvent]] | NonereturnNone)rZ   r[   )rZ   zlist[WinAPINativeEvent]r   rY   rZ   r[   )__name__
__module____qualname____firstlineno____doc__r   r#   r3   platformpython_implementationr9   r<   rA   rW   __static_attributes____classcell__r+   s   @r,   r   r      s|     1;?
,
, 
,
 
, 9
, 

, 
,> %%'61	2^
   r.   r   c                  8   ^  \ rS rSrSr\S.SU 4S jjjrSrU =r$ )WindowsApiObserverg   z\Observer thread that schedules watching directories and dispatches
calls to event handlers.
r   c               *   > [         TU ]  [        US9  g )Nrj   )r"   r#   r   )r(   r   r+   s     r,   r#   WindowsApiObserver.__init__l   s    *G<r.    r\   )	r]   r^   r_   r`   ra   r   r#   rd   re   rf   s   @r,   rh   rh   g   s     ,D = = =r.   rh   )$
__future__r   os.pathrE   rb   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   rh   rm   r.   r,   <module>ru      s\    "        q p _ _&/@;E  E P= =r.   