ó
    &ÝNjaM  ã                   ó  • S SK r S SKJrJrJrJrJr   SSKJr  SSK	J
r
JrJr  SSKJr  SSKJr  \(       a  SS	KJr  S
\S\4S jrS
\S\4S jr " S S\S   5      r " S S5      r " S S\
5      rg! \ a    S SKJr  S SKJ
r
JrJr   Ngf = f)é    N)ÚTYPE_CHECKINGÚAnyÚIterableÚListÚOptionalé   )ÚLexicon)ÚStateMachineÚstateÚ
transition)Ú
ParseError)Údebugé   )ÚParserContextÚvalueÚreturnc                 ó$   • U R                  S5      $ )NÚ-©Ú
startswith©r   s    ÚQ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/invoke/parser/parser.pyÚis_flagr      s   € Ø×Ñ˜CÓ Ð ó    c                 ó$   • U R                  S5      $ )Nú--r   r   s    r   Úis_long_flagr      s   € Ø×Ñ˜DÓ!Ð!r   c                   ó<   ^ • \ rS rSrSrS\S\SS4U 4S jjrSrU =r$ )	ÚParseResulté   a  
List-like object with some extra parse-related attributes.

Specifically, a ``.remainder`` attribute, which is the string found after a
``--`` in any parsed argv list; and an ``.unparsed`` attribute, a list of
tokens that were unable to be parsed.

.. versionadded:: 1.0
ÚargsÚkwargsr   Nc                 óB   >• [         TU ]  " U0 UD6  SU l        / U l        g )NÚ )ÚsuperÚ__init__Ú	remainderÚunparsed)Úselfr!   r"   Ú	__class__s      €r   r&   ÚParseResult.__init__)   s#   ø€ Ü‰Ò˜$Ð) &Ò)ØˆŒØ#%ˆ�r   )r'   r(   )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r&   Ú__static_attributes__Ú__classcell__©r*   s   @r   r   r      s'   ø† ñð&˜cð &¨Sð &°T÷ &õ &r   r   r   c            	       ó`   • \ rS rSrSr   SS\S   S\S   S\SS4S	 jjrS
\	\
   S\4S jrSrg)ÚParseré/   aA  
Create parser conscious of ``contexts`` and optional ``initial`` context.

``contexts`` should be an iterable of ``Context`` instances which will be
searched when new context names are encountered during a parse. These
Contexts determine what flags may follow them, as well as whether given
flags take values.

``initial`` is optional and will be used to determine validity of "core"
options/flags at the start of the parse run, if any are encountered.

``ignore_unknown`` determines what to do when contexts are found which do
not map to any members of ``contexts``. By default it is ``False``, meaning
any unknown contexts result in a parse error exception. If ``True``,
encountering an unknown context halts parsing and populates the return
value's ``.unparsed`` attribute with the remaining parse tokens.

.. versionadded:: 1.0
NÚcontextsr   ÚinitialÚignore_unknownr   c                 ó&  • X l         [        5       U l        X0l        U Hð  n[	        SR                  U5      5        UR                  (       d  [        S5      eSnUR                  U R                  ;   a$  [        UR                  UR                  5      5      eX@R                  UR                  '   UR                   HO  nX`R                  ;   a  [        UR                  U5      5      eU R                  R                  XdR                  S9  MQ     Mò     g )Nz	Adding {}z%Non-initial contexts must have names.z7A context named/aliased {!r} is already in this parser!)Úto)
r8   r	   r7   r9   r   ÚformatÚnameÚ
ValueErrorÚaliasesÚalias)r)   r7   r8   r9   ÚcontextÚexistsr@   s          r   r&   ÚParser.__init__D   sÊ   € ð ŒÜ›	ˆŒØ,ÔÛˆGÜ�+×$Ñ$ WÓ-Ô.Ø—<—<Ü Ð!HÓIÐIØNˆFØ�|‰|˜tŸ}™}Ó,Ü  §¡¨w¯|©|Ó!<Ó=Ð=Ø*1�M‰M˜'Ÿ,™,Ñ'Ø Ÿœ�ØŸM™MÓ)Ü$ V§]¡]°5Ó%9Ó:Ð:Ø—‘×#Ñ# E¯l©lÐ#Ó;ó )ò  r   Úargvc                 ó‚  • [        U R                  U R                  U R                  S9n[	        SR                  U5      5         UR                  S5      nUSU nXS SS nU(       a  [	        SR                  X55      5        [        U5       GHY  u  pg/ nUn	[        U5      (       Ga­  UR                  R                  (       Gd‘  SU;   aI  UR                  S5      u  pznSn[	        UR                  X—U5      5        UR                  US-   U45        GOB[        U5      (       Gd1  [        U5      S	:”  Ga!  USS nUS	S USS	 p~S
n[	        UR                  X×U5      5        XrR                   R"                  ;   =(       a    UR$                  S:g  nU(       a[  UR                   R"                  U   R&                  (       a3  Sn[	        UR                  X~5      5        UR                  US-   U45        OfU Vs/ s H  nSR                  U5      PM     nnSn[	        UR                  X—U5      5        [)        U5       H  nUR                  US-   U45        M     UR*                  (       aS  UR,                  =(       a    UR,                  R.                  nXrR                   R"                  ;   nU(       a  U(       d  U	n/ nU H  u  pkUR1                  Xk5        M     UR3                  U5        GM\     UR5                  5         UR                  nSR7                  U5      Ul        U$ ! [         a    [        U5      n GNâf = fs  snf )av  
Parse an argv-style token list ``argv``.

Returns a list (actually a subclass, `.ParseResult`) of
`.ParserContext` objects matching the order they were found in the
``argv`` and containing `.Argument` objects with updated values based
on any flags given.

Assumes any program name has already been stripped out. Good::

    Parser(...).parse_argv(['--core-opt', 'task', '--task-opt'])

Bad::

    Parser(...).parse_argv(['invoke', '--core-opt', ...])

:param argv: List of argument string tokens.
:returns:
    A `.ParseResult` (a ``list`` subclass containing some number of
    `.ParserContext` objects).

.. versionadded:: 1.0
)r8   r7   r9   zStarting argv: {!r}r   Nr   z"Remainder: argv[{!r}:][1:] => {!r}Ú=z1Splitting x=y expr {!r} into tokens {!r} and {!r}r   z,Splitting {!r} into token {!r} and rest {!r}ÚunknownzE{!r} is a flag for current context & it takes a value, giving it {!r}z-{}z1Splitting multi-flag glob {!r} into {!r} and {!r}Ú )ÚParseMachiner8   r7   r9   r   r<   Úindexr>   ÚlenÚ	enumerater   Úresultr(   Ú	partitionÚappendr   rA   ÚflagsÚcurrent_stateÚtakes_valueÚreversedÚwaiting_for_flag_valueÚflagÚoptionalÚinsertÚhandleÚfinishÚjoinr'   )r)   rD   ÚmachineÚddashÚbodyr'   rJ   ÚtokenÚ	mutationsÚorigÚ_r   ÚmsgÚ
full_tokenÚrestÚerrÚ	have_flagÚxÚ_restÚitemrV   Úsubtoken_is_valid_flagrM   s                          r   Ú
parse_argvÚParser.parse_argvZ   sÏ  € ô0 à—L‘LØ—]‘]Ø×.Ñ.ñ	
ˆô 	Ð#×*Ñ*¨4Ó0Ô1ð	Ø—J‘J˜tÓ$ˆEð �F�Uˆ|ˆØ˜�L  Ð$ˆ	ÞÜØ4×;Ñ;¸EÓMôô & dŸO‰LˆEð ˆIØˆDÜ�u�~Š~ g§n¡n×&=×&=Ð&=à˜%“<Ø&+§o¡o°cÓ&:‘O�E˜eØM�CÜ˜#Ÿ*™* T°%Ó8Ô9Ø×$Ñ$ e¨a¡i°Ð%7Ö8ä% e×,Ò,´°U³¸a´Ø!&¡q �JØ"'¨¨ )¨U°2°A¨Y˜%ØH�CÜ˜#Ÿ*™* Z¸Ó=Ô>ð §¡×!6Ñ!6Ñ6÷ ?Ø#×1Ñ1°YÑ>ð ö ! W§_¡_×%:Ñ%:¸5Ñ%A×%M×%MØe˜Ü˜cŸj™j¨Ó5Ô6Ø!×(Ñ(¨%°!©)°TÐ):Õ;á:>Ó ?º$°Q §¡¨a¦¹$˜Ð ?ØQ˜Ü˜cŸj™j¨°eÓ<Ô=Ü$,¨U¦O˜DØ%×,Ñ,¨e°a©i¸Ð->Ö?ñ %4ð$ ×-×-Ø"Ÿ<™<×A¨G¯L©L×,AÑ,A�Ø).·/±/×2GÑ2GÑ)GÐ&Þ Ö%;Ø �EØ "�IÛ )‘�Ø—‘˜EÖ)ñ !*à�N‰N˜5×!ñA ,ðB 	�‰ÔØ—‘ˆØŸ8™8 IÓ.ˆÔØˆøôY ó 	Ü˜“I‹Eð	üòV !@s   ÁL  Ç4L<Ì L9Ì8L9)r7   r9   r8   )© NF)r,   r-   r.   r/   r0   r   r   Úboolr&   r   Ústrr   rk   r1   rm   r   r   r5   r5   /   sa   † ñð, /1Ø-1Ø$ñ	<à˜?Ñ+ð<ð ˜/Ñ*ð<ð ð	<ð
 
õ<ð,p˜t C™yð p¨[÷ pr   r5   c                   ó„  ^ • \ rS rSrSr\" SSS/S9  \" SSS/S9  \" SSS/S9  \" SS	SS
9  \" SSSSS9  \" SSSSS9  S\S\SS4S jrSSS\	S\
SS4U 4S jjr\S\
4S j5       rS\SS4S jrS\SS4S jrS,S jrS\SS4S  jrS,S! jrS"\S\
4S# jrS-S$\S%\
SS4S& jjrS"\SS4S' jrS"\SS4S( jrS)\SS4S* jrS+rU =r$ ).rI   éÍ   rA   Úcomplete_flagÚcomplete_context)ÚenterrG   Úend)rA   rG   rY   )Úfrom_Úeventr;   Úsee_contextÚswitch_to_context)rv   rw   Úactionr;   Úsee_unknownÚ
store_onlyrv   r;   r   Nc                 ó8   • [        SR                  X5      5        g )NzParseMachine: {!r} => {!r})r   r<   )r)   rv   r;   s      r   Úchanging_stateÚParseMachine.changing_stateâ   s   € ÜÐ*×1Ñ1°%Ó<Õ=r   r8   r   r7   r9   c                 ór  >• X0l         [        R                  " U5      =U l        U l        [        SR                  U R                  5      5        S U l        SU l        [        5       U l
        [        R                  " U5      U l        [        SR                  U R                  5      5        [        TU ]5  5         g )NzInitialized with context: {!r}FzAvailable contexts: {!r})r9   ÚcopyÚdeepcopyr8   rA   r   r<   rU   Úflag_got_valuer   rM   r7   r%   r&   )r)   r8   r7   r9   r*   s       €r   r&   ÚParseMachine.__init__å   s…   ø€ ð -ÔÜ&*§m¢m°GÓ&<Ð<ˆŒ�t”|ÜÐ.×5Ñ5°d·l±lÓCÔDØˆŒ	Ø#ˆÔÜ!“mˆŒÜŸš hÓ/ˆŒÜÐ(×/Ñ/°·±Ó>Ô?ä‰ÑÕr   c                 ó   • U R                   =(       a    U R                   R                  nU(       d  gU R                   R                  [        L a  U R                  (       d  gU R                   R
                  S LnU(       + $ )NFT)rU   rR   ÚkindÚlistrƒ   Ú	raw_value)r)   rR   Ú	has_values      r   rT   Ú#ParseMachine.waiting_for_flag_value÷   s]   € ð —i‘i×9 D§I¡I×$9Ñ$9ˆÞØð �9‰9�>‰>œTÒ!¨$×*=×*=Øà—I‘I×'Ñ'¨tÐ3ˆ	ð Œ}Ðr   r^   c                 óü  • [        SR                  U5      5        U R                  S:X  a,  [        SR                  U5      5        U R                  U5        g U R                  (       aE  XR                  R
                  ;   a,  [        SR                  U5      5        U R                  U5        g U R                  (       aD  XR                  R                  ;   a+  [        SR                  U5      5        U R                  USS9  g U R                  (       a,  [        SR                  U5      5        U R                  U5        g U R                  (       aT  U R                  R                  (       a9  S	n[        UR                  U R                  U5      5        U R                  U5        g XR                  ;   a  U R                  U5        g U R                  (       a°  XR                  R
                  ;   a—  [        S
R                  U5      5        U R                  R
                  U   nUR                  S:X  aB  U R                  R                  Ul        Sn[        UR                  UR                   5      5        g U R                  U5        g U R"                  (       d;  [        SR                  U5      5        U R%                  SR                  U5      5        g [        SR                  U5      5        U R                  U5        g )NzHandling token: {!r}rG   z!Top-of-handle() see_unknown({!r})zSaw flag {!r}zSaw inverse flag {!r}T)Úinversez2We're waiting for a flag value so {!r} must be it?z2Context {!r} requires positional args, eating {!r}zSaw (initial-context) flag {!r}ÚhelpzGSaw --help in a per-task context, setting task name ({!r}) as its valuez'Can't find context named {!r}, erroringzNo idea what {!r} is!z$Bottom-of-handle() see_unknown({!r}))r   r<   rQ   r{   rA   rP   Úswitch_to_flagÚinverse_flagsrT   Ú	see_valueÚmissing_positional_argsÚsee_positional_argr7   rx   r8   r=   r   r9   Úerror)r)   r^   rb   rU   s       r   rX   ÚParseMachine.handle  s$  € ÜÐ$×+Ñ+¨EÓ2Ô3ð ×Ñ Ó*ÜÐ5×<Ñ<¸UÓCÔDØ×Ñ˜UÔ#Øà�<�<˜E§\¡\×%7Ñ%7Ó7Ü�/×(Ñ(¨Ó/Ô0Ø×Ñ Õ&Ø�\�\˜e§|¡|×'AÑ'AÓAÜÐ)×0Ñ0°Ó7Ô8Ø×Ñ ¨tÐÒ4à×(×(ÜØD×KÑKØóôð
 �N‰N˜5Õ!ð �\�\˜dŸl™l×B×BØFˆCÜ�#—*‘*˜TŸ\™\¨5Ó1Ô2Ø×#Ñ# EÕ*à—m‘mÓ#Ø×Ñ˜UÕ#à�\�\˜e§|¡|×'9Ñ'9Ó9ÜÐ3×:Ñ:¸5ÓAÔBØ—<‘<×%Ñ% eÑ,ˆDà�y‰y˜FÓ"Ø!Ÿ\™\×.Ñ.�”
Ø_�Ü�c—j‘j §¡Ó,Õ-ð ×#Ñ# EÕ*ð ×&×&ÜÐ?×FÑFÀuÓMÔNØ—
‘
Ð2×9Ñ9¸%Ó@ÕAäÐ<×CÑCÀEÓJÔKØ× Ñ  Õ'r   c                 ó‚   • [        SR                  U5      5        U R                  R                  R	                  U5        g )NzStoring unknown token {!r})r   r<   rM   r(   rO   )r)   r^   s     r   r|   ÚParseMachine.store_onlyJ  s.   € äÐ*×1Ñ1°%Ó8Ô9Ø�‰×Ñ×#Ñ# EÕ*r   c                 ó\  • [        SR                  U R                  (       a  U R                  R                  OU R                  5      5        U R                  (       a~  U R                  R                  (       ac  SnSR                  S U R                  R                   5       5      nU R                  UR                  U R                  R                  U5      5        U R                  (       aA  U R                  U R                  ;  a&  U R                  R                  U R                  5        g g g )NzWrapping up context {!r}z6'{}' did not receive required positional arguments: {}z, c              3   óX   #   • U  H   nS R                  UR                  5      v •  M"     g7f)z'{}'N)r<   r=   )Ú.0rg   s     r   Ú	<genexpr>Ú0ParseMachine.complete_context.<locals>.<genexpr>X  s'   é € ð â=�Að —‘˜aŸf™f×%Ð%Ú=ùs   ‚(*)	r   r<   rA   r=   r‘   rZ   r“   rM   rO   )r)   re   Únamess      r   rs   ÚParseMachine.complete_contextO  sÆ   € ÜØ&×-Ñ-Ø%)§\§\�—‘×!Ò!°t·|±|óô	
ð �<�<˜DŸL™L×@×@ØJˆCØ—I‘Iñ àŸ™×=Ò=óó ˆEð �J‰J�s—z‘z $§,¡,×"3Ñ"3°UÓ;Ô<Ø�<�<˜DŸL™L°·±Ó;Ø�K‰K×Ñ˜tŸ|™|Õ,ð <ˆ<r   r=   c                 óœ  • [         R                  " U R                  U   5      U l        [	        SR                  U5      5        [	        SR                  U R                  R                  5      5        [	        SR                  U R                  R                  5      5        [	        SR                  U R                  R                  5      5        g )NzMoving to context {!r}zContext args: {!r}zContext flags: {!r}zContext inverse_flags: {!r})	r�   r‚   r7   rA   r   r<   r!   rP   r�   )r)   r=   s     r   ry   ÚParseMachine.switch_to_context`  s‰   € Ü—}’} T§]¡]°4Ñ%8Ó9ˆŒÜÐ&×-Ñ-¨dÓ3Ô4ÜÐ"×)Ñ)¨$¯,©,×*;Ñ*;Ó<Ô=ÜÐ#×*Ñ*¨4¯<©<×+=Ñ+=Ó>Ô?ÜÐ+×2Ñ2°4·<±<×3MÑ3MÓNÕOr   c                 ó¦  • U R                   (       a&  Sn[        UR                  U R                   5      5        U R                   (       ay  U R                   R                  (       a^  U R                   R                  cG  U R                   R
                  (       d,  SnU R                  UR                  U R                   5      5        U R                   (       a  U R                   R                  cg  U R                   R
                  (       aK  Sn[        UR                  U R                   R                  5      5        U R                   R                  SSS9  g g g g )Nz+Completing current flag {} before moving onz-Flag {!r} needed value and was not given one!z9Saw optional flag {!r} go by w/ no value; setting to TrueTF)Úcast)	rU   r   r<   rR   rˆ   rV   r“   r=   Ú	set_value)r)   rb   re   s      r   rr   ÚParseMachine.complete_flagg  sØ   € Ø�9�9Ø?ˆCÜ�#—*‘*˜TŸY™YÓ'Ô(ð �I�IØ—	‘	×%×%Ø—	‘	×#Ñ#Ñ+Ø—I‘I×&×&àAˆCØ�J‰J�s—z‘z $§)¡)Ó,Ô-ð �9�9˜Ÿ™×,Ñ,Ñ4¸¿¹×9K×9KØMˆCÜ�#—*‘*˜TŸY™YŸ^™^Ó,Ô-à�I‰I×Ñ ¨5ÐÒ1ð	 :LÐ4ˆ9r   r   c                 ó”  • U R                   (       a  U R                   R                  (       d  gU R                   R                  b  g/ nUR                  U R                  =(       a    U R                  R
                  5        UR                  XR                  ;   5        [        U5      (       a  Sn[        UR                  U5      5      eg)z[
Guard against ambiguity when current flag takes an optional value.

.. versionadded:: 1.0
FNz9{!r} is ambiguous when given after an optional-value flag)
rU   rV   rˆ   rO   rA   r‘   r7   Úanyr   r<   )r)   r   Útestsrb   s       r   Úcheck_ambiguityÚParseMachine.check_ambiguity}  s�   € ð —	—	˜dŸi™i×0×0Øð �9‰9×ÑÑ*Øð ˆà�‰�T—\‘\×J d§l¡l×&JÑ&JÔKà�‰�UŸm™mÑ+Ô,Üˆu�:‰:ØMˆCÜ˜SŸZ™Z¨Ó.Ó/Ð/ð r   rU   rŒ   c                 ó~  • U R                  U5        U R                  5         U(       a  U R                  R                  U   OUn U R                  R                  U   U l        [        SR                  U R
                  5      5        SU l
        U R
                  (       aY  U R
                  R                  (       d=  U(       + n[        SR                  U R
                  U5      5        X@R
                  l        g g g ! [         a9  n U R                  R                  U   U l         S nANÄ! [         a    Uef = fS nAff = f)NzMoving to flag {!r}FzMarking seen flag {!r} as {})r§   rr   rA   r�   rP   rU   ÚKeyErrorr8   r   r<   rƒ   rR   r   )r)   rU   rŒ   ÚeÚvals        r   rŽ   ÚParseMachine.switch_to_flag–  sý   € à×Ñ˜TÔ"ð 	×ÑÔæ3:ˆt�|‰|×)Ñ)¨$Ò/Àˆð		ØŸ™×*Ñ*¨4Ñ0ˆDŒIô 	Ð#×*Ñ*¨4¯9©9Ó5Ô6ð $ˆÔà�9�9˜TŸY™Y×2×2Ø”+ˆCÜÐ0×7Ñ7¸¿	¹	À3ÓGÔHØ!�I‰I�Oð 3ˆ9øô ó 	ðØ ŸL™L×.Ñ.¨tÑ4�—	‘	øÜó ð �ðþð		ús$   ÁC9 Ã9
D<ÄD'Ä'D4Ä4D7Ä7D<c                 óL  • U R                  U5        U R                  (       aX  U R                  R                  (       a=  [        SR	                  U R                  U5      5        XR                  l        SU l        g U R                  SR	                  U R                  5      5        g )NzSetting flag {!r} to value {!r}Tz!Flag {!r} doesn't take any value!)r§   rU   rR   r   r<   r   rƒ   r“   )r)   r   s     r   r�   ÚParseMachine.see_value·  sj   € Ø×Ñ˜UÔ#Ø�9�9˜Ÿ™×.×.ÜÐ3×:Ñ:¸4¿9¹9ÀeÓLÔMØ#�I‰IŒOØ"&ˆDÕà�J‰JÐ:×AÑAÀ$Ç)Á)ÓLÕMr   c                 óh   • U R                   R                   H  nUR                  b  M  Xl          g    g ©N)rA   Úpositional_argsr   )r)   r   Úargs      r   r’   ÚParseMachine.see_positional_argÀ  s(   € Ø—<‘<×/Ô/ˆCØ�y‰yÓ Ø!”	Ùò 0r   rb   c                 ó,   • [        XR                  5      er±   )r   rA   )r)   rb   s     r   r“   ÚParseMachine.errorÆ  s   € Ü˜Ÿl™lÓ+Ð+r   )rA   r7   rU   rƒ   r9   r8   rM   )r   N)F)r,   r-   r.   r/   Úinitial_stater   r   ro   r~   r	   rn   r&   ÚpropertyrT   rX   r|   rs   ry   rr   r   r§   rŽ   r�   r’   r“   r1   r2   r3   s   @r   rI   rI   Í   s…  ø† Ø€Má	ˆ)˜OÐ-?Ð@ÒAÙ	ˆ)˜OÐ-?Ð@ÒAÙ	ˆ%˜Ð);Ð<Ò=áÐ+°8ÀÒFÙØØØ"Øò	ñ Ø$ØØØò	ð> Cð >¨Sð >°Tô >ðà ðð ðð ð	ð
 
÷ð$ ð¨ó ó ðð08(˜Cð 8( Dô 8(ðt+ ð +¨ô +ô
-ð"P cð P¨dô Pô2ð,0 Sð 0¨Tô 0ñ2" 3ð "°ð "À$õ "ðBN˜sð N tô Nð¨ð °ô ð,˜ð , ÷ ,ò ,r   rI   )r�   Útypingr   r   r   r   r   Úvendor.lexiconr	   Úvendor.fluidityr
   r   r   ÚImportErrorÚlexiconÚfluidityÚ
exceptionsr   Úutilr   rA   r   ro   rn   r   r   r   r5   rI   rm   r   r   Ú<module>rÁ      s›   ðÛ ß ?Õ ?ð	Ý(ßAÑAõ $Ý æÝ&ð!�3ð !˜4ô !ð"˜ð " ô "ô&�$�Ñ'ô &÷"[ñ [ô|z,�<õ z,øðM ó Ý÷ó ðús   ”A3 Á3BÂB