
    k7iaW                        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Jr  S SK	J
r
  S SKJr  S SKJrJr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JrJrJrJ r   S S
K!J"r"J#r#  S SK$J%r%  S SK&J'r'J(r(  \RR                  S:  a  O \(       a  S SK*J+r+  \" \%SS9r, " S S\5      r-SS\.-  \\.   -  S\/\.   4S jr0S\1\.S4   4S jr2SSS.S\S\\.   S\.S\34S jjr4S\S\5S\54S  jr6S\\.   S\.S\/\1\.\34      4S! jr7SS".S\S\/\.   S\.S\/\.   4S# jjr8S\4S$ jr9S\S%\4S& jr:S\4S' jr;S\/\1S(\4      4S) jr<SS".S%\S\S\/\.   S*\\   S\.S\1\ Rz                  \/\.   4   4S+ jjr>g),    N)CallableIterableSequence)suppress)partial)TYPE_CHECKINGAny
NamedTuple
get_origin)_bool)resolve_optional)ArgumentArgumentCollection)ArgumentOrderErrorCoercionErrorCombinedShortOptionErrorCycloptsErrorMissingArgumentErrorUnknownOptionErrorValidationError)POSITIONAL_ONLYPOSITIONAL_OR_KEYWORD)Token)UNSETis_option_like)      )Groupcli)sourcec                   R    \ rS rSr% Sr\\S'    \\S'    \\S4   \S'    \	\S'   Sr
g	)
_KeywordMatch'   z?Represents a matched CLI token with its corresponding argument.matched_tokenargument.keysimplicit_value N)__name__
__module____qualname____firstlineno____doc__str__annotations__r   tupler	   __static_attributes__r(       G/home/james-whalen/.local/lib/python3.13/site-packages/cyclopts/bind.pyr"   r"   '   s1    II&
S/-<r2   r"   tokensreturnc                     U c  [         R                  SS  n U $ [        U [        5      (       a  [        R
                  " U 5      n U $ [        U 5      n U $ )N   )sysargv
isinstancer.   shlexsplitlist)r4   s    r3   normalize_tokensr>   7   sQ    ~!"
 M	 
FC	 	 V$ M fMr2   .c           	      2   U (       d  gU S   R                   nU SS   Hv  nUR                   (       d    g[        [        XR                   SS95       H'  u  nu  pEXE:w  d  M  US:X  a      gUR                   S U n  O   US [        UR                   5       nMx     U$ )Nr(   r   r7   F)strict)r&   	enumerateziplen)argument_collectioncommonr%   i
common_keyargument_keys         r3   _common_root_keysrI   A   s     #((F'+}}-6s6==Y^7_-`)A)
)6!r* .a ,#hmm,- , Mr2   --F)end_of_options_delimiterstop_at_first_unknownrD   rK   rL   c                P   / / pTSnU(       a   UR                  U5      nXS  nUS U n[        U5       GH  u  pUS:  a  US-  nM  [        U	SS9(       d0  U(       a  UR	                  XS  5          GOUR                  U	5        MR  / n
SnU	R                  S5      =(       a    U	R                  S5      (       + nSU	;   a?  U	R                  SS5      u  p U R                  U5        U
R                  U5        US-  nSnOU	n/ nS n UR                  [        U/U R                  U5      Q76 5        [        U5       GH  u  nnUb#  U[        U5      S-
  :X  a  U
R                  U5        UR                  R                  R                  (       a/  UR                  R                  [!        UR"                  SS
95        M  UR$                  [        La  U
(       a   ['        U
S   5      nU(       a9  UR                  R                  [!        UR"                  UR$                  S
95        M  [-        UR$                  [.        5      (       a?  UR                  R                  [!        UR"                  UR$                  (       + S
95        GMH  GMK  UR                  R                  [!        UR"                  UR$                  S
95        GM  [        U5      S:  a$  [1        S U 5       5      nUS:  a  [3        SU 3S9eUR                  R5                  UR6                  5      u  nn[9        [:        5         U(       a  UR                  R                  R<                  (       au  [>        R                  " 5        H[  n XS-   U -      n	UR                  R                  R@                  (       d  [        U	5      (       a    GOU
R                  U	5        US-  nM]     OUU-  n[C        U5       H  n [        U
5      S:X  aO  UR                  RE                  U
5      (       d+  UR                  RG                  U
UR6                  5      (       a  Sn  OxXS-   U -      n	UR                  R                  R@                  (       d/  [        U	5      (       a  [I        UR                  U
UR"                  S9eU
R                  U	5        US-  nM     S S S 5        U
(       d  U(       a  UR                  R                  R<                  (       as  [K        UR                  RL                  5      n![O        U!5      =(       d    U!" 5       n"UR                  R                  [!        UR"                  U"UR6                  S95        GM(  [I        UR                  U
UR"                  S9e[        U
5      U-  (       a  [I        UR                  U
UR"                  S9e[        U
5       H?  u  n#nUR                  R                  [!        UR"                  UU#UR6                  S95        MA     GM     GM     UR	                  U5        U$ ! [         a     GNf = f! [         a    U	n GN>f = f! [         Gar    U(       Ga4  [        U	5      S	:  Ga$  UR                  S5      nSnU[        U5      :  a  UU   nSU 3n U R                  U5      u  nnnU[        Ld  UR                  R                  (       a#  UR                  [        UUUU5      5        US-  nO|UUS-   S  nUR                  [        UUUU5      5        U(       a  UnUS-  nOY! [         a;    U(       a  UR	                  XS  5        Us s s  $ UR                  U5        US-  n Of = fU[        U5      :  a  M  U(       d   GMQ   GNZU(       a  UR	                  XS  5        Us s  $ UR                  U	5         GM  f = f! [(         aI  nUR*                  c  [!        UR"                  S9Ul        UR                  c  UR                  Ul        e S nAff = f! , (       d  f       GNk= f)Nr   r7   T)allow_numbers-rJ   =F   )keywordr'   )rR   c              3      #    U  HB  oR                   [        L d  M  UR                  R                  R                  (       a  M>  S v   MD     g7f)r7   N)r'   r   r%   	parametercount).0ms     r3   	<genexpr>&_parse_kw_and_flags.<locals>.<genexpr>   s7      -#*a.>.>%.GPQPZPZPdPdPjPj7s   A#A	Az6Cannot combine multiple value-taking options in token )msg)r%   tokens_so_farrR   )rR   r'   r&   )rR   valueindexr&   )(r^   
ValueErrorrA   r   extendappend
startswithr<   matchr"   rC   lstripr   rU   rV   r%   CliTokenr$   r'   r   r   tokenr:   boolsumr   token_countr&   r   
IndexErrorconsume_multiple	itertoolsallow_leading_hyphenrange_should_attempt_json_dict_should_attempt_json_listr   r   hintr   )$rD   r4   rK   rL   unused_tokenspositional_only_tokensskip_next_iterationsdelimiter_indexrF   rf   
cli_valuesconsume_countallow_combined_flags
cli_option	cli_valuematchesattached_valuecharspositionchar	test_flagargr&   implicit	remaindermatch_indexrc   coerced_valueevalue_taking_counttokens_per_elementconsume_alljrq   empty_containerr^   s$                                       r3   _parse_kw_and_flagsr   S   sC    -/)	.$ll+CDO &,,<%=",_-Ff%!# A% e48$$$VBZ0  ' "
  %//4SU=M=Md=S9S %<$)KKQ$7!J	##))*5!!),"',$ J')%)2	NN=\6I6O6OPZ6[\]d #,G"4K )kS\A=M.M!!.1~~''--%%hu7J7J[\&]^%%U2(-jn(= %--$U-@-@QVQeQef &e&:&:DAA!NN11 (1D1DY^YmYmUm n !NN))(5;N;N_d_s_s*tu w<!#), -#*- *& *A-6"XYcXd e  38..2L2LUZZ2X/"K j)"u~~'?'?'P'P!*!2A$*q519$5E#(>>#;#;#P#PUcdiUjUj %&--e40A50 "3 &);;!&}!5A":!3 % H H T T#(>>#K#KJX]XbXb#c#c56 2 !&$*q519$5E#(>>#;#;#P#PUcdiUjUj&:-2^^2<,1,?,?'" !"
 '--e40A50% "6 *< ""u~~'?'?'P'P/0C0CD+5d+;+Ct+C*F--$U-@-@Q`glgqgqr
 3%*^^:W\WjWj  _'99.!&zSXSfSf 
 -6j,A(y--$U-@-@	Y^ejeoeop -BO #5u &L /0Y  		F  # #
#  0	#E
Q #))#.U+ ?D"#D6
I&.A.G.G	.R+T8#50CMM4G4G#NN=Cx+XY$MH ).hln(=I#NN=Cx+XY( 2; - 2!% &0)00<#00%,,Y7 A&/ U+>   )!((4(($$U+a0	| ) 77?&.u7J7J&KAG::-).AJN *)s   X )X-*Y _ 'F`
X*)X*-X=<X= A^=A\ +^=,3\ ^= &]%^=]%"^=$]%%^=9^=^='^=<^= 
`
A``
`%starting_indexc                 &   Sn[         R                  " 5        Hc  n U R                  X-   5      u  n  nUR                  R
                  [        La    U$ UR                  5       u  pgU(       a  [        S5      eX&-  nMe     U$ ! [         a       U$ f = f)Nr   z1Cannot have 2 all-consuming positional arguments.)rl   rV   rc   r_   
field_infokindr   ri   )rD   r   n_tokens_to_leaverF   r%   _future_tokens_per_elementfuture_consume_alls           r3   #_future_positional_only_token_countr   .  s    __	066~7IJNHa ##?:
 	 9A8L8L8N5!PQQ6    	 	s   B
BBc                      U R                  U5      nU S U  Vs/ s H  o3S4PM     snXS-   S   Vs/ s H  o3S4PM     sn-   $ s  snf s  snf ! [         a    U  Vs/ s H  o3S4PM     Os  snf sns $ f = f)NFr7   T)r^   r_   )r4   rK   ru   ts       r3   _preprocess_positional_tokensr   >  s    , ,,'?@$*+;O$<=$<qE
$<=TZmn[n[pTq@rTqqTTq@rrr=@r ,$*+FqE
F++,s7   A AA A	A 
A A5A*)	A54A5rK   c          	         / nU(       d  / $ [        X5      n[        R                  " 5        GH  n U R                  U5      u  n  nUR
                  R                  [        L a  UR                  (       a-  UR                  S   R                  b  UR                  U5        Mu  U(       aR  US   nUR                  R                  (       d!  [        U5      (       a  [        [        US9U S9e[!        UUUS   S   S9eUR#                  5       u  p[%        SU	5      n	U
(       a,  UR
                  R                  [&        L a  [)        XS-   5      nOSn/ n[+        U5      U-
  S:  a  [+        U5      U-
  U	:  a  [-        UU Vs/ s H  oS   PM	     snS9e[/        US U	 5       Hc  u  nu  pU(       d<  UR                  R                  (       d!  [        U5      (       a  [        [        US9U S9eUR                  [        XS95        Me     XIS  nU
(       d  O[+        U5      U-
  S:  a  M  XR                  S S& U(       a  GM    O   U Vs/ s H  oS   PM	     sn$ ! [         a       M#  f = fs  snf s  snf )Nr   )r]   )rf   rD   )r%   9prior_positional_or_keyword_supplied_as_keyword_argumentsrf   r7   )r%   r\   )r]   r^   )r   rl   rV   rc   r_   r   r   r   r4   rR   ra   rU   rm   r   r   re   r   ri   maxr   r   rC   r   rA   )rD   r4   rK   r   tokens_and_force_positionalrF   r%   r   rf   r   r   r   
new_tokensxr^   force_positionals                   r3   
_parse_posr   F  s}    AC=	"?"a__	066q9NHa ##'<<8??1#5#=#=#IIPPQYZHq	))>>>RWCXCX -8%3H^qrr,!) SL9!<Q?  +3*>*>*@' $678..33F !DDW]^Y^ _ !
./2CCqH/03DDHZZ*%1L"M1LAQ41L"M 
 5>>YZm[m>n4o00'0B0B0W0W\jkp\q\q,8%3H^qrr!!("DE 5p +FFY*Z' ./2CCqH )**k n 665QaD566i  		L #N 7s   I=I(I-
I%$I%c           
      :   U  H  nUR                   (       a  M  UR                  R                  c   eUR                  R                   H;  n [        R                  U   nUR                   R                  [        X#SS95          M     M     g ! [         a     MQ  f = f)Nenv)rR   r]   r    )r4   rU   env_varosenvironra   r   KeyError)rD   r%   env_var_nameenv_var_values       r3   
_parse_envr     s    '??!!))555$..66L "

< 8 &&u\_d'ef 7 (  s   B
BBfuncc                     [         R                  " U5      R                  5       nU R                   HE  nUR                  [
        Ld  M  UR                  UR                  UR                  R                  '   MG     U$ )z+Bind the mapping to the function signature.)	inspect	signaturebind_partial_root_argumentsr]   r   	argumentsr   name)rD   r   boundr%   s       r3   _bindr     s^    
 d#002E'77>>&8@EOOH//445 8 Lr2   c                 &    U H  nU" U 5        M     g Nr(   )rD   configsconfigs      r3   _parse_configsr     s    "# r2   r   c                    0 n[        [        U R                  S S95       H3  u  p#U R                  US9n[	        U5      nX4R                  US94XU4'   M5     [        UR                  5       SS9 VVs/ s H  u  pgUPM	     snn$ s  snnf )zSort groups into "deepest common-root-keys first" order.

This is imperfect, but probably works sufficiently well for practical use-cases.
c                     U R                   $ r   )r   )r   s    r3   <lambda>_sort_group.<locals>.<lambda>  s    qvvr2   )key)group)keys_prefixT)reverse)rA   sortedgroups	filter_byrI   items)rD   outrF   r   group_argumentscommon_root_keysr   gas           r3   _sort_groupr     s    
 Cf%8%?%?EUVW-77e7D,_=&+-F-FSc-F-d%eq!"	 X
 #399;=>=51B=>>>s   3Br   c                   Un [        XUS9n[        XUS9n[        U5        [        X5        UR	                  5         [        U5      n U H   u  pxUR                   H  n	U	" U5        M     M"     U Hf  nUR                  R                  (       a,  UR                  R                  (       a  UR                   (       a  ML  UR"                  (       a  M_  [%        US9e   ['        X5      nX4$ ! [        [        [        4 a0  n
[        U
R                  (       a  U
R                  S   OSWS9U
eSn
A
ff = f! [(         a  n
X*l        XZl        e Sn
A
ff = f)aT  Parse and coerce CLI tokens to match a function's signature.

Parameters
----------
func: Callable
    Function.
argument_collection: ArgumentCollection
tokens: list[str]
    CLI tokens to parse and coerce to match ``f``'s signature.
configs: Iterable[Callable]
end_of_options_delimiter: str
    Everything after this special token is forced to be supplied as a positional argument.

Returns
-------
bound: inspect.BoundArguments
    The converted and bound positional and keyword arguments for ``f``.

unused_tokens: list[str]
    Remaining tokens that couldn't be matched to ``f``'s signature.
r   r    )exception_messager   N)r%   )r   r   r   r   _convertr   	validatorAssertionErrorr_   	TypeErrorr   argsrU   parser   requiredr&   
has_tokensr   r   r   root_input_tokensrr   )r   rD   r4   r   rK   rr   groups_with_argumentsr   r   r   r   r%   r   s                r3   create_bound_argumentsr     sG   : M +Ia
 #Ia
 	&'*4$$& +,? @	e*?&!&Io. "1 +@ ,H %%++83F3F3O3OS[S`S`&&&*H== , )0 # 
I6 	e!AFF1IRW\]cdd	e  $'sC   AD2 
&C* 0AD2 D2 *D/?+D**D//D2 2
E<E		E)?r   rl   r   r;   r8   collections.abcr   r   r   
contextlibr   	functoolsr   typingr   r	   r
   r   cyclopts._convertr   cyclopts.annotationsr   cyclopts.argumentr   r   cyclopts.exceptionsr   r   r   r   r   r   r   cyclopts.field_infor   r   cyclopts.tokenr   cyclopts.utilsr   r   version_infocyclopts.groupr   re   r"   r.   r=   r>   r0   rI   rg   r   intr   r   r   r   r   r   r   BoundArgumentsr   r(   r2   r3   <module>r      s-     	  
 8 8   = = # 1 :   G   0g $5'=J = TCZ(3-7 DI eCHo , %)"'X+XSMX "	X
  Xv=O ad il  ,(3- ,SV ,[_`efikofo`p[q , %)	D7+D7ID7 "	D7
 
#YD7N$6  	+	
	$(: $?U7<N3N-O(P ?* %)A 
A +A  IA  h	A  "A  7!!49,-A r2   