
    hr{                       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
r
SSKJrJrJrJrJrJrJrJrJr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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,  SS
K-J.r.J/r/J0r0J1r1J2r2J3r3  SSK4J5r5  \6" \	S\5      r7 \" S\,\   \5      r8\Rr                  " SS9 " S S5      5       r:S,S jr;S-S jr<S.S jr=S/S jr>\" S\\,\   S5      r?    S0S jr@\'R                  " SS9      S1S j5       rBS,S jrC      S1S jrD\\1rE\" S5      rF\      S2S j5       rG\      S3S j5       rG\ S4     S5S  jj5       rG S4     S6S! jjrG " S" S#5      rH " S$ S%5      rI\'R                  " SS9S1S& j5       rJ      S7S' jrK\L" S5      rM    S8S( jrN S9     S:S) jjrO S9     S:S* jjrPS;S+ jrQg)<z5Utilities for resolving types and forward references.    )annotationsN)AnyCallableDictListLiteralSequenceSetTupleTypeTypeVarUnioncastoverload)	AnnotatedFinal
ForwardRef	NoDefaultReadOnlySelfTypeAliasTypeget_args
get_originget_original_basesget_type_hints   )_unsafe_cacheconf)MISSING_AND_MISSING_NONPROP)TypeForm)is_typing_annotatedis_typing_classvaris_typing_genericis_typing_protocolis_typing_typealiastypeis_typing_union)TyroWarning	UnionTypeTypeOrCallableT)frozenc                  $    \ rS rSr% SrS\S'   Srg)TyroTypeAliasBreadCrumb@   zA breadcrumb we can leave behind to track names of type aliases and
`NewType` types. We can use type alias names to auto-populate
subcommands.strname N)__name__
__module____qualname____firstlineno____doc____annotations____static_attributes__r0       H/home/james-whalen/.local/lib/python3.13/site-packages/tyro/_resolver.pyr,   r,   @   s     Ir8   r,   c                <    [        U 5      n [        U 5      nUb  Un U $ )z[Returns the origin, ignoring typing.Annotated, of typ if it exists. Otherwise,
returns typ.)unwrap_annotatedr   )typorigins     r9   unwrap_origin_strip_extrasr>   I   s'     3
C_FJr8   c                @    [         R                  " [        U 5      5      $ )zESame as `dataclasses.is_dataclass`, but also handles generic aliases.)dataclassesis_dataclassr>   clss    r9   rA   rA   U   s    ##$>s$CDDr8   c                   [         R                  " U 5      (       d   e/ n[        [        [        U 5      SS9n[        U S5      R                  5        H  n[        R                  " U5      nX#R                     Ul	        [        [        UR                  5      5      (       a  MQ  [        UR                  [         R                  5      (       a  UR                  R                  Ul	        UR                  U5        M     U$ )zhSimilar to dataclasses.fields(), but includes dataclasses.InitVar types and
resolves forward references.Tinclude_extras__dataclass_fields__)r@   rA   "get_type_hints_resolve_type_paramsr   r   getattrvaluescopyr/   typer"   r   
isinstanceInitVarappend)rC   fieldsr   fields       r9   resolved_fieldsrR   [   s     ##C((((F4XsDK 45<<>		%  !,
 j455 ejj+"5"566EJe ?" Mr8   c                    [        U [        5      =(       a6    [        U [        5      =(       a    [	        U S5      =(       a    [	        U S5      $ )N_fields_asdict)rM   rL   
issubclasstuplehasattrrB   s    r9   is_namedtuplerY   x   s@    3 	$sE"	$C#	$ C#	r8   TypeOrCallableOrNonec                   [        [        U 5      5      (       aO  [        [        U 5      n[        [        [
        [        UR                  5      5      [        UR                  5      4   $ S n[        U S5      (       aY  [        U S5      (       aH  Uc  [        U S5      n[        [        U S5      5      n [        U S5      (       a  [        U S5      (       a  MH  Ub  [        U [        U5      4   n [        [        U 5      $ )Nr1   __supertype__)r%   rL   r   r   r   r   resolve_newtype_and_aliases	__value__r,   r1   rX   rI   rZ   )r<   typ_castreturn_names      r9   r]   r]      s     tCy))s+S5h6H6HIJ'(9(9:
 	
 K
#z
"
"wsO'D'D!#z2K)'#*GH #z
"
"wsO'D'D
 5kBCD$c**r8   i   )maxsizec                   [        U 5      n U[        ;   a  U $  [        U5      nU[        L a  U $ [        U 5      n[	        [        U5      5      (       a  U $ U[        L d  [        X#5      (       aB  [        [        U 5      5      (       a  [        U4[        U 5      SS -      $ [        [        U5      n U $ ! [         a     U $ f = f)a\  Type narrowing: if we annotate as Animal but specify a default instance of Cat,
we should parse as Cat.

This should generally only be applied to fields used as nested structures, not
individual arguments/fields. (if a field is annotated as Union[int, str], and a
string default is passed in, we don't want to narrow the type to always be
strings!)r   N)r]   r   rL   r;   r&   r   r   rV   r!   r   r   r   r)   	TypeError)r<   default_instancepotential_subclass
superclasss       r9   narrow_subtypesrg      s     &c
*C66
!"23% J%c*
 :j122J
+= J J":c?33 "4!6#qr9J!JKK~'9:C J   	Js#   B2 %B2 A
B2  B2 2
C ?C c                    [        U SS9u  p[        U5       Hr  n[        U[        R                  R
                  [        R                  R                  45      (       d  MH  UR                  c  MW  [        UR                  5       4U-      s  $    U $ )zSwap types using the `constructor_factory` attribute from
`tyro.conf.arg` and `tyro.conf.subcommand`. Runtime annotations are
kept, but the type is swapped.all)search_type)	r;   reversedrM   r   _confstruct
_ArgConfig_SubcommandConfigconstructor_factoryr   )r<   _r   annos       r9   swap_type_using_confstructrr      s    
 &cu=NA%$$//$$66  ((4d668:[HII & Jr8   c                t  ^ U[         ;   a  U $ SS jm[        U 5      n[        U 5      nU[        4:X  d  U[        L a  U[        [
        4:X  a  Un U [        [        [        R                  R                  4;   aK  [        U[        5      (       a6  [        U5      S:X  a  U $ [        [        [	        [        TU5      5            n GOgU [        [        [        R                  R                  4;   aJ  [        U[        5      (       a5  [        U5      S:X  a  U $ [         [        [	        [        TU5      5            n OU [        [        [        R                  R                  4;   ap  [        U[        5      (       a[  [        U5      S:X  a  U $ [	        [        TU5      5      n[        [        U5      5      S:X  a  ["        US   [
        4   n Oe["        U   n O[U[        L aR  [        U[        5      (       a=  [        U5      [        U5      :X  a%  ["        [	        U4S j[%        X!5       5       5         n ['        [(        U 5      $ )zFTypeForm narrowing for containers. Infers types of container contents.c                ,    [        [        U 5      U 5      $ N)narrow_collection_typesrL   )vals    r9   	_get_type*narrow_collection_types.<locals>._get_type   s    &tCy#66r8   r   r   c              3  N   >#    U  H  u  pU[         L a  T" U5      OUv   M     g 7fru   )r   ).0typ_ival_irx   s      r9   	<genexpr>*narrow_collection_types.<locals>.<genexpr>  s*      $?LE %*SL	% e;$?s   "%)rw   r   returnr    )r   r   r   r   rW   Ellipsislistr	   collectionsabcrM   lenr   r   mapsetr
   r   zipr   r)   )r<   rd   argsr=   default_typesrx   s        @r9   rv   rv      s    66
7 C=D_F v~&E/dsHo.E
tX{7788Z$> >  A%J5s9.>?@AB	h 8 89	9j#? ?  A%J%c)-=>?@A	+//":":;	;
%A A  A%Jc)-=>?s=!"a'a((23C&C%'//I-.. $'$? 
 $$r8   MetadataTypec                    g ru   r0   r<   rj   s     r9   r;   r;   !  s     7:r8   c                    g ru   r0   r   s     r9   r;   r;   (  s     .1r8   c                    g ru   r0   r   s     r9   r;   r;   /  s     r8   c                  ^ [        U 5      n [        U 5      [        ;   a#  [        U 5      S   n [        U 5      [        ;   a  M#  Tc!  [	        U S5      (       d  U $ [        U 5      S   $ [	        U S5      (       a3  SU R
                  ;   a#  [        U4S jU R
                  S    5       5      nOSn[        U[        5      (       d   e[	        U S5      (       d  X4$ [        U 5      n[        U5      S:  d   eU[        U4S	 jX#S
S -    5       5      -  n[	        US   S5      (       a%  U[        U4S j[        US   S5       5       5      -  nUS   U4$ )zHelper for parsing typing.Annotated types.

Examples:
- int, int => (int, ())
- Annotated[int, 1], int => (int, (1,))
- Annotated[int, "1"], int => (int, ())
r   N__metadata____dict____tyro_markers__c              3  Z   >#    U  H   nTS :X  d  [        UT5      (       d  M  Uv   M"     g7fri   NrM   r{   xrj   s     r9   r~   #unwrap_annotated.<locals>.<genexpr>S  s+      
5e#z!['A A5   +	+r0      c              3  Z   >#    U  H   nTS :X  d  [        UT5      (       d  M  Uv   M"     g7fr   r   r   s     r9   r~   r   c  s+      #A%:a#= 	
#r   r   c              3  Z   >#    U  H   nTS :X  d  [        UT5      (       d  M  Uv   M"     g7fr   r   r   s     r9   r~   r   k  s+      
9e#z!['A A9r   )
r]   r   STRIP_WRAPPER_TYPESr   rX   r   rW   rM   r   rI   )r<   rj   targetsr   s    `  r9   r;   r;   6  s`    &c
*C S/0
0smA S/0
0 sN++JC=## sJ$6#,,$F 
\\"45
 
 gu%%%%3''|C=Dt9>> u 8#  G tAw*++5 
T!W&89
 
 	

 7Gr8   c                      \ rS rSr% / rS\S'   \S	S j5       r\  S
       SS jj5       r	\        SS j5       r
Srg)TypeParamResolveris  z"List[Dict[TypeVar, TypeForm[Any]]]param_assignmentsc                2    [        U5      u  p[        X5      $ )z.Context manager for resolving type parameters.)resolve_generic_typesTypeParamAssignmentContext)rC   r<   type_from_typevars      r9   get_assignment_context(TypeParamResolver.get_assignment_contextv  s     "7s!;)#AAr8   Nc                |    Uc  [        5       nOUb  X;   a  U $ UR                  U 5        [        R                  XUS9$ )z>Apply type parameter assignments based on the current context.seenignore_confstruct)r   addr   _resolve_type_params)r<   r   r   s      r9   resolve_params_and_aliases,TypeParamResolver.resolve_params_and_aliases|  sJ     <5D#+JHHSM !55.? 6 
 	
r8   c                t  ^^ U(       d  [        U 5      n [        U 5      n [        [        SS5      nUb  [	        X5      (       a  [        U SS5      n[        US5      (       a|  [        U5      S:w  am  0 n[        U[        U 5      5       H  u  pg[        R                  UTUS9XV'   M     U R                  n [        X5         [        R                  U TUS9sSSS5        $ [        [        R                  5       H  nX;   d  M
  XP   s  $    [	        [        [         U 5      ["        5      (       a  [        U S[$        5      nU[$        La  U$ [        U S	S5      n	U	b  [&        R(                  " S
U  S3[*        S9  U	$ [        U SS5      n
[        U
5      S:  a&  [&        R(                  " S
U  S3[*        S9  [,        U
   $ [&        R(                  " S
U  S3[*        S9  [         $ [/        U 5      n[        U 5      nSn[        U5      S:  Ga"  [1        U5      (       a  USS nU[2        R4                  R6                  L a.  [	        US   [8        5      (       a  [;        US   5      USS -   nSn/ mU H?  n[        [        R                  5       H  nX;   d  M
  X^   n  O   TR=                  U5        MA     [;        UU4S jT 5       5      nU[>        L a	  [,        U   $ [        U S5      (       a  U RA                  U5      $ U(       a!  USS nUS   n[9        U5      U4nUc   eUU   $ Uc   eX   $ U $ ! , (       d  f       GNY= f)zGImplementation of resolve_type_params(), which doesn't consider cycles.GenericAliasN__type_params__r0   __len__r   r   __default__	__bound__z!Could not resolve type parameter zT. Type parameter resolution is not always possible in @staticmethod or @classmethod.category__constraints__Fr   Tc              3     >#    U  H8  n[         R                  U[        T5      S :  a  TR                  5       OTS9v   M:     g7f)r   )r   N)r   r   r   rK   )r{   r   new_args_listr   s     r9   r~   9TypeParamResolver._resolve_type_params.<locals>.<genexpr>  sH      
 'A "<<
 (+M(:Q(>D =  's   A A	copy_with)!rr   r]   rI   typesrM   rX   r   r   r   r   r   r^   r   rk   r   r   r   r   r   warningswarnr'   r   r   r!   r   r   r   r   rW   rO   r(   r   )r<   r   r   r   type_paramsr   kvdefaultboundconstraintsr=   r   callable_was_flattenedr   new_argsparam_typesreturn_type
final_argsr   s    `                 @r9   r   &TypeParamResolver._resolve_type_params  sY    !,S1C)#.und;#
3(E(E!#'8"=K {I..3{3Cq3H$&!Xc];DA+<+Q+Q8I ,R ,%( < mm/G,AA$:K B  HG "**;*M*M!N'(-- "O
 d3ng..c=)<Gi'Cd3E 7u  =Q  R( !#'8"=K;!#7u  =Q  R( [))MM3C5  9M  N$ JC}!&t9q="6**BQx111ja$6O6OT!W~QR0)-&M)12C2U2U)V%--0 *W $$Q'   
 '
 
H "X&k** }}X..'
 'sm&rl";/=
)))j)) )))''
 HGs   ?L((
L7r0   )r<   r)   r   r   )NF)r<   r)   r   zset[Any] | Noner   boolr   r)   )r<   r)   r   zset[Any]r   r   r   r)   )r1   r2   r3   r4   r   r6   classmethodr   staticmethodr   r   r7   r0   r8   r9   r   r   s  s    <>9>B B
  !%"'


  
 
	
 
* uuu  u 
	u ur8   r   c                  2    \ rS rSr    SS jrS rS rSrg)r   i  c                    Xl         X l        g ru   origin_typer   )selfr   r   s      r9   __init__#TypeParamAssignmentContext.__init__  s     !,!2r8   c                V    [         R                  R                  U R                  5        g ru   )r   r   rO   r   )r   s    r9   	__enter__$TypeParamAssignmentContext.__enter__  s    ++2243I3IJr8   c                @    [         R                  R                  5         g ru   )r   r   pop)r   exc_type	exc_value	tracebacks       r9   __exit__#TypeParamAssignmentContext.__exit__  s    ++//1r8   r   N)r   r)   r   zDict[TypeVar, TypeForm[Any]])r1   r2   r3   r4   r   r   r   r7   r0   r8   r9   r   r     s$    3#3 83K2r8   r   c                z  ^ [        [        U 5      5      (       d  U $ [        U 5      nU Vs/ s H  n[        U5      PM     nn T[        ;  aW  [        U4S jU 5       5      (       d=  [        R                  " [        T5       SU 3[        S9  [        U[        T5      4-      $ U $ s  snf ! [         a     U $ f = f)a,  Expand union types if necessary.

This is a shim for failing more gracefully when we we're given a Union type that
doesn't match the default value.

In this case, we raise a warning, then add the type of the default value to the
union. Loosely motivated by: https://github.com/brentyi/tyro/issues/20
c              3  @   >#    U  H  n[        TU5      S Lv   M     g7f)FN)#isinstance_with_fuzzy_numeric_tower)r{   ord   s     r9   r~   %expand_union_types.<locals>.<genexpr>-  s&      K
& 00@!DEQ&s   z# does not match any type in Union: r   )r&   r   r   r>   r   anyr   r   rL   r'   r   rc   )r<   rd   optionsr   options_unwrappeds    `   r9   expand_union_typesr     s     :c?++
smG@GH13A6H#>>s K
&K
 H
 H
 MM()* +%&($
 D)9$:#<<== J! I  Js   B'A B, ,
B:9B:c                8   [        X5      (       a  g[        U [        5      (       a  U[        [        [        4;   a  g g[        U [        5      (       a(  [        U [        5      (       d  U[        [        4;   a  g g[        U [        5      (       a
  U[        L a  gg)a  
Enhanced version of isinstance() that returns:
- True: if object is exactly of the specified type
- "~": if object follows numeric tower rules but isn't exact type
- False: if object is not of the specified type or numeric tower rules don't apply

Examples:
>>> enhanced_isinstance(3, int)       # Returns True
>>> enhanced_isinstance(3, float)     # Returns "~"
>>> enhanced_isinstance(True, int)    # Returns "~"
>>> enhanced_isinstance(3, bool)      # Returns False
>>> enhanced_isinstance(True, bool)   # Returns True
T~F)rM   r   intfloatcomplex)obj	classinfos     r9   r   r   =  s    " #!! #teW-- .  
C		jd&;&;(( ) 	 
C		r8   c                   Sn[        [        U 5      5      (       a  [        U S5      u  p[        U 5      n [        U 5      n0 n[	        U S5      (       a_  [        U S5      n[        R                  " U5      (       a  XC[        [        [        5      '   O!UR                  U[        [        [        5      '   [        U SS5      nSnUb~  UR                  SS5      nUR                  SS5      n[        US0 5      R                  S	S5      n	[        U	5      [        U5      :X  a%  S
nUR                  [        [!        X5      5      5        U(       d  Ub  [	        US5      (       aq  [	        UR"                  S5      (       aV  UR"                  n
[%        U 5      n[        U
5      [        U5      :X  d   eUn UR                  [        [!        X5      5      5        [        U5      S:X  a  X4$ [&        U /UQ7   U4$ )zIf the input is a class: no-op. If it's a generic alias: returns the origin
class, and a mapping from typevars to concrete types.r0   ri   __self____pydantic_generic_metadata__NFr   r=   
parametersT__parameters__r   r   )r!   r   r;   r]   rX   rI   inspectisclassr   r   r   	__class__getr   updatedictr   r   r   r   )r<   r   
origin_clsr   	self_typepydantic_generic_metadatais_pydantic_genericr   
origin_typr   typevarstypevar_valuess               r9   r   r   b  s    $&K:c?++ ,C7 &c
*C CJ68 sJC,	??9%%5>d7D125>5H5Hd7D12 !(-Ld S ,(,,VR8.228TB
Z)H"MQQ"

 z?c$i'"&$$T#j*?%@A  "J 011J--y99,,!#8}N 3333  c(&C!DE
;1%% s)[)*
 	
r8   c                v  ^^^^^^ [         R                  " U 5      (       Gd  [         R                  " U 5      (       a  [        U S5      n[         R                  " U5      (       a  UnO*[	        US5      (       a  UR
                  nOUR                  nA[        U S5      mTR                  nSmUR                  5        H  nXER                  ;   d  M  Um  O   Tc   eSUUUU4S jjmT" U5      nU$ [        U T5      R                  5        VVs0 s H  u  pxU[        R                  U5      _M     snn$ 0 mSUU4S jjmT" U 5        0 n[        U R                  5       5       GH3  n	U	T;  a  M  [        U	TS9n
[        R                   S:  a4  [#        U	R                  R%                  S	0 5      R'                  5       5      nO?[	        U	S	5      (       a$  [#        [        U	S	5      R'                  5       5      nO
[#        5       n[        U	S
S5      nUb)  U[#        [        UR%                  SS5      S	S5      5      -  nTU	      UR)                  U
R                  5        VVs0 s H"  u  pxX{;   d  M  U[        R                  U5      _M$     snn5        SSS5        GM6     U$ s  snnf s  snnf ! , (       d  f       GMV  = f)zCVariant of `typing.get_type_hints()` that resolves type parameters.r   __orig_class____func__Nc                `  > [         R                  U 5      nUR                  n U   U TL a  [        TTS9sS S S 5        $ [	        U 5       HC  n[        [        U5      T5      (       d  M  T" [         R                  U5      5      s  sS S S 5        $    S S S 5         S5       e! , (       d  f       N= f)NrE   zUCould not find base class containing method definition. This is likely a bug in tyro.)r   r   r   rH   r   rV   r>   r   )rC   typevar_contextbase_clsget_hints_for_bound_methodrF   unbound_funcunbound_func_context_clss      r9   r
  Fget_type_hints_resolve_type_params.<locals>.get_hints_for_bound_method  s    "3"J"J3"O%11$66A(  %_
 %7s$;)6x@4    %9-HHR   %_
 %< %ku %_s   BABB
B-c           	       > [        U 5      n[        U5      (       d  [        U5      (       d	  U [        L a  g [        R                  U 5      nUR                  T;   a  g UTUR                  '    [        UR                  5      nU   U Vs/ s H  n[        R                  USS9PM     nnS S S 5        W H  nT" U5        M     g ! [         a     g f = fs  snf ! , (       d  f       N5= f)NT)r   )
r   r#   r$   objectr   r   r   r   rc   r   )r   r   contextbasesbaseresolved_basescontext_from_origin_typerecurse_superclass_contexts         r9   r  Fget_type_hints_resolve_type_params.<locals>.recurse_superclass_context  s    _
j))!*--f}#::3?":: 8? !4!45	&w':':;E 
 "	 "D "<<D =  "	    #D&t, #-  		 Ws0   -C C	C'C
CCC
C&rE   )      r6   r   r=   r0   )r   Dict[str, Any])r   r   r   None)r   r   ismethodrI   rX   r  r   r1   mror   !_get_type_hints_backported_syntaxitemsr   r   rk   sysversion_infor   r   keysr   )r   rF   bound_instancerC   unbound_func_namer	  outr   r   r   	raw_hintsr!  r   r  r
  r  r  r  s    `           @@@@@r9   rH   rH     s   
 ??3C  $S*5N~..$ >+;<<(77C )22C"3
3L , 5 5 (,$GGI$(9(99/7, & ,777 , -S1CJ
 >%'DA $??BB  GI4- 4-l s# C	*665
	 g%{++//0A2FKKMND["344w{,=>CCEFD5D %,8$%
! %0#-11(DACTVX D &k2JJ !* 1 1y GA(CCAFF 1 32A +R J]N 32s*   "J=J(J"+J"J("J((
J8	c                    [        XS9$ ! [         a  n[        U S5      (       a   SSKJn  [	        U SS5      nUc8  [        U S5      (       a'  [
        R                  [	        U S5         R                  nUc(  [        US5      (       a  [	        [	        U S5      SS5      n[	        U S5      R                  5        VVs0 s H  u  pVXS" [        U5      U0 S	9_M     Os  snnf nnnUs SnA$ ! [         a     Uef = fUeSnAff = f)
z~Same as `typing.get_type_hints()`, but supports new union syntax (X | Y)
and generics (list[str]) in older versions of Python.rE   r6   r   )eval_type_backport__globals__Nr2   r   )globalnslocalns)r   rc   rX   r'  rI   r  modulesr   r  r   ImportError)r   rF   er'  r)  r   r   r$  s           r9   r  r  S  s   cAA 3)**A #3t< #\(B(B"{{73+EFOOH#*(E(E&wsJ'?PTUH !(-> ? E E G G )*Q-(TVWW G  
 -sD    
DC>BC+=CC+%D+
C95C>8C99C>>Dc                r     [         R                  " X5        g! [         R                  [        4 a     gf = f)z/Typeguard-based alternative for `isinstance()`.TF)	typeguard
check_typeTypeCheckErrorrc   )r<   values     r9   is_instancer3  u  s5    U($$i0 s    66)r<   r)   r   r)   )rC   zUnion[TypeForm, Callable]r   r   )rC   r    r   zList[dataclasses.Field])rC   r    r   r   )r<   rZ   r   rZ   )r<   r)   rd   r   r   r)   )r<   r)   rj   zTypeForm[MetadataType]r   z/Tuple[TypeOrCallable, Tuple[MetadataType, ...]])r<   r)   rj   zLiteral['all']r   z&Tuple[TypeOrCallable, Tuple[Any, ...]]ru   )r<   r)   rj   r  r   r)   )r<   r)   rj   z;Union[TypeForm[MetadataType], Literal['all'], object, None]r   zFUnion[Tuple[TypeOrCallable, Tuple[MetadataType, ...]], TypeOrCallable])r   r   r   r   r   zUnion[bool, Literal['~']])r<   r)   r   z3Tuple[TypeOrCallable, Dict[TypeVar, TypeForm[Any]]])F)r   zCallable[..., Any]rF   r   r   r  )r<   r   r2  r   r   r   )Rr5   
__future__r   collections.abcr   rK   r@   r   r  r   r   typingr   r   r   r   r   r	   r
   r   r   r   r   r   r   r/  typing_extensionsr   r   r   r   r   r   r   r   r   r   r    r   r   
_singletonr   _typingr    _typing_compatr!   r"   r#   r$   r%   r&   	_warningsr'   rI   r(   r)   	dataclassr,   r>   rA   rR   rY   rZ   r]   unsafe_cacherg   rr   rv   r   r   r;   r   r   r   r   rL   NoneTyper   rH   r  r3  r0   r8   r9   <module>r@     s   ; "     
           " 3   #E;.	! )8C=(C d#  $	E: 5x#PTU +	++< D)(	(( ( *(V*6%	6%+.6%6%r h' ~& 
:	:': 5: 
: 
1	11 ,1 
1 
 	  
 PT:	:L: L:zU Up2 2" D) *@	D :=
	=
8=
D !n	nn nd 5:	-1Dr8   