§
    xÅj!•  ã                   ó   — d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
mZmZmZmZmZmZ ddlmZmZmZmZ ddlmZmZ ddlmZmZmZmZ ddlmZm Z m!Z! dd	l"m#Z# dd
l$m%Z%m&Z&m'Z' e	rddl(m)Z) ddlm*Z* ddl$m+Z+  G d„ d¦  «        Z,dS )é    N)Úimport_module)ÚTYPE_CHECKINGÚAnyÚDictÚListÚOptionalÚSequenceÚTupleÚTypeé   )Ú
CollectionÚConfigÚExecutorÚFilesystemLoader)ÚcompleteÚprint_completion_script)ÚCollectionNotFoundÚExitÚ
ParseErrorÚUnexpectedExit)ÚArgumentÚParserÚParserContext)Úpty_size)ÚdebugÚenable_loggingÚhelpline)ÚLoader)ÚParseResult)ÚLexiconc                   ó$  — e Zd ZU dZded<   ded         fd„Zded         fd„Zee         ed<   d	Z	d
e	z  Z
dZd
ez  ZdZ	 	 	 	 	 	 	 	 dFdee         ded         dee         dee         deed                  deed                  deed                  deee                  ddfd„ZdGd„ZdHdeddfd„ZdIdeee                  deddfd „Zdeee                  ddfd!„ZdGd"„ZdGd#„ZdGd$„ZdGd%„Zdeee                  ddfd&„Zedefd'„¦   «         Zedefd(„¦   «         Zedefd)„¦   «         Zedee         fd*„¦   «         ZedJd,„¦   «         Z ede!fd-„¦   «         Z"dGd.„Z#dGd/„Z$dGd0„Z%dGd1„Z&d2e!d3e'ee(f         ddfd4„Z)de*fd5„Z+dGd6„Z,deddfd7„Z-dGd8„Z.dGd9„Z/dGd:„Z0	 dKd;dd<eee                  dee1eee         f                  fd=„Z2dGd>„Z3dLd@edefdA„Z4	 dLdBe5e1eee         f                  d@eddfdC„Z6dDe5e1eee         f                  ddfdE„Z7dS )MÚProgramau  
    Manages top-level CLI invocation, typically via ``setup.py`` entrypoints.

    Designed for distributing Invoke task collections as standalone programs,
    but also used internally to implement the ``invoke`` program itself.

    .. seealso::
        :ref:`reusing-as-a-binary` for a tutorial/walkthrough of this
        functionality.

    .. versionadded:: 1.0
    r   ÚcoreÚreturnr   c                 óÒ  — t          dt          d¬¦  «        t          dt          dd¬¦  «        t          dd	¬
¦  «        t          dt          dd¬¦  «        t          dt          dd¬¦  «        t          dt          dd¬¦  «        t          ddd¬¦  «        t          dd¬
¦  «        t          ddd¬¦  «        t          dt          dd¬¦  «        t          ddd¬¦  «        t          d t          d!d"¬¦  «        t          d#t          dd$¬¦  «        t          d%t          dd&¬¦  «        t          d't          dd(¬¦  «        t          d)t          dd*¬¦  «        t          d+t          dd,¬¦  «        gS )-zd
        Return default core `.Argument` objects, as a list.

        .. versionadded:: 1.0
        )úcommand-timeoutÚTz7Specify a global command execution timeout, in seconds.)ÚnamesÚkindÚhelp)r   Fz:Print tab-completion candidates for given parse remainder.©r(   r)   Údefaultr*   )ÚconfigÚfz"Runtime configuration file to use.©r(   r*   )r   ÚdzEnable debug output.)ÚdryÚRz!Echo commands instead of running.)ÚechoÚez&Echo executed commands before running.)r*   ÚhTz$Show core or per-task help and exit.)r(   Úoptionalr*   )Úhidez*Set default value of run()'s 'hide' kwarg.)ÚlistÚlz8List available tasks, optionally limited to a namespace.)ú
list-depthÚDr   z3When listing tasks, only show the first INT levels.)úlist-formatÚFzbChange the display format used when listing tasks. Should be one of: flat (default), nested, json.Úflat)r(   r*   r,   )úprint-completion-scriptÚ zIPrint the tab-completion script for your preferred shell (bash|zsh|fish).)úprompt-for-sudo-passwordzCPrompt user at start of session for the sudo.password config value.)ÚptyÚpz(Use a pty when executing shell commands.)ÚversionÚVzShow version and exit.)ú	warn-onlyÚwz3Warn, instead of failing, when shell commands fail.)ú	write-pyczEnable creation of .pyc files.)r   ÚintÚboolÚstr©Úselfs    ú?C:\Projects\Historical\venv\Lib\site-packages\invoke/program.pyÚ	core_argszProgram.core_args0   s  € õ Ø.ÝØNðñ ô õ
 Ø#ÝØØQð	ñ ô õ Ø%Ø9ðñ ô õ Ø$ÝØØ+ð	ñ ô õ Ø"ÝØØ8ð	ñ ô õ Ø#ÝØØ=ð	ñ ô õ Ø#ØØ;ðñ ô õ
 ØØAðñ ô õ Ø#ØØOðñ ô õ
 Ø)ÝØØJð	ñ ô õ Ø*ØyØðñ ô õ
 Ø2ÝØØ`ð	ñ ô õ Ø3ÝØØZð	ñ ô õ Ø"ÝØØ?ð	ñ ô õ Ø&ÝØØ-ð	ñ ô õ Ø(ÝØØJð	ñ ô õ Ø$ÝØØ5ð	ñ ô ðs_
ð _	
ó    c                 ót   — t          dd¬¦  «        t          dt          dd¬¦  «        t          dd	¬¦  «        gS )
aU  
        Return default task-related `.Argument` objects, as a list.

        These are only added to the core args in "task runner" mode (the
        default for ``invoke`` itself) - they are omitted when the constructor
        is given a non-empty ``namespace`` argument ("bundled namespace" mode).

        .. versionadded:: 1.0
        )Ú
collectionÚcz Specify collection name to load.r/   )ú	no-dedupeFzDisable task deduplication.r+   )úsearch-rootÚrz4Change root directory used for finding task modules.)r   rJ   rL   s    rN   Ú	task_argszProgram.task_args˜   s`   € õ Ø)Ø7ðñ ô õ Ø$ÝØØ2ð	ñ ô õ Ø*ØKðñ ô ð
ð 	
rP   Úargvé   ú é   é   NrD   Ú	namespacer   ÚnameÚbinaryÚloader_classr   Úexecutor_classr   Úconfig_classr   Úbinary_namesc	                 ó¶   — |€dn|| _         || _        || _        || _        || _        g | _        |pt          | _        |pt          | _	        |pt          | _        dS )a^  
        Create a new, parameterized `.Program` instance.

        :param str version:
            The program's version, e.g. ``"0.1.0"``. Defaults to ``"unknown"``.

        :param namespace:
            A `.Collection` to use as this program's subcommands.

            If ``None`` (the default), the program will behave like ``invoke``,
            seeking a nearby task namespace with a `.Loader` and exposing
            arguments such as :option:`--list` and :option:`--collection` for
            inspecting or selecting specific namespaces.

            If given a `.Collection` object, will use it as if it had been
            handed to :option:`--collection`. Will also update the parser to
            remove references to tasks and task-related options, and display
            the subcommands in ``--help`` output. The result will be a program
            that has a static set of subcommands.

        :param str name:
            The program's name, as displayed in ``--version`` output.

            If ``None`` (default), is a capitalized version of the first word
            in the ``argv`` handed to `.run`. For example, when invoked from a
            binstub installed as ``foobar``, it will default to ``Foobar``.

        :param str binary:
            Descriptive lowercase binary name string used in help text.

            For example, Invoke's own internal value for this is ``inv[oke]``,
            denoting that it is installed as both ``inv`` and ``invoke``. As
            this is purely text intended for help display, it may be in any
            format you wish, though it should match whatever you've put into
            your ``setup.py``'s ``console_scripts`` entry.

            If ``None`` (default), uses the first word in ``argv`` verbatim (as
            with ``name`` above, except not capitalized).

        :param binary_names:
            List of binary name strings, for use in completion scripts.

            This list ensures that the shell completion scripts generated by
            :option:`--print-completion-script` instruct the shell to use
            that completion for all of this program's installed names.

            For example, Invoke's internal default for this is ``["inv",
            "invoke"]``.

            If ``None`` (the default), the first word in ``argv`` (in the
            invocation of :option:`--print-completion-script`) is used in a
            single-item list.

        :param loader_class:
            The `.Loader` subclass to use when loading task collections.

            Defaults to `.FilesystemLoader`.

        :param executor_class:
            The `.Executor` subclass to use when executing tasks.

            Defaults to `.Executor`; may also be overridden at runtime by the
            :ref:`configuration system <default-values>` and its
            ``tasks.executor_class`` setting (anytime that setting is not
            ``None``).

        :param config_class:
            The `.Config` subclass to use for the base config object.

            Defaults to `.Config`.

        .. versionchanged:: 1.2
            Added the ``binary_names`` argument.
        NÚunknown)rD   r]   Ú_nameÚ_binaryÚ_binary_namesrX   r   r`   r   ra   r   rb   )	rM   rD   r]   r^   r_   r`   ra   rb   rc   s	            rN   Ú__init__zProgram.__init__¾   sh   € ðj %, O�y�y¸ˆŒØ"ˆŒØˆŒ
ð ˆŒØ)ˆÔØˆŒ	Ø(Ð<Õ,<ˆÔØ,Ð8µˆÔØ(Ð2­FˆÔÐÐrP   c                 ó8   — |                       ¦   «         | _        dS )a«  
        Instantiate a `.Config` (or subclass, depending) for use in task exec.

        This Config is fully usable but will lack runtime-derived data like
        project & runtime config files, CLI arg overrides, etc. That data is
        added later in `update_config`. See `.Config` docstring for lifecycle
        details.

        :returns: ``None``; sets ``self.config`` instead.

        .. versionadded:: 1.0
        N)rb   r-   rL   s    rN   Úcreate_configzProgram.create_config  s   € ð ×'Ò'Ñ)Ô)ˆŒˆˆrP   TÚmergec                 óB  — i }| j         d         j        rd|d<   | j         j        j        rd|d<   | j         j        j        r| j         j        j        |d<   | j         j        j        rd|d<   | j         j        j        rd|d<   i }d| j         v r| j         d         j        rd	|d
<   i }| j         d         j        }|r||d<   i }| j         d         j        rd}t          j        |¦  «        |d<   t          ||||¬¦  «        }| j         	                    |d	¬¦  «         | j         j        j        }	|	€ t          j                             dd¦  «        }	| j                             |	¦  «         | j                             d	¬¦  «         |r| j                             ¦   «          dS dS )as  
        Update the previously instantiated `.Config` with parsed data.

        For example, this is how ``--echo`` is able to override the default
        config value for ``run.echo``.

        :param bool merge:
            Whether to merge at the end, or defer. Primarily useful for
            subclassers. Default: ``True``.

        .. versionadded:: 1.0
        rF   TÚwarnrB   r7   r3   r1   rT   FÚdeduper&   ÚcommandrA   z&Desired 'sudo.password' config value: Úpassword)ÚrunÚtasksÚsudoÚtimeouts)rl   NÚINVOKE_RUNTIME_CONFIG)ÚargsÚvaluerB   r7   r3   r1   ÚgetpassÚdictr-   Úload_overridesÚosÚenvironÚgetÚset_runtime_pathÚload_runtimerl   )
rM   rl   rr   rs   ru   rp   rt   ÚpromptÚ	overridesÚruntime_paths
             rN   Úupdate_configzProgram.update_config.  sÄ  € ð& ˆØŒ9�[Ô!Ô'ð 	ØˆC�‰KØŒ9Œ=Ôð 	ØˆC�‰JØŒ9Œ>Ôð 	/Øœ)œ.Ô.ˆC�‰KØŒ9Œ>Ôð 	ØˆC�‰KØŒ9Œ=Ôð 	ØˆC�‰JØˆØ˜$œ)Ð#Ð#¨¬	°+Ô(>Ô(DÐ#Ø#ˆE�(‰OØˆØ”)Ð-Ô.Ô4ˆØð 	*Ø")ˆH�YÑð ˆØŒ9Ð/Ô0Ô6ð 	7Ø=ˆFÝ&œ¨vÑ6Ô6ˆD�ÑÝ˜S¨°DÀ8ÐLÑLÔLˆ	ØŒ×"Ò" 9°EÐ"Ñ:Ô:Ð:Ø”yÔ'Ô-ˆØÐÝœ:Ÿ>š>Ð*AÀ4ÑHÔHˆLØŒ×$Ò$ \Ñ2Ô2Ð2ØŒ× Ò  uÐ Ñ-Ô-Ð-Øð 	 ØŒK×ÒÑÔÐÐÐð	 ð 	 rP   Úexitc                 óH  — 	 |                       ¦   «          |                      |¦  «         |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          dS # t          t          t          f$ �rX}t          d                     |¦  «        ¦  «         t          |t          ¦  «        rt          |t          j        ¬¦  «         t          |t          ¦  «        r'|j        r t          |j        t          j        ¬¦  «         t          |t          ¦  «        r(|j        j        rt          |t          j        d¬¦  «         |rkt          |t          ¦  «        r|j        j        }n4t          |t          ¦  «        r|j        }nt          |t          ¦  «        rd}t          j        |¦  «         nt          d¦  «         Y d}~dS Y d}~dS d}~wt,          $ r t          j        d¦  «         Y dS w xY w)aÀ  
        Execute main CLI logic, based on ``argv``.

        :param argv:
            The arguments to execute against. May be ``None``, a list of
            strings, or a string. See `.normalize_argv` for details.

        :param bool exit:
            When ``False`` (default: ``True``), will ignore `.ParseError`,
            `.Exit` and `.Failure` exceptions, which otherwise trigger calls to
            `sys.exit`.

            .. note::
                This is mostly a concession to testing. If you're setting this
                to ``False`` in a production setting, you should probably be
                using `.Executor` and friends directly instead!

        .. versionadded:: 1.0
        z-Received a possibly-skippable exception: {!r})Úfiler@   )r‡   Úendr   z3Invoked as run(..., exit=False), ignoring exceptionN)rk   Ú
parse_coreÚparse_collectionÚparse_tasksÚparse_cleanupr„   Úexecuter   r   r   r   ÚformatÚ
isinstanceÚprintÚsysÚstderrÚmessageÚresultr7   ÚexitedÚcoder…   ÚKeyboardInterrupt)rM   rX   r…   r4   r–   s        rN   rr   zProgram.runc  s  € ð(/	ð ×ÒÑ Ô Ð ð �OŠO˜DÑ!Ô!Ð!à×!Ò!Ñ#Ô#Ð#à×ÒÑÔÐà×ÒÑ Ô Ð ð ×ÒÑ Ô Ð ð �LŠL‰NŒNˆNˆNˆNøÝ¥¥jÐ1ð 	Mñ 	Mð 	MÝÐA×HÒHÈÑKÔKÑLÔLÐLõ ˜!�ZÑ(Ô(ð *Ý�a�cœjÐ)Ñ)Ô)Ð)Ý˜!�TÑ"Ô"ð 2 q¤yð 2Ý�a”i¥c¤jÐ1Ñ1Ô1Ð1Ý˜!�^Ñ,Ô,ð 2°´´ð 2Ý�a�cœj¨bÐ1Ñ1Ô1Ð1àð 	MÝ˜a¥Ñ0Ô0ð Øœ8œ?�D�DÝ ¥4Ñ(Ô(ð Øœ6�D�DÝ ¥:Ñ.Ô.ð Ø�DÝ”˜‘”��åÐKÑLÔLÐLÐLÐLÐLÐLÐLÐLð �����øøøøõ !ð 	ð 	ð 	ÝŒH�Q‰KŒKˆKˆKˆKˆKð	øøøs   ‚BB ÂH!Â)EG<Ç<!H!È H!c                 ó&  — t          d                     |¦  «        ¦  «         |                      |¦  «         |                      ¦   «          t          d¦  «         | j        d         j         t          _        | j        j         j        rt          ¦   «          | j        j	        j        r*t          d¦  «         |  
                    ¦   «          t          ‚| j        d         j        r-t          | j        d         j        | j        ¬¦  «         t          ‚d S )Nzargv given to Program.run: {!r}zFinished parsing core argsrH   z)Saw --version, printing version & exitingr?   )Úshellr(   )r   rŽ   Únormalize_argvÚparse_core_argsrw   rx   r‘   Údont_write_bytecoder   rD   Úprint_versionr   r   rc   ©rM   rX   s     rN   r‰   zProgram.parse_core¨  s  € ÝÐ/×6Ò6°tÑ<Ô<Ñ=Ô=Ð=Ø×Ò˜DÑ!Ô!Ð!ð 	×ÒÑÔÐÝÐ*Ñ+Ô+Ð+ð '+¤i°Ô&<Ô&BÐ"B�Ôð Œ9Œ?Ô ð 	ÝÑÔÐð Œ9ÔÔ"ð 	ÝÐ=Ñ>Ô>Ð>Ø×ÒÑ Ô Ð ÝˆJð Œ9Ð.Ô/Ô5ð 	Ý#Ø”iÐ 9Ô:Ô@ØÔ'ðñ ô ð õ ˆJð	ð 	rP   c                 óN  — | j         �t          d¦  «         | j         | _        n`t          d¦  «         | j        j        j        du r*t          d¦  «         |                      ¦   «          t          ‚|                      ¦   «          d| _	        d| _
        d| _        | j        | _        dS )z`
        Load a tasks collection & project-level config.

        .. versionadded:: 1.0
        Nz;Program was given default namespace, not loading collectionz;No default namespace provided, trying to load one from diskTz8No bundled namespace & bare --help given; printing help.r>   )r]   r   rR   rw   r*   rx   Ú
print_helpr   Úload_collectionÚ	list_rootÚ
list_depthÚlist_formatÚscoped_collectionrL   s    rN   rŠ   zProgram.parse_collectionÆ  s½   € ð Œ>Ð%ÝØMñô ð ð #œnˆDŒOˆOåØMñô ð ð ŒyŒ~Ô# tÐ+Ð+ÝØNñô ð ð —’Ñ!Ô!Ð!Ý�
Ø× Ò Ñ"Ô"Ð"ð )-ˆŒØ)-ˆŒØ!ˆÔØ!%¤ˆÔÐÐrP   c                 óÈ  — | j         j        j        }|du r*t          d¦  «         |                      ¦   «          t
          ‚|r]|| j        j        v r-d}t          |¦  «         |                      |¦  «         t
          ‚t          d 
                    |¦  «        ¦  «        ‚| j         j        j        }| j         d         j        | _        | j         d         j        | _        |rŒt          |t          ¦  «        r\|| _        	 | j                             |¦  «        }|| _        n2# t(          $ r% d}t          | 
                    |¦  «        ¦  «        ‚w xY w|                      ¦   «          t
          ‚| j         j        j        r:t-          | j        | j        | j        | j        |                      ¦   «         ¬¦  «         | j        s"| j        j        s|                      ¦   «          d	S d	S d	S )
zo
        Post-parsing, pre-execution steps such as --help, --list, etc.

        .. versionadded:: 1.0
        Tz(Saw bare --help, printing help & exitingz7Saw --help <taskname>, printing per-task help & exitingzNo idea what '{}' is!r<   r:   zSub-collection '{}' not found!)r(   r#   Úinitial_contextrR   ÚparserN)rw   r*   rx   r   r    r   r¨   ÚcontextsÚprint_task_helpr   rŽ   r8   r¤   r£   r�   rK   r¢   rR   Úsubcollection_from_pathr¥   ÚKeyErrorÚ
list_tasksr   rc   r#   r§   Ú_make_parserrs   r,   Úno_tasks_given)rM   ÚhalpÚmsgr¢   Úsubs        rN   rŒ   zProgram.parse_cleanupê  sþ  € ð ŒyŒ~Ô#ˆð �4ˆ<ˆ<ÝÐ<Ñ=Ô=Ð=Ø�OŠOÑÔÐÝˆJð ð 		GØ�t”{Ô+Ð+Ð+ØO�Ý�c‘
”
�
Ø×$Ò$ TÑ*Ô*Ð*Ý�
õ !Ð!8×!?Ò!?ÀÑ!EÔ!EÑFÔFÐFð ”I”NÔ(ˆ	Øœ9 ]Ô3Ô9ˆÔØœ) LÔ1Ô7ˆŒØð 	å˜)¥SÑ)Ô)ð 6Ø!*�”ð6Øœ/×AÒAÀ)ÑLÔL�CØ-0�DÔ*Ð*øÝð 6ð 6ð 6Ø:�CÝ˜sŸzšz¨)Ñ4Ô4Ñ5Ô5Ð5ð6øøøð �OŠOÑÔÐÝˆJð Œ9ÔÔ#ð 		ÝØÔ'Ø”YØ $Ô 4Øœ?ð ×(Ò(Ñ*Ô*ðñ ô ð ð Œzð 	" $¤/Ô"9ð 	"Ø×ÒÑ!Ô!Ð!Ð!Ð!ð	"ð 	"ð 	"ð 	"s   Ã=!D Ä/Ec                 óV   — t          d¦  «         |                      ¦   «          t          ‚)NzVNo tasks specified for execution and no default task; printing global help as fallback)r   r    r   rL   s    rN   r¯   zProgram.no_tasks_given(  s.   € ÝØdñ	
ô 	
ð 	
ð 	�ŠÑÔÐÝˆ
rP   c                 ó   — | j         }| j        j        j         }|�8|                     d¦  «        \  }}}t	          |¦  «        }t          ||¦  «        } || j        | j        | j        ¦  «        } |j        | j        Ž  dS )aÆ  
        Hand off data & tasks-to-execute specification to an `.Executor`.

        .. note::
            Client code just wanting a different `.Executor` subclass can just
            set ``executor_class`` in `.__init__`, or override
            ``tasks.executor_class`` anywhere in the :ref:`config system
            <default-values>` (which may allow you to avoid using a custom
            Program entirely).

        .. versionadded:: 1.0
        Nú.)	ra   r-   rs   Ú
rpartitionr   ÚgetattrrR   r#   r�   )rM   ÚklassÚconfig_pathÚmodule_pathÚ_Ú
class_nameÚmoduleÚexecutors           rN   r�   zProgram.execute/  sˆ   € ð Ô#ˆØ”kÔ'Ô6ˆØÐ"à)4×)?Ò)?ÀÑ)DÔ)DÑ&ˆK˜˜Jõ # ;Ñ/Ô/ˆFÝ˜F JÑ/Ô/ˆEØ�5˜œ¨$¬+°t´yÑAÔAˆØˆÔ˜$œ*Ð%Ð%Ð%Ð%rP   c                 ó  — |€/t           j        }t          d                     |¦  «        ¦  «         nKt	          |t
          ¦  «        r6|                     ¦   «         }t          d                     |¦  «        ¦  «         || _        dS )a¡  
        Massages ``argv`` into a useful list of strings.

        **If None** (the default), uses `sys.argv`.

        **If a non-string iterable**, uses that in place of `sys.argv`.

        **If a string**, performs a `str.split` and then executes with the
        result. (This is mostly a convenience; when in doubt, use a list.)

        Sets ``self.argv`` to the result.

        .. versionadded:: 1.0
        Nz#argv was None; using sys.argv: {!r}z%argv was string-like; splitting: {!r})r‘   rX   r   rŽ   r�   rK   Úsplitrž   s     rN   rš   zProgram.normalize_argvI  sx   € ð ˆ<Ý”8ˆDÝÐ7×>Ò>¸tÑDÔDÑEÔEÐEÐEÝ˜�cÑ"Ô"ð 	HØ—:’:‘<”<ˆDÝÐ9×@Ò@ÀÑFÔFÑGÔGÐGØˆŒ	ˆ	ˆ	rP   c                 óB   — | j         p| j                             ¦   «         S )zi
        Derive program's human-readable name based on `.binary`.

        .. versionadded:: 1.0
        )rf   r_   Ú
capitalizerL   s    rN   r^   zProgram.name`  s   € ð ŒzÐ5˜Tœ[×3Ò3Ñ5Ô5Ð5rP   c                 óh   — | j         r*t          j                             | j         d         ¦  «        ndS )zò
        Returns the program name we were actually called as.

        Specifically, this is the (Python's os module's concept of a) basename
        of the first argument in the parsed argument vector.

        .. versionadded:: 1.2
        r   r@   )rX   r|   ÚpathÚbasenamerL   s    rN   Ú	called_aszProgram.called_asi  s,   € ð 26´ÐB�rŒw×Ò ¤	¨!¤Ñ-Ô-Ð-ÀÐBrP   c                 ó   — | j         p| j        S )zu
        Derive program's help-oriented binary name(s) from init args & argv.

        .. versionadded:: 1.0
        )rg   rÆ   rL   s    rN   r_   zProgram.binaryv  s   € ð Œ|Ð-˜tœ~Ð-rP   c                 ó    — | j         p| j        gS )zv
        Derive program's completion-oriented binary name(s) from args & argv.

        .. versionadded:: 1.2
        )rh   rÆ   rL   s    rN   rc   zProgram.binary_names  s   € ð Ô!Ð5 d¤nÐ%5Ð5rP   r    c                 ó&   — | j         d         j        S )zj
        Obtain core program args from ``self.core`` parse result.

        .. versionadded:: 1.0
        r   )r#   rw   rL   s    rN   rw   zProgram.args‰  s   € ð Œy˜Œ|Ô Ð rP   c                 ó†   — |                       ¦   «         }| j        €||                      ¦   «         z  }t          |¬¦  «        S )zñ
        The initial parser context, aka core program flags.

        The specific arguments contained therein will differ depending on
        whether a bundled namespace was specified in `.__init__`.

        .. versionadded:: 1.0
        N)rw   )rO   r]   rW   r   )rM   rw   s     rN   r§   zProgram.initial_context’  s@   € ð �~Š~ÑÔˆØŒ>Ð!Ø�D—N’NÑ$Ô$Ñ$ˆDÝ $Ð'Ñ'Ô'Ð'rP   c                 ód   — t          d                     | j        | j        pd¦  «        ¦  «         d S )Nú{} {}re   )r�   rŽ   r^   rD   rL   s    rN   r�   zProgram.print_version¡  s-   € Ýˆg�nŠn˜TœY¨¬Ð(A¸	ÑBÔBÑCÔCÐCÐCÐCrP   c                 óX  — d}| j         �d}t          d                     | j        |¦  «        ¦  «         t          d¦  «         t          d¦  «         t          d¦  «         |                      | j                             ¦   «         ¦  «         | j         �|                      ¦   «          d S d S )Nz-task1 [--task1-opts] ... taskN [--taskN-opts]z$<subcommand> [--subcommand-opts] ...zUsage: {} [--core-opts] {}r@   zCore options:)r]   r�   rŽ   r_   Úprint_columnsr§   Úhelp_tuplesr­   )rM   Úusage_suffixs     rN   r    zProgram.print_help¤  s¢   € ØFˆØŒ>Ð%ØAˆLÝÐ*×1Ò1°$´+¸|ÑLÔLÑMÔMÐMÝˆb‰	Œ	ˆ	ÝˆoÑÔÐÝˆb‰	Œ	ˆ	Ø×Ò˜4Ô/×;Ò;Ñ=Ô=Ñ>Ô>Ð>ØŒ>Ð%Ø�OŠOÑÔÐÐÐð &Ð%rP   c                 ó  — t          d¦  «         t          | j        d¬¦  «        }|                     | j        dd…         ¦  «        | _        d}t          |                     | j        | j        j        ¦  «        ¦  «         dS )z³
        Filter out core args, leaving any tasks or their args for later.

        Sets ``self.core`` to the `.ParseResult` from this step.

        .. versionadded:: 1.0
        z#Parsing initial context (core args)T)ÚinitialÚignore_unknownr   Nz-Core-args parse result: {!r} & unparsed: {!r})r   r   r§   Ú
parse_argvrX   r#   rŽ   Úunparsed)rM   r¨   r±   s      rN   r›   zProgram.parse_core_args°  su   € õ 	Ð3Ñ4Ô4Ð4Ý Ô 4ÀTÐJÑJÔJˆØ×%Ò% d¤i°°°¤mÑ4Ô4ˆŒ	Ø=ˆÝˆc�jŠj˜œ D¤IÔ$6Ñ7Ô7Ñ8Ô8Ð8Ð8Ð8rP   c                 óä  — | j         d         j        }|                      | j        |¬¦  «        }| j         j        j        }	 |                     |¦  «        \  }}| j                             |¦  «         | j                             ¦   «          t          j	        ||| j        j
        j        ¬¦  «        | _        dS # t          $ r,}t          d                     |j        ¦  «        ¦  «        ‚d}~ww xY w)zq
        Load a task collection based on parsed core args, or die trying.

        .. versionadded:: 1.0
        rU   )r-   Ústart)Úloaded_fromÚauto_dash_namesz%Can't find any collection named {!r}!N)rw   rx   r`   r-   rR   ÚloadÚset_project_locationÚload_projectr   Úfrom_modulers   rÙ   r   r   rŽ   r^   )rM   r×   ÚloaderÚ	coll_namer½   Úparentr4   s          rN   r¡   zProgram.load_collection¾  sü   € ð ”	˜-Ô(Ô.ˆØ×"Ò"Ø”; eð #ñ 
ô 
ˆð ”IÔ(Ô.ˆ	ð	OØ#Ÿ[š[¨Ñ3Ô3‰NˆF�Fð
 ŒK×,Ò,¨VÑ4Ô4Ð4ØŒK×$Ò$Ñ&Ô&Ð&Ý(Ô4ØØ"Ø $¤Ô 1Ô Aðñ ô ˆDŒOˆOˆOøõ
 "ð 	Oð 	Oð 	OÝÐ>×EÒEÀaÄfÑMÔMÑNÔNÐNøøøøð	Oøøøs   ÁA6B9 Â9
C/Ã'C*Ã*C/ÚcontextÚnew_argsc                 óv   — |                      ¦   «         D ]#\  }}|j        r|j        |j        |         _        Œ$d S ©N)ÚitemsÚ	got_valueÚ_valuerw   )rM   rá   râ   ÚkeyÚargs        rN   Ú_update_core_contextzProgram._update_core_contextÛ  sG   € ð !ŸšÑ(Ô(ð 	6ð 	6‰HˆC�ØŒ}ð 6Ø+.¬:�”˜SÔ!Ô(øð	6ð 	6rP   c                 ó~   — t          | j        | j                             | j        j        j        ¬¦  «        ¬¦  «        S )N)Úignore_unknown_help)rÒ   r©   )r   r§   rR   Úto_contextsr-   rs   rì   rL   s    rN   r®   zProgram._make_parseræ  sD   € ÝØÔ(Ø”_×0Ò0Ø$(¤KÔ$5Ô$Ið 1ñ ô ð
ñ 
ô 
ð 	
rP   c                 ó¶  — |                       ¦   «         | _        t          d                     | j        ¦  «        ¦  «         | j                             | j        j        ¦  «        }|                     d¦  «        | _	        |  
                    | j        d         | j	        j        ¬¦  «         || _        t          d                     | j        ¦  «        ¦  «         dS )aý  
        Parse leftover args, which are typically tasks & per-task args.

        Sets ``self.parser`` to the parser used, ``self.tasks`` to the
        parsed per-task contexts, and ``self.core_via_tasks`` to a context
        holding any core flags seen within the task contexts.

        Also modifies ``self.core`` to include the data from ``core_via_tasks``
        (so that it correctly reflects any supplied core flags regardless of
        where they appeared).

        .. versionadded:: 1.0
        zParsing tasks against {!r}r   )rá   râ   zResulting task contexts: {!r}N)r®   r¨   r   rŽ   rR   rÔ   r#   rÕ   ÚpopÚcore_via_tasksrê   rw   rs   )rM   r”   s     rN   r‹   zProgram.parse_tasksî  s¾   € ð ×'Ò'Ñ)Ô)ˆŒÝÐ*×1Ò1°$´/ÑBÔBÑCÔCÐCØ”×'Ò'¨¬	Ô(:Ñ;Ô;ˆØ$Ÿjšj¨™mœmˆÔØ×!Ò!Ø”I˜a”L¨4Ô+>Ô+Cð 	"ñ 	
ô 	
ð 	
ð ˆŒ
ÝÐ-×4Ò4°T´ZÑ@Ô@ÑAÔAÐAÐAÐArP   c                 óÞ  — | j         j        |         }|                     ¦   «         }t          j        | j        |         ¦  «        }d}|rdnd}t          |                     | j        ||¦  «        ¦  «         t          d¦  «         t          d¦  «         |rb| 	                    ¦   «         D ]=}| 
                    ¦   «         rt          | j        |z   ¦  «         Œ.t          d¦  «         Œ>t          d¦  «         n&t          | j        dz   ¦  «         t          d¦  «         t          d¦  «         |r|                      |¦  «         dS t          | j        dz   ¦  «         t          d¦  «         dS )zp
        Print help for a specific task, e.g. ``inv --help <taskname>``.

        .. versionadded:: 1.0
        z3Usage: {} [--core-opts] {} {}[other tasks here ...]z[--options] r@   z
Docstring:ÚnonezOptions:N)r¨   r©   rÏ   ÚinspectÚgetdocrR   r�   rŽ   r_   Ú
splitlinesÚstripÚleading_indentrÎ   )rM   r^   ÚctxÚtuplesÚ	docstringÚheaderÚoptsÚlines           rN   rª   zProgram.print_task_help  s`  € ð ŒkÔ" 4Ô(ˆØ—’Ñ"Ô"ˆÝ”N 4¤?°4Ô#8Ñ9Ô9ˆ	ØFˆØ!'Ð/ˆ~ˆ~¨RˆÝˆf�mŠm˜DœK¨¨tÑ4Ô4Ñ5Ô5Ð5Ýˆb‰	Œ	ˆ	ÝˆlÑÔÐØð 
	à!×,Ò,Ñ.Ô.ð ð �Ø—:’:‘<”<ð Ý˜$Ô-°Ñ4Ñ5Ô5Ð5Ð5å˜"‘I”I�I�IÝ�"‰IŒIˆIˆIå�$Ô%¨Ñ.Ñ/Ô/Ð/Ý�"‰IŒIˆIÝˆjÑÔÐØð 	Ø×Ò˜vÑ&Ô&Ð&Ð&Ð&å�$Ô%¨Ñ.Ñ/Ô/Ð/Ý�"‰IŒIˆIˆIˆIrP   c                 óÊ   — | j         }|s)d}t          |                     |j        ¦  «        ¦  «        ‚ t	          | d                     | j        ¦  «        ¦  «        ¦   «          d S )Nz"No tasks found in collection '{}'!zlist_{})r¥   r   rŽ   r^   r·   r¤   )rM   Úfocusr±   s      rN   r­   zProgram.list_tasks'  sd   € àÔ&ˆØð 	/Ø6ˆCÝ�s—z’z %¤*Ñ-Ô-Ñ.Ô.Ð.ð 	:���i×&Ò& tÔ'7Ñ8Ô8Ñ9Ô9Ñ;Ô;Ð;Ð;Ð;rP   c                 óf   — |                       | j        ¦  «        }|                      |¬¦  «         d S )N)Úpairs©Ú_make_pairsr¥   Údisplay_with_columns)rM   r  s     rN   Ú	list_flatzProgram.list_flat1  s5   € Ø× Ò  Ô!7Ñ8Ô8ˆØ×!Ò!¨Ð!Ñ.Ô.Ð.Ð.Ð.rP   c                 ól   — |                       | j        ¦  «        }d}|                      ||¬¦  «         d S )Nz'*' denotes collection defaults)r  Úextrar  )rM   r  r  s      rN   Úlist_nestedzProgram.list_nested5  s<   € Ø× Ò  Ô!7Ñ8Ô8ˆØ1ˆØ×!Ò!¨°UÐ!Ñ;Ô;Ð;Ð;Ð;rP   ÚcollÚ	ancestorsc           	      ó–  ‡‡— |€g }g }t          |¦  «        | j        z  }d                     d„ |D ¦   «         ¦  «        }t          |j                             ¦   «         ¦  «        D �] \  }}||j        k    }|}	t          t          |j	        t          |j
        ¦  «        ¦  «        ¦  «        }
|s| j        r!d                     |	¦  «        }	d„ |
D ¦   «         }
| j        dk    r	|Š|r|	dz  }	| j        dk    r8|Š‰r| j        rd‰z   Šˆfd„|
D ¦   «         }
|r|r|
                     d	‰¦  «         |
r(d
                     d                     |
¦  «        ¦  «        nd}‰|	z   |z   }|                     |t!          |¦  «        f¦  «         �Œ"| j        ot          |¦  «        dz   | j        k    }t          |j                             ¦   «         ¦  «        D ]ù\  }Š|}	|s| j        rd                     |	¦  «        }	|r9ˆfd„dD ¦   «         }|	d                     d                     |¦  «        ¦  «        z  }	| j        dk    r(|                     ||	z   t!          ‰¦  «        f¦  «         n4| j        dk    r)|r'|                     ||	z   t!          ‰¦  «        f¦  «         |s0|                      ‰||gz   ¬¦  «        }|                     |¦  «         Œú|S )Nrµ   c              3   ó   K  — | ]}|V — Œd S rä   © ©Ú.0Úxs     rN   ú	<genexpr>z&Program._make_pairs.<locals>.<genexpr>C  s"   è è € Ð 6Ð 6 q Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6rP   ú.{}c                 ó8   — g | ]}d                       |¦  «        ‘ŒS )r  )rŽ   r  s     rN   ú
<listcomp>z'Program._make_pairs.<locals>.<listcomp>O  s"   € Ð<Ð<Ð<¨q˜5Ÿ<š<¨™?œ?Ð<Ð<Ð<rP   ÚnestedÚ*r>   c                 ó   •— g | ]}‰|z   ‘ŒS r  r  )r  ÚaliasÚprefixs     €rN   r  z'Program._make_pairs.<locals>.<listcomp>^  s   ø€ Ð?Ð?Ð?¨e˜6 E™>Ð?Ð?Ð?rP   r   z ({})z, r@   r   c           
      ó’   •— g | ]C}t          ‰|¦  «        ¯d                      t          t          ‰|¦  «        ¦  «        |¦  «        ‘ŒDS )rÌ   )r·   rŽ   Úlen)r  ÚattrÚsubcolls     €rN   r  z'Program._make_pairs.<locals>.<listcomp>l  sY   ø€ ð ð ð àÝ˜w¨Ñ-Ô-ðØ—N’N¥3¥w¨w¸Ñ'=Ô'=Ñ#>Ô#>ÀÑEÔEðð ð rP   )rs   Úcollectionsz [{}])r	  r
  )r  ÚindentÚjoinÚsortedrs   rå   r,   r8   ÚmapÚ	transformÚaliasesr¢   rŽ   r¤   ÚinsertÚappendr   r£   r  r  Úextend)rM   r	  r
  r  r  Úancestor_pathr^   ÚtaskÚ
is_defaultÚdisplaynamer$  Ú	alias_strÚfullÚtruncateÚtalliesÚrecursed_pairsr  r  s                   @@rN   r  zProgram._make_pairs:  s>  øø€ ð
 ÐØˆIØˆÝ�Y‘” $¤+Ñ-ˆØŸšÐ 6Ð 6¨IÐ 6Ñ 6Ô 6Ñ6Ô6ˆÝ  ¤×!1Ò!1Ñ!3Ô!3Ñ4Ô4ð  	1ñ  	1‰JˆD�$Ø ¤Ò-ˆJð ˆKÝ�3˜tœ~­v°d´lÑ/CÔ/CÑDÔDÑEÔEˆGð ð =˜DœNð =Ø#Ÿlšl¨;Ñ7Ô7�Ø<Ð<°GÐ<Ñ<Ô<�àÔ 8Ò+Ð+Ø�Øð 'Ø 3Ñ&�Kð Ô 6Ò)Ð)Ø&�ð ð *˜dœnð *Ø  6™\�FØ?Ð?Ð?Ð?°wÐ?Ñ?Ô?�Øð . )ð .Ø—N’N 1 fÑ-Ô-Ð-à>EÐM˜Ÿš t§y¢y°Ñ'9Ô'9Ñ:Ô:Ð:È2ˆIØ˜KÑ'¨)Ñ3ˆDØ�LŠL˜$¥¨¡¤Ð/Ñ0Ô0Ð0Ñ0à”?ÐN­¨I©¬¸Ñ(:¸t¼Ò'NˆÝ# DÔ$4×$:Ò$:Ñ$<Ô$<Ñ=Ô=ð 	-ð 	-‰MˆD�'ØˆKØð 8˜DœNð 8Ø#Ÿlšl¨;Ñ7Ô7�Øð Bðð ð ð à 8ðñ ô �ð
 ˜wŸ~š~¨d¯iªi¸Ñ.@Ô.@ÑAÔAÑA�ØÔ 8Ò+Ð+Ø—’˜f {Ñ2µH¸WÑ4EÔ4EÐFÑGÔGÐGÐGØÔ! VÒ+Ð+°Ð+à—’˜m¨kÑ9½8ÀGÑ;LÔ;LÐMÑNÔNÐNàð -Ø!%×!1Ò!1Ø ¨I¸¸Ñ,>ð "2ñ "ô "�ð —’˜^Ñ,Ô,Ð,øØˆrP   c                 óª   — | j         rt          d¦  «        ‚| j        }|                     ¦   «         }t	          t          j        |¦  «        ¦  «         d S )Nz:The --list-depth option is not supported with JSON format!)r£   r   r¥   Ú
serializedr�   ÚjsonÚdumps)rM   r	  Údatas      rN   Ú	list_jsonzProgram.list_json  sZ   € ð
 Œ?ð 	ÝØLñô ð ð Ô%ˆØ�ŠÑ Ô ˆÝ�dŒj˜ÑÔÑÔÐÐÐrP   r@   r  c                 ó  — | j         }| j        }|rd                     |¦  «        nd}d}|s|r8|rd                     |¦  «        nd}|r|rdnd}d                     |||¦  «        }d                     ||¦  «        }| j        �d}|S )Nú '{}'r@   zdepth={}z; z	 ({}{}{})zAvailable{} tasks{}ÚSubcommands)r¢   r£   rŽ   r]   )	rM   r  ÚrootÚdepthÚ	specifierÚtailÚdepthstrÚjoinerÚtexts	            rN   Útask_list_openerzProgram.task_list_opener�  s¯   € ØŒ~ˆØ”ˆØ,0Ð8�G—N’N 4Ñ(Ô(Ð(°bˆ	ØˆØð 	?�Eð 	?Ø38Ð@�z×(Ò(¨Ñ/Ô/Ð/¸bˆHØ#Ð6¨Ð6�T�T°BˆFØ×%Ò% h°¸Ñ>Ô>ˆDØ$×+Ò+¨I°tÑ<Ô<ˆð Œ>Ð%Ø ˆDØˆrP   r  c                 ól  — | j         }t          d                     |                      |¬¦  «        ¦  «        ¦  «         |                      |¦  «         | j        j        }|rSd}|r*d                     |¦  «        }d                     |¦  «        }t          d                     ||¦  «        ¦  «         d S d S )Nz{}:
)r  r@   r8  r  zDefault{} task: {}
)r¢   r�   rŽ   rA  rÎ   r¥   r,   )rM   r  r  r:  r,   Úspecifics         rN   r  zProgram.display_with_columnsŸ  sÀ   € ð Œ~ˆÝˆg�nŠn˜T×2Ò2¸Ð2Ñ?Ô?Ñ@Ô@ÑAÔAÐAØ×Ò˜5Ñ!Ô!Ð!ð Ô(Ô0ˆØð 	DØˆHØð 0Ø"Ÿ>š>¨$Ñ/Ô/�ØŸ,š, wÑ/Ô/�åÐ(×/Ò/°¸'ÑBÔBÑCÔCÐCÐCÐCð	Dð 	DrP   rù   c                 ób  — t          d„ |D ¦   «         ¦  «        }t          ¦   «         d         |z
  | j        z
  | j        z
  dz
  }t	          j        |¬¦  «        }|D ]Ä\  }}|€d}|                     |¦  «        }|t          |¦  «        z
  }d                     | j	        ||dz  | j        dz  f¦  «        }	|rHt          |	|d         z   ¦  «         |dd…         D ]$}
t          dt          |	¦  «        z  |
z   ¦  «         Œ%Œ£t          |	                     ¦   «         ¦  «         ŒÅt          d¦  «         dS )z®
        Print tabbed columns from (name, help) ``tuples``.

        Useful for listing tasks + docstrings, flags + help strings, etc.

        .. versionadded:: 1.0
        c              3   ó@   K  — | ]}t          |d          ¦  «        V — ŒdS )r   N)r  r  s     rN   r  z(Program.print_columns.<locals>.<genexpr>¼  s,   è è € Ð3Ð3 q�˜Q˜qœT™œÐ3Ð3Ð3Ð3Ð3Ð3rP   r   r   )ÚwidthNr@   rZ   )Úmaxr   Úleading_indent_widthÚcol_paddingÚtextwrapÚTextWrapperÚwrapr  r   r÷   r�   Úrstrip)rM   rù   Ú
name_widthÚ
desc_widthÚwrapperr^   Úhelp_strÚhelp_chunksÚname_paddingÚspecÚchunks              rN   rÎ   zProgram.print_columns°  si  € õ Ð3Ð3¨FÐ3Ñ3Ô3Ñ3Ô3ˆ
å‰JŒJ�qŒMØñàÔ'ñ(ð Ôñð ñ	ð 	õ Ô&¨ZÐ8Ñ8Ô8ˆØ$ð 	%ð 	%‰NˆD�(ØÐØ�à!Ÿ,š, xÑ0Ô0ˆKà%­¨D©	¬	Ñ1ˆLØ—7’7àÔ'ØØ  3Ñ&ØÔ$ sÑ*ð	ñô ˆDð ð %Ý�d˜[¨œ^Ñ+Ñ,Ô,Ð,Ø(¨¨¨œ_ð 5ð 5�EÝ˜3¥ T¡¤™?¨eÑ3Ñ4Ô4Ð4Ð4ð5õ �d—k’k‘m”mÑ$Ô$Ð$Ð$Ýˆb‰	Œ	ˆ	ˆ	ˆ	rP   )NNNNNNNN)r$   N)T)NT)r$   r    rä   )r@   )8Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   rO   rW   rK   rH  r÷   Úindent_widthr  rI  r   r   ri   rk   rJ   r„   rr   r‰   rŠ   rŒ   r¯   r�   rš   Úpropertyr^   rÆ   r_   rc   rw   r   r§   r�   r    r›   r¡   r   r   rê   r   r®   r‹   rª   r­   r  r  r
   r  r6  rA  r	   r  rÎ   r  rP   rN   r"   r"       sÌ  € € € € € € ðð ð ÐÐÑðf
˜4 
Ô+ð f
ð f
ð f
ð f
ðP
˜4 
Ô+ð 
ð 
ð 
ð 
ð: ˆsŒ)€O€O�Oð ÐØÐ/Ñ/€NØ€LØ�<Ñ€FØ€Kð "&Ø,0Ø"Ø $Ø15Ø59Ø15Ø,0ð_3ð _3à˜#”ð_3ð ˜LÔ)ð_3ð �sŒmð	_3ð
 ˜”ð_3ð ˜t Hœ~Ô.ð_3ð !  jÔ!1Ô2ð_3ð ˜t Hœ~Ô.ð_3ð ˜t CœyÔ)ð_3ð 
ð_3ð _3ð _3ð _3ðB*ð *ð *ð *ð3 ð 3  4ð 3 °4ð 3 ð 3 ð 3 ð 3 ðjCð C˜  c¤Ô+ð C¸$ð CÈ$ð Cð Cð Cð CðJ˜x¨¨S¬	Ô2ð °tð ð ð ð ð< 1ð  1ð  1ð  1ðH<"ð <"ð <"ð <"ð|ð ð ð ð&ð &ð &ð &ð4 8¨D°¬IÔ#6ð ¸4ð ð ð ð ð. ð6�cð 6ð 6ð 6ñ „Xð6ð ð
C˜3ð 
Cð 
Cð 
Cñ „Xð
Cð ð.˜ð .ð .ð .ñ „Xð.ð ð6˜d 3œið 6ð 6ð 6ñ „Xð6ð ð!ð !ð !ñ „Xð!ð ð( ð (ð (ð (ñ „Xð(ðDð Dð Dð Dð
ð 
ð 
ð 
ð9ð 9ð 9ð 9ðOð Oð Oð Oð:	6Ø$ð	6Ø04°S¸#°X´ð	6à	ð	6ð 	6ð 	6ð 	6ð
˜fð 
ð 
ð 
ð 
ðBð Bð Bð Bð0 Cð ¨Dð ð ð ð ðB<ð <ð <ð <ð/ð /ð /ð /ð<ð <ð <ð <ð *.ðCð CàðCð ˜D œIÔ&ðCð 
ˆe�C˜ #œÐ&Ô'Ô	(ð	Cð Cð Cð CðJ ð  ð  ð  ð ð  cð °3ð ð ð ð ð" HJðDð DØ˜e C¨°#¬Ð$6Ô7Ô8ðDØADðDà	ðDð Dð Dð Dð"+Ø˜u S¨(°3¬-Ð%7Ô8Ô9ð+à	ð+ð +ð +ð +ð +ð +rP   r"   )-ry   ró   r3  r|   r‘   rJ  Ú	importlibr   Útypingr   r   r   r   r   r	   r
   r   r@   r   r   r   r   Úcompletion.completer   r   Ú
exceptionsr   r   r   r   r¨   r   r   r   Ú	terminalsr   Úutilr   r   r   rÞ   r   r   r    r"   r  rP   rN   ú<module>rc     sÛ  ðØ €€€Ø €€€Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð =Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø Ð Ð Ð Ð Ð Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1àð ØÐÐÐÐÐØ#Ð#Ð#Ð#Ð#Ð#ØÐÐÐÐÐð{ð {ð {ð {ð {ñ {ô {ð {ð {ð {rP   