
    h|                       S r SSKJr  SSKrSSKrSSKrSSKJrJrJ	r	J
r
Jr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  S	S
KJr  S	SKJrJrJ r J!r!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.  S	SK/J0r0J1r1  \" S5      r2\Rf                  " SS9 " S S5      5       r4              SS jr5\Rf                  " SS9 " S S5      5       r6      SS jr7g)zPInterface for generating `argparse.ArgumentParser()` definitions from callables.    )annotationsN)
AnyCallableDictListSetTupleTypeTypeVarUnioncast)Text)	Annotatedget_args
get_origin)ConstructorRegistry)UnsupportedStructTypeMessage   )	_argparse)_argparse_formatter
_arguments_docstrings_fields	_resolver
_singleton_strings_subcommand_matching)TypeForm)is_typing_union)_confstruct_markers)_MutexGroupConfig)PrimitiveConstructorSpecUnsupportedTypeAnnotationErrorTT)frozenc                  "   \ rS rSr% SrS\S'   S\S'   S\S'   S	\S
'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   \  S                      S!S jj5       r      S"S jr  S#       S$S jjr	Sr
g)%ParserSpecification'   zHEach parser contains a list of arguments and optionally some subparsers.r   fSet[_markers._Marker]markersstrdescriptionz#List[_arguments.ArgumentDefinition]argszList[_fields.FieldDefinition]
field_listDict[str, ParserSpecification]child_from_prefixzDict[str, str | None](helptext_from_intern_prefixed_field_nameSubparsersSpecification | None
subparsersz"Dict[str, SubparsersSpecification]subparsers_from_intern_prefixintern_prefixextern_prefixboolhas_required_argsconsolidate_subcommand_argsadd_helpc
                   U[        [        R                  " U [        R                  5      S   5      -  n[        R
                  U;   n
SnX;   a-  U [        La$  UR                  S5      U:  a  [        SU  S35      eU[        [        U 5      1-  n[        R                  R                  [        U5      5         [        R                  " U UU	S9n[!        U["        5      (       a   U5       eUu  pSSS5        Sn/ n0 n0 nSn0 nW GH  n[%        UUUUUUS9n[!        U[&        R(                  5      (       a2  UR+                  U5        UR,                  R.                  (       a  S	nMa  Mc  [!        U[0        5      (       a  UUUR2                  '   [5        UU5      nM  [!        U[6        5      (       d  M  UnUUUR2                  '   UR8                  (       a  S	nUR:                  b1  UR=                  UR>                  5        [5        UUR:                  5      n[@        RB                  " UURD                  /5      nURF                  b  URF                  UU'   O#[H        RJ                  " URL                  5      UU'   [O        URP                  5      S:  d  GM  [        RR                  URP                  S
   RT                  RV                  ;   d  GM  UU   nUc  SOUS-   S-   [Y        URZ                  5      -   UU'   GM     [7        U U[@        R\                  " Ub  UO[H        RJ                  " U 5      5      UUUUUUUUUU
US9$ ! , (       d  f       GNT= f)z3Create a parser definition from a callable or type.r      .z$Found a cyclic dependency with type )r*   default_instancesupport_single_arg_typesNF)parent_classesr7   r8   subcommand_prefixr<   Tr    z

z	Default: )r*   r,   r.   r/   r0   r2   r3   r5   r6   r7   r8   r:   r;   r<   )/setr   unwrap_annotatedr!   _MarkerConsolidateSubcommandArgsdictcountr$   r   r
   r   FieldDefinitionmarker_contexttuple field_list_from_type_or_callable
isinstancer   handle_fieldr   ArgumentDefinitionappendloweredrequiredSubparsersSpecificationr7   add_subparsers_to_leavesr(   r:   r5   updater6   r   make_field_nameintern_namehelptextr   get_callable_descriptionr*   lenr/   _OPTIONAL_GROUPfieldr,   r-   defaultremove_single_line_breaks)r*   r,   r.   rB   r@   r7   r8   r<   rC   rA   r;   max_nesting_depthoutr0   r:   r/   r3   r2   r5   subparsers_from_prefixr^   	field_outnested_parserclass_field_namecurrent_helptexts                            G/home/james-whalen/.local/lib/python3.13/site-packages/tyro/_parsers.pyfrom_callable_or_type)ParserSpecification.from_callable_or_type@   sV   $ C	 : :1h>N>N OPQ RSS&.&H&HG&S#  ##C(+<<06qc;  (4a=/9 $$33E'NC::!1)AC
 "#'CDDIcIDMA D "JL0<>
!#E$-++"3!I )Z%B%BCCI&$$--(,% .I'>??BK&y'>'>?5j)L
I':;; )=J!)"9"9: 22(,% !++7*11%CC ":"M$<$<"J
 $,#;#;"E$5$56$  >>- ==MN
 $<<]__M ==MN **+q0 00M4F4Fq4I4O4O4W4WW'O(($  07=MPV=V%&emm,- ==MNs  ~ # ::*  99!<
 !/5]!*@''/(C%
 	
c DCs   87L<<
Mc                   U R                   Ul         U R                  (       a  U R                  (       a  SnSnU R                  b6  U R                  R	                  X5      nUR
                  R                  5       nOU4nU R                  (       a  U H  nU R                  U5        M     OU R                  U5        Ub  UR
                  R                  U5        UR
                  S   R                  S;   d   eSUR
                  S   l	        U$ )(Create defined arguments and subparsers.TNr   )zoptional argumentsoptionsrm   )
r.   r;   r:   r5   apply_action_groupspop
apply_argsrR   title)selfparserforce_required_subparserssubparser_groupleavesleafs         rh   rn   ParserSpecification.apply   s     "-- ++0F0F(,% ??&__**6MF$33779OYF ++%  OOF#&!!((9 $$Q'-- 2
 
 	
 
 *3a &    Nc           	        SS jnSUR                   S   0UR                   SS  Vs0 s H0  n[        [        UR                  5      R	                  S5      S   U_M2     snEnUR                   S   nUR                  S:X  d   eUc  0 nU R
                   GH  nUR                  5       (       a  M  UR                  R                  5       (       a  UR                  U5        MM  UR                  R                  b  UR                  R                  n	X;  ad  UR                  S	U	R                  (       a*  [        R                  " [        R                   " S
5      5      OSS9R#                  U	R                  S9X9'   UR                  X9   5        M  UR                  R$                  R&                  S:w  a  UR(                  OUR(                  R+                  S5      S   n
X;  aB  Ub%  UR,                  R/                  UR0                  5      OSnUR                  U" U
5      US9Xj'   UR                  Xj   5        GM     U R2                  R5                  5        H  nUR7                  UU US9  M     gs  snf )rl   c                (    U S-   R                  5       $ )Nz options)strip)
group_names    rh   format_group_name9ParserSpecification.apply_args.<locals>.format_group_name
  s    +2244rz   rD   r      N r   zpositional argumentszmutually exclusivezKExactly one argument must be passed in. [bright_red](required)[/bright_red]z'At most one argument can be overridden.)r.   )rT   r?   )parentexclusive_group_from_group_conf)r~   r-   returnr-   )ro   r   r-   rr   	partitionr/   is_suppressedr^   is_positionaladd_argumentmutex_groupadd_argument_grouprT   r   str_from_richr   from_markupadd_mutually_exclusive_groupargconfnamer8   
rpartitionr3   getr7   r2   valuesrq   )rs   rt   r   r   r   groupgroup_from_group_namepositional_grouparg
group_confr~   r.   childs                rh   rq   ParserSpecification.apply_args   s   	5 %%a(E
 $221266E S%++&005a8%?6E
 "003%%)???? +2.0+ 99C  ""((**  !12&&2 YY22
D110  *22 )<(I(I $ 0 0$q!") "K 2 	 76
@S@S6T 4?   !@!LM yy((--3 %% **55c:1=  :
 "- GGKK-- "   9?8Q8Q)*5$/ 9R 9)5   !6!BCc f ++224E0O   5Cs   7I, )rD   F)r*   zCallable[..., T]r,   r+   r.   
str | NonerB   Set[Type[Any]]r@   zQUnion[T, _singleton.PropagatingMissingType, _singleton.NonpropagatingMissingType]r7   r-   r8   r-   r<   r9   rC   r-   rA   r9   r   r(   )rt   argparse.ArgumentParserru   r9   r   #Tuple[argparse.ArgumentParser, ...])NN)rt   r   r   ParserSpecification | Noner   z@Dict[_MutexGroupConfig, argparse._MutuallyExclusiveGroup] | Noner   None)__name__
__module____qualname____firstlineno____doc____annotations__staticmethodri   rn   rq   __static_attributes__r   rz   rh   r(   r(   '   sL   RK""
----55.CC
 /. $FE!%%N "$).N
N
&N
  N
 '	N


N
 N
 N
 N
 N
 #'N
 
N
 N
`+-+JN+	,+` .2 W'W +W*	W 
W Wrz   r(   c                   [         R                  " U R                  U R                  5      (       Gd  U R                  R
                  c  U R                  [        R                  ;  a  [        U R                  [        R                  5      (       d  [        R                  " X0R                  /5      nSU SU R                   SU R                   S[        U R                  5       S3	n[        R                   " U5        U R#                  [$        U R                  [        U R                  5      4   5      n ['        [         R(                  " U R                  [*        5      S   5      S:  =(       d*    [,        R.                  " U R                  U R0                  S	S
9nU(       GdF  [2        R4                  U R0                  ;  aZ  [6        R9                  U U[        R                  " X R:                  /5      [        R                  " X0R                  /5      US9n	U	b  U	$ [<        R>                  " U R                  U R                  5      (       a  [@        RC                  U R                  U R0                  SUU R                  [        R                  " X R:                  /5      U R                  RD                  S;   a!  [        R                  " X0R                  /5      OU R                  UUSS9
$ [F        RH                  " UUUU S9$ )z4Determine what to do with a single field definition.NzThe field `z` is annotated with type `z`, but the default value `z` has type `zM`. We'll try to handle this gracefully, but it may cause unexpected behavior.r   r   T)nondefault_only)rB   r7   r8   r<   )TNF	r,   r.   rB   r@   r7   r8   r<   rC   rA   )r7   r8   rC   r^   )%r   is_instancetype_strippedr_   r   constructor_factoryr   DEFAULT_SENTINEL_SINGLETONSrO   numbersNumberr   rX   extern_nametypewarningswarnwith_new_type_strippedr   r\   rF   r#   r   _is_primitive_typer,   r!   SuppressrU   
from_fieldrY   r   is_struct_typer(   ri   prefix_namer   rQ   )
r^   rB   r7   r8   rC   r<   
field_namemessageforce_primitivesubparsers_attempts
             rh   rP   rP   X  s   $ !!%"5"5u}}EE MM--5MM!G!GG 5=='..99 --}>O>O.PQ
*%?

| L&&+mm_LemmAT@U VYZ 	
 	g,,%%%tEMM'::;
 	I&&uzz3KLQOPSTT		/	/

EMM4
  EMM1!8!C!C-&66"$5$56 '66"$5$56 " "D 
" "-)) !!%**emm<<&<<## -!&&66"$5$56
 }}00L@ ,,m=N=N-OP**!"3).! =  ( ((##+	 rz   c                      \ rS rSr% SrS\S'   S\S'   S\S'   S\S	'   S
\S'   S\S'   S\S'   S\S'   S\S'   \            SS j5       r      SS jrSr	g)rU   i  zJStructure for defining subparsers. Each subparser is a parser with a name.r-   r   r   r.   r1   parser_from_namedefault_namer   default_parserr7   r9   rT   r   r@   z*Tuple[Union[TypeForm[Any], Callable], ...]rm   c                   [         R                  " U R                  5      n[        [	        U5      5      (       d  g[        U5       Vs/ s H  oUPM     nn[        U5       H  u  px[         R                  " U[        R                  5      u  p[        U
5      S:  d  M=  U
S   R                  c  MO  [        U
S   R                  5       /[         R                  " US5      S   Q7   Xg'   M     [        U Vs/ s H6  n[        R                  " [        [         U5      ["        R$                  5      PM8     sn5      (       d  g0 n0 nU GH%  n[         R                  " U[        R                  5      u  p[&        R(                  " [*        R,                  U R.                  ;   a  SOU[        [         U5      5      nX;   ab  X   nUR0                   SUR2                   3nUb  UR0                   SUR2                   3OSn[4        R6                  " SU S	U S
U SU S3	5        [        U
5      S:w  a-  [        U
5      S:X  d   SU S[        U
5       S35       eU
S   X'   [        [         U5      X'   GM(     SnU R8                  ["        R:                  ;  aL  [<        R>                  " U R8                  UU5      nUc'   SU S[!        U R8                  5       SU SU S3	5       eUbQ  [*        R@                  U R.                  ;   a3  [B        RE                  UU   U R.                  SUU R8                  UUUUSS9
$ 0 nU GH  n[&        R(                  " [*        R,                  U R.                  ;   a  SOU[        [         U5      5      nX;   a  X   nO&[        R                  " SS["        R$                  SSS9nUU:X  a=  U R8                  ["        R:                  ;  a  [F        RH                  " UU R8                  S9n[         R                  " US5      u  nn[K        S U 5       5      n[*        RL                  U;   a  M  [        U5      S:X  a  UnO[        U4U-      n[        RN                  RQ                  [K        U R.                  5      5         [B        RE                  UU R.                  URR                  UUR8                  UUUUSS9
nSSS5        [F        RH                  " WURT                  RW                  5        VVs0 s H  u  nn[&        RX                  " UU/5      U_M!     snnS9nUUU'   GM     UU;  a  SnSnUc  SnO]SnUU   n[        [[        S UR\                  5      5      (       a  SnSnO,UR^                  b  UR^                  R`                  (       a  SnSn[c        U Rd                  U Rf                  UUUUUU R8                  [K        U5      S9	$ s  snf s  snf ! , (       d  f       GN"= fs  snnf )zFrom a field: return either a subparser specification, a parser
specification for subcommands when `tyro.conf.AvoidSubcommands` is used
and a default is set, or `None` if the field does not create a
subparser.Nr   allr   rD   r?   r   z%Duplicate subcommand name detected: 'z' is already used for z but will be overwritten by z. Only the last type (z) will be accessible via this subcommand. Consider using distinct class names or use tyro.conf.subcommand() to specify explicit subcommand names.z)Expected only one subcommand config, but z has `z'` was provided a default value of type z` but no matching subcommand was found. A type may be missing in the Union type declaration for `z`, which currently expects z|. The types may also be too complex for tyro's subcommand matcher; support is particularly limited for custom generic types.Tr   unused)r.   r_   r   r   )r_   c              3  h   #    U  H(  n[        U[        R                  5      (       a  M$  Uv   M*     g 7fN)rO   r    _SubcommandConfig).0as     rh   	<genexpr>5SubparsersSpecification.from_field.<locals>.<genexpr>d  s)       $A!![%B%BC $s   #2	2)r3   Fc                .    U R                   R                  $ r   )rS   rT   )r   s    rh   <lambda>4SubparsersSpecification.from_field.<locals>.<lambda>  s    3;;#7#7rz   )	r   r.   r   r   r   r7   rT   r@   rm   )4r   rF   r   r   r   r   	enumerater    r   r\   r   r   anyr   r   r   r   r   MISSING_NONPROPr   subparser_name_from_typer!   OmitSubcommandPrefixesr,   r   r   r   r   r_   MISSING_AND_MISSING_NONPROPr   match_subcommandAvoidSubcommandsr(   ri   dataclassesreplacerM   r   rK   rL   r.   r3   itemsrX   mapr/   r5   rT   rU   rY   rZ   )r^   rB   r7   r8   r<   typrm   ioption_found_subcommand_configsosubcommand_config_from_namesubcommand_type_from_nameoption_unwrappedsubcommand_nameoriginal_typeoriginal_type_full_namenew_type_full_namer   r   subcommand_configoption_originr   	subparserkvr   rT   s                                rh   r   "SubparsersSpecification.from_field  sB    (()<)<=z#// #+3-0-33-0 #7+IA*3*D*D55+'A ,-1,Q/CCO&03GGI"33FEB1E
 ,   ! A &&tD!}j6P6PQ 
 
  QS#57!F9B9S9S55:6 '??  66%--G &T6"O ; 9 J$//0-2H2H1IJ (
 (3 (22315E5N5N4OP # ;O;LLb.//KL^K_ `++=*> ?12 +,1349 ??P Q456a99 @X@+< :>dF9K%6Q V ==
 F FF/@@+)L
  + M? #'( )"O#>wi HDD+ #(A(AU]](R&<<),7 -!&++!"/)- =   <>F&??  66%--G &T6"O =$?$P!$/$A$A $&66 $(,%! .Z%K%KK$/$7$7%u}}%! *3)C)CFE)R&M;  $  K
   K/;1$&"M#3k#AB((77emm8LM/EE!MM 1 = =#1%6%>%>"/"/%&3-1 F 	 N $++ !* R R X X Z: Z1 ,,mQ-?@!C Z:I 1:_-K P //L HH-l;N 379L9LMNN!% ))5"--66!%&"" -%)'"]]'N
 	
W 1(J NM":s   W4=W;W2&W)
W&	c           	     
   SnSSR                  U R                  R                  5       5      -   S-   nU R                  =(       d    UnU(       d  SU-   nSU S3n/ nU R                  b  UR                  U R                  5        U(       d,  U R                  b  UR                  SU R                   S	35        U R                  (       d  U(       a  UR                  S
5        [        U5      S:  a  SR                  U5      OS nUR                  [        R                  " U R                  5      UUUUS9n/ n	U R                  R                  5        GH'  u  pUR                  R                  SS5      n[        U5      S:  a%  [        R                  " UR!                  5       S5      nUR#                  U
[$        R&                  USUR(                  S9n[+        U[$        R,                  5      (       d   e[+        U[$        R,                  5      (       d   eUR.                  Ul        UR0                  Ul        UR2                  Ul        UR4                  Ul        U	R7                  UR9                  X5      5        GM*     [;        U	5      $ )Nsubcommands{,}z	optional []z
(default: )z%(required to specify parent argument)r   r   )destr.   rT   rr   metavar%z%%rZ   F)formatter_classhelpallow_abbrevr<   )joinr   keysrT   r.   rR   r   r\   add_subparsersr   make_subparser_destr7   r   r   r   _rich_tag_if_enabledr}   
add_parserr   TyroArgparseHelpFormatterr<   rO   TyroArgumentParser_parsing_known_args_parser_specification_console_outputs_argsextendrn   rM   )rs   parent_parserru   rr   r   rT   description_partsr.   argparse_subparserssubparser_tree_leavesr   subparser_defrZ   r   s                 rh   rn   SubparsersSpecification.apply  sN   
 !6!6!;!;!=>>D===$=%'E'!nG '$$T%5%56D--9$$z$2C2C1DA%FG }}!:$$%LM
 ,//@+AA+ECHH&'4 	 ,::--d.@.@A# ; 
 @B#'#8#8#>#>#@D$0088dCH8}q %::8>>;KZX+66 3 M M"&// 7 I i)<)O)OPPPPm-@-S-STTTT,9,M,MI).;.Q.QI+)6)G)GI&+11IO!((##II- $A4 *++rz   r   N)r^   _fields.FieldDefinitionrB   r   r7   r-   r8   r-   r<   r9   r   z4SubparsersSpecification | ParserSpecification | None)r  r   ru   r9   r   r   )
r   r   r   r   r   r   r   r   rn   r   r   rz   rh   rU   rU     s    T
I44..N77j
&j
&j
 j
 	j

 j
 
>j
 j
XD,.D, $(D, 
-	D,rz   rU   c                   U c  U$ 0 nU R                   R                  5        H0  u  p4[        R                  " U[	        UR
                  U5      S9X#'   M2     [        R                  " U UU R                  =(       d    UR                  S9$ )N)r5   )r   rT   )r   r   r   r   rV   r5   rT   )rootrx   new_parsers_from_namer   rt   s        rh   rV   rV     s     |--335&1&9&9/0A0A4H'
# 6
 ./$-- rz   )r^   r  rB   r   r7   r-   r8   r-   rC   r-   r<   r9   r   zRUnion[_arguments.ArgumentDefinition, ParserSpecification, SubparsersSpecification])r  r4   rx   rU   r   rU   )8r   
__future__r   r   r   r   typingr   r   r   r   r   r	   r
   r   r   r   	rich.textr   typing_extensionsr   r   r   tyro.constructors._registryr   tyro.constructors._struct_specr   rD   r   argparser   r   r   r   r   r   r   r   _typingr   _typing_compatr   confr    r!   conf._mutex_groupr"   constructors._primitive_specr#   r$   r%   	dataclassr(   rP   rU   rV   r   rz   rh   <module>r$     s   V "    T T T  = = ; G #	 	 	  + ' 0
 CL d#m m $m`	\"\"\ \ 	\
 \ \\~ d#~, ~, $~,B

(0Grz   