§
    xÅjW&  ã                   óæ   — d dl Z d dlmZmZmZmZmZmZmZ 	 ddl	m
Z
 n# e$ r	 d dlm
Z
 Y nw xY wddlmZ dedefd	„Zdedefd
„Zdedefd„Zdedeeeef                  fd„Z G d„ d¦  «        ZdS )é    N)ÚAnyÚDictÚListÚIterableÚOptionalÚTupleÚUnioné   )ÚLexiconé   )ÚArgumentÚnameÚreturnc                 óz   — |                       d¦  «                             d¦  «                             dd¦  «        S )NÚ_ú-)ÚlstripÚrstripÚreplace©r   s    úFC:\Projects\Historical\venv\Lib\site-packages\invoke/parser/context.pyÚtranslate_underscoresr      s2   € Ø�;Š;�sÑÔ×"Ò" 3Ñ'Ô'×/Ò/°°SÑ9Ô9Ð9ó    c                 óZ   — t          | ¦  «        } t          | ¦  «        dk    rd| z   S d| z   S )Nr   r   z--)r   Úlenr   s    r   Úto_flagr      s2   € Ý  Ñ&Ô&€DÝ
ˆ4�y„y�A‚~€~Ø�T‰zÐØ�$‰;Ðr   Úargc                 ó’   ‡— | j         }d„ |D ¦   «         Šˆfd„|D ¦   «         }t          t          ‰r‰n|¦  «        d         ¦  «        S )Nc                 ó^   — h | ]*}t          |                     d ¦  «        ¦  «        dk    ¯(|’Œ+S )r   r   )r   Ústrip©Ú.0Úxs     r   ú	<setcomp>z!sort_candidate.<locals>.<setcomp>   s4   € Ð9Ð9Ð9�A¥# a§g¢g¨c¡l¤lÑ"3Ô"3°qÒ"8Ð"8ˆaÐ"8Ð"8Ð"8r   c                 ó   •— h | ]}|‰v¯|’Œ	S © r&   )r"   r#   Úshortss     €r   r$   z!sort_candidate.<locals>.<setcomp>   s   ø€ Ð1Ð1Ð1�1 ¨&  ˆQ   r   r   )ÚnamesÚstrÚsorted)r   r(   Úlongsr'   s      @r   Úsort_candidater,      sZ   ø€ ØŒI€Eà9Ð9˜Ð9Ñ9Ô9€FØ1Ð1Ð1Ð1˜Ð1Ñ1Ô1€EÝ�v Ð1�f�f¨EÑ2Ô2°1Ô5Ñ6Ô6Ð6r   c                 ó€  — g }t          | ¦  «        }|                     t          |¦  «        dk    rdnd¦  «         |                     |                     ¦   «         ¦  «         d}|D ]A}||                     ¦   «         r|                     ¦   «         n|                     ¦   «         z  }ŒB|                     |¦  «         |S )zZ
    Obtain useful key list-of-ints for sorting CLI flags.

    .. versionadded:: 1.0
    r   r   Ú )r,   Úappendr   ÚlowerÚisupperÚupper)r   Úretr#   ÚinversedÚchars        r   Úflag_keyr6      s´   € ð "$€CÝ�sÑÔ€Að ‡J‚J•C˜‘F”F˜a’K�Kˆqˆq QÑ'Ô'Ð'ð ‡J‚Jˆq�wŠw‰yŒyÑÔÐð €HØð Eð EˆØ D§L¢L¡N¤NÐD�D—J’J‘L”L�L¸¿
º
¹¼ÑDˆˆØ‡J‚JˆxÑÔÐØ€Jr   c            	       óV  — e Zd ZdZ	 	 	 ddee         dee         dee         ddfd„Zdefd	„Z	de
d
e
ddfd„Zedee         fd„¦   «         Zedeee
f         fd„¦   «         Zdedee         fd„Zdedeeef         fd„Zdeeeee         f                  fd„Zdeedf         fd„ZdS )ÚParserContextzò
    Parsing context with knowledge of flags & their format.

    Generally associated with the core program or a task.

    When run through a parser, will also hold runtime values filled in by the
    parser.

    .. versionadded:: 1.0
    Nr&   r   ÚaliasesÚargsr   c                 ó¾   — t          ¦   «         | _        g | _        t          ¦   «         | _        i | _        || _        || _        |D ]}|                      |¦  «         ŒdS )a�  
        Create a new ``ParserContext`` named ``name``, with ``aliases``.

        ``name`` is optional, and should be a string if given. It's used to
        tell ParserContext objects apart, and for use in a Parser when
        determining what chunk of input might belong to a given ParserContext.

        ``aliases`` is also optional and should be an iterable containing
        strings. Parsing will honor any aliases when trying to "find" a given
        context in its input.

        May give one or more ``args``, which is a quick alternative to calling
        ``for arg in args: self.add_arg(arg)`` after initialization.
        N)r   r:   Úpositional_argsÚflagsÚinverse_flagsr   r9   Úadd_arg)Úselfr   r9   r:   r   s        r   Ú__init__zParserContext.__init__G   sf   € õ( ‘I”IˆŒ	Ø/1ˆÔÝ‘Y”YˆŒ
Ø-/ˆÔØˆŒ	ØˆŒØð 	ð 	ˆCØ�LŠL˜ÑÔÐÐð	ð 	r   c                 ó(  — d}| j         r-d                     d                     | j         ¦  «        ¦  «        }| j        rd                     | j        |¦  «        nd}| j        rd                     | j        ¦  «        nd}d                     ||¦  «        S )Nr.   z ({})ú, z {!r}{}z: {!r}z<parser/Context{}{}>)r9   ÚformatÚjoinr   r:   )r@   r9   r   r:   s       r   Ú__repr__zParserContext.__repr__d   sˆ   € ØˆØŒ<ð 	>Ø—n’n T§Y¢Y¨t¬|Ñ%<Ô%<Ñ=Ô=ˆGØ9=¼ÐJ�	× Ò  ¤¨GÑ4Ô4Ð4ÈˆØ/3¬yÐ@�—’ ¤	Ñ*Ô*Ð*¸bˆØ%×,Ò,¨T°4Ñ8Ô8Ð8r   Úkwargsc                 óL  — t          |¦  «        dk    r$t          |d         t          ¦  «        r	|d         }nt          |i |¤Ž}|j        D ]/}|| j        v r$d}t          |                     |¦  «        ¦  «        ‚Œ0|j        d         }|| j        |<   |j        r| j         	                    |¦  «         || j
        t          |¦  «        <   |j        D ]T}| j                             ||¬¦  «         | j
                             t          |¦  «        t          |¦  «        ¬¦  «         ŒU|j        r!| j                             |j        |¬¦  «         |j        t           k    rD|j        du r=t          d                     |¦  «        ¦  «        }t          |¦  «        | j        |<   dS dS dS )aÖ  
        Adds given ``Argument`` (or constructor args for one) to this context.

        The Argument in question is added to the following dict attributes:

        * ``args``: "normal" access, i.e. the given names are directly exposed
          as keys.
        * ``flags``: "flaglike" access, i.e. the given names are translated
          into CLI flags, e.g. ``"foo"`` is accessible via ``flags['--foo']``.
        * ``inverse_flags``: similar to ``flags`` but containing only the
          "inverse" versions of boolean flags which default to True. This
          allows the parser to track e.g. ``--no-myflag`` and turn it into a
          False value for the ``myflag`` Argument.

        .. versionadded:: 1.0
        r   r   z;Tried to add an argument named {!r} but one already exists!)ÚtoTzno-{}N)r   Ú
isinstancer   r(   r:   Ú
ValueErrorrD   Ú
positionalr<   r/   r=   r   Ú	nicknamesÚaliasÚ	attr_nameÚkindÚboolÚdefaultr>   )r@   r:   rG   r   r   ÚmsgÚmainÚinverse_names           r   r?   zParserContext.add_argl   s¡  € õ$ ˆt‰9Œ9˜Š>ˆ>�j¨¨a¬µ(Ñ;Ô;ˆ>Ø�q”'ˆCˆCå˜DÐ+ FÐ+Ð+ˆCà”Ið 	3ð 	3ˆDØ�t”yÐ Ð ØS�Ý  §¢¨DÑ!1Ô!1Ñ2Ô2Ð2ð !ð Œy˜Œ|ˆØˆŒ	�$‰àŒ>ð 	-ØÔ ×'Ò'¨Ñ,Ô,Ð,à$'ˆŒ
•7˜4‘=”=Ñ!Ø”Mð 	>ð 	>ˆDØŒI�OŠO˜D TˆOÑ*Ô*Ð*ØŒJ×Ò�W T™]œ]­w°t©}¬}ÐÑ=Ô=Ð=Ð=àŒ=ð 	4ØŒI�OŠO˜CœM¨dˆOÑ3Ô3Ð3àŒ8•tÒÐ ¤¨tÐ 3Ð 3õ # 7§>¢>°$Ñ#7Ô#7Ñ8Ô8ˆLÝ/6°t©}¬}ˆDÔ˜|Ñ,Ð,Ð,ð ÐÐ 3Ð 3r   c                 ó$   — d„ | j         D ¦   «         S )Nc                 ó    — g | ]}|j         ­	|‘ŒS ©N)Úvaluer!   s     r   ú
<listcomp>z9ParserContext.missing_positional_args.<locals>.<listcomp>Ÿ   s   € ÐCÐCÐC�a°1´7°?�°?°?°?r   )r<   ©r@   s    r   Úmissing_positional_argsz%ParserContext.missing_positional_args�   s   € àCÐC˜4Ô/ÐCÑCÔCÐCr   c                 ó`   — i }| j                              ¦   «         D ]}|j        ||j        <   Œ|S )a  
        This context's arguments' values keyed by their ``.name`` attribute.

        Results in a dict suitable for use in Python contexts, where e.g. an
        arg named ``foo-bar`` becomes accessible as ``foo_bar``.

        .. versionadded:: 1.0
        )r:   ÚvaluesrY   r   )r@   r3   r   s      r   Ú	as_kwargszParserContext.as_kwargs¡   s:   € ð ˆØ”9×#Ò#Ñ%Ô%ð 	&ð 	&ˆCØœIˆC�”‰MˆMØˆ
r   Úflagc                 ór   — t          t          |g| j                             |¦  «        z   ¦  «        ¦  «        S rX   )ÚlistÚsetr=   Ú
aliases_of)r@   r`   s     r   Ú	names_forzParserContext.names_for°   s/   € å•C˜˜ ¤×!6Ò!6°tÑ!<Ô!<Ñ<Ñ=Ô=Ñ>Ô>Ð>r   c                 óV  — || j         vr<d}t          |                     || j                              ¦   «         ¦  «        ¦  «        ‚| j         |         }t          dt
          di                     |j        ¦  «        }g }|                      |¦  «        D ]â}|rŒt          | 
                    d¦  «        ¦  «        dk    r4|j        rd                     |¦  «        n|}d                     |¦  «        }nld                     |¦  «        }|j        rd                     |¦  «        }n:|| j                             ¦   «         v rd	                     |d
d…         ¦  «        }d}|                     ||z   ¦  «         Œãd                     t!          |t          ¬¦  «        ¦  «        }	|j        pd}
|	|
fS )zs
        Return 2-tuple of ``(flag-spec, help-string)`` for given ``flag``.

        .. versionadded:: 1.0
        z@{!r} is not a valid flag for this context! Valid flags are: {!r}ÚSTRINGÚINTr   r   z[{}]z {}z={}z	--[no-]{}r
   Nr.   rC   ©Úkey)r=   rK   rD   Úkeysr)   ÚintÚgetrP   re   r   r    Úoptionalr>   r^   r/   rE   r*   Úhelp)r@   r`   Úerrr   rY   Ú
full_namesr   Úvalue_ÚvaluestrÚnamestrÚhelpstrs              r   Úhelp_forzParserContext.help_for´   s—  € ð �t”zÐ!Ð!ØTˆCÝ˜SŸZšZ¨¨d¬j¯oªoÑ.?Ô.?Ñ@Ô@ÑAÔAÐAØŒj˜Ôˆå�h¥ UÐ+×/Ò/°´Ñ9Ô9ˆàˆ
Ø—N’N 4Ñ(Ô(ð 	/ð 	/ˆDØð õ �t—z’z #‘”Ñ'Ô'¨1Ò,Ð,Ø7:´|ÐN˜fŸmšm¨EÑ2Ô2Ð2È�FØ$Ÿ|š|¨FÑ3Ô3�H�Hà$Ÿ|š|¨EÑ2Ô2�HØ”|ð ;Ø#)§=¢=°Ñ#:Ô#:˜øð ˜4Ô-×4Ò4Ñ6Ô6Ð6Ð6Ø&×-Ò-¨d°1°2°2¬hÑ7Ô7�Dà�à×Ò˜d X™oÑ.Ô.Ð.Ð.Ø—)’)�F :µ3Ð7Ñ7Ô7Ñ8Ô8ˆØ”(�.˜bˆØ˜ÐÐr   c           	      óš   ‡ — t          t          ˆ fd„t          ‰ j                             ¦   «         t
          ¬¦  «        ¦  «        ¦  «        S )a‹  
        Return sorted iterable of help tuples for all member Arguments.

        Sorts like so:

        * General sort is alphanumerically
        * Short flags win over long flags
        * Arguments with *only* long flags and *no* short flags will come
          first.
        * When an Argument has multiple long or short flags, it will sort using
          the most favorable (lowest alphabetically) candidate.

        This will result in a help list like so::

            --alpha, --zeta # 'alpha' wins
            --beta
            -a, --query # short flag wins
            -b, --argh
            -c

        .. versionadded:: 1.0
        c                 óR   •— ‰                      t          | j        ¦  «        ¦  «        S rX   )rv   r   r   )r#   r@   s    €r   ú<lambda>z+ParserContext.help_tuples.<locals>.<lambda>ø   s   ø€ ˜$Ÿ-š-­°´©¬Ñ8Ô8€ r   ri   )rb   Úmapr*   r=   r^   r6   r[   s   `r   Úhelp_tupleszParserContext.help_tuplesÛ   sN   ø€ õ6 ÝØ8Ð8Ð8Ð8Ý�t”z×(Ò(Ñ*Ô*µÐ9Ñ9Ô9ñô ñ
ô 
ð 	
r   .c                 óD  ‡ — t          ‰ j                             ¦   «         t          ¬¦  «        }ˆ fd„|D ¦   «         }|                     t          ‰ j                             ¦   «         ¦  «        ¦  «         t          t          j
                             |¦  «        ¦  «        S )zµ
        Similar to `help_tuples` but returns flag names only, no helpstrs.

        Specifically, all flag names, flattened, in rough order.

        .. versionadded:: 1.0
        ri   c                 ó^   •— g | ])}‰                      t          |j        ¦  «        ¦  «        ‘Œ*S r&   )re   r   r   )r"   r#   r@   s     €r   rZ   z,ParserContext.flag_names.<locals>.<listcomp>  s-   ø€ Ð@Ð@Ð@°Q�—’¥¨¬¡¤Ñ0Ô0Ð@Ð@Ð@r   )r*   r=   r^   r6   r/   rb   r>   rk   ÚtupleÚ	itertoolsÚchainÚfrom_iterable)r@   r=   r(   s   `  r   Ú
flag_nameszParserContext.flag_namesý   s…   ø€ õ �t”z×(Ò(Ñ*Ô*µÐ9Ñ9Ô9ˆØ@Ð@Ð@Ð@¸%Ð@Ñ@Ô@ˆà�Š•T˜$Ô,×1Ò1Ñ3Ô3Ñ4Ô4Ñ5Ô5Ð5Ý•Y”_×2Ò2°5Ñ9Ô9Ñ:Ô:Ð:r   )Nr&   r&   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r)   r   r   rA   rF   r   r?   Úpropertyr   r\   r   r_   re   r   rv   r{   r‚   r&   r   r   r8   r8   ;   s¼  € € € € € ð	ð 	ð #Ø!#Ø#%ð	ð à�sŒmðð ˜#”ðð �xÔ ð	ð
 
ðð ð ð ð:9˜#ð 9ð 9ð 9ð 9ð/=˜Sð /=¨Cð /=°Dð /=ð /=ð /=ð /=ðb ðD¨¨h¬ð Dð Dð Dñ „XðDð ð˜4  S œ>ð ð ð ñ „Xðð?˜cð ? d¨3¤ið ?ð ?ð ?ð ?ð% ˜Sð %  U¨3°¨8¤_ð % ð % ð % ð % ðN 
˜T %¨¨X°c¬]Ð(:Ô";Ô<ð  
ð  
ð  
ð  
ðD;˜E # s (œOð ;ð ;ð ;ð ;ð ;ð ;r   r8   )r   Útypingr   r   r   r   r   r   r	   Úvendor.lexiconr   ÚImportErrorÚlexiconÚargumentr   r)   r   r   r,   rl   r6   r8   r&   r   r   ú<module>r�      sy  ðØ Ð Ð Ð Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ Dð Ø(Ð(Ð(Ð(Ð(Ð(Ð(øØð  ð  ð  ØÐÐÐÐÐÐÐð øøøð Ð Ð Ð Ð Ð ð: ð :¨ð :ð :ð :ð :ð�#ð ˜#ð ð ð ð ð7˜ð 7 Sð 7ð 7ð 7ð 7ð�(ð ˜t E¨#¨s¨(¤OÔ4ð ð ð ð ð8O;ð O;ð O;ð O;ð O;ñ O;ô O;ð O;ð O;ð O;s   ˜ Ÿ-¬-