+
    Q(iT                        R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHtHt ^ RI	H
t
 ^ RIHtHt ^ RIHtHtHtHt ^ RIHtHt ^ RIHtHtHtHt ^ RIHtHtHtHtH t H!t!H"t"H#t#H$t$H%t%H&t&H't'H(t( ^ R	I)H*t*H+t+H,t,H-t-H.t.H/t/ ^ R
I0H1t1H2t2H3t3H4t4H5t5H6t6H7t7 ^ RI8H9t9H:t: ^ RI;H<t< ^ RI=H>t>H?t?H@t@ ^RIAHBtBHCtCHDtDHEtEHFtF ]'       d   ^ RIGHHtH ]! RR7       ! R R4      4       tIR# )z)Argument class and related functionality.N)CallableSequence)suppress)partialreduce)TYPE_CHECKINGAnyget_args
get_origin)definefield)_validate_json_extra_keysconvertinstantiate_from_dicttoken_count)ITERABLE_TYPEScontains_hintis_attrsis_dataclassis_enum_flagis_namedtupleis_nonetypeis_pydanticis_typeddictis_unionresolveresolve_annotatedresolve_optional)CoercionErrorCycloptsErrorMissingArgumentErrorMixedArgumentErrorRepeatArgumentErrorValidationError)	FieldInfo_attrs_field_infos_generic_class_field_infos_pydantic_field_infos_typed_dict_field_infosget_field_infossignature_parameters)ITERATIVE_BOOL_IMPLICIT_VALUE	ParameterToken)UNSETgrouper
is_builtin)enum_flag_from_dictget_annotated_discriminatorget_choices_from_hintmissing_keys_factory
startswithArgumentCollectionT)kw_onlyc                     a  ] tR t^Et o Rt]! ]R7      t ]! ]R7      t	 ]! ]
R7      t ]! ]]R7      t ]! RR7      t ]! RTR7      t ]! R]R7      t ]! RRRR	7      t]! RRRR	7      t]! ]RRR
7      t]! RRR7      t ]! RRRR	7      t]! RRRR	7      t]! RRRR	7      t]! RRRR	7      t]! RRRR	7      tR tV 3R lR lt]R 4       t ] PB                  R 4       t ]R 4       t"]"PB                  V 3R lR l4       t"]V 3R lR l4       t#]V 3R lR l4       t$]V 3R lR l4       t%V 3R lR lt&RUV 3R lR llt'RVV 3R lR llt(R RR!R"/V 3R# lR$ llt)R RR!R"/V 3R% lR& llt*V 3R' lR( lt+V 3R) lR* lt,]V 3R+ lR, l4       t-]V 3R- lR. l4       t.R/ t/RUV 3R0 lR1 llt0RUV 3R2 lR3 llt1R4 t2RUV 3R5 lR6 llt3RWV 3R7 lR8 llt4]R9 4       t5]V 3R: lR; l4       t6]V 3R< lR= l4       t7RUV 3R> lR? llt8]V 3R@ lRA l4       t9]V 3RB lRC l4       t:]V 3RD lRE l4       t;V 3RF lRG lt<V 3RH lRI lt=V 3RJ lRK lt>RXV 3RL lRM llt?V 3RN lRO lt@RP tARQ tBV 3RR ltCRStDV tER# )YArgumentzEncapsulates functionality and additional contextual information for parsing a parameter.

An argument is defined as anything that would have its own entry in the help page.
)factory)default	converterN)r=   value)aliasr=   F)r=   initrepr)r<   rA   rB   )rA   rB   c                X
   ^ RI Hp V! 4       V n        \        V P                  4      p\        V4      '       d   \        V4      MV3pV P                  P                  '       de   \        V4      pV\        J g7   V\        J gF   \        V\        4      '       d   \        V\        4      '       g   \        RV P                   R24      hV P                  P                   '       d(   V P                  P"                  '       d   \        R4      hV P$                  '       g   V P&                  P(                  V P&                  P*                  J pV P&                  P,                  V P&                  P.                  JpV'       g,   V'       g$   \        RV P&                  P0                   R24      hR# V P                  P2                  RJ d   R# V EFJ  p\5        V4      pW'0p\7        V4      p	\8        V9   dm   R	V n        \<        \<        r\        V4      p\?        \@        4      ;_uu_ 4        V^ ,          p
V^,          pRRR4       V
\<        Jd   \C        R
4      hWn"        EM\G        V4      '       d/   \I        \J        4      V n&        R	V n        V PO                  V	4       EM\Q        V4      '       d/   \I        \R        4      V n&        R	V n        V PO                  V	4       EMi\U        V4      '       dL   \I        \R        4      V n&        R	V n        \W        VR4      '       g   \        R4      hV PO                  V	4       EM\Y        V4      '       d.   \I        \Z        4      V n&        R	V n        V PO                  V	4       M\]        V4      '       d.   \I        \^        4      V n&        R	V n        V PO                  V	4       M\a        V4      '       d    W n1        R	V n        V PO                  V	4       Ma\e        V4      '       g6   V	'       d.   \I        \R        4      V n&        R	V n        V PO                  V	4       MV P                  P2                  f   EK{  V P                  P2                  f   EK  R	V n        \I        \R        4      V n&        \g        \i        VPj                  4      Pm                  4       4       Fi  w  rV^ 8X  d   VP0                  R8X  d   K  VP(                  VPn                  J d   VPp                  V n"        KL  V PO                  VP0                  V/4       Kk  	  EKM  	  R#   + '       g   i     EL; i)    r7   z5Parameter(count=True) requires an int type hint, got zA. Use 'Annotated[int, Parameter(count=True)]' for counting flags.zParameter(requires_equals=True) and Parameter(consume_multiple=...) cannot be used together. requires_equals enforces '--option=value' syntax, which is incompatible with consume_multiple's space-separated value consumption.zNon-parsed parameter 'zD' must be a KEYWORD_ONLY function parameter or have a default value.NFTz1Dictionary type annotations must have "str" keys.__annotations__zGCyclopts cannot handle collections.namedtuple without type annotations.self)9cyclopts.argument._collectionr8   childrenr   hintr   r	   	parametercountr   boolint
isinstancetype
issubclass
ValueErrorrequires_equalsconsume_multipleparse
field_infokindKEYWORD_ONLYr=   emptynameaccepts_keysr
   r)   dict_accepts_keywordsstrr   
IndexError	TypeError_defaultr   r5   r(   _missing_keys_checker_update_lookupr   r&   r   hasattrr   r%   r   r'   r   _enum_flag_typer1   	enumerater*   __init__valuesVAR_KEYWORD
annotation)rF   r8   rI   hintsresolved_hintis_keyword_onlyhas_defaultoriginhint_originfield_infoskey_typeval_typeargsirU   s   &              a/Users/agent/.openclaw/workspace/venv/lib/python3.14/site-packages/cyclopts/argument/_argument.py__attrs_post_init__Argument.__attrs_post_init__   s   D*,tyy!"*4..tg>>,T2M$$M4)H)HZXegjMkMk KDII; WV W 
 >>)))dnn.M.M.MH  zzz"oo22doo6R6RRO//119N9NNK#{ ,T__-A-A,B C/ /  >>&&%/D%F.K)$/K{")-&%(#(~j))#AwH#AwH * 3&#$WXX (d##-ABY-Z*)-&##K0d##-AB\-]*)-&##K0t$$-AB\-]*)-&t%677$%noo##K0$-ABT-U*)-&##K0T""-ABW-X*)-&##K0d##'+$)-&##K0%%+-AB\-]*)-&##K0,,4~~**2%)D")=>X)YD&!*+?+N+U+U+W!X6joo7??j&<&<<$.$9$9DM''*(EF "Yk  *))s   #TT)c                6   < V ^8  d   QhRS[ S[S[3,          /# )   rp   )r[   r]   r$   )format__classdict__s   "ru   __annotate__Argument.__annotate__  s     / /$sI~*> /    c                   ^ RI Hp \        V P                  P                  4      pVP                  4        F  w  rEV P                  P                  V4      ;p'       dq   We8X  d   K0  V'       d[   W5P                  9   dK   W6P                  9   d;   W&P                  VP                  3,          Vn        \        P                  Vn        K  \        hWPP                  V&   K  	  R# )rD   )LiteralN)typingr   r3   rU   ri   items_lookupgetnamesr$   rX   r=   NotImplementedError)rF   rp   r   discriminatorkeyrU   existing_field_infos   &&     ru   rb   Argument._update_lookup  s    "3DOO4N4NO*002OC&*ll&6&6s&;;";&4"}8H8H'H]^w^wMw5<=[=[]g]r]r=r5s'22;//'/--$.S!  3r~   c                    V P                   # )zConverted value from last :meth:`convert` call.

This value may be stale if fields have changed since last :meth:`convert` call.
:class:`.UNSET` if :meth:`convert` has not yet been called with tokens.
)_valuerF   s   &ru   r?   Argument.value   s     {{r~   c                R    V P                   '       d   R V n        R V n         Wn        R# )TN)_marked_mark_converted_overrider   )rF   vals   &&ru   r?   r   )  s    <<<,0D)r~   c                <    V P                   V P                  ,          # )zdIf ``True``, then this node in the tree has already been converted and ``value`` has been populated.)_marked_convertedr   r   s   &ru   r   Argument._marked0  s     %%(E(EEEr~   c                    < V ^8  d   QhRS[ /# )ry   r?   rL   )rz   r{   s   "ru   r|   r}   6  s     ' 'T 'r~   c                    Wn         R # N)r   )rF   r?   s   &&ru   r   r   5  s    !&r~   c                    < V ^8  d   QhRS[ /# ry   returnr   )rz   r{   s   "ru   r|   r}   :  s     C CT Cr~   c                    \        V P                  4      '       d   \        V P                  4      MV P                  3p\        ;QJ d    R  V 4       F  '       g   K   R# 	  R# ! R  V 4       4      # )c              3   J   "   T F  p\         V\        V4      39   x  K  	  R # 5ir   )r[   r
   ).0args   & ru   	<genexpr>7Argument._accepts_arbitrary_keywords.<locals>.<genexpr><  s     BTc4CC11Ts   !#TF)r   rI   r	   any)rF   rs   s   & ru   _accepts_arbitrary_keywords$Argument._accepts_arbitrary_keywords9  sO    &.tyy&9&9x		"		|sBTBssBsBsBTBBBr~   c                H   < V ^8  d   QhRS[ S[S[.S[3,          ,          /# r   )rL   r   r   r]   )rz   r{   s   "ru   r|   r}   ?  s$     	/ 	/dXseSj%99 	/r~   c                |   V P                   '       d   R# V P                  P                  f0   V P                  P                  RV P                  P
                  39  # V P                  P                  V P                  P
                  J g   V P                  P                  '       g   R# V P                  P                  # )z(Show the default value on the help page.FN)requiredrJ   show_defaultrU   r=   rX   r   s   &ru   r   Argument.show_default>  s     ===^^((0??**49N9N2OOOoo%%)>)>>t~~GbGbGb>>...r~   c                    < V ^8  d   QhRS[ /# r   r   )rz   r{   s   "ru   r|   r}   K  s     

 

D 

r~   c                   \        \        V P                  4      ;'       g    \        V P                  4      ;'       d    \        ;QJ d/    R  \        V P                  4       4       F  '       g   K   RM$	  RM ! R  \        V P                  4       4       4      ;'       g     \        V P                  P                  4      4      # )c              3   8   "   T F  p\        V4      x  K  	  R # 5ir   )r   r   xs   & ru   r   6Argument._use_pydantic_type_adapter.<locals>.<genexpr>Q  s     D0C1A0C   TF)	rL   r   rI   r   r   r	   r3   rU   ri   r   s   &ru   _use_pydantic_type_adapter#Argument._use_pydantic_type_adapterJ  s    		"  #  CD0CDCCCD0CDD O O24??3M3MN	
 		
r~   c                    < V ^8  d   QhRS[ /# )ry   r   r]   )rz   r{   s   "ru   r|   r}   W  s     ! !c !r~   c                     V P                   V,          P                  #   \         d    T P                  f   h T P                  u # i ; ir   )r   ri   KeyErrorr`   )rF   r   s   &&ru   _type_hint_for_keyArgument._type_hint_for_keyW  sB    	!<<$/// 	!}}$== 	!s    &AAc                T   < V ^8  d   QhRS[ S[S[,          ,          R,          RS[/# )ry   tokensNr   )r   r.   r]   rL   )rz   r{   s   "ru   r|   r}   _  s*      0E0L X\ r~   c                x   Vf   V P                   pV'       g   R# \        V^ ,          \        4      '       d   V^ ,          P                  MV^ ,          pVP	                  4       P                  R4      '       g   R# V P                  '       d]   V P                  P                  e   V P                  P                  # \        V P                  P                  \        4      '       d   R# R# \        V P                  4      p\        V4      pV\         9   d'   \#        V4      pV'       d   V^ ,          \        Jd   R# R# )zEWhen parsing, should attempt to parse the token(s) as json dict data.F{T)r   rN   r.   r?   stripr6   r\   rJ   	json_dictr   rU   ri   r]   r   rI   r
   r   r	   )rF   r   r?   rI   rn   rs   s   &&    ru   _should_attempt_json_dict"Argument._should_attempt_json_dict_  s    >[[F#-fQi#?#?q	VAY{{}'',,!!!~~''3~~///T__77==tyy!D!^#D>DQs*r~   c                   < V ^8  d   QhRS[ S[S[,          ,          S[,          S[,          R,          RS[S[R3,          RS[/# )ry   r   Nkeys.r   )r   r.   r]   tuplerL   )rz   r{   s   "ru   r|   r}   y  sH      us{+e3c9D@OTUXZ]U]	r~   c                   Vf   V P                   pV'       g   R# V P                  V4      w  r4V'       g   R# \        V\        4      '       d   VP                  pMR\        V\
        4      '       d   TpM9\        V^ ,          \        4      '       d   V^ ,          P                  MV^ ,          pVP                  4       P                  R4      '       g   R# V P                  P                  e   V P                  P                  # \        V P                  P                  4      ;'       g    \
        3 F  p\        V\
        4      '       g   K   R# 	  R# )zEWhen parsing, should attempt to parse the token(s) as json list data.F[T)r   r   rN   r.   r?   r]   r   r6   rJ   	json_listr	   rU   ri   r   )rF   r   r   _consume_allr?   r   s   &&&    ru   _should_attempt_json_list"Argument._should_attempt_json_listy  s     >[[F))$/fe$$LLE$$E'1&)U'C'CF1IOOPQE{{}'',,>>##/>>+++DOO667AAC6ACS#&& B r~   	transform	delimiter.c                   < V ^8  d   QhRS[ S[,          RS[S[ .S[ 3,          R,          RS[ RS[S[S[ R3,          S[3,          /# ry   termr   Nr   r   .)r]   rM   r   r   r   )rz   r{   s   "ru   r|   r}     sY     
 
Ci
 SE3J'$.	

 
 
uS#X#	$
r~   c                   V P                   '       g   \        h\        V\        4      '       d   V P	                  V4      # V P                  WVR7      # )aF  Match a name search-term, or a positional integer index.

Raises
------
ValueError
    If no match is found.

Returns
-------
tuple[str, ...]
    Leftover keys after matching to this argument.
    Used if this argument accepts_arbitrary_keywords.
Any
    Implicit value.
    :obj:`~.UNSET` if no implicit value is applicable.
)r   r   )rT   rQ   rN   rM   _match_index_match_name)rF   r   r   r   s   &&$$ru   matchArgument.match  sQ    . zzz $$$ d#	
 !!$y!Q	
r~   c                   < V ^8  d   QhRS[ RS[S[ .S[ 3,          R,          RS[ RS[S[S[ R3,          S[3,          /# r   )r]   r   r   r   )rz   r{   s   "ru   r|   r}     sa     U@ U@U@ SE3J'$.	U@
 U@ 
uS#X#	$U@r~   c                  V P                   P                  V P                   P                  J d0   \        VP	                  R4      P                  V4      4      \        3# Tp\        pV P                  P                  '       g   Q hV P                  P                   F  pV'       d	   V! V4      p\        W4      '       g   K&  V\        V4      R pV P                  \        J g   V P                  \        9   d   RM\        pV'       d   V^ ,          V8X  d   VR,          p EM8K  RV3u # 	  \        V P                   P                  4      p\!        V4      '       d   \#        V4      pMV3pV F  p\        V4      pRp	V P                  P%                  V4       F  pV'       d	   V! V4      p\        W4      '       g   K&  V\        V4      R pV\        9   d   RpM=\'        V4      '       g   Vf   RpM%\)        V4      p\+        V4      ;'       g    T! 4       pV'       d   V^ ,          V8X  d   VR,          pRp	 MK  RV3u u # 	  V	'       g   K   M	  \,        hV P.                  '       g   \,        h\        VP                  V4      4      V3# )a  Check how well this argument matches a token keyword identifier.

Parameters
----------
term: str
    Something like "--foo"
transform: Callable
    Function that converts the cyclopts Parameter name(s) into
    something that should be compared against ``term``.

Raises
------
ValueError
    If no match found.

Returns
-------
tuple[str, ...]
    Leftover keys after matching to this argument.
    Used if this argument accepts_arbitrary_keywords.
Any
    Implicit value.
-NT   NNF )rU   rV   rh   r   lstripsplitr/   rJ   rY   r6   lenrI   rL   r+   r   ri   r   r	   get_negativesr   r   r
   rQ   r   )
rF   r   r   r   trailingimplicit_valuerY   rI   rj   double_breaks
   &&$$      ru   r   Argument._match_name  s&   < ??4??#>#>>S)//	:;UBB~~"""""NN''D $%%D	,)-d):diiKh>hns{i/#+B< 0 ~-- ( %T__%?%?@D~~ (.$ NN88>D (!$--#'D	#4#@@-2N(..$,-1N#3D#9D.8.>.F.F$.F-IN#'{i7+3B</3 %  8
 $&~#55% ?&  </ 2 ! ///X^^I./??r~   c                P   < V ^8  d   QhRS[ RS[S[S[R3,          S[3,          /# )ry   indexr   .)rM   r   r]   r   )rz   r{   s   "ru   r|   r}   	  s-      # %c3h0D*E r~   c                    V P                   f   \        hV P                  P                  V P                  P                  J d    WP                   8  d   \        h R\
        3# WP                   8w  d   \        hR\
        3# Nr   )r   rQ   rU   rV   VAR_POSITIONALr/   )rF   r   s   &&ru   r   Argument._match_index	  sk    ::__!!T__%C%CCzz!   " 5y jj 5yr~   c                    < V ^8  d   QhRS[ /# )ry   tokenr-   )rz   r{   s   "ru   r|   r}     s     " "E "r~   c                  a V P                   '       g   \        h\        ;QJ d)    V3R lV P                   4       F  '       g   K   RM	  RM! V3R lV P                   4       4      '       d   V P                  P
                  RJ d   \        SR7      hV P                  SP                  4      w  r#V P                  P
                  RJ dG   V'       g>   V P                   Uu. uF!  qDP                  SP                  8w  g   K  VNK#  	  upV n        M0V'       g)   V P                  P                  '       g   \        SR7      hV P                  '       du   \        SP                  4      \        ;QJ d&    R V P                   4       F  '       g   K   RM	  RM! R V P                   4       4      ,          '       d   \        V R7      hV P                  P                  S4       R# u upi )zSafely add a :class:`Token`.c              3   T   <"   T F  qP                   SP                   8H  x  K  	  R # 5ir   )address)r   r   r   s   & ru   r   "Argument.append.<locals>.<genexpr>  s     ?;ayyEMM);s   %(TF)r   c              3   8   "   T F  qP                   x  K  	  R # 5ir   )r   r   s   & ru   r   r   $  s     %Bkffkr   argumentN)rT   rQ   r   r   rJ   allow_repeatingr"   r   r   r   rK   rL   r!   append)rF   r   r   r   r   s   &f   ru   r   Argument.append  s-   zzz3?4;;?333?4;;???~~--6)66!--ejj9NA~~--5".2kk"XkYY%--=W11k"XDK )=)=)=)66;;;EJJ##%Bdkk%B###%Bdkk%B"BBB($775! #Ys   !G$G$c                    < V ^8  d   QhRS[ /# r   r   )rz   r{   s   "ru   r|   r}   )  s     M MD Mr~   c                    \        V P                  4      ;'       gI    \        ;QJ d&    R V P                   4       F  '       g   K   R# 	  R# ! R V P                   4       4      # )z@This argument, or a child argument, has at least 1 parsed token.c              3   8   "   T F  qP                   x  K  	  R # 5ir   )
has_tokensr   s   & ru   r   &Argument.has_tokens.<locals>.<genexpr>+  s     'Lmmr   TF)rL   r   r   rH   r   s   &ru   r   Argument.has_tokens(  sF     DKK LLCC'Ldmm'LCCLCLC'Ldmm'L$LLr~   c                   < V ^8  d   QhRR/# )ry   r   r8   r   )rz   r{   s   "ru   r|   r}   .  s      $8 r~   c                    ^ RI Hp V! 4       pV P                   F/  pVP                  V4       VP	                  VP
                  4       K1  	  V# )rD   r7   )rG   r8   rH   r   extendchildren_recursive)rF   r8   outchilds   &   ru   r   Argument.children_recursive-  s@    D "]]EJJuJJu//0 # 
r~   c                $   V P                   '       dJ   ^ RIpV P                  4       p VP                  V P                  P
                  4      P                  V4      # \        #   TP                   d   pT P                  T4        Rp?R# Rp?ii ; i)rD   N)
r   pydantic_jsonTypeAdapterrU   ri   validate_pythonr#   !_handle_pydantic_validation_errorr/   )rF   r  unstructured_dataes   &   ru   _convert_pydanticArgument._convert_pydantic7  sv    ??? $

:++DOO,F,FGWWXijj L ++ :66q99:s   3A" "B3B

Bc                .   < V ^8  d   QhRS[ R,          /# ry   r>   Nr   )rz   r{   s   "ru   r|   r}   C  s     d d(T/ dr~   c           
       a aaa ^ RI Hp S P                  P                  '       dm   \	        S P                  P                  \
        4      '       d,   \        S P                  S P                  P                  4      oM@S P                  P                  oM)Sf&   \        \        S P                  P                  R7      oSf   Q hVV 3R loS P                  '       g	   \        pV# S P                  P                  '       d   \        R S P                   4       4      pV# S P                   '       Eg    . p/ pV 3R lp\#        V! S P                  4      4      pV EF  p\%        S P                  4      p	VP&                  \        JdP   \	        VP&                  \)        V	4      ;'       g    T	4      '       d!   \+        V4      ^8X  g   Q hVP&                  u # VP,                  '       d^   Tp
VP,                  RR  F  pV
P/                  V/ 4      p
K  	  V
P/                  VP,                  R,          . 4      P1                  V4       MVP1                  V4       V'       g   EK  V'       g   EK  \3        S R7      h	  V'       d   S P4                  '       d   S P4                  P6                  S P4                  P8                  J dw   \;        S P                  4      ^ ,          oS P=                  4       w  r\>        ;QJ d!    . VV3R l\A        WL4       4       F  NK  	  5M! VV3R l\A        WL4       4       4      pV# S! S P                  \?        V4      4      p V# V'       d   S P4                  '       d   S P4                  P6                  S P4                  PB                  J dZ   S P,                  '       gH   VPE                  4        UUu/ uF)  w  rVS! \;        S P                  4      ^,          V4      bK+  	  pppV# S! S P                  V4      p V# S PF                  '       d   \I        S R7      h\        # / p\        pS PJ                  '       d   S PK                  ^ 4      pS PJ                  '       di   S P                  '       dW   S! S PJ                  S P                  4      pT\	        V\"        4      '       d   \M        \N        PP                  V4      MT,          pS PS                  4       '       d   S P                  '       d   S P                  PU                  ^ 4      p \V        PX                  ! VPZ                  4      p\a        TS P                  T4       T! S Pb                  Pe                  R
4      T/TPf                  S Ph                  RRR7       K  S Pj                  '       d   S Pm                  4       # S P                  '       de   S PJ                  '       gS   S P                   Uu. uF  qP,                  '       d   K  VNK  	  ppV'       d   S! S P                  \?        V4      4      # S P                    F  p\+        VP,                  4      \+        S P,                  4      ^,           8X  g   Q hVPn                  '       d)   VPq                  SR7      VVP,                  R,          &   Ks  VPF                  '       g   K  TpVP,                   F  p VV,          pK  	  RVn:        K  	  S Pw                  V4       S PJ                  '       dC   V\y        S PJ                  VS P                  P                  4      ,          pV'       g   \        pV# V'       d   \{        S P                  V4      pV# S PF                  '       d   \I        S R7      h\        pV# u uppi   \V        P\                   d   p\_        TS P                  R	7      ThRp?ii ; iu upi   \r         d    \I        TR7      Rhi ; i)rD   )update_argument_collectionN)name_transformc                   < \        V\        4      '       d
    S! W4      #  \        P                  ! S4      '       d	   S! V4      # S! W4      #   \        \        \        3 d:   p\        TP                  '       d   TP                  ^ ,          MRST R7      ThRp?ii ; i  \        \        \        3 dU   p\        T4      ^8X  d
   T^ ,          MRp\        TP                  '       d   TP                  ^ ,          MRSYR7      ThRp?ii ; i)rD   N)msgr   target_type)r  r   r  r   )
rN   r[   AssertionErrorrQ   r_   r   rs   inspectismethodr   )rI   r   r  r   r>   rF   s   &&  ru   safe_converter)Argument._convert.<locals>.safe_converterQ  s    &$''s$T22''	22(00  )66 '
I> s'AFF1ITTXfjkqrrs '
I> ),V)9F1ItE')*AFF1ITDVZs:   A B  B  B  B$4BB D
6ADD
c              3   d   "   T F&  qP                   \        Jg   K  VP                   x  K(  	  R # 5ir   )r   r/   )r   r   s   & ru   r   $Argument._convert.<locals>.<genexpr>i  s%     iuG[G[chGh*e**s   00c              3     <"   V  EF  pSP                  V4      '       d    \        P                  ! VP                  4      p\        T\        4      '       g   \        TSP                  R 7      hT'       g   TP                  R. R7      x  K  T F{  pTf   TP                  RTR7      x  K  \        T\        4      '       d+   TP                  \        P                  ! T4      R7      x  K^  TP                  \        T4      R7      x  K}  	  EK  Vx  EK  	  R#   \        P                   d   p\        TSP                  R 7      ThRp?ii ; i5i)r   r  N )r?   r   )r?   )r   jsonloadsr?   JSONDecodeErrorr   rI   rN   listevolver[   dumpsr]   )r   r   parsed_jsonr  elementrF   s   &    ru   expand_tokens(Argument._convert.<locals>.expand_tokensn  s    #E55e<<[*.**U[[*AK  *+t<<"/e"SS*"',,R,"KK+6#*?*/,,RPW,*X$X%/%>%>*/,,TZZ=P,*Q$Q*/,,S\,*J$J ,7 $+ $  $33 ["/e"SYZZ[s/   E D4E7B&EE2E

EEr   c              3   6   <"   T F  pS! SV4      x  K  	  R # 5ir   r   )r   rg   rI   r  s   & ru   r   r    s     sKrtV < <Krs   r  r   F)	root_keysallow_unknownr>   Tr   )>rG   r  rJ   r>   rN   r]   getattrrI   r   r   r  rT   r/   rK   sumr   rH   r$  r   r   r
   r   r   
setdefaultr   r!   rU   rV   r   r	   r   r   r0   rh   r   r   r    rd   r   operatoror_r   popr!  r"  r?   r#  r   r   rY   r   sourcer   r   r  r   convert_and_validate	Exceptionr   _run_missing_keys_checkerr2   r   )rF   r>   r  r  
positionalkeywordr)  expanded_tokensr   rk   lookupr   tokens_per_elementr   r?   dataconverted_flagsr'  r  positional_tokensr  objkrI   r  s   ff                     @@ru   _convertArgument._convertC  s   L>>###$..22C88#DIIt~~/G/GH	 NN44	8U8UVI$$$	* zzzC@ 
 ^^!!!iiiC| 
{ &(JG$0 #=#=>O( 0 ;''u4((*]*C*T*T}: : /1444 ///:::$F$zz#2!'!2!23!;  /%%ejjnb9@@G%%e,:'',d;;# )& ???t';';t?]?]']#DII.q1D,0,<,<,>)&%s7S]Krs%%s7S]KrssCR 
O )E*4EFCN 
M ???t';';t?Z?Z'Zcgclclcl`g`m`m`op`oR\RU3x		/B1/Eu MM`oCpH 
E )G<CD 
C *D99DC###**1-###"01E1Et{{"S
?\`@a@avhllO<gvv--//kkk KKOOA.EW&*jj&= .k499eL.))#.<//"$&+ ...--//{{{4#7#7#78<$Vu::UU!$V$)$))U;L5MNN5::3tyy>A+=>>>###+0+E+EPY+E+ZDB(^^^C"ZZQ"%a&C (
 %)EM ' **40###*4+?+?t~~GdGdeeC 
 +DIIt< 
 *D99
I q.  // W+%TYYOUVVW %W  ) Q"6"FDPQs6   /^ ^ !_9_
	__(_  __&c                .   < V ^8  d   QhRS[ R,          /# r  r  )rz   r{   s   "ru   r|   r}     s      D r~   c                Z   V P                   '       g%    V P                  VR7      V n        V P                  # V P                  #   \         d:   pTP                  f   Yn        TP
                  f   T P                  Tn        h Rp?i\         d   pTP                  f   Yn        h Rp?ii ; i)zConverts :attr:`tokens` into :attr:`value`.

Parameters
----------
converter: Callable | None
    Converter function to use. Overrides ``self.parameter.converter``

Returns
-------
Any
    The converted data. Same as :attr:`value`.
r.  N)r   rD  r?   r   r   r  rI   r   )rF   r>   r  s   && ru   r   Argument.convert  s     |||!]]Y]?
 zztzz ! ::%!%J==($(IIAM  ::%!%Js)   A B*4BB*B*B%%B*c                  a a \        S P                  P                  \        4      '       g   Q hR\        P
                  9   dm   ^ RIo\        ;QJ d-    . R SP                  P                  R4       4       F  NK  	  5M&! R SP                  P                  R4       4       4      pVR	8  d   RoMRoVV 3R lp S P                  '       g   S P                  '       d   S P                  P                  S P                  P                  J d   \        S P                  4      ^,          pS P                  P                   F"  pVP                  4        F  pV! WF4       K  	  K$  	  V! \         \"        S P                  P$                  3,          V4       R# S P                  '       d   S P                  P                  S P                  P&                  J dw   \        S P                  4      ^ ,          pS P                  P                   F  pV F  pV! WF4       K  	  K  	  V! \        S P                  P$                  R3,          V4       R# S P                  P                   F  pV! S P                  V4       K  	  V! S P                  P$                  V4       R#   \(        \*        \,        3 d9   p\/        TP0                  '       d   TP0                  ^ ,          MRS R7      ThRp?ii ; i)
zValidates provided value.

Parameters
----------
value:
    Value to validate.

Returns
-------
Any
    The converted data. Same as :attr:`value`.
r  Nc              3   8   "   T F  p\        V4      x  K  	  R # 5ir   )rM   r   s   & ru   r   $Argument.validate.<locals>.<genexpr>  s     $U5TSVV5Tr   r   c                   < S'       g   R # SP                   '       d   R #  SP                  V 4      P                  V4       R #   SP                   d   pSP	                  T4        R p?R # R p?iSP
                   d     R # i ; ir   )r   r  r  r#   r	  PydanticUserError)rI   r   r  r  rF   s   && ru   validate_pydantic,Argument.validate.<locals>.validate_pydantic  sn    ...$$T*::3?++ :66q99-- s#    A BA++B>BB.r   exception_messager   )ry   )rN   rJ   	validatorr   sysmodulesr  __version__r   r   rU   rV   rh   r	   rI   rg   r[   r]   ri   r   r  rQ   r_   r#   rs   )	rF   r?   pydantic_versionrN  rI   rR  r   r  r  s	   f&      @ru   validateArgument.validate  s    $..22E::::$$u$UX5I5I5O5OPS5T$Uuu$UX5I5I5O5OPS5T$UU$&H		g999T__5I5IT__MhMh5h		*1-!%!9!9I$||~!$,  . ": "$sDOO,F,F'F"GOT__%9%9T__=[=[%[		*1-!%!9!9I$!$,  % ": "%(B(BC(G"H%P!%!9!9Idii/ ":!$//"<"<eD
I6 	g!AFF1IRZ^_eff	gs9   :J J B4J J &B"J 
AJ K'/3K""K'c                .   < V ^8  d   QhRS[ R,          /# r  r  )rz   r{   s   "ru   r|   r}   ?  s      ho r~   c                    V P                  VR7      pV\        Jd   V P                  V4       V# V P                  P                  \
        P                  Jd&   V P                  V P                  P                  4       V# )zConverts and validates :attr:`tokens` into :attr:`value`.

Parameters
----------
converter: Callable | None
    Converter function to use. Overrides ``self.parameter.converter``

Returns
-------
Any
    The converted data. Same as :attr:`value`.
r.  )r   r/   rW  rU   r=   r$   rX   )rF   r>   r   s   && ru   r7  Argument.convert_and_validate?  sb     llYl/eMM# 
 __$$IOO;MM$//112
r~   c                4   < V ^8  d   QhRS[ S[R3,          /# )ry   r   .r   r]   )rz   r{   s   "ru   r|   r}   S  s     2/ 2/c3h 2/r~   c                   V P                   P                  '       d   R# V P                   P                  e   V P                   P                  R8X  d   R# \        V4      ^8  d   V P                  pM5\        V4      ^8X  d   V P                  V^ ,          4      pMV P                  p\        V4      w  r4V P                   P                  V3# \        V4      ^8  d   V P                  pMQ\        V4      ^8X  d   V P                  V^ ,          4      pM(V P                  pV P                  '       d   V'       g   R# \        V4      w  rVWV3# )a  The number of string tokens this argument consumes.

Parameters
----------
keys: tuple[str, ...]
    The **python** keys into this argument.
    If provided, returns the number of string tokens that specific
    data type within the argument consumes.

Returns
-------
int
    Number of string tokens to create 1 element.
consume_all: bool
    :obj:`True` if this data type is iterable.
rD   Fr/  )r   T)	rJ   rK   n_tokensr   r`   r   rI   r   rd   )rF   r   rI   r   consume_all_from_typer>  r   s   &&     ru   r   Argument.token_countS  s   " >>O
 >>"".~~&&", t9q===DY!^2247;D99D ,7t+<(~~..0EEEt9q===DY!^**473D99D###D*5d*;'!..r~   c                r    V P                   P                  \        V P                  P                  4      4      # )z5Negative flags from :meth:`.Parameter.get_negatives`.)rJ   r   r   rU   ri   r   s   &ru   	negativesArgument.negatives  s)     ~~++,=doo>X>X,YZZr~   c                    < V ^8  d   QhRS[ /# r   r   )rz   r{   s   "ru   r|   r}     s      c r~   c                (    V P                   ^ ,          # )z2The **first** provided name this argument goes by.)r   r   s   &ru   rY   Argument.name  s     zz!}r~   c                4   < V ^8  d   QhRS[ S[R3,          /# )ry   r   .r]  )rz   r{   s   "ru   r|   r}     s     K KuS#X Kr~   c                    ^ RI p\        V P                  P                  \        4      '       g   Q h\	        VP                  V P                  P                  V P                  4      4      # )z8Names the argument goes by (both positive and negative).N)	itertoolsrN   rJ   rY   r   chainrd  )rF   rk  s   & ru   r   Argument.names  sH     	$..--u5555Y__T^^%8%8$..IJJr~   c                J   < V ^8  d   QhRS[ RS[ R,          RS[S[ ,          /# )ry   r?   r   Nr   )r]   r$  )rz   r{   s   "ru   r|   r}     s/     S S3 S3: Sc Sr~   c                P    V P                   P                  V P                  WR7      # )z:Split a given value with :meth:`.Parameter.env_var_split`.)r   )rJ   env_var_splitrI   )rF   r?   r   s   &&&ru   rp  Argument.env_var_split  s     ~~++DIIu+RRr~   c                    < V ^8  d   QhRS[ /# r   r   )rz   r{   s   "ru   r|   r}     s      d r~   c                    V P                   '       d   R# V P                  P                  e   V P                  P                  # V P                  # )zShow this argument on the help page.

If an argument has child arguments, don't show it on the help-page.
Returns False for arguments that won't be parsed (including underscore-prefixed params).
F)rH   rJ   showrT   r   s   &ru   rt  Argument.show  s:     ===>>*>>&&&zzr~   c                    < V ^8  d   QhRS[ /# r   r   )rz   r{   s   "ru   r|   r}     s     
* 
*t 
*r~   c                `   V P                   P                  f   R# \        V P                   P                  \        P                  4      '       dC   \        V P                   P                  P                  V P                  P                  4      4      # \        V P                   P                  4      # )zWhether this argument should be parsed from CLI tokens.

If ``Parameter.parse`` is a regex pattern, parse if the pattern matches
the field name; otherwise don't parse.
T)	rJ   rT   rN   rePatternrL   searchrU   rY   r   s   &ru   rT   Argument.parse  sq     >>'dnn**BJJ77,,33DOO4H4HIJJDNN(())r~   c                    < V ^8  d   QhRS[ /# r   r   )rz   r{   s   "ru   r|   r}     s     + +$ +r~   c                    V P                   P                  f   V P                  P                  # V P                   P                  # )z<Whether or not this argument requires a user-provided value.)rJ   r   rU   r   s   &ru   r   Argument.required  s4     >>""*??+++>>***r~   c                    < V ^8  d   QhRS[ /# r   r   )rz   r{   s   "ru   r|   r}     s     2 2D 2r~   c                .    V P                   P                  # r   )rU   is_positional_onlyr   s   &ru   r  Argument.is_positional_only  s    111r~   c                    < V ^8  d   QhRS[ /# r   r   )rz   r{   s   "ru   r|   r}     s     F F4 Fr~   c                \    V P                   P                  V P                   P                  8H  # r   )rU   rV   r   r   s   &ru   is_var_positionalArgument.is_var_positional  s!    ##t'E'EEEr~   c                    < V ^8  d   QhRS[ /# r   r   )rz   r{   s   "ru   r|   r}     s     0 0 0r~   c                (    V P                  4       R8H  # )a?  Check if this argument is a flag (consumes no CLI tokens).

Flags are arguments that don't consume command-line tokens after the option name.
They typically have implicit values (e.g., `--verbose` for bool, `--no-items` for list).

Returns
-------
bool
    True if the argument consumes zero tokens from the command line.

Examples
--------
>>> from cyclopts import Parameter
>>> bool_arg = Argument(hint=bool, parameter=Parameter(name="--verbose"))
>>> bool_arg.is_flag()
True
>>> str_arg = Argument(hint=str, parameter=Parameter(name="--name"))
>>> str_arg.is_flag()
False
r_  )r   r   s   &ru   is_flagArgument.is_flag  s    * !Z//r~   c                H   < V ^8  d   QhRS[ RS[S[R3,          R,          /# )ry   forcer   .N)rL   r   r]   )rz   r{   s   "ru   r|   r}     s(     3 3 3%S/D2H 3r~   c                    V'       g   V P                   P                  '       g   R# \        V P                  V P                   P                  4      pV'       d   \        V4      # R# )a  Extract completion choices from type hint.

Extracts choices from Literal types, Enum types, and Union types containing them.
Respects the Parameter.show_choices setting unless force=True.

Parameters
----------
force : bool
    If True, return choices even when show_choices=False.
    Used by shell completion to always provide choices.

Returns
-------
tuple[str, ...] | None
    Tuple of choice strings if choices exist and should be shown, None otherwise.

Examples
--------
>>> argument = Argument(hint=Literal["dev", "staging", "prod"], parameter=Parameter(show_choices=True))
>>> argument.get_choices()
('dev', 'staging', 'prod')
>>> argument = Argument(hint=Literal["dev", "staging", "prod"], parameter=Parameter(show_choices=False))
>>> argument.get_choices()  # Returns None for help text
>>> argument.get_choices(force=True)  # Returns choices for completion
('dev', 'staging', 'prod')
N)rJ   show_choicesr4   rI   r  r   )rF   r  choicess   && ru   get_choicesArgument.get_choices  sD    6 T^^888'		4>>3P3PQ!(uW~2d2r~   c                    < V ^8  d   QhRS[ /# r   )r[   )rz   r{   s   "ru   r|   r}     s     ' 't 'r~   c                H   / pV P                   '       d}   V P                   Fl  pTpVP                  RR  F  pVP                  V/ 4      pK  	  VP                  \
        J d   VP                  MVP                  W2P                  R,          &   Kn  	  V P                   EF  pRVn        VP                  '       g   K  VP                  \        V P                  4      R pVP                   '       d(   VP                  4       pV'       d   WqV^ ,          &   Kx  Kz  \        VP                  4      ;'       g    VP                  \        9   d   VP                   F  pVP                  \
        Jd5   VP                  VR,          . 4      P                  VP                  4       KK  VP                  p\!        V\"        4      '       dJ   VP%                  4       '       d4   VP%                  4       ^ ,          R9   d    \&        P(                  ! V4      pVP                  VR,          . 4      P-                  V4       K  	  EK  VP                  ^ ,          pVP                  \
        J d   VP                  MVP                  W^ ,          &   EK  	  V#   \&        P*                   d     Li ; i)zConvert argument to be json-like for pydantic.

All values will be str/list/dict. JSON-serialized strings (from sources
like config files or environment variables) are deserialized back to their
original dict/list structure.
NTr/  )r   r   )r\   r   r   r2  r   r/   r?   rH   r   r   r   r  r
   rI   r   r   rN   r]   r   r!  r"  r#  r   )	rF   r  r   noder   r  r   resultr?   s	   &        ru   r  Argument._json  s    !!! ::cr?C??33D +6;6J6Je6Su{{Y^YmYmZZ^$	 %
 ]]E EM###::c$))n./D&&&#)QL UZZ(66EJJ>I"\\E++58tBx4;;E<P<PQ %%eS11ekkmmVWHX\fHf%(,

5(9 tBx4;;EB * Q.3.B.Be.Ku{{QVQeQeG1 #2 
 $(#7#7 % $%s   5J		J! J!c                   V P                   '       d   V P                  '       g   V'       g   R # V P                  W4      ;p'       g   R # V^ ,          pV P                  V3,           pV P                  P	                  VR7      pV'       d   \        V^ ,          R7      hV P                  P                  ^ ,          R,           RP                  V4      ,           p\        RV R24      h)Nkeys_prefixr   z->zRequired field "z]" is not accessible by Cyclopts; possibly due to conflicting POSITIONAL/KEYWORD requirements.)
ra   r   r   rH   	filter_byr    rU   r   joinrQ   )rF   r?  missing_keysmissing_keyr   missing_argumentsmissing_descriptions   &&     ru   r9  "Argument._run_missing_keys_checker'  s    )))$--- $ : :4 FFF"1oyyK>) MM333E&0A!0DEE"&//"7"7":T"ADIIdO"S"#6"7  8U  V r~   c                    ^ RI pVP                  4       ^ ,          pVR,          R8X  d   VR,          pV P                  P                  V P                  V,           R7      pV'       gI   \        V4      ^8  d9   VR,          pV P                  P                  V P                  V,           R7      pKP  V'       d   \        V^ ,          R7      Vh\        WP                  4      '       d   \        \        V4      V R7      VhVh)	rD   NrO   missinglocr  r   r   rP  )
r  errorsr   r  r   r   r    rN   r#   r]   )rF   excr  errorr  r  s   &&    ru   r	  *Argument._handle_pydantic_validation_error7  s    

Q=I%,C $ 7 7 A AdiiZ]o A ^ (CHqL"g$($;$;$E$ERVR[R[^aRa$E$b! *4Ea4HIsR c3344!CHtLRUUIr~   c                J  < V ^8  d   Qh/ S[ S[,          ;R&   S[;R&   S[;R&   S[;R&   S[R,          ;R&   S[S[R3,          ;R&   S[;R	&   S[;R
&   S[;R&   S[	S[S[3,          ;R&   R;R&   S[;R&   S[;R&   S[
R,          ;R&   S[
R,          ;R&   S[R,          ;R&   # )ry   r   rU   rJ   rI   Nr   .r   r   r\   r`   r   r8   rH   r   r   ra   _internal_converterrd   )r$  r.   r$   r,   r   rM   r   r]   rL   r[   r   )rz   r{   s   "ru   r|   r}   E   s     K-  4 $ 3% . 5/ 8 :+9 D S/-E T 5U b Jc f ?g h #y.!Oi l #Bm v Jw x #Qy | $d?X} @ "DVA D 4ZME r~   )r\   r`   rd   r   r   r   ra   r   rH   r   r?   r   r   r   )r   )F)F__name__
__module____qualname____firstlineno____doc__r   r$  r   r$   rU   r,   rJ   r]   r   rI   r   r   r/   r   r\   r`   r[   r   rH   r   r   ra   r  rd   rv   rb   propertyr?   setterr   r   r   r   r   r   r   r   r   r   r   r   r   r  rD  r   rW  r7  r   rd  rY   r   rp  rt  rT   r   r  r  r  r  r  r9  r	  __annotate_func____static_attributes____classdictcell__)r{   s   @ru   r;   r;   E   se    
  -F
 ")4J !3I cW5D d+E
 ""-D%N gu5F $EEJ$U?H$)$U$OG%*E%BH $EEJ%*5u5%Q-24eRW-X+0EPU+V"'5u"MOdGL/ /"   \\  F F ^^' ' C C 	/ 	/ 

 

! ! 4 4
 26	

 
 
>U@ 26	U@
 U@ U@n " "* M M  
d dL :7gr (2/ 2/h [ [   K KS S   
* 
* + +2 2F F0 0.3 3@' 'R e  r~   r;   )Jr  r  r!  r3  rx  rS  collections.abcr   r   
contextlibr   	functoolsr   r   r   r   r   r	   r
   attrsr   r   cyclopts._convertr   r   r   r   cyclopts.annotationsr   r   r   r   r   r   r   r   r   r   r   r   r   cyclopts.exceptionsr   r   r    r!   r"   r#   cyclopts.field_infor$   r%   r&   r'   r(   r)   r*   cyclopts.parameterr+   r,   cyclopts.tokenr.   cyclopts.utilsr/   r0   r1   utilsr2   r3   r4   r5   r6   rG   r8   r;   r   r~   ru   <module>r     s    /    	 
 .  % ; ;         H   5 5  @ I I Ir~   