+
    Vß$gê5  ã                  óú   € ^ RI Ht ^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RI	H
t
 ^ RIHt ^ RIHt ]
'       d	   ^ RIHtHt R	tR	t ! R
 R]4      t ! R R4      t ! R R]4      t ! R R]4      t ! R R]4      tR# )é    )ÚannotationsN)Údefaultdict)ÚPath)ÚTYPE_CHECKING)Ú
BaseThread)ÚSkipRepeatsQueue)ÚFileSystemEventÚFileSystemEventHandlerg      ð?c                  ó   € ] tR t^tRtRtR# )Ú
EventQueuea  Thread-safe event queue based on a special queue that skips adding
the same event (:class:`FileSystemEvent`) multiple times consecutively.
Thus avoiding dispatching multiple event handling
calls when multiple identical events are produced quicker than an observer
can consume them.
© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r   ó    Ú8/usr/lib/python3/dist-packages/watchdog/observers/api.pyr   r      s   † õr   r   c                  ó¶   € ] tR t^tRtRR/R R llt]R R l4       t]R R	 l4       t]R
 R l4       t	]R R l4       t
R R ltR R ltR R ltR R ltRtR# )ÚObservedWatchzàAn scheduled watch.

:param path:
    Path string.
:param recursive:
    ``True`` if watch is recursive; ``False`` otherwise.
:param event_filter:
    Optional collection of :class:`watchdog.events.FileSystemEvent` to watch
Úevent_filterNc               ó$   € V ^8„  d   QhRRRRRR/# )é   Úpathz
str | PathÚ	recursiveÚboolr   ú"list[type[FileSystemEvent]] | Noner   )Úformats   "r   Ú__annotate__ÚObservedWatch.__annotate__(   s'   € ÷ [ñ [˜Zð [°tð [ÐKmñ [r   c               	óœ   € \        V\        4      '       d   \        V4      MTV n        W n        Ve   \        V4      V n        R # R V n        R # ©N)Ú
isinstancer   ÚstrÚ_pathÚ_is_recursiveÚ	frozensetÚ_event_filter)Úselfr   r   r   s   &&$$r   Ú__init__ÚObservedWatch.__init__(   s;   € Ü",¨T´4×"8Ò"8”S˜”Y¸dˆŒ
Ø&ÔØ8DÒ8PœY |Ó4ˆÖÐVZˆÖr   c               ó   € V ^8„  d   QhRR/# ©r   Úreturnr%   r   )r   s   "r   r    r!   .   s   € ÷ ñ �cñ r   c                ó   € V P                   # )z"The path that this watch monitors.)r&   ©r*   s   &r   r   ÚObservedWatch.path-   s   € ð �z‰zÐr   c               ó   € V ^8„  d   QhRR/# )r   r/   r   r   )r   s   "r   r    r!   3   s   € ÷ "ñ "˜dñ "r   c                ó   € V P                   # )z;Determines whether subdirectories are watched for the path.)r'   r1   s   &r   Úis_recursiveÚObservedWatch.is_recursive2   ó   € ð ×!Ñ!Ð!r   c               ó   € V ^8„  d   QhRR/# )r   r/   z'frozenset[type[FileSystemEvent]] | Noner   )r   s   "r   r    r!   8   s   € ÷ "ñ "ÐEñ "r   c                ó   € V P                   # )z.Collection of event types watched for the path)r)   r1   s   &r   r   ÚObservedWatch.event_filter7   r7   r   c               ó   € V ^8„  d   QhRR/# )r   r/   z9tuple[str, bool, frozenset[type[FileSystemEvent]] | None]r   )r   s   "r   r    r!   =   s   € ÷ ?ñ ?ÐNñ ?r   c                	óH   € V P                   V P                  V P                  3# r#   )r   r5   r   r1   s   &r   ÚkeyÚObservedWatch.key<   s   € à�y‰y˜$×+Ñ+¨T×->Ñ->Ð>Ð>r   c               ó    € V ^8„  d   QhRRRR/# ©r   ÚwatchÚobjectr/   r   r   )r   s   "r   r    r!   @   ó   € ÷ %ñ %˜Fð % tñ %r   c                	ól   € \        V\        4      '       g   \        # V P                  VP                  8H  # r#   ©r$   r   ÚNotImplementedr=   ©r*   rA   s   &&r   Ú__eq__ÚObservedWatch.__eq__@   ó(   € Ü˜%¤×/Ò/Ü!Ð!Ø�x‰x˜5Ÿ9™9Ñ$Ð$r   c               ó    € V ^8„  d   QhRRRR/# r@   r   )r   s   "r   r    r!   E   rC   r   c                	ól   € \        V\        4      '       g   \        # V P                  VP                  8g  # r#   rE   rG   s   &&r   Ú__ne__ÚObservedWatch.__ne__E   rJ   r   c               ó   € V ^8„  d   QhRR/# )r   r/   Úintr   )r   s   "r   r    r!   J   s   € ÷ ñ ˜#ñ r   c                	ó,   € \        V P                  4      # r#   )Úhashr=   r1   s   &r   Ú__hash__ÚObservedWatch.__hash__J   s   € Ü�D—H‘H‹~Ðr   c               ó   € V ^8„  d   QhRR/# r.   r   )r   s   "r   r    r!   M   s   € ÷ rñ r˜#ñ rr   c                	óð   € V P                   e2   RP                  \        R V P                    4       4      4      pRV 2pMRpR\        V 4      P                   RV P
                  : RV P                   V R2# )	NÚ|c              3  ó8   "  € T F  qP                   x € K  	  R # 5ir#   )r   )Ú.0Ú_clss   & r   Ú	<genexpr>Ú)ObservedWatch.__repr__.<locals>.<genexpr>O   s   é € Ð.[ÑIZÀ¯}®}ÓIZùs   ‚z, event_filter=Ú Ú<z: path=z, is_recursive=Ú>)r   ÚjoinÚsortedÚtyper   r   r5   )r*   Úevent_filter_strs   & r   Ú__repr__ÚObservedWatch.__repr__M   s{   € Ø×ÑÒ(Ø"Ÿx™x¬Ñ.[È×IZÒIZÓ.[Ó([Ó\ÐØ!0Ð1AÐ0BÐCÑà!ÐØ”4˜“:×&Ñ&Ð' w¨t¯y©y©m¸?È4×K\ÑK\ÐJ]Ð^nÐ]oÐopÐqÐqr   )r)   r'   r&   )r   r   r   r   r   r+   Úpropertyr   r5   r   r=   rH   rM   rS   rd   r   r   r   r   r   r      s�   † ñð[Ðpt÷ [ð
 ôó ðð ô"ó ð"ð ô"ó ð"ð ô?ó ð?õ%õ
%õ
÷rñ rr   r   c                  óŽ   a € ] tR t^WtRtR]RR/R V 3R lllt]R R l4       t]R	 R
 l4       t	R R lt
R R ltR R ltRtV ;t# )ÚEventEmittera‚  Producer thread base class subclassed by event emitters
that generate events and populate a queue with them.

:param event_queue:
    The event queue to populate with generated events.
:type event_queue:
    :class:`watchdog.events.EventQueue`
:param watch:
    The watch to observe and produce events for.
:type watch:
    :class:`ObservedWatch`
:param timeout:
    Timeout (in seconds) between successive attempts at reading events.
:type timeout:
    ``float``
:param event_filter:
    Collection of event types to emit, or None for no filtering (default).
:type event_filter:
    Iterable[:class:`watchdog.events.FileSystemEvent`] | None
Útimeoutr   Nc          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r   Úevent_queuer   rA   r   ri   Úfloatr   r   r/   ÚNoner   )r   s   "r   r    ÚEventEmitter.__annotate__m   sC   € ÷ [ñ [àð[ð ð[ð
 ð[ð 9ð[ð 
ñ[r   c               	ó‚   <€ \         SV `  4        Wn        W n        W0n        Ve   \        V4      V n        R # R V n        R # r#   )Úsuperr+   Ú_event_queueÚ_watchÚ_timeoutr(   r)   )r*   rk   rA   ri   r   Ú	__class__s   &&&$$€r   r+   ÚEventEmitter.__init__m   s:   ø€ ô 	‰ÑÔØ'ÔØŒØŒØ8DÒ8PœY |Ó4ˆÖÐVZˆÖr   c               ó   € V ^8„  d   QhRR/# ©r   r/   rl   r   )r   s   "r   r    rn   |   ó   € ÷ ñ ˜ñ r   c                ó   € V P                   # )z$Blocking timeout for reading events.©rs   r1   s   &r   ri   ÚEventEmitter.timeout{   ó   € ð �}‰}Ðr   c               ó   € V ^8„  d   QhRR/# )r   r/   r   r   )r   s   "r   r    rn   �   s   € ÷ ñ �}ñ r   c                ó   € V P                   # )z'The watch associated with this emitter.)rr   r1   s   &r   rA   ÚEventEmitter.watch€   s   € ð �{‰{Ðr   c               ó    € V ^8„  d   QhRRRR/# )r   Úeventr	   r/   rm   r   )r   s   "r   r    rn   …   s   € ÷ 
7ñ 
7 ð 
7°Tñ 
7r   c                ó  a€ V P                   eU   \        ;QJ d)    V3R lV P                    4       F  '       g   K   RM	  RM! V3R lV P                    4       4      '       d*   V P                  P                  SV P                  34       R# R# )zšQueues a single event.

:param event:
    Event to be queued.
:type event:
    An instance of :class:`watchdog.events.FileSystemEvent`
    or a subclass.
Nc              3  ó<   <"  € T F  p\        SV4      x € K  	  R # 5ir#   )r$   )rY   Úclsr�   s   & €r   r[   Ú+EventEmitter.queue_event.<locals>.<genexpr>Ž   s   øé € Ð,bÑOaÈ¬Z¸¸s×-CÐ-CÓOaùs   ƒTF)r)   Úanyrq   ÚputrA   )r*   r�   s   &fr   Úqueue_eventÚEventEmitter.queue_event…   s`   ø€ ð ×ÑÒ%¯«Ô,bÈt×OaÒOaÓ,b¯¯ªÔ,bÈt×OaÒOaÓ,b×)bÒ)bØ×Ñ×!Ñ! 5¨$¯*©*Ð"5Ö6ñ *cr   c               ó    € V ^8„  d   QhRRRR/# ©r   ri   rl   r/   rm   r   )r   s   "r   r    rn   ‘   s   € ÷ 	ñ 	 Eð 	¨dñ 	r   c                ó   € R# )zÌOverride this method to populate the event queue with events
per interval period.

:param timeout:
    Timeout (in seconds) between successive attempts at
    reading events.
:type timeout:
    ``float``
Nr   )r*   ri   s   &&r   Úqueue_eventsÚEventEmitter.queue_events‘   ó   ‚ r   c               ó   € V ^8„  d   QhRR/# ©r   r/   rm   r   )r   s   "r   r    rn   œ   s   € ÷ ,ñ ,�Tñ ,r   c                	ól   € V P                  4       '       d   V P                  V P                  4       K3  R # r#   )Úshould_keep_runningr�   ri   r1   s   &r   ÚrunÚEventEmitter.runœ   s(   € Ø×&Ñ&×(Ò(Ø×Ñ˜dŸl™lÖ+ñ )r   )r)   rq   rs   rr   )r   r   r   r   r   ÚDEFAULT_EMITTER_TIMEOUTr+   rf   ri   rA   rˆ   r�   r”   r   Ú__classcell__©rt   s   @r   rh   rh   W   sg   ø† ñð*[ð
 1ð[ð <@÷[ò [ð ôó ðð ôó ðõ
7õ	÷,ó ,r   rh   c                  óš   a € ] tR t^¡tRt]! 4       t R]/R V 3R lllt]	R R l4       t
R R lt]	R	 R
 l4       tR R ltR R ltRtV ;t# )ÚEventDispatchera  Consumer thread base class subclassed by event observer threads
that dispatch events from an event queue to appropriate event handlers.

:param timeout:
    Timeout value (in seconds) passed to emitters
    constructions in the child class BaseObserver.
:type timeout:
    ``float``
ri   c               ó    € V ^8„  d   QhRRRR/# r‹   r   )r   s   "r   r    ÚEventDispatcher.__annotate__¯   s   € ÷  ñ   5ð  Èñ  r   c               	óN   <€ \         SV `  4        \        4       V n        Wn        R # r#   )rp   r+   r   rq   rs   )r*   ri   rt   s   &$€r   r+   ÚEventDispatcher.__init__¯   s   ø€ Ü‰ÑÔÜ&›LˆÔØŽr   c               ó   € V ^8„  d   QhRR/# rw   r   )r   s   "r   r    rœ   µ   rx   r   c                ó   € V P                   # )z)Timeout value to construct emitters with.rz   r1   s   &r   ri   ÚEventDispatcher.timeout´   r|   r   c               ó   € V ^8„  d   QhRR/# r‘   r   )r   s   "r   r    rœ   ¹   s   € ÷ Dñ D�dñ Dr   c                	ó  € \         P                  ! V 4       \        P                  ! \        P
                  4      ;_uu_ 4        V P                  P                  \        P                  4       R R R 4       R #   + '       g   i     R # ; ir#   )
r   ÚstopÚ
contextlibÚsuppressÚqueueÚFullrk   Ú
put_nowaitrš   Ú
stop_eventr1   s   &r   r¤   ÚEventDispatcher.stop¹   sL   € Ü�Š˜ÔÜ× Ò ¤§¡×,Õ,Ø×Ñ×'Ñ'¬×(BÑ(BÔC÷ -×,×,Ò,ús   Á*A7Á7B	c               ó   € V ^8„  d   QhRR/# )r   r/   r   r   )r   s   "r   r    rœ   ¿   s   € ÷ !ñ !˜Zñ !r   c                ó   € V P                   # )z„The event queue which is populated with file system events
by emitters and from which events are dispatched by a dispatcher
thread.
)rq   r1   s   &r   rk   ÚEventDispatcher.event_queue¾   s   € ð × Ñ Ð r   c               ó    € V ^8„  d   QhRRRR/# ©r   rk   r   r/   rm   r   )r   s   "r   r    rœ   Æ   s   € ÷ 
ñ 
¨:ð 
¸$ñ 
r   c                ó   € R# )a'  Override this method to consume events from an event queue, blocking
on the queue for the specified timeout before raising :class:`queue.Empty`.

:param event_queue:
    Event queue to populate with one set of events.
:type event_queue:
    :class:`EventQueue`
:raises:
    :class:`queue.Empty`
Nr   )r*   rk   s   &&r   Údispatch_eventsÚEventDispatcher.dispatch_eventsÆ   r�   r   c               ó   € V ^8„  d   QhRR/# r‘   r   )r   s   "r   r    rœ   Ò   s   € ÷ ñ �Tñ r   c                	ó¦   € V P                  4       '       d    V P                  V P                  4       K4  R #   \        P                   d     KN  i ; ir#   )r“   r²   rk   r§   ÚEmptyr1   s   &r   r”   ÚEventDispatcher.runÒ   sG   € Ø×&Ñ&×(Ò(ðØ×$Ñ$ T×%5Ñ%5Ö6ñ )øô —;‘;ô Úðús   ˜7 ·AÁA)rq   rs   )r   r   r   r   r   rB   rª   ÚDEFAULT_OBSERVER_TIMEOUTr+   rf   ri   r¤   rk   r²   r”   r   r—   r˜   s   @r   rš   rš   ¡   sc   ø† ññ “€JØCð Ð+C÷  ò  ð
 ôó ðõDð
 ô!ó ð!õ
÷ó r   rš   c                  óþ   a € ] tR t^ÚtRtR]/R V 3R llltR R ltR R ltR	 R
 lt	R R lt
R R lt]R R l4       tR V 3R lltRRRR/R R lltR R ltR R ltR R ltR R  ltR! R" ltR# R$ ltR%tV ;t# )&ÚBaseObserverzBase observer.ri   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úemitter_classztype[EventEmitter]ri   rl   r/   rm   r   )r   s   "r   r    ÚBaseObserver.__annotate__Ý   s(   € ÷ Hñ HÐ&8ð HÀeð HÐkoñ Hr   c               	óÚ   <€ \         SV `  VR 7       Wn        \        P                  ! 4       V n        \        4       V n        \        \        4      V n	        \        4       V n
        / V n        R# ))ri   N)rp   r+   Ú_emitter_classÚ	threadingÚRLockÚ_lockÚsetÚ_watchesr   Ú	_handlersÚ	_emittersÚ_emitter_for_watch)r*   r¼   ri   rt   s   &&$€r   r+   ÚBaseObserver.__init__Ý   sN   ø€ Ü‰Ñ ÐÔ)Ø+ÔÜ—_’_Ó&ˆŒ
Ü,/«EˆŒÜR]Ô^aÓRbˆŒÜ,/«EˆŒØEGˆÖr   c               ó    € V ^8„  d   QhRRRR/# ©r   Úemitterrh   r/   rm   r   )r   s   "r   r    r½   æ   s   € ÷ $ñ $ Lð $°Tñ $r   c                	ól   € WP                   VP                  &   V P                  P                  V4       R # r#   )rÇ   rA   rÆ   Úadd©r*   rË   s   &&r   Ú_add_emitterÚBaseObserver._add_emitteræ   s&   € Ø18×Ñ §¡Ñ.Ø�‰×Ñ˜7Ö#r   c               ó    € V ^8„  d   QhRRRR/# rÊ   r   )r   s   "r   r    r½   ê   s   € ÷ ñ  |ð ¸ñ r   c                	ó(  € V P                   VP                   V P                  P                  V4       VP	                  4        \
        P                  ! \        4      ;_uu_ 4        VP                  4        R R R 4       R #   + '       g   i     R # ; ir#   )	rÇ   rA   rÆ   Úremover¤   r¥   r¦   ÚRuntimeErrorr`   rÎ   s   &&r   Ú_remove_emitterÚBaseObserver._remove_emitterê   sX   € Ø×#Ñ# G§M¡MÐ2Ø�‰×Ñ˜gÔ&Ø�‰ŒÜ× Ò ¤×.Õ.Ø�L‰LŒN÷ /×.×.Ò.ús   Á%B Â B	c               ó   € V ^8„  d   QhRR/# r‘   r   )r   s   "r   r    r½   ñ   s   € ÷ (ñ ( ñ (r   c                	óx  € V P                    F  pVP                  4        K  	  V P                    F>  p\        P                  ! \        4      ;_uu_ 4        VP                  4        R R R 4       K@  	  V P                   P                  4        V P                  P                  4        R #   + '       g   i     K‰  ; ir#   )rÆ   r¤   r¥   r¦   rÔ   r`   ÚclearrÇ   rÎ   s   & r   Ú_clear_emittersÚBaseObserver._clear_emittersñ   sy   € Ø—~”~ˆGØ�L‰LŽNñ &à—~”~ˆGÜ×$Ò$¤\×2Õ2Ø—‘”÷ 3Ñ2ñ &ð 	�‰×ÑÔØ×Ñ×%Ñ%Ö'÷ 3×2Ð2ús   ÁB(Â(B9c               ó$   € V ^8„  d   QhRRRRRR/# ©r   Úevent_handlerr
   rA   r   r/   rm   r   )r   s   "r   r    r½   ú   s$   € ÷ 1ñ 1Ð4Jð 1ÐS`ð 1Ðeiñ 1r   c                	óJ   € V P                   V,          P                  V4       R # r#   )rÅ   rÍ   ©r*   rÞ   rA   s   &&&r   Ú_add_handler_for_watchÚ#BaseObserver._add_handler_for_watchú   s   € Ø�‰�uÕ×!Ñ! -Ö0r   c               ó    € V ^8„  d   QhRRRR/# ©r   rA   r   r/   rm   r   )r   s   "r   r    r½   ý   s   € ÷ "ñ "°ð "À$ñ "r   c                	ó    € V P                   V R # r#   )rÅ   rG   s   &&r   Ú_remove_handlers_for_watchÚ'BaseObserver._remove_handlers_for_watchý   s   € Ø�N‰N˜5Ò!r   c               ó   € V ^8„  d   QhRR/# )r   r/   zset[EventEmitter]r   )r   s   "r   r    r½     s   € ÷ ñ Ð+ñ r   c                ó   € V P                   # )z/Returns event emitter created by this observer.)rÆ   r1   s   &r   ÚemittersÚBaseObserver.emitters   s   € ð �~‰~Ðr   c               ó   € V ^8„  d   QhRR/# r‘   r   )r   s   "r   r    r½     s   € ÷ ñ �tñ r   c                	óÊ   <€ V P                   P                  4        F  p VP                  4        K  	  \
        SV `	  4        R #   \         d    T P	                  T4       h i ; ir#   )rÆ   ÚcopyÚstartÚ	ExceptionrÕ   rp   )r*   rË   rt   s   & €r   rï   ÚBaseObserver.start  sU   ø€ Ø—~‘~×*Ñ*Ö,ˆGðØ—‘–ñ -ô 	‰‰Žøô ô Ø×$Ñ$ WÔ-Øðús    AÁA"r   Fr   Nc          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r   rÞ   r
   r   r%   r   r   r   r   r/   r   r   )r   s   "r   r    r½     s<   € ÷ -ñ -à-ð-ð ð-ð
 ð-ð 9ð-ð 
ñ-r   c          	     ó¸  € V P                   ;_uu_ 4        \        W#VR7      pV P                  W4       WPP                  9  d`   V P	                  V P
                  WPP                  VR7      pV P                  4       '       d   VP                  4        V P                  V4       V P                  P                  V4       RRR4       V#   + '       g   i     X# ; i)av  Schedules watching a path and calls appropriate methods specified
in the given event handler in response to file system events.

:param event_handler:
    An event handler instance that has appropriate event handling
    methods which will be called by the observer in response to
    file system events.
:type event_handler:
    :class:`watchdog.events.FileSystemEventHandler` or a subclass
:param path:
    Directory path that will be monitored.
:type path:
    ``str``
:param recursive:
    ``True`` if events will be emitted for sub-directories
    traversed recursively; ``False`` otherwise.
:type recursive:
    ``bool``
:param event_filter:
    Collection of event types to emit, or None for no filtering (default).
:type event_filter:
    Iterable[:class:`watchdog.events.FileSystemEvent`] | None
:return:
    An :class:`ObservedWatch` object instance representing
    a watch.
)r   r   )ri   r   N)rÂ   r   rá   rÇ   r¿   rk   ri   Úis_aliverï   rÏ   rÄ   rÍ   )r*   rÞ   r   r   r   rA   rË   s   &&&$$  r   ÚscheduleÚBaseObserver.schedule  s§   € ðD �Z�Z‹ZÜ! $È,ÔWˆEØ×'Ñ'¨Ô=ð ×3Ñ3Ô3Ø×-Ñ-¨d×.>Ñ.>ÀÏ|É|ÐjvÐ-Ów�Ø—=‘=—?’?Ø—M‘M”OØ×!Ñ! 'Ô*Ø�M‰M×Ñ˜eÔ$÷ ð ˆ÷ ŽZð ˆús   •B)CÃC	c               ó$   € V ^8„  d   QhRRRRRR/# rÝ   r   )r   s   "r   r    r½   =  s$   € ÷ >ñ >Ð3Ið >ÐR_ð >Ðdhñ >r   c                óŠ   € V P                   ;_uu_ 4        V P                  W4       RRR4       R#   + '       g   i     R# ; i)aÁ  Adds a handler for the given watch.

:param event_handler:
    An event handler instance that has appropriate event handling
    methods which will be called by the observer in response to
    file system events.
:type event_handler:
    :class:`watchdog.events.FileSystemEventHandler` or a subclass
:param watch:
    The watch to add a handler for.
:type watch:
    An instance of :class:`ObservedWatch` or a subclass of
    :class:`ObservedWatch`
N)rÂ   rá   rà   s   &&&r   Úadd_handler_for_watchÚ"BaseObserver.add_handler_for_watch=  s'   € ð �Z�Z‹ZØ×'Ñ'¨Ô=÷ �Z�ZŠZús	   •1±A	c               ó$   € V ^8„  d   QhRRRRRR/# rÝ   r   )r   s   "r   r    r½   O  s$   € ÷ 8ñ 8Ð6Lð 8ÐUbð 8Ðgkñ 8r   c                ó¬   € V P                   ;_uu_ 4        V P                  V,          P                  V4       RRR4       R#   + '       g   i     R# ; i)aÇ  Removes a handler for the given watch.

:param event_handler:
    An event handler instance that has appropriate event handling
    methods which will be called by the observer in response to
    file system events.
:type event_handler:
    :class:`watchdog.events.FileSystemEventHandler` or a subclass
:param watch:
    The watch to remove a handler for.
:type watch:
    An instance of :class:`ObservedWatch` or a subclass of
    :class:`ObservedWatch`
N)rÂ   rÅ   rÓ   rà   s   &&&r   Úremove_handler_for_watchÚ%BaseObserver.remove_handler_for_watchO  s0   € ð �Z�Z‹ZØ�N‰N˜5Õ!×(Ñ(¨Ô7÷ �Z�ZŠZús   •#AÁA	c               ó    € V ^8„  d   QhRRRR/# rä   r   )r   s   "r   r    r½   a  s   € ÷ (ñ ( ð (°$ñ (r   c                ó   € V P                   ;_uu_ 4        V P                  V,          pV P                  V V P                  V4       V P                  P                  V4       RRR4       R#   + '       g   i     R# ; i)z¤Unschedules a watch.

:param watch:
    The watch to unschedule.
:type watch:
    An instance of :class:`ObservedWatch` or a subclass of
    :class:`ObservedWatch`
N)rÂ   rÇ   rÅ   rÕ   rÄ   rÓ   )r*   rA   rË   s   && r   Ú
unscheduleÚBaseObserver.unschedulea  sU   € ð �Z�Z‹ZØ×-Ñ-¨eÕ4ˆGØ—‘˜uÐ%Ø× Ñ  Ô)Ø�M‰M× Ñ  Ô'÷	 �Z�ZŠZús   •AA,Á,A=	c               ó   € V ^8„  d   QhRR/# r‘   r   )r   s   "r   r    r½   p  s   € ÷ "ñ " ñ "r   c                óð   € V P                   ;_uu_ 4        V P                  P                  4        V P                  4        V P                  P                  4        RRR4       R#   + '       g   i     R# ; i)zCUnschedules all watches and detaches all associated event handlers.N)rÂ   rÅ   rÙ   rÚ   rÄ   r1   s   &r   Úunschedule_allÚBaseObserver.unschedule_allp  sC   € à�Z�Z‹ZØ�N‰N× Ñ Ô"Ø× Ñ Ô"Ø�M‰M×ÑÔ!÷ �Z�ZŠZús   •AA$Á$A5	c               ó   € V ^8„  d   QhRR/# r‘   r   )r   s   "r   r    r½   w  s   € ÷ ñ  ñ r   c                	ó&   € V P                  4        R # r#   )r  r1   s   &r   Úon_thread_stopÚBaseObserver.on_thread_stopw  s   € Ø×ÑÖr   c               ó    € V ^8„  d   QhRRRR/# r°   r   )r   s   "r   r    r½   z  s   € ÷  ñ  ¨:ð  ¸$ñ  r   c                	ó‚  € VP                  R R7      pV\        P                  J d   R# Vw  r4V P                  ;_uu_ 4        V P                  V,          P                  4        F-  pWPP                  V,          9   g   K  VP                  V4       K/  	  RRR4       VP                  4        R#   + '       g   i     L"; i)T)ÚblockN)Úgetrš   rª   rÂ   rÅ   rî   ÚdispatchÚ	task_done)r*   rk   Úentryr�   rA   Úhandlers   &&    r   r²   ÚBaseObserver.dispatch_eventsz  s‰   € Ø—‘ d�Ó+ˆØ”O×.Ñ.Ó.Ùà‰ˆà�Z�Z‹Zð  Ÿ>™>¨%Õ0×5Ñ5Ö7�ØŸn™n¨UÕ3Ö3Ø×$Ñ$ UÖ+ñ 8÷	 ð 	×ÑÖ÷ �Zús   Á9B.Á?B.Â.B>	)r¿   rÇ   rÆ   rÅ   rÂ   rÄ   )r   r   r   r   r   r¸   r+   rÏ   rÕ   rÚ   rá   ræ   rf   rê   rï   rõ   rù   rý   r  r  r	  r²   r   r—   r˜   s   @r   rº   rº   Ú   s�   ø† ÙðHÐNf÷ Hò Hõ$õõ(õ1õ"ð ôó ð÷ð ð-ð
  ð-ð <@÷-õ^>õ$8õ$(õ"õ÷ ó  r   rº   )Ú
__future__r   r¥   r§   rÀ   Úcollectionsr   Úpathlibr   Útypingr   Úwatchdog.utilsr   Úwatchdog.utils.bricksr   Úwatchdog.eventsr	   r
   r–   r¸   r   r   rh   rš   rº   r   r   r   Ú<module>r     sv   ðÝ "ã Û Û Ý #Ý Ý  å %Ý 2çßGàÐ ØÐ ôÐ!ô ÷6rñ 6rôtG,�:ô G,ôT6�jô 6ôrn �?ö n r   