+
    Vß$glc  ã                  óø  € R t ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	H
t
Ht ^ RIHt ^ RIHt ^ RIHtHt ^ RIHtHtHt ^ RIHt ]'       d!   ^ R	I	HtHt ^ R
IHt ^ RIHt ^ RIHt ^ RI H!t! ]PD                  ! ]PF                  R7       Rt$Rt% ! R R]4      t&Rt']
! ]']&R7      t(](PS                  RR]R7       ](PU                  RR7      t+/ t,]-].]/,          ]3,          t0R R lt1R]+RR/R R llt2R ]Pf                  /R! R" llt4R#^ /R$ R% llt5R& R' lt6R R(/R) R* llt7R+ R, lt8R- R. lt9]2! ]1! R/R0R1R27      ]1! R3R4R5]Pf                  : R62R77      ]1! R8R9R:R;]:R<R=7      ]1! R>R?R@RARB7      ]1! RCR?RDRE7      ]1! RFR?RGRE7      ]1! RHR?RIRE7      ]1! RJR?RKRE7      ]1! RLR?RMRE7      .	R.RN7      RO RP l4       t;]2! ]1! RQR0RRR27      ]1! R3R4R5]Pf                  : R62R77      ]1! RSRRTR77      ]1! RURVRWR?RXRY7      .RZ.RN7      R[ R\ l4       t<]2! ]1! R]R0R4R^R_7      ]1! R`RaRbRcR0RdRe7      ]1! RfRgRhRiRjRkRe7      ]1! RlRmRnR?RoRY7      ]1! RpR>RqR?RrRY7      ]1! R8R9R:R;]:RsR=7      ]1! RCR?RDRE7      ]1! RFR?RGRE7      ]1! RHR?RIRE7      ]1! RJR?RKRE7      ]1! RLR?RMRE7      .4      Rt Ru l4       t=]2! ]1! R]R0R4RvR_7      ]1! RwRxRyRRzRe7      ]1! R`RaRbRcR0RdRe7      ]1! RfRgRhRiRjRkRe7      ]1! RlRmRnR{R?RoR|7      ]1! RpR>RqR?RrRY7      ]1! R8R9R:R;]:RsR=7      ]1! R}R~RR?R€RY7      ]1! R�R‚RƒR?R„RY7      ]1! RCR?RDRE7      .
4      R… R† l4       t>]2! ]1! RyR‡Rˆ7      ]1! R‰RŠR0R‹RŒ7      ]1! R�RŽR]R�R�R‘R’7      ]1! R`RaRbRcR0RdRe7      ]1! RfRgRhRiRjRkRe7      ]1! RlRmRnR{R?RoR|7      ]1! RpR>RqR?RrRY7      ]1! R8R9R:R;]:RsR=7      ]1! R“R”R•R–Re7      ]1! RCR?RDRE7      ]1! R—R˜R™]:RšR=7      ]1! R›RœR�]:RžR=7      ]1! RŸR R@R¡R¢R|7      .4      R£ R¤ l4       t? ! R¥ R¦]@4      tAR§ R¨ ltBR© Rª ltC]DR«8X  d   ]PŠ                  ! ]C! 4       4       R# R# )¬u´   :module: watchdog.watchmedo
:author: yesudeep@google.com (Yesudeep Mangalapilly)
:author: contact@tiger-222.fr (MickaÃ«l Schoentgen)
:synopsis: ``watchmedo`` shell script utility.
)ÚannotationsN)ÚArgumentParserÚRawDescriptionHelpFormatter)ÚStringIO)Údedent)ÚTYPE_CHECKINGÚAny)ÚWatchdogShutdownErrorÚ
load_classÚplatform)ÚVERSION_STRING)Ú	NamespaceÚ_SubParsersAction)ÚCallable)ÚFileSystemEventHandler)ÚObserverType)ÚBaseObserver)ÚlevelÚtrickszpython-pathc                  óR   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	tV ;t	# )
ÚHelpFormattera  A nicer help formatter.

Help for arguments can be indented and contain new lines.
It will be de-dented and arguments in the help
will be separated by a blank line for better readability.

Source: https://github.com/httpie/httpie/blob/2423f89/httpie/cli/argparser.py#L31
Úmax_help_positionc               ó(   € V ^8„  d   QhRRRRRRRR/# )é   Úargsr   r   ÚintÚkwargsÚreturnÚNone© )Úformats   "Ú4/usr/lib/python3/dist-packages/watchdog/watchmedo.pyÚ__annotate__ÚHelpFormatter.__annotate__0   s)   € ÷ *ñ *˜cð *°cð *Èð *ÐQUñ *ó    c               	ó0   <€ WR &   \         SV `  ! V/ VB  R# )r   N)ÚsuperÚ__init__)Úselfr   r   r   Ú	__class__s   &$*,€r!   r'   ÚHelpFormatter.__init__0   s   ø€ à&7Ð"Ñ#Ü‰Ò˜$Ð) &Ô)r$   c               ó   € V ^8„  d   QhRR/# )r   r   Ústrr   )r    s   "r!   r"   r#   5   s   € ÷ *ñ *˜#ñ *r$   c                	ó4   € R \        V 4      P                   R2# )Ú<Ú>)ÚtypeÚ__name__)r(   s   &r!   Ú__repr__ÚHelpFormatter.__repr__5   s   € Ø”4˜“:×&Ñ&Ð' qÐ)Ð)r$   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Útextr,   Úwidthr   r   ú	list[str]r   )r    s   "r!   r"   r#   8   s!   € ÷ !ñ ! ð !¨Sð !°Yñ !r$   c                	ób   € \        V4      P                  4       R ,           pVP                  4       # )z

)r   ÚstripÚ
splitlines)r(   r5   r6   s   &&&r!   Ú_split_linesÚHelpFormatter._split_lines8   s&   € Ü�d‹|×!Ñ!Ó# fÕ,ˆØ�‰Ó Ð r$   r   )
r1   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r'   r2   r;   Ú__static_attributes__Ú__classcell__)r)   s   @r!   r   r   &   s(   ø† ñð*¸A÷ *ò *õ
*÷!ó !r$   r   u,  Copyright 2018-2024 MickaÃ«l Schoentgen & contributors
Copyright 2014-2018 Thomas Amland & contributors
Copyright 2012-2014 Google, Inc.
Copyright 2011-2012 Yesudeep Mangalapilly

Licensed under the terms of the Apache license, version 2.0. Please see
LICENSE in the source code for more information.)ÚepilogÚformatter_classz	--versionÚversion)ÚactionrE   Útop_command)Údestc               ó$   € V ^8„  d   QhRRRRRR/# )r   Úname_or_flagsr,   r   r   r   ÚArgumentr   )r    s   "r!   r"   r"   N   s!   € ÷ 'ñ '˜Sð '¨Cð '°Hñ 'r$   c                 ó   € \        V 4      V3# )zTConvenience function to properly format arguments to pass to the
command decorator.
)Úlist)rJ   r   s   *,r!   ÚargumentrN   N   s   € ô �Ó Ð&Ð&r$   ÚparentÚcmd_aliasesc               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   r   zlist[Argument]rO   z!_SubParsersAction[ArgumentParser]rP   zlist[str] | Noner   r   r   )r    s   "r!   r"   r"   U   s2   € ÷ ñ Ø
ðð .ðð "ð	ð
 ñr$   c               ó"   a aa€ R V VV3R llpV# )zöDecorator to define a new command in a sanity-preserving way.
The function will be stored in the ``func`` variable when the parser
parses arguments so that it can be called directly like so::

  >>> args = cli.parse_args()
  >>> args.func(args)

c               ó    € V ^8„  d   QhRRRR/# )r   Úfuncr   r   r   )r    s   "r!   r"   Úcommand.<locals>.__annotate__d   s   € ÷ ñ ˜ð  Xñ r$   c                ó¬  <€ V P                   P                  R R4      p\        V P                  ;'       g    R4      pS	P	                  TS;'       g    . V\
        R7      pV\        V&   VP                  4       pVP                  RRRRRR7       VP                  R	R
RR^R7       S F)  w  rVVP                  ! V/ VB  VP                  V R7       K+  	  V # )Ú_Ú-Ú )ÚaliasesÚdescriptionrD   z-qz--quietÚ	verbosityÚappend_const)rH   rF   Úconstz-vz	--verbose)rT   éÿÿÿÿ)
r1   Úreplacer   r@   Ú
add_parserr   Úcommand_parsersÚadd_mutually_exclusive_groupÚadd_argumentÚset_defaults)
rT   ÚnameÚdescÚparserÚverbosity_grouprJ   r   r   rP   rO   s
   &      €€€r!   Ú	decoratorÚcommand.<locals>.decoratord   s×   ø€ Ø�}‰}×$Ñ$ S¨#Ó.ˆÜ�d—l‘l×(Ð( bÓ)ˆØ×"Ñ" 4°×1BÐ1BÀÐPTÔfsÐ"ÓtˆØ &Œ˜ÑØ ×=Ñ=Ó?ˆØ×$Ñ$ T¨9¸;È~ÐegÐ$ÔhØ×$Ñ$ T¨;¸[ÐQ_ÐghÐ$ÔiÛ%)Ñ!ˆMØ×Ò Ð9°&Ò9Ø×Ñ TÐÖ*ñ &*ð ˆr$   r   )r   rO   rP   rj   s   fdd r!   Úcommandrl   U   s   ú€ ÷ò ð Ðr$   Ú	separatorc               ó$   € V ^8„  d   QhRRRRRR/# )r   Úpathname_specr,   rm   r   r7   r   )r    s   "r!   r"   r"   t   s!   € ÷ *ñ *˜cð *°ð *Àiñ *r$   c               ó$   € V P                  V4      # )zÖSplits a pathname specification separated by an OS-dependent separator.

:param pathname_spec:
    The pathname specification.
:param separator:
    (OS Dependent) `:` on Unix and `;` on Windows or user-specified.
©Úsplit)ro   rm   s   &$r!   Ú
path_splitrs   t   s   € ð ×Ñ˜yÓ)Ð)r$   Úindexc               ó$   € V ^8„  d   QhRRRRRR/# )r   Ú	pathnamesr7   rt   r   r   r   r   )r    s   "r!   r"   r"      s!   € ÷ 
)ñ 
)˜yð 
)°Cð 
)Àñ 
)r$   c               ój   € V RRR1,           F"  p\         P                  P                  W4       K$  	  R# )zÚAdds specified paths at specified index into the sys.path list.

:param paths:
    A list of paths to add to the sys.path
:param index:
    (Default 0) The index in the sys.path list where the paths will be
    added.
Nr_   )ÚsysÚpathÚinsert)rv   rt   Úpathnames   &$ r!   Úadd_to_sys_pathr|      s(   € ð ™d ˜d—O�OˆÜ�‰�‰˜Ö(ó $r$   c               ó    € V ^8„  d   QhRRRR/# )r   Útricks_file_pathnamer,   r   Údictr   )r    s   "r!   r"   r"   Œ   s   € ÷ (ñ ( cð (¨dñ (r$   c                ó®   € ^ RI p\        V R4      ;_uu_ 4       pVP                  VP                  4       4      uuRRR4       #   + '       g   i     R# ; i)z¸Loads the YAML configuration from the specified file.

:param tricks_file_path:
    The path to the tricks configuration file.
:returns:
    A dictionary of configuration information.
NÚrb)ÚyamlÚopenÚ	safe_loadÚread)r~   r‚   Úfs   &  r!   Úload_configr‡   Œ   s8   € ó ä	Ð" D×	)Ô	)¨QØ�~‰~˜aŸf™f›hÓ'÷ 
*×	)×	)Ó	)ús   ™AÁA	Ú;c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   Úpatterns_specr,   Úignore_patterns_specrm   r   ztuple[list[str], list[str]]r   )r    s   "r!   r"   r"   š   s,   € ÷ 
%ñ 
%Øð
%Ø.1ð
%ØADð
%à ñ
%r$   c               ó`   € V P                  V4      pVP                  V4      pVR.8X  d   . pW43# )zVParses pattern argument specs and returns a two-tuple of
(patterns, ignore_patterns).
rY   rq   )rŠ   r‹   rm   ÚpatternsÚignore_patternss   &&$  r!   Úparse_patternsr�   š   s<   € ð ×"Ñ" 9Ó-€HØ*×0Ñ0°Ó;€OØ˜2˜$ÔØˆØÐ$Ð$r$   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r   Úobserverr   Úevent_handlerr   rv   r7   Ú	recursiveÚboolr   r   r   )r    s   "r!   r"   r"   §   s:   € ÷ ñ Øðà)ðð ðð
 ðð 
ñr$   c               ó  € \        V4       F  pV P                  WVR7       K  	  V P                  4          \        P                  ! ^4       K    \
         d    T P                  4         Mi ; iT P                  4        R# )aC  Single observer thread with a scheduled path and event handler.

:param observer:
    The observer thread.
:param event_handler:
    Event handler which will be called in response to file system events.
:param pathnames:
    A list of pathnames to monitor.
:param recursive:
    ``True`` if recursive; ``False`` otherwise.
©r“   N)ÚsetÚscheduleÚstartÚtimeÚsleepr	   ÚstopÚjoin)r‘   r’   rv   r“   r{   s   &&&$ r!   Úobserve_withrž   §   sc   € ô$ ˜	–NˆØ×Ñ˜-¸YÐÖGñ #à‡N�NÔðØÜ�JŠJ�qŽMøÜ ô Ø�‰Žðúà‡M�M†Os   ·A ÁA.Á-A.c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r   r‘   r   r   z
list[dict]r{   r,   r“   r”   r   r   r   )r    s   "r!   r"   r"   Ä   s8   € ÷ Lñ L˜lð L°Jð LÈ#ð LÐ]að LÐfjñ Lr$   c               óÄ   € V FY  pVP                  4        FB  w  rV\        V4      pV! R/ VB p\        VRR4      ;'       g    Tp	V P                  W‰VR7       KD  	  K[  	  R# )aB  Schedules tricks with the specified observer and for the given watch
path.

:param observer:
    The observer thread into which to schedule the trick and watch.
:param tricks:
    A list of tricks.
:param pathname:
    A path name which should be watched.
:param recursive:
    ``True`` if recursive; ``False`` otherwise.
Úsource_directoryNr–   r   )Úitemsr
   Úgetattrr˜   )
r‘   r   r{   r“   Útrickrf   ÚvalueÚ	trick_clsÚhandlerÚtrick_pathnames
   &&&$      r!   Úschedule_tricksr©   Ä   sa   € ó ˆØ Ÿ;™;ž=‰KˆDÜ" 4Ó(ˆIÙÑ( %Ñ(ˆGÜ$ WÐ.@À$ÓG×SÐSÈ8ˆNØ×Ñ˜gÀÐÖKó	 )ó r$   ÚfilesÚ*zperform tricks from given file)ÚnargsÚhelpz--python-pathÚ.zPaths separated by z to add to the Python path.)Údefaultr­   z
--intervalz	--timeoutÚtimeoutg      ð?z?Use this as the polling interval/blocking timeout (in seconds).)rH   r¯   r0   r­   z--recursiveÚ
store_trueTz-Recursively monitor paths (defaults to True).)rF   r¯   r­   z--debug-force-pollingz[debug] Forces polling.)rF   r­   z--debug-force-kqueuez[debug] Forces BSD kqueue(2).z--debug-force-winapiz[debug] Forces Windows API.z--debug-force-fseventsz[debug] Forces macOS FSEvents.z--debug-force-inotifyz [debug] Forces Linux inotify(7).)rP   c               ó    € V ^8„  d   QhRRRR/# ©r   r   r   r   r   r   )r    s   "r!   r"   r"     s   € ÷ >ñ >�ið > Dñ >r$   c                óª  € V P                   '       d
   ^ RIHp TpM§V P                  '       d
   ^ RIHp TpMŒ\        '       g   V P                  '       g(   \        '       d%   \        P                  ! 4       '       d
   ^ RI
Hp TpM>V P                  '       d
   ^ RIHp TpM#V P                  '       d
   ^ RIHp TpM^ RIHp Tp\)        \+        V P,                  4      4       . pV P.                   EFD  p	V! V P0                  R7      p
\2        P4                  P7                  V	4      '       g>   \9        \:        P<                  \2        P>                  ! \:        P<                  4      V	4      h\A        V	4      p V\B        ,          p\F        T9   d   \)        T\F        ,          4       \2        P4                  PI                  T	4      ;'       g3    \2        P4                  PK                  \2        PL                  ! 4       4      p\O        Y¬YðPP                  R7       T
PS                  4        TPU                  T
4       EKG  	    \V        PX                  ! ^4       K    \D         d!   pR\B        : R	T	: R
2p\E        T4      ThRp?ii ; i  \Z         d-    T F#  pTP]                  4        TP_                  4        K%  	   Mi ; iT F  pTPa                  4        K  	  R# )z;Command to execute tricks from a tricks configuration file.©ÚPollingObserver©ÚKqueueObserver©ÚWindowsApiObserver©ÚInotifyObserver©ÚFSEventsObserver©ÚObserver©r°   zNo z key specified in r®   Nr–   )1Údebug_force_pollingÚwatchdog.observers.pollingr¶   Údebug_force_kqueueÚwatchdog.observers.kqueuer¸   r   Údebug_force_winapir   Ú
is_windowsÚ)watchdog.observers.read_directory_changesrº   Údebug_force_inotifyÚwatchdog.observers.inotifyr¼   Údebug_force_fseventsÚwatchdog.observers.fseventsr¾   Úwatchdog.observersrÀ   r|   rs   Úpython_pathrª   r°   Úosry   ÚexistsÚOSErrorÚerrnoÚENOENTÚstrerrorr‡   ÚCONFIG_KEY_TRICKSÚKeyErrorÚCONFIG_KEY_PYTHON_PATHÚdirnameÚrelpathÚgetcwdr©   r“   r™   Úappendrš   r›   r	   Úunschedule_allrœ   r�   )r   r¶   Úobserver_clsr¸   rº   r¼   r¾   rÀ   Ú	observersÚtricks_filer‘   Úconfigr   ÚeÚerrorÚdir_pathÚos   &                r!   Útricks_frområ   Ù   s  € ðb ××ÐÝ>à&‰Ø	×	 ×	 Ð	 Ý<à%‰ß‹m × 7× 7Ð 7¿]»]Ìx×ObÒOb×OdÒOdÝPà)‰Ø	×	!×	!Ð	!Ý>à&‰Ø	×	"×	"Ð	"Ý@à'‰õ 	0àˆä”J˜t×/Ñ/Ó0Ô1Ø€IØ—z•zˆÙ¨¯©Ô5ˆä�w‰w�~‰~˜k×*Ò*Üœ%Ÿ,™,¬¯ª´E·L±LÓ(AÀ;ÓOÐOä˜[Ó)ˆð	)ØÔ-Õ.ˆFô
 " VÔ+Ü˜FÔ#9Õ:Ô;ä—7‘7—?‘? ;Ó/×OÐO´2·7±7·?±?Ä2Ç9Â9Ã;Ó3OˆÜ˜¨(¿n¹nÕMØ�‰ÔØ×Ñ˜×"ñ) "ð,ØÜ�JŠJ�qŽMøô ô 	)ØÔ+Ñ.Ð.@ÀÁÈqÐQˆEÜ˜5“/ qÐ(ûð	)ûô !ô ÛˆAØ×ÑÔØ�F‰FŽHó ðúó ˆØ	�‰Žó s*   Å4IÈ9J  ÉI=ÉI8É8I=Ê 4J7Ê6J7Útrick_pathsz5Dotted paths for all the tricks you want to generate.z--append-to-filez€
                   Appends the generated tricks YAML to a file.
                   If not specified, prints to standard output.z-az--append-onlyÚappend_onlyz’
                   If --append-to-file is not specified, produces output for
                   appending instead of a complete tricks YAML file.)rH   rF   r­   zgenerate-tricks-yamlc               ó    € V ^8„  d   QhRRRR/# r³   r   )r    s   "r!   r"   r"   g  s   € ÷  ñ  ˜yð  ¨Tñ  r$   c                ó  € ^ RI p\        V P                  4      p\        V4       \	        4       pV P
                   F-  p\        V4      pVP                  VP                  4       4       K/  	  VP                  4       pVP                  4        VP                  \        V/4      pV\         R2,          pV P                  f<   V P                  '       g	   Wv,           p\         P"                  P                  V4       R# \$        P&                  P)                  V P                  4      '       g	   Wv,           p\+        V P                  RRR7      ;_uu_ 4       pVP                  V4       RRR4       R#   + '       g   i     R# ; i)zLCommand to generate Yaml configuration for tricks named on the command line.Nz:
Úazutf-8)Úencoding)r‚   rs   rÎ   r|   r   ræ   r
   ÚwriteÚgenerate_yamlÚgetvalueÚcloseÚdumpr×   rÕ   Úappend_to_filerç   rx   ÚstdoutrÏ   ry   rÐ   rƒ   )	r   r‚   Úpython_pathsÚoutputÚ
trick_pathr¦   ÚcontentÚheaderÚfiles	   &        r!   Útricks_generate_yamlrù   H  s  € óB ä˜d×.Ñ.Ó/€LÜ�LÔ!Ü‹Z€Fà×&Ô&ˆ
Ü˜zÓ*ˆ	Ø�‰�Y×,Ñ,Ó.Ö/ñ 'ð �o‰oÓ€GØ
‡L�L„Nà�Y‰YÔ.°Ð=Ó>€FØ
Ô"Ð# 3Ð'Õ'€FØ×ÑÒ"à××ÐØÕ&ˆGÜ�
‰
×Ñ˜Ö!ä�w‰w�~‰~˜d×1Ñ1×2Ò2ØÕ&ˆGÜ�$×%Ñ% s°W×=Õ=ÀØ�J‰J�wÔ÷ >×=×=Ò=ús   ÅE/Å/F 	Údirectoriesz%Directories to watch. (default: '.').)r¬   r¯   r­   z-pz	--patternz
--patternsr�   z9Matches event paths with these patterns (separated by ;).)rH   r¯   r­   z-iz--ignore-patternz--ignore-patternsrŽ   rY   z9Ignores event paths with these patterns (separated by ;).z-Dz--ignore-directoriesÚignore_directorieszIgnores events for directories.z-Rr“   z%Monitors the directories recursively.z2Use this as the polling interval/blocking timeout.c               ó    € V ^8„  d   QhRRRR/# r³   r   )r    s   "r!   r"   r"   É  s   € ÷ (Pñ (Pˆið (P˜Dñ (Pr$   c                ón  € ^ RI Hp \        V P                  V P                  4      w  r#V! VVV P
                  R7      pV P                  '       d
   ^ RIHp TpM§V P                  '       d
   ^ RI
Hp TpMŒ\        '       g   V P                  '       g(   \        '       d%   \        P                  ! 4       '       d
   ^ RIHp TpM>V P$                  '       d
   ^ RIHp	 T	pM#V P*                  '       d
   ^ RIHp
 T
pM^ RIHp TpV! V P4                  R	7      p\7        WÄV P8                  V P:                  R
7       R# )z1Command to log file system events to the console.)ÚLoggerTrick)r�   rŽ   rû   rµ   r·   r¹   r»   r½   r¿   rÁ   r–   N)Úwatchdog.tricksrþ   r�   r�   rŽ   rû   rÂ   rÃ   r¶   rÄ   rÅ   r¸   r   rÆ   r   rÇ   rÈ   rº   rÉ   rÊ   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!   Úlogr   „  sä   € õN ,ä .¨t¯}©}¸d×>RÑ>RÓ SÑ€HÙØØ'Ø×2Ñ2ô€Gð ××ÐÝ>à&‰Ø	×	 ×	 Ð	 Ý<à%‰ß‹m × 7× 7Ð 7¿]»]Ìx×ObÒOb×OdÒOdÝPà)‰Ø	×	!×	!Ð	!Ý>à&‰Ø	×	"×	"Ð	"Ý@à'‰õ 	0àˆá D§L¡LÔ1€HÜ� D×$4Ñ$4ÀÇÁ×Or$   zDirectories to watch.z-cz	--commandrl   am  
    Shell command executed in response to matching events.
    These interpolation variables are available to your command string:

        ${watch_src_path}   - event source path
        ${watch_dest_path}  - event destination path (for moved events)
        ${watch_event_type} - event type
        ${watch_object}     - 'file' or 'directory'

    Note:
        Please ensure you do not use double quotes (") to quote
        your command string. That will force your shell to
        interpolate before the command is processed by this
        command.

    Example:

        --command='echo "${watch_src_path}"'
    F)rH   r¯   rF   r­   z-wz--waitÚwait_for_processzDWait for process to finish to avoid multiple simultaneous instances.z-Wz--dropÚdrop_during_processzhIgnore events that occur while command is still being executed to avoid multiple simultaneous instances.c               ó    € V ^8„  d   QhRRRR/# r³   r   )r    s   "r!   r"   r"   I  s   € ÷ Pñ P˜	ð P dñ Pr$   c           	     ó¤  € ^ RI Hp V P                  '       g   RV n        V P                  '       d
   ^ RIHp TpM^ RIHp Tp\        V P                  V P                  4      w  rVV! V P                  VVV P                  V P                  V P                  R7      pV! V P                  R7      p\        W‡V P                   V P"                  R7       R# )zDCommand to execute shell commands in response to file system events.)ÚShellCommandTrickNrµ   r¿   )r�   rŽ   rû   r  r  rÁ   r–   )rÿ   r  rl   rÂ   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!   Úshell_commandr  ô  s§   € õn 2à�<�<ˆ<ØˆŒð ××ÐÝ>à&‰å/àˆä .¨t¯}©}¸d×>RÑ>RÓ SÑ€HÙØ�‰ØØ'Ø×2Ñ2Ø×.Ñ.Ø ×4Ñ4ô€Gñ  D§L¡LÔ1€HÜ� D×$4Ñ$4ÀÇÁ×Or$   z,Long-running command to run in a subprocess.)r­   Úcommand_argsÚargz€
    Command arguments.

    Note: Use -- before the command arguments, otherwise watchmedo will
    try to interpret them.
    )Úmetavarr¬   r­   z-dz--directoryÚ	DIRECTORYrÛ   zLDirectory to watch. Use another -d or --directory option for each directory.)rH   r	  rF   r­   z--signalÚsignalÚSIGINTz6Stop the subprocess with this signal (default SIGINT).z--kill-afterÚ
kill_afterg      $@zYWhen stopping, kill the subprocess after the specified timeout in seconds (default 10.0).z--debounce-intervalÚdebounce_intervalg        zwAfter a file change, Wait until the specified interval (in seconds) passes with no file changes, and only then restart.z--no-restart-on-command-exitÚrestart_on_command_exitÚstore_falsez.Don't auto-restart the command after it exits.c               ó    € V ^8„  d   QhRRRR/# r³   r   )r    s   "r!   r"   r"   Ã  s   € ÷ :ñ :�yð : Tñ :r$   c                óþ  aa€ V P                   '       d
   ^ RIHp TpM^ RIHp Tp^ RIo^ RIHp V P                  '       g	   R.V n        V P
                  P                  R4      '       d   \        SV P
                  4      M\        V P
                  4      pSP                  SP                  0o\        SR4      '       d   SP                  SP                   4       R VV3R	 llpS F  pSP                  Wv4       K  	  \#        V P$                  V P&                  4      w  r‰V P(                  .p
V
P+                  V P,                  4       V! V
VV	V P.                  VV P0                  V P2                  V P4                  R
7      pVP7                  4        V! V P8                  R7      p \;        WËV P                  V P<                  R7       VPA                  4        R#   \>         d     Li ; i  TPA                  4        i ; i)zLCommand to start a long-running subprocess and restart it on matched events.rµ   r¿   N)ÚAutoRestartTrickr®   ÚSIGÚSIGHUPc               ó$   € V ^8„  d   QhRRRRRR/# )r   Ú_signumzsignal._SIGNUMÚ_frameÚobjectr   r   r   )r    s   "r!   r"   Ú"auto_restart.<locals>.__annotate__à  s!   € ÷ $ñ $¨Nð $ÀFð $Ètñ $r$   c                óZ   <€ S F  pSP                  VSP                  4       K!  	  \        h)N)r  ÚSIG_IGNr	   )r  r  Úsignumr  Útermination_signalss   && €€r!   Úhandler_termination_signalÚ0auto_restart.<locals>.handler_termination_signalà  s%   ø€ ã)ˆFØ�M‰M˜& &§.¡.Ö1ñ *ä#Ð#r$   )r�   rŽ   rû   Ústop_signalr  Údebounce_interval_secondsr  rÁ   r–   )!rÂ   rÃ   r¶   rÍ   rÀ   r  rÿ   r  rú   Ú
startswithr£   r   ÚSIGTERMr  ÚhasattrÚaddr  r�   r�   rŽ   rl   Úextendr  rû   r  r  r  r™   r°   rž   r“   r	   rœ   )r   r¶   rÝ   rÀ   r  r!  r  r  r�   rŽ   rl   r§   r‘   r  r  s   &            @@r!   Úauto_restartr(  g  s˜  ù€ ð~ ××ÐÝ>à&‰å/àˆãå0à××ÐØ˜5ˆÔð 37·+±+×2HÑ2HÈ×2OÒ2O”'˜& $§+¡+Ô.ÔUXÐY]×YdÑYdÓUe€Kð "Ÿ>™>¨6¯=©=Ð9Ðäˆv�x× Ò Ø×Ñ §¡Ô.÷$ñ $ó &ˆØ�‰�fÖ9ñ &ô !/¨t¯}©}¸d×>RÑ>RÓ SÑ€HØ�|‰|ˆn€GØ‡N�N�4×$Ñ$Ô%ÙØØØ'Ø×2Ñ2ØØ—?‘?Ø"&×"8Ñ"8Ø $× <Ñ <ô	€Gð ‡M�M„OÙ D§L¡LÔ1€HðÜ�X¨×(8Ñ(8ÀDÇNÁNÕSð 	�‰Žøô !ô Ùðûð 	�‰�ús$   Æ%"G ÇG'Ç$G* Ç&G'Ç'G* Ç*G<c                  ó   € ] tR tRtRtR# )ÚLogLevelErrori   r   N)r1   r=   r>   r?   rA   r   r$   r!   r*  r*     s   † Ûr$   r*  c               ó    € V ^8„  d   QhRRRR/# )r   r   r   r   r,   r   )r    s   "r!   r"   r"     s   € ÷ @ñ @ 9ð @°ñ @r$   c                ó´   € \        V P                  ;'       g    . 4      pVR8  d   Rp\        V4      hV^8”  d   Rp\        V4      h. RO^V,           ,          # )é   z&-q/--quiet may be specified only once.z,-v/--verbose may be specified up to 2 times.r_   )ÚERRORÚWARNINGÚINFOÚDEBUG)Úsumr\   r*  )r   r\   râ   s   &  r!   Ú_get_log_level_from_argsr3    sU   € Ü�D—N‘N×(Ð( bÓ)€IØ�2„~Ø8ˆÜ˜EÓ"Ð"Ø�1„}Ø>ˆÜ˜EÓ"Ð"Ú0°°YµÕ?Ð?r$   c               ó   € V ^8„  d   QhRR/# )r   r   r   r   )r    s   "r!   r"   r"     s   € ÷ ñ ˆcñ r$   c                 óú  € \         P                  4       p V P                  f   \         P                  4        ^#  \	        V 4      p\        P                  ! R4      P                  T4        T P                  T 4       ^ #   \
         d`   p\        RTP                  ^ ,           2\        P                  R7       \        T P                  ,          P                  4         Rp?^# Rp?ii ; i  \         d     ^‚# i ; i)zEntry-point function.NzError: )rø   Úwatchdog)ÚcliÚ
parse_argsrG   Ú
print_helpr3  r*  Úprintr   rx   Ústderrrb   ÚloggingÚ	getLoggerÚsetLevelrT   ÚKeyboardInterrupt)r   Ú	log_levelÚexcs      r!   ÚmainrB    sÂ   € ä�>‰>Ó€DØ×ÑÒÜ�‰ÔÙðÜ,¨TÓ2ˆ	ô
 ×Ò�jÓ!×*Ñ*¨9Ô5ðØ�	‰	�$Œñ øô ô Ü�˜Ÿ™ ��}Ð%¬C¯J©JÕ7Ü˜×(Ñ(Õ)×4Ñ4Ô6Ýûðûô ô Úðús*   ºA> Á+C+ Á>C(Â	AC#Ã#C(Ã+C:Ã9C:Ú__main__)Fr@   Ú
__future__r   rÒ   r<  rÏ   Úos.pathrx   rš   Úargparser   r   Úior   Útextwrapr   Útypingr   r   Úwatchdog.utilsr	   r
   r   Úwatchdog.versionr   r   r   r   Úwatchdog.eventsr   rÍ   r   Úwatchdog.observers.apir   ÚbasicConfigr0  rÕ   r×   r   rC   r7  rd   Úadd_subparsersÚ
subparsersrb   ÚtuplerM   r,   rK   rN   rl   Úpathseprs   r|   r‡   r�   rž   r©   Úfloatrå   rù   r   r  r(  Ú	Exceptionr*  r3  rB  r1   Úexitr   r$   r!   Ú<module>rV     sY  ðñõ #ã Û Û 	Û Û 
Û ß @Ý Ý ß %ç FÑ FÝ +çß5Ýå6Ý/Ý3ð × Ò ˜'Ÿ,™,Õ 'àÐ Ø&Ð ô!Ð/ô !ð.
4€ñ ˜F°MÔB€Ø × Ñ � Y¸Ð Ô GØ×Ñ ]ÐÓ3€
Ø€à��c•˜C�Õ €õ'ðð 1;ðð %)÷	ð>*°r·z±z÷ *ð
)¸!÷ 
)õ(ð
%ØGJ÷
%õõ:Lñ* 	á� Ð*JÔKÙØØØ& r§z¡z¡nÐ4OÐPô	
ñ
 	ØØØØØØRô	
ñ 	ØØØØ@ô		
ñ 	Ð(°ÐD]Ô^ÙØ"ØØ0ô	
ñ
 	Ø"ØØ.ô	
ñ
 	Ø$ØØ1ô	
ñ
 	Ø#ØØ3ô	
ðK*ðV �
ôY-ô\>ó]-ð\>ñB 	áØØØHô	
ñ
 	ØØØ& r§z¡z¡nÐ4OÐPô	
ñ
 	ØØðCô	
ñ 	ØØØØðHô	
ð%ð8 (Ð(ô;ô> ó?ð> ñ: 	áØØØØ8ô		
ñ 	ØØØØØØLô	
ñ 	ØØØØ"ØØLô	
ñ 	ØØ"Ø%ØØ2ô	
ñ 	ØØØØØ8ô	
ñ 	ØØØØØØEô	
ñ 	Ð(°ÐD]Ô^ÙØ"ØØ0ô	
ñ
 	Ø"ØØ.ô	
ñ
 	Ø$ØØ1ô	
ñ
 	Ø#ØØ3ô	
ð{BóDôJ(PóKDðJ(PñV 	á� c°3Ð=TÔUÙØØØØðô	
ñ2 	ØØØØØØLô	
ñ 	ØØØØ"ØØLô	
ñ 	ØØ"Ø%ØØØ2ô	
ñ 	ØØØØØ8ô	
ñ 	ØØØØØØEô	
ñ 	ØØØ#ØØWô	
ñ 	ØØØ&ØðBô	
ñ 	Ð(°ÐD]Ô^ðcRóTôjPókTðjPñ< 	á�Ð!OÔPÙØØØðô	
	
ñ 	ØØØØØØ_ô	
ñ 	ØØØØØØLô	
ñ 	ØØØØ"ØØLô	
ñ 	ØØ"Ø%ØØØ2ô	
ñ 	ØØØØØ8ô	
ñ 	ØØØØØØEô	
ñ 	ØØØØIô		
ñ 	Ð(°ÐD]Ô^ÙØØØØØlô	
ñ 	Ø!Ø$ØØðKô	
ñ 	Ø*Ø*ØØ ØAô	
ðeYó[ôx:óy[ðx:ôz	�Iô 	õ@õð. ˆzÔØ‡H‚H‰T‹VÖñ r$   