
    hF                       % S r SSKJr  SSKr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Jr  SSKrSSKJrJrJrJrJr  SSKJr  SSKJrJrJrJr  SS	K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)  SSK*J+r+J,r,J-r-  / r.S\/S'   \R`                   " S S5      5       r1\Rd                  " SS9SS j5       r3        SS jr4        SS jr5g)zAbstractions for pulling out 'field' definitions, which specify inputs, types, and # type: ignore
defaults, from general callables.    )annotationsN)AnyCallableDictTuple)	AnnotatedDocget_args
get_originget_original_bases)_MutexGroupConfig   )_docstrings	_resolver_strings_unsafe_cache)MISSING_AND_MISSING_NONPROPMISSING_NONPROP)TypeForm)is_typing_annotated)_confstruct_markers)ConstructorRegistrycheck_default_instances)StructFieldSpecStructTypeInfoUnsupportedStructTypeMessagez!list[tuple[_markers.Marker, ...]]global_context_markersc                     \ 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'   \\R                  SS j5       5       r\SS j5       r	\ S         S S jj5       r
    S!S jrS"S jrS"S jrSrg)#FieldDefinition"   strintern_nameextern_nameTypeForm[Any] | Callabletypetype_strippedr   default
str | Nonehelptextzset[Any]markersboolcustom_constructorz_confstruct._ArgConfigargconfz_MutexGroupConfig | Nonemutex_groupcall_argnamec              #     #    [         R                  U 5         Sv   [         R                  5         g! [         R                  5         f = f7f)zmContext for setting markers on fields. All fields created within the
context will have the specified markers.N)r   appendpopr+   s    F/home/james-whalen/.local/lib/python3.13/site-packages/tyro/_fields.pymarker_contextFieldDefinition.marker_context5   s6     
 	%%g.	)"&&("&&(s   A2 AAAc                    [         R                  U R                  U R                  U R                  U R
                  U R                  S9$ )N)nametypr(   r*   call_argname_override)r    maker9   r&   r(   r*   _call_argname)
field_specs    r5   from_field_specFieldDefinition.from_field_spec@   sC    ##&&((",":": $ 
 	
    Nc                   U[         L a  U[        ;  a  [        U5      n[        R                  " X5      n[        5       (       d  [        R                  " X5      n[        R                  " USS9u  pV[        S U 5       5      n[        U5      S:  aE  [        R                  " [        R                  " US   R                  5      5      R                  5       n[        S U 5       5      n[        R                   " S S S S S SS ["        S9n	U H  n
0 n[$        R&                  " U
5       HV  n[)        XR*                  5      nUR*                  S:X  a  U["        La  XUR*                  '   MA  MC  Uc  MH  XUR*                  '   MX     [$        R,                  " U	40 UD6n	U	R.                  c  M  U	R.                  nM     [        S	 U 5       5      n[        S
 U 5       5      n[0         H  nUU-  nM
     U["        L a  [        U5      S:  a  U	R2                  n[5        U U	R*                  c  U OU	R*                  UUUU[7        U5      U	R8                  S LU	[        U5      S:  a  US   OS Ub  US9$ U S9$ )Nall)search_typec              3  T   #    U  H  n[        U[        5      (       d  M  Uv   M      g 7fN)
isinstancer	   .0xs     r5   	<genexpr>'FieldDefinition.make.<locals>.<genexpr>`   s     CHq
1c0BH   (	(r   c              3  h   #    U  H(  n[        U[        R                  5      (       d  M$  Uv   M*     g 7frF   )rG   r   
_ArgConfigrH   s     r5   rK   rL   g   s!     VHq
1k>T>T0UH   #2	2T)helphelp_behavior_hintaliasesprefix_nameconstructor_factoryr(   r(   c              3  h   #    U  H(  n[        U[        R                  5      (       d  M$  Uv   M*     g 7frF   )rG   r   _MarkerrH   s     r5   rK   rL      s!     O8az!X=M=M/N8rP   c              3  T   #    U  H  n[        U[        5      (       d  M  Uv   M      g 7frF   )rG   r   rH   s     r5   rK   rL      s      *
!:a1B#CAAxrM   )r#   r$   r&   r'   r(   r*   r+   r-   r.   r/   r0   )r   r   r&   r   narrow_collection_typesr   expand_union_typesunwrap_annotatedtuplelenr   remove_single_line_breaksdedentdocumentationstripr   rO   r   dataclassesfieldsgetattrr9   replacerQ   r   r(   r    setrU   )r9   r:   r(   r*   r;   r'   metadatadoc_objsargconfsr.   overwrite_argconfupdate_valuesfieldvaluer+   mutually_exclusive_groupscontext_markerss                    r5   r<   FieldDefinition.makeJ   sY    #:')DDw-C //=&((..s<C #,"<"<Se"T CHCCx=199 9 9:eg 
 VHVV((# $#	
 "*M$++,=> 1::> ::*O349ejj1 4&05%**- ? "))'C]CG||'"<< "*$ O8OO$) *
*
 %
!
  6O&G  6 o%#h-!*;ooG ' 4',,'L&::$F,-1 2!4)>)J%
 	
 QU
 	
rA   c                    [        [        U R                  5      5      (       a$  [        U/[	        U R                  5      SS  Q7   nOUn[
        R                  " U UUS9$ )Nr   )r&   r'   )r   r   r&   r   r
   rb   re   )selfnew_type_strippednew_types      r5   with_new_type_stripped&FieldDefinition.with_new_type_stripped   s\     z$))455 "3!Nhtyy6I!"6M!NOH(H""+
 	
rA   c                    [         R                  U R                  ;   =(       d[    U R                  [        R
                  :H  =(       d7    [         R                  U R                  ;   =(       a    U R                  [        ;   $ )zEReturns True if the argument should be positional in the commandline.)	r   
Positionalr+   r#   r   dummy_field_namePositionalRequiredArgsr(   r   rr   s    r5   is_positionalFieldDefinition.is_positional   s`     4<</ 8#<#<<
 //4<<? @LL$??
	
rA   c                    [         R                  U R                  ;   =(       d    U R                  [        R
                  :H  $ )zLReturns True if the argument should be positional in underlying Python call.)r   _PositionalCallr+   r#   r   ry   r{   s    r5   is_positional_call"FieldDefinition.is_positional_call   s4     $$4 =8#<#<<		
rA    )r+   tuple[_markers.Marker, ...])r>   r   returnr    rF   )
r9   r"   r:   r%   r(   r   r*   r)   r;   z
Any | None)rs   r%   r   r    )r   r,   )__name__
__module____qualname____firstlineno____annotations__staticmethod
contextlibcontextmanagerr6   r?   r<   ru   r|   r   __static_attributes__r   rA   r5   r    r    "   s    
""3++L##)) )  ) 
 
  -1V
V
%V
 V
 	V

  *V
 V
p
!9
	


rA   r    i   )maxsizec                @    [        XSS9n[        U[        5      (       + $ )zDetermine whether a type should be treated as a 'struct type', where a single
type can be broken down into multiple fields (eg for nested dataclasses or
classes).F)support_single_arg_types) field_list_from_type_or_callablerG   r   )r:   default_instancelist_or_errors      r5   is_struct_typer      s-     5M $  rA   c                   [         R                  " X5      nU nA U(       a  U[        S5      L a  S / 4$ UR                     [        R
                  " U5      n[        R                  UR                  5         UbN  UR                  UR                   V s/ s H  n [        R                  U 5      PM     sn 4sSSS5        sSSS5        $ [        R                  " U[        5       5      nU(       ap  U(       ai  [        R                  [        R                  [        R                   45         S [        R                  SUUSS9/4sSSS5        sSSS5        sSSS5        $ U(       dK  [#        UR                  5      (       a1  [%        UR                  UUR                  S9sSSS5        sSSS5        $ SSS5        SSS5        ['        U S35      $ s  sn f ! , (       d  f       N1= f! , (       d  f       N:= f! , (       d  f       NC= f)	zGenerate a list of generic 'field' objects corresponding to the inputs of some
annotated callable.

Returns:
    The type that `f` is resolved as.
    A list of field definitions.
Nc                     g rF   r   r   rA   r5   <lambda>2field_list_from_type_or_callable.<locals>.<lambda>   s    rA   c                    U $ rF   r   )rJ   s    r5   r   r      s    !rA   rm    r9   r:   r(   r*   r4   z is not a valid struct type!)r   r<   r&   _typevar_contextr   get_struct_specr    r6   r+   instantiaterc   r?   _is_primitive_typerf   r   rx   r   callable_field_list_from_functionr   )fr   r   	type_info	type_origspecis_primitives          r5   r   r      s    ##A8II	  Id$;b!!		#	#"229=++I,=,=>''@D*@K1O33A6*  ?> 
$	# /AA)SUSL 8$33(((*B*BC $+00%,$-(8)+	 1 
  ?> 
$	#2 "hy~~&>&>0NN$%--/ ?> 
$	# ? 
$@ (9+5Q(RSS7*  ?> 
$	#sm    6G56G$G
2G$5	G5A G$(G	G$	G5?G$	G50G5G$
G!G$$
G2	.G55
Hc                
  ^ ^^ T [         L a  [        S5      $ [        T 5      [        R                  R
                  L a  [        ST  S35      $  [        [        R                  " T 5      R                  R                  5       5      nT nSnSnU(       d[  Sn[        T S5      (       a  T R                  m SnSn[        T [        R                   5      (       a  T R"                  m SnSnU(       d  M[  [        R$                  " T 5      (       a  [        S	5      $ T nS
n[        R&                  " T 5      (       Ga  S
n	[        T S5      (       a   T R(                  [*        R(                  La  Sn	O0[        T S5      (       a  T R,                  [*        R,                  La  Sn	U	b  T n
S
m[        R.                  " T 5       H!  mU	TR0                  ;   d  M  [3        TU	5      m   O   Tc   eT U
Ld   e[4        R6                  S:  aA  U(       d:  [        [        R                  " T 5      R                  R                  5       5      SS
 nUU U4S jmT" U
5      n[3        T SS
5      S:X  a  [9        U5      S:  a  [        S5      $ [        R:                  " T 5      n0 nUb?  [<        R>                  " U5      R@                   H  nURB                  XRD                  '   M     AUc   [F        RH                  " T SS9n[9        U5      S:X  d  [9        U5      S:X  a*  [        RL                  " U5      (       d  [        ST  S35      $ / nU GH  nURN                  nURQ                  URR                  5      nUc<  [        R&                  " U5      (       a!  [T        RV                  " XRR                  U5      nSnURQ                  URR                  [         5      nURX                  [        RZ                  R\                  L a!  [^        R`                  [^        Rb                  4nOURX                  [        RZ                  Rd                  L a  [^        Rf                  4n[h        US4   nSnOIURX                  [        RZ                  Rj                  L a"  [^        Rl                  4n[n        [p        U4   n0 n[r        Ru                  U5         URw                  [r        Ry                  URR                  U[z        ;   a  UO[|        U[^        R~                  4   UUR                  La  UO[        US95        S
S
S
5        GM     XN4$ ! [         a    [        ST  S35      s $ f = f! [J         a    [        ST  S35      s $ f = f! , (       d  f       GM>  = f)z.Generate field lists from non-class callables.z!`Any` is not a valid struct type!`z` is not a valid struct type!zCould not get signature for !FT__wrapped__z(Abstract classes cannot be instantiated!N__init____new__)   	   r   c                  > [         R                  R                  U 5      nUR                  n U   U TL a  [         R                  " TSS9sS S S 5        $ [        U 5       HX  n[        [         R                  " U5      T5      (       d  M*  T" [         R                  R                  U5      5      s  sS S S 5        $    S S S 5         S5       e! , (       d  f       N= f)NTinclude_extrasz?We couldn't find the base class. This seems like a bug in tyro.)	r   TypeParamResolverget_assignment_contextorigin_type"get_type_hints_resolve_type_paramsr   
issubclassunwrap_origin_strip_extrasresolve_params_and_aliases)clstypevar_contextbase_clsbase_cls_with_signaturer   get_hints_for_signature_funcs      r5   r   ?_field_list_from_function.<locals>.get_hints_for_signature_func_  s    "+"="="T"T# &11$55(KKd  %_
 %7s$;)%@@J3    %;%77RR (   %_
 %< %"Uu# %_s   C	AC	8C		
Cr   z<lambda>r   z*Lambda functions cannot be type-annotated!r   zCould not get hints for zEmpty hints for r   .r   )Br   r   r   collectionsabcr   listinspect	signature
parametersvalues
ValueErrorhasattrr   rG   	functoolspartialfunc
isabstractisclassr   objectr   getmro__dict__rd   sysversion_infor]   getdocdocstring_parserparseparamsdescriptionarg_namer   r   	TypeError
isfunctionr(   getr9   r   get_field_docstringkind	ParameterPOSITIONAL_ONLYr   rx   r   VAR_POSITIONAL_UnpackArgsCallr   VAR_KEYWORD_UnpackKwargsCallr   r"   r    r6   r2   r<   r   r   _OPTIONAL_GROUPemptyr   )r   r   r+   r   f_outdonefunctools_markerf_before_init_unwraphintssignature_funcorig_cls	docstringdocstring_from_arg_name	param_doc
field_listparamr(   r*   func_markersr:   r   r   s   `                   @@r5   r   r     s    	Cx+,OPP!}000+as2O,PQQQg''*55<<>? E D1m$$AD#a**++AD# d !+,VWW Eq1j!!ajj&G'NQ	""qyy'F&N% H&*#+2>>!+<'!%<%E%EE 7HA ,= +666H$$$ &(1Ag//2==DDFGK4 1:E q*d#z1c&kAo+8
 	

 q!I )//	:AAI:C:O:O#$6$67 B }	Q@@SWXE" 	E
a3v;!+W5G5G6 6 ,.>qc,CDDJ-- +..uzz:0D E E"66$jj'H
 )+99UZZ-::**:::$//1I1IJLZZ7,,;;; %446Lc
#CGZZ7,,888 %668LsCx.CG++L9$$ (+FF "C)A)A#BC'.ekk'AG% % 
 :9I b o  Q+.J1#Q,OPPQ`  	Q/2J1#Q0OPP	Qt :9s1   7T$ U ,A(U"$U ?U UU"
U2	)r:   r%   r   r   r   r,   )r   zCallable | TypeForm[Any]r   r   r   r,   r   zUUnsupportedStructTypeMessage | tuple[Callable | TypeForm[Any], list[FieldDefinition]])r   r   r   r   r+   r   r   zEUnsupportedStructTypeMessage | tuple[Callable, list[FieldDefinition]])6__doc__
__future__r   collections.abcr   r   rb   r   r   r   typingr   r   r   r   r   typing_extensionsr   r	   r
   r   r   tyro.conf._mutex_groupr   r   r   r   r   r   
_singletonr   r   _typingr   _typing_compatr   confr   r   constructors._registryr   r   constructors._struct_specr   r   r   r   r   	dataclassr    unsafe_cacher   r   r   r   rA   r5   <module>r      s   % #      
 - -  V V 4 = = D  / ' P  =? 9 > b
 b
 b
J D) *7T7T7T #7T
=7TtDD#&D1LDJDrA   