
    ʆhD                       S r SSKJr  SSKrSSKrSSKJ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  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  SSKJrJ r    " S S\5      r! " S S\5      r" " S S\5      r#g)uf  :module: watchdog.observers.polling
:synopsis: Polling emitter implementation.
:author: yesudeep@google.com (Yesudeep Mangalapilly)
:author: contact@tiger-222.fr (Mickaël Schoentgen)

Classes
-------
.. autoclass:: PollingObserver
   :members:
   :show-inheritance:

.. autoclass:: PollingObserverVFS
   :members:
   :show-inheritance:
   :special-members:
    )annotationsN)partial)TYPE_CHECKING)DirCreatedEventDirDeletedEventDirModifiedEventDirMovedEventFileCreatedEventFileDeletedEventFileModifiedEventFileMovedEvent)DEFAULT_EMITTER_TIMEOUTDEFAULT_OBSERVER_TIMEOUTBaseObserverEventEmitter)DirectorySnapshotDirectorySnapshotDiffEmptyDirectorySnapshot)Iterator)Callable)FileSystemEvent)
EventQueueObservedWatchc                     ^  \ rS rSrSr\S\R                  \R                  S.             S	U 4S jjjr	S
S jr
SS jrSrU =r$ )PollingEmitter.   zSPlatform-independent emitter that polls a directory to detect file
system changes.
N)timeoutevent_filterstatlistdirc                  >^ ^^ [         TT ]  XX4S9  [        5       T l        [        R
                  " 5       T l        UU U4S jT l        g )N)r   r   c                 l   > [        TR                  R                  TR                  R                  TT S9$ )N)	recursiver   r    )r   watchpathis_recursive)r    selfr   s   R/opt/services/DDDS/venv/lib/python3.13/site-packages/watchdog/observers/polling.py<lambda>)PollingEmitter.__init__.<locals>.<lambda>@   s*    GXJJOOjj--	H
    )super__init__r   	_snapshot	threadingLock_lock_take_snapshot)r'   event_queuer$   r   r   r   r    	__class__s   `    ``r(   r-   PollingEmitter.__init__3   s:     	WX,B,D^^%
@
r+   c                .    U R                  5       U l        g N)r2   r.   )r'   s    r(   on_thread_startPollingEmitter.on_thread_startG   s    ,,.r+   c                   U R                   R                  U5      (       a  g U R                     U R                  5       (       d
   S S S 5        g  U R	                  5       n[        U R                  U5      nX l        UR                   H  nU R                  [        U5      5        M     UR                   H  nU R                  [!        U5      5        M     UR"                   H  nU R                  [%        U5      5        M     UR&                   H  u  pEU R                  [)        XE5      5        M!     UR*                   H  nU R                  [        U5      5        M     UR,                   H  nU R                  [/        U5      5        M     UR0                   H  nU R                  [3        U5      5        M     UR4                   H  u  pEU R                  [7        XE5      5        M!     S S S 5        g ! [
         aI    U R                  [        U R                  R                  5      5        U R                  5          S S S 5        g f = f! , (       d  f       g = fr7   )stopped_eventwaitr1   should_keep_runningr2   OSErrorqueue_eventr   r$   r%   stopr   r.   files_deletedr   files_modifiedr   files_createdr
   files_movedr   dirs_deleteddirs_modifiedr   dirs_createdr   
dirs_movedr	   )r'   r   new_snapshoteventssrc_path	dest_paths         r(   queue_eventsPollingEmitter.queue_eventsJ   s    ""7++ZZ++-- Z#224 +4>><HF)N #00  !1(!;< 1"11  !28!<= 2"00  !1(!;< 1'-'9'9#  !DE (: #//  !:; 0"00  !1(!;< 1"//  !:; 0'-'8'8#  x!CD (9C Z    !AB		 Z Zs1   IG0FI0AI8III
I)r1   r.   r2   )r3   r   r$   r   r   floatr   z"list[type[FileSystemEvent]] | Noner   Callable[[str], os.stat_result]r    -Callable[[str | None], Iterator[os.DirEntry]]returnNone)rR   rS   r   rO   rR   rS   )__name__
__module____qualname____firstlineno____doc__r   osr   scandirr-   r8   rM   __static_attributes____classcell__r4   s   @r(   r   r   .   s}     1;?02AC

 

 
 9
 .
 ?
 

 
(/(E (Er+   r   c                  8   ^  \ rS rSrSr\S.SU 4S jjjrSrU =r$ )PollingObserveru   zTPlatform-independent observer that polls a directory to detect file
system changes.
r   c               *   > [         TU ]  [        US9  g )Nrb   )r,   r-   r   )r'   r   r4   s     r(   r-   PollingObserver.__init__z   s    9r+    rT   )	rU   rV   rW   rX   rY   r   r-   r\   r]   r^   s   @r(   r`   r`   u   s     ,D : : :r+   r`   c                  F   ^  \ rS rSrSrSS.       SU 4S jjjrSrU =r$ )PollingObserverVFS~   zJFile system independent observer that polls a directory to detect changes.   )polling_intervalc               <   > [        [        XS9n[        TU ]  XCS9  g)z:param stat: stat function. See ``os.stat`` for details.
:param listdir: listdir function. See ``os.scandir`` for details.
:type polling_interval: int
:param polling_interval: interval in seconds between polling the file system.
)r   r    rb   N)r   r   r,   r-   )r'   r   r    rj   emitter_clsr4   s        r(   r-   PollingObserverVFS.__init__   s!     n4I?r+   re   )r   rP   r    rQ   rj   intrR   rS   )rU   rV   rW   rX   rY   r-   r\   r]   r^   s   @r(   rg   rg   ~   sA    T !"@-@ ?@
 @ 
@ @r+   rg   )$rY   
__future__r   rZ   r/   	functoolsr   typingr   watchdog.eventsr   r   r   r	   r
   r   r   r   watchdog.observers.apir   r   r   r   watchdog.utils.dirsnapshotr   r   r   collections.abcr   r   r   r   r   r   r`   rg   re   r+   r(   <module>rv      ss   " # 	    	 	 	 q p g g(/@DE\ DEN:l :@ @r+   