ó
    Vß$glc  ã                  ó²  • S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKrSSK	J
r
Jr  SSKJr  SSKJr  SSKJrJr  SSKJrJrJr  SS	KJr  \(       a   SS
K	JrJr  SSKJr  SSKJr  SSKJr  SSK J!r!  \RD                  " \RF                  S9  Sr$Sr% " S S\5      r&Sr'\
" \'\&S9r(\(RS                  SS\S9  \(RU                  SS9r+0 r,\-\.\/   \4   r0S�S jr1\+SS.       SžS jjr2\Rf                  S.SŸS jjr4SS .S S! jjr5S¡S" jr6S#S.       S¢S$ jjr7          S£S& jr8S¤S' jr9\2" \1" S(S)S*S+9\1" S,S-S.\Rf                  < S/3S09\1" S1S2S3S4\:S5S69\1" S7S8S9S:S;9\1" S<S8S=S>9\1" S?S8S@S>9\1" SAS8SBS>9\1" SCS8SDS>9\1" SES8SFS>9/	S/SG9S¥SH j5       r;\2" \1" SIS)SJS+9\1" S,S-S.\Rf                  < S/3S09\1" SKSSLS09\1" SMSNSOS8SPSQ9/SR/SG9S¥SS j5       r<\2" \1" STS)S-SUSV9\1" SWSXSYSZS)S[S\9\1" S]S^S_S`SaSbS\9\1" ScSdSeS8SfSQ9\1" SgS7S%S8ShSQ9\1" S1S2S3S4\:SiS69\1" S<S8S=S>9\1" S?S8S@S>9\1" SAS8SBS>9\1" SCS8SDS>9\1" SES8SFS>9/5      S¥Sj j5       r=\2" \1" STS)S-SkSV9\1" SlSmSnSSoS\9\1" SWSXSYSZS)S[S\9\1" S]S^S_S`SaSbS\9\1" ScSdSeSpS8SfSq9\1" SgS7S%S8ShSQ9\1" S1S2S3S4\:SiS69\1" SrSsStS8SuSQ9\1" SvSwSxS8SySQ9\1" S<S8S=S>9/
5      S¥Sz j5       r>\2" \1" SnS{S|9\1" S}S~S)SS€9\1" S�S‚STSƒS„S…S†9\1" SWSXSYSZS)S[S\9\1" S]S^S_S`SaSbS\9\1" ScSdSeSpS8SfSq9\1" SgS7S%S8ShSQ9\1" S1S2S3S4\:SiS69\1" S‡SˆS‰SŠS\9\1" S<S8S=S>9\1" S‹SŒS�\:SŽS69\1" S�S�S‘\:S’S69\1" S“S”S9S•S–Sq9/5      S¥S— j5       r? " S˜ S™\@5      rAS¦Sš jrBS§S› jrC\DSœ:X  a  \RŠ                  " \C" 5       5        gg)¨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                  óL   ^ • \ rS rSrSrSS.S	U 4S jjjrS
S jrSS jrSrU =r	$ )ÚHelpFormatteré&   a  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               ó.   >• XS'   [         TU ]  " U0 UD6  g )Nr   )ÚsuperÚ__init__)Úselfr   ÚargsÚkwargsÚ	__class__s       €Ú4/usr/lib/python3/dist-packages/watchdog/watchmedo.pyr   ÚHelpFormatter.__init__0   s   ø€ à&7Ð"Ñ#Ü‰Ò˜$Ð) &Ó)ó    c                ó4   • S[        U 5      R                   S3$ )NÚ<Ú>)ÚtypeÚ__name__)r   s    r"   Ú__repr__ÚHelpFormatter.__repr__5   s   € Ø”4˜“:×&Ñ&Ð' qÐ)Ð)r$   c                óZ   • [        U5      R                  5       S-   nUR                  5       $ )Nz

)r   ÚstripÚ
splitlines)r   ÚtextÚwidths      r"   Ú_split_linesÚHelpFormatter._split_lines8   s&   € Ü�d‹|×!Ñ!Ó# fÑ,ˆØ�‰Ó Ð r$   © )r   r	   r   Úintr    r	   ÚreturnÚNone)r5   Ústr)r/   r7   r0   r4   r5   ú	list[str])
r)   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r*   r1   Ú__static_attributes__Ú__classcell__)r!   s   @r"   r   r   &   s&   ø† ñð =>÷ *ò *ô
*÷!ò !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)ÚactionrA   Útop_command)Údestc                 ó   • [        U 5      U4$ )zTConvenience function to properly format arguments to pass to the
command decorator.
)Úlist)Úname_or_flagsr    s     r"   ÚargumentrH   N   s   € ô �Ó Ð&Ð&r$   )ÚparentÚcmd_aliasesc               ó    ^ ^^• SU UU4S jjnU$ )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                ó�  >• U R                   R                  SS5      n[        U R                  =(       d    S5      nT	R	                  UT=(       d    / U[
        S9nU[        U'   UR                  5       nUR                  SSSSS	S
9  UR                  SSSSSS
9  T H&  u  pVUR                  " U0 UD6  UR                  U S9  M(     U $ )NÚ_Ú-Ú )ÚaliasesÚdescriptionr@   z-qz--quietÚ	verbosityÚappend_constéÿÿÿÿ)rD   rB   Úconstz-vz	--verboseé   )Úfunc)
r)   Úreplacer   r<   Ú
add_parserr   Úcommand_parsersÚadd_mutually_exclusive_groupÚadd_argumentÚset_defaults)
rW   ÚnameÚdescÚparserÚverbosity_grouprG   r    r   rJ   rI   s
          €€€r"   Ú	decoratorÚcommand.<locals>.decoratord   sÑ   ø€ Ø�}‰}×$Ñ$ S¨#Ó.ˆÜ�d—l‘l×( bÓ)ˆØ×"Ñ" 4°×1BÀÐPTÔfsÐ"ÐtˆØ &Œ˜ÑØ ×=Ñ=Ó?ˆØ×$Ñ$ T¨9¸;È~ÐegÐ$ÑhØ×$Ñ$ T¨;¸[ÐQ_ÐghÐ$ÑiÛ%)Ñ!ˆMØ×Ò Ð9°&Ò9Ø×Ñ TÐÓ*ñ &*ð ˆr$   )rW   r   r5   r   r3   )r   rI   rJ   rb   s   ``` r"   Úcommandrd   U   s   ú€ ÷ñ ð Ðr$   )Ú	separatorc               ó$   • U R                  U5      $ )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)Úpathname_specre   s     r"   Ú
path_splitrj   t   s   € ð ×Ñ˜yÓ)Ð)r$   )Úindexc               ó`   • U SSS2    H"  n[         R                  R                  X5        M$     g)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.
NrT   )ÚsysÚpathÚinsert)Ú	pathnamesrk   Úpathnames      r"   Úadd_to_sys_pathrr      s&   € ð ™d ˜d”OˆÜ�‰�‰˜Ö(ò $r$   c                ó–   • SSK n[        U S5       nUR                  UR                  5       5      sSSS5        $ ! , (       d  f       g= f)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.
r   NÚrb)ÚyamlÚopenÚ	safe_loadÚread)Útricks_file_pathnameru   Úfs      r"   Úload_configr{   Œ   s2   € ó ä	Ð" DÔ	)¨QØ�~‰~˜aŸf™f›hÓ'÷ 
*×	)×	)ús	   ‘:º
AÚ;c               ó^   • U R                  U5      nUR                  U5      nUS/:X  a  / nX44$ )zVParses pattern argument specs and returns a two-tuple of
(patterns, ignore_patterns).
rO   rg   )Úpatterns_specÚignore_patterns_specre   ÚpatternsÚignore_patternss        r"   Úparse_patternsr‚   š   s<   € ð ×"Ñ" 9Ó-€HØ*×0Ñ0°Ó;€OØ˜2˜$ÓØˆØÐ$Ð$r$   Ú	recursivec               óü   • [        U5       H  nU R                  XUS9  M     U R                  5           [        R                  " S5        M  ! [
         a    U R                  5          Of = fU R                  5         g)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ƒ   rV   N)ÚsetÚscheduleÚstartÚtimeÚsleepr
   ÚstopÚjoin)ÚobserverÚevent_handlerrp   rƒ   rq   s        r"   Úobserve_withr�   §   sh   € ô$ ˜	–NˆØ×Ñ˜-¸YÐÓGñ #à‡N�NÔðØÜ�JŠJ�qŒMñ øä ó Ø�‰Žðúà‡M�M…Os   ´A ÁA*Á)A*c               óº   • U HU  nUR                  5        H>  u  pV[        U5      nU" S0 UD6n[        USS5      =(       d    Un	U R                  X‰US9  M@     MW     g)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…   r3   )Úitemsr   Úgetattrr‡   )
r�   r   rq   rƒ   Útrickr^   ÚvalueÚ	trick_clsÚhandlerÚtrick_pathnames
             r"   Úschedule_tricksr™   Ä   s^   € ó ˆØ Ÿ;™;ž=‰KˆDÜ" 4Ó(ˆIÙÑ( %Ñ(ˆGÜ$ WÐ.@À$ÓG×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).)rD   rŸ   r(   r�   z--recursiveÚ
store_trueTz-Recursively monitor paths (defaults to True).)rB   rŸ   r�   z--debug-force-pollingz[debug] Forces polling.)rB   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).)rJ   c                ór  • U R                   (       a	  SSKJn  UnO U R                  (       a	  SSKJn  UnO†[        (       d  U R                  (       d%  [        (       a#  [        R                  " 5       (       a	  SSK
Jn  UnO<U R                  (       a	  SSKJn  UnO"U R                  (       a	  SSKJn  UnOSSKJn  Un[)        [+        U R,                  5      5        / nU R.                   GH3  n	U" U R0                  S9n
[2        R4                  R7                  U	5      (       d=  [9        [:        R<                  [2        R>                  " [:        R<                  5      U	5      e[A        U	5      n U[B           n[F        U;   a  [)        U[F           5        [2        R4                  RI                  U	5      =(       d2    [2        R4                  RK                  [2        RL                  " 5       5      n[O        X¬XðRP                  S9  U
RS                  5         URU                  U
5        GM6       [V        RX                  " S5        M  ! [D         a   nS	[B        < S
U	< S3n[E        U5      UeSnAff = f! [Z         a,    U H#  nUR]                  5         UR_                  5         M%      Of = fU H  nURa                  5         M     g)z;Command to execute tricks from a tricks configuration file.r   ©ÚPollingObserver©ÚKqueueObserver©ÚWindowsApiObserver©ÚInotifyObserver©ÚFSEventsObserver©ÚObserver©r    zNo z key specified in rž   Nr…   rV   )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®   rr   rj   Úpython_pathrš   r    Úosrn   Ú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¿]º]Ì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´2·7±7·?±?Ä2Ç9Â9Ã;Ó3OˆÜ˜¨(¿n¹nÒMØ�‰ÔØ×Ñ˜×"ñ) "ð,ØÜ�JŠJ�qŒMñ øô ó 	)ØÔ+Ñ.Ð.@ÀÁÈqÐQˆEÜ˜5“/ qÐ(ûð	)ûô !ó ÛˆAØ×ÑÔØ�F‰FŽHó ðúó ˆØ	�‰Žò s*   Å(	H9È I& È9
I#ÉIÉI#É&3JÊJÚ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.)rD   rB   r�   zgenerate-tricks-yamlc                óÈ  • SSK n[        U R                  5      n[        U5        [	        5       nU R
                   H-  n[        U5      nUR                  UR                  5       5        M/     UR                  5       nUR                  5         UR                  [        U05      nU[         S3-  nU R                  c5  U R                  (       d  Xv-   n[         R"                  R                  U5        g[$        R&                  R)                  U R                  5      (       d  Xv-   n[+        U R                  SSS9 nUR                  U5        SSS5        g! , (       d  f       g= f)zLCommand to generate Yaml configuration for tricks named on the command line.r   Nz:
Úazutf-8)Úencoding)ru   rj   r¼   rr   r   rÔ   r   ÚwriteÚgenerate_yamlÚgetvalueÚcloseÚdumprÅ   rÃ   Úappend_to_filerÕ   rm   Ústdoutr½   rn   r¾   rv   )	r   ru   Ú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   Ä8EÅ
E!Údirectoriesz%Directories to watch. (default: '.').)rœ   rŸ   r�   z-pz	--patternz
--patternsr€   z9Matches event paths with these patterns (separated by ;).)rD   rŸ   r�   z-iz--ignore-patternz--ignore-patternsr�   rO   z9Ignores event paths with these patterns (separated by ;).z-Dz--ignore-directoriesÚignore_directorieszIgnores events for directories.z-Rz%Monitors the directories recursively.z2Use this as the polling interval/blocking timeout.c                óJ  • SSK Jn  [        U R                  U R                  5      u  p#U" UUU R
                  S9nU R                  (       a	  SSKJn  UnO U R                  (       a	  SSK
Jn  UnO†[        (       d  U R                  (       d%  [        (       a#  [        R                  " 5       (       a	  SSKJn  UnO<U R$                  (       a	  SSKJn	  U	nO"U R*                  (       a	  SSKJn
  U
nOSS	KJn  UnU" U R4                  S
9n[7        XÄU R8                  U R:                  S9  g)z1Command to log file system events to the console.r   )Ú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¿]º]Ìx×ObÒOb×OdÑOdÝPà)‰Ø	×	!×	!Ý>à&‰Ø	×	"×	"Ý@à'‰õ 	0àˆá D§L¡LÑ1€HÜ� D×$4Ñ$4ÀÇÁÓOr$   zDirectories to watch.z-cz	--commandrd   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)rD   rŸ   rB   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           	     óŒ  • SSK Jn  U R                  (       d  SU l        U R                  (       a	  SSKJn  UnOSSKJn  Un[        U R                  U R                  5      u  pVU" U R                  UUU R                  U R                  U R                  S9nU" U R                  S9n[        X‡U R                   U R"                  S9  g)	zDCommand to execute shell commands in response to file system events.r   )ÚShellCommandTrickNr£   r­   )r€   r�   rè   rí   rî   r¯   r…   )rë   rð   rd   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.)rD   rô   rB   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                óÞ  ^^• U R                   (       a	  SSKJn  UnOSSKJn  UnSSKmSSKJn  U R                  (       d  S/U l        U R
                  R                  S5      (       a  [        TU R
                  5      O[        U R
                  5      nTR                  TR                  1m[        TS5      (       a  TR                  TR                   5        SUU4S	 jjnT H  nTR                  Xv5        M     [#        U R$                  U R&                  5      u  p‰U R(                  /n
U
R+                  U R,                  5        U" U
UU	U R.                  UU R0                  U R2                  U R4                  S
9nUR7                  5         U" U R8                  S9n [;        XËU R                  U R<                  S9  URA                  5         g! [>         a     Nf = f! URA                  5         f = f)zLCommand to start a long-running subprocess and restart it on matched events.r   r£   r­   N)ÚAutoRestartTrickrž   ÚSIGÚSIGHUPc                óZ   >• T H  nTR                  UTR                  5        M!     [        e)N)rö   ÚSIG_IGNr
   )Ú_signumÚ_frameÚ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  zsignal._SIGNUMr  Úobjectr5   r6   )!r°   r±   r¤   r»   r®   rö   rë   rý   rç   Ú
startswithr“   r4   ÚSIGTERMr÷   ÚhasattrÚaddrÿ   r‚   r€   r�   rd   Úextendrò   rè   rø   rù   rú   rˆ   r    r�   rƒ   r
   r‹   )r   r¤   rË   r®   rý   r  r  r  r€   r�   rd   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                  ó   • \ rS rSrSrg)ÚLogLevelErrori   r3   N)r)   r9   r:   r;   r=   r3   r$   r"   r  r     s   † Úr$   r  c                óž   • [        U R                  =(       d    / 5      nUS:  a  Sn[        U5      eUS:”  a  Sn[        U5      e/ SQSU-      $ )NrT   z&-q/--quiet may be specified only once.é   z,-v/--verbose may be specified up to 2 times.)ÚERRORÚWARNINGÚINFOÚDEBUGrV   )ÚsumrR   r  )r   rR   rÐ   s      r"   Ú_get_log_level_from_argsr    sR   € Ü�D—N‘N×( bÓ)€IØ�2ƒ~Ø8ˆÜ˜EÓ"Ð"Ø�1ƒ}Ø>ˆÜ˜EÓ"Ð"Ú0°°Y±Ñ?Ð?r$   c                 óÖ  • [         R                  5       n U R                  c  [         R                  5         g [	        U 5      n[        R                  " S5      R                  U5         U R                  U 5        g! [
         aS  n[        SUR                  S    3[        R                  S9  [        U R                     R                  5          SnAgSnAff = f! [         a     gf = f)zEntry-point function.NrV   zError: r   )rå   Úwatchdogé‚   )ÚcliÚ
parse_argsrC   Ú
print_helpr  r  Úprintr   rm   ÚstderrrZ   ÚloggingÚ	getLoggerÚsetLevelrW   ÚKeyboardInterrupt)r   Ú	log_levelÚexcs      r"   Úmainr)    sÂ   € ä�>‰>Ó€DØ×ÑÑÜ�‰ÔØðÜ,¨TÓ2ˆ	ô
 ×Ò�jÓ!×*Ñ*¨9Ô5ðØ�	‰	�$Œð øô ó Ü�˜Ÿ™ ™�}Ð%¬C¯J©JÒ7Ü˜×(Ñ(Ñ)×4Ñ4Ô6Üûðûô ó Ùðús*   ¸A; Á)C Á;
CÂA	CÃCÃ
C(Ã'C(Ú__main__)rG   r7   r    r	   r5   ÚArgument)r   zlist[Argument]rI   z!_SubParsersAction[ArgumentParser]rJ   zlist[str] | Noner5   r   )ri   r7   re   r7   r5   r8   )rp   r8   rk   r4   r5   r6   )ry   r7   r5   Údict)r~   r7   r   r7   re   r7   r5   ztuple[list[str], list[str]])
r�   r   rŽ   r   rp   r8   rƒ   Úboolr5   r6   )
r�   r   r   z
list[dict]rq   r7   rƒ   r-  r5   r6   )r   r   r5   r6   )r   r   r5   r7   )r5   r4   )Fr<   Ú
__future__r   rÀ   r#  r½   Úos.pathrm   r‰   Úargparser   r   Úior   Útextwrapr   Útypingr   r	   Úwatchdog.utilsr
   r   r   Úwatchdog.versionr   r   r   r   Úwatchdog.eventsr   r»   r   Úwatchdog.observers.apir   ÚbasicConfigr  rÃ   rÅ   r   r?   r  r\   Úadd_subparsersÚ
subparsersrZ   ÚtuplerF   r7   r+  rH   rd   Úpathseprj   rr   r{   r‚   r�   r™   ÚfloatrÓ   ræ   rì   rñ   r  Ú	Exceptionr  r  r)  r)   Úexitr3   r$   r"   Ú<module>r@     s¼  ðñõ #ã Û Û 	Û Û 
Û ß @Ý Ý ß %ç FÑ FÝ +æß5Ýå6Ý/Ý3ð × Ò ˜'Ÿ,™,Ò 'àÐ Ø&Ð ô!Ð/ô !ð.
4€ñ ˜F°MÑB€Ø × Ñ � Y¸Ð Ñ GØ×Ñ ]ÐÐ3€
Ø€à��c‘˜C�Ñ €ô'ð 1;Ø$(ñ	Ø
ðð .ðð "ð	ð
 õð> 8:·z±z÷ *ð ;<÷ 
)ô(ð HKñ
%Øð
%Ø.1ð
%ØADð
%à õ
%ðØðà)ðð ðð
 ðð 
ôô: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$   