
    :e4                    L   	 d dl mZmZ d dlZd dlmZ d dlZd dlZd dlZd dlZd dl	Z
d dlZd dlZd dlZd dlmZmZmZmZ 	 d dlmZ n# e$ r d ZY nw xY wg dZddd	d
Zddd	dZd Zd Zd Zd Zd Zd Zd Zd Zd Z g Z!ddddZ" e#            fdZ$ G d d          Z% G d d          Z& G d d          Z' G d d e%e'd!          Z( G d" d#e(d!          Z) G d$ d%e*          Z+ G d& d'e+(          Z,e(d)             Z-e(d*             Z.e(d+             Z/e(d,             Z0e(d-             Z1e(d.             Z2e(d/             Z3e(d0             Z4e) e"d          d1                         Z5e(d2             Z6e(d3             Z7e(d4             Z8 G d5 d6e%d!          Z9d7e,d8e:fd9Z;d7e,d8e:fd:Z< G d; d<          Z= G d= d>          Z> G d? d@e%e&e>e=d!          Z? G dA dBe%e&e=d!          Z@ G dC dDe%e&d!          ZA G dE dFe%e&d!          ZB G dG dHe%e&e>e=d!          ZCdI ZD G dJ dKe%d!          ZE G dL dMeEd!          ZF G dN dOe'eEd!          ZG G dP dQe'eFd!          ZH G dR dSeGd!          ZI G dT dUeGd!          ZJ G dV dWe'eFd!          ZKdX ZL G dY dZeFd!          ZM G d[ d\eFd!          ZNe(d]             ZO G d^ d_eFd!          ZP G d` da          ZQ G db dc          ZRg ddZSg deZTeSeTz   dfgz   ZUdg ZVdh ZWdi ZXddlZYddnZZg dodpdqgdrZ[ G ds dte          Z\ G du dveQe\(          Z] G dw dxe'eFd!          Z^ G dy dz          Z_d{ Z`d| Zad} Zbejc        ejd        eje        ejf        eeefZgdd~Zhd Zid Zjd Zkd ZldZmde.d8e.fdZnd Zod Zpd Zq e ejr        ees                    Ztd Zud Zvd Zwd Zx e?d          Zy e?d          Zz e?d          Z{ e?dd          Z| e?dd          Z} e?dd          Z~ e?dd          Z e?dde*          Z e?dee          ZeGZ eej         j        d           Z eej         j        dj          Z eej         j        dm          Z eej         j        dj          Z eej         j        dj          Z eej         j        dj          Z eej         j        dj          Z eej         j        dj          Z eej         j        d           Z eej         j        dj          Z eej         j        dj          Z eIej         j        d          Zde_         eej         j        djd          Z eej         j        dj          Z eej         j        d          Z eej         j        d          Z eej         j        dj          Z eej         j        dj          Z eej         j        d           Z eJeddd          Zde_         eedjdd          Z eej        djd          Z eedjdd          Z ee#djdd          Z eej         j        dj          Z eej         j        dj          Z eej         j        d          Z eej         j        dj          Z eej        djd          Z eej        djd          Z eesddd          Z eej        dd          Z eej        d          Z eej        dj          Z eej        d          Z eej         j        dm          Z eej         j        d          Z ee*djdd          Zde_        e` G d de]                      Ze` G d de]                      Ze` G d de]                      Ze` G d de]                      Ze` G d de]                      Ze` G d de]e|                               Ze` G d de]e|                               ZddZ e#h d          Z e#h d          Z G d de*          ZddZe*                    eddi           Zd Zee_         G d de*          ZdddĜdńZe*                    eddi           ZdǄ e_        e(dȄ             Ze(dɄ             Z G dʄ d˦          ZeZdZ G d̄ deQe                   Z G d΄ dee                   Z G dЄ dee                   Z G d҄ de*          Z G dԄ deͬ(          Zedz   e_        eej        ej        <    ee
j        dj          Z ee
j        dj          Z G dׄ deͬ(          Z	edz   e	_        e	ej        e	j        <   deyd8eyfdۄZdddddܜde:de:de:dee*e,         ede,f         z  df         de,d8eeygeyf         fdZdS )    )abstractmethodABCMetaN)defaultdict)WrapperDescriptorTypeMethodWrapperTypeMethodDescriptorTypeGenericAlias)_idfuncc                     |S N )_xs     /usr/lib/python3.11/typing.pyr
   r
   '   s        )a	AnnotatedAnyCallableClassVarConcatenateFinal
ForwardRefGenericLiteralOptional	ParamSpecProtocolTupleTypeTypeVarTypeVarTupleUnionAbstractSet
ByteString	ContainerContextManagerHashable	ItemsViewIterableIteratorKeysViewMappingMappingViewMutableMappingMutableSequence
MutableSetSequenceSized
ValuesView	AwaitableAsyncIteratorAsyncIterable	Coroutine
CollectionAsyncGeneratorAsyncContextManager
ReversibleSupportsAbsSupportsBytesSupportsComplexSupportsFloatSupportsIndexSupportsIntSupportsRoundChainMapCounterDequeDictDefaultDictListOrderedDictSet	FrozenSet
NamedTuple	TypedDict	GeneratorBinaryIOIOMatchPatternTextIOAnyStrassert_typeassert_nevercastclear_overloadsdataclass_transformfinalget_args
get_originget_overloadsget_type_hintsis_typeddictLiteralStringNeverNewTypeno_type_checkno_type_check_decoratorNoReturnNotRequiredoverloadParamSpecArgsParamSpecKwargsRequiredreveal_typeruntime_checkableSelfTextTYPE_CHECKING	TypeAlias	TypeGuardUnpackFallow_special_formsc                x    	 | t          d           S t          | t                    rt          | ||          S | S )N)moduleis_class)type
isinstancestrr   )argrv   rt   s      r   _type_convertr|      sD    G
{Dzz#s L#f7JKKKKJr   Tc                    	 t           t          f}|s|t          fz  }|r|t          fz  }t	          | ||          } t          | t                    r| j        |v rt          |  d          | t          t          t          t          t          t          fv r| S |r| t          t          fv r| S t          | t                    s| t           t          fv rt          d|  d          t!          |           t"          u rt          | d| dd          | S )N)rv   rt    is not valid as type argumentzPlain z Got z.100.)r   r   r   r   r|   ry   _GenericAlias
__origin__	TypeErrorr   r`   re   ra   rm   rp   _SpecialFormrx   tuple)r{   msgis_argumentrv   rt   invalid_generic_formss         r   _type_checkr      s8   
 %h/ .(, 	.!eX-!
F@S
T
T
TC3&& @N3333>>>???
sM8UD)DDD
 sx&777
#|$$ F/B(B(BDDDDEEECyyE322S2222333Jr   c                 Z    | du p't          | t          t          t          t          f          S )N.)ry   r   listr   _ConcatenateGenericAlias)r{   s    r   _is_param_exprr      s2    #: @CD)%=>@ @ @r   c                     	 | j         t          j        j        u o(t	          |          dk    ot          |d                    S )N   r   )r   collectionsabcr   lenr   )typargss     r   _should_unflatten_callable_argsr      sC     	+/22 	=Ta;N47$;$;<r   c                 2   	 t          | t          j                  rt          |           S t          | t                    r#| j        dk    r| j        S | j         d| j         S | du rdS t          | t          j                  r| j        S t          |           S )Nbuiltinsr   ....)	ry   typesr	   reprrx   
__module____qualname__FunctionType__name__objs    r   
_type_reprr      s     #u)** Cyy#t 6>Z''##.553#3555
czzu#u)** |99r   c                    	 g }| D ]}t          |t                    rt          |t                    r2|D ].}t          |g          D ]}||vr|                    |           /_t          |d          r||vr|                    |           t          |dd          D ]}||vr|                    |           t          |          S N__typing_subst____parameters__r   )ry   rx   r   _collect_parametersappendhasattrgetattr)r   
parameterstr   	collecteds        r   r   r      s    J ) )a 	)5!! 	)  5 5!4aS!9!9 5 5I 
22")))44455 Q*++ 	)
""!!!$$$Q 0"55 ) )J&&%%a((() r   c           
          	 |st          |  d          t          |          }||k    r#t          d||k    rdnd d|  d| d|           d S )N is not a generic classToo manyfew arguments for 	; actual , expected )r   r   )clsr   elenalens       r   _check_genericr     s      93777888z??Dt|| ;vv% ; ;PS ; ;#'; ;48; ; < < 	< |r   c                     g }| D ]L}t          |dd           }|"|r
|d         du s|                    |           7|                    |           M|S )N__typing_unpacked_tuple_args__.)r   extendr   )r   newargsr{   subargss       r   _unpack_argsr   !  sp    G    #?FFGBK34F4FNN7####NN3Nr   c                     t          |           }t          |          t          |           k     r7g }| D ]0}||v r*|                    |           |                    |           1|} | S r   )setr   r   remove)params
all_params
new_paramsr   s       r   _deduplicater   +  st    VJ
:V$$
 	% 	%AJ!!!$$$!!!$$$Mr   c                     	 g }| D ]S}t          |t          t          j        f          r|                    |j                   >|                    |           Tt          t          |                    S r   )	ry   _UnionGenericAliasr   	UnionTyper   __args__r   r   r   r   r   ps      r   _remove_dups_flattenr   9  sy    
 F  a,eo>?? 	MM!*%%%%MM!f%%&&&r   c                     	 g }| D ]G}t          |t                    r|                    |j                   2|                    |           Ht          |          S r   )ry   _LiteralGenericAliasr   r   r   r   r   s      r   _flatten_literal_paramsr   I  sd    RF  a-.. 	MM!*%%%%MM!==r   typedc               .    	 fd}|  ||           S |S )Nc                       t          j                             t                              j                   t          j                    fd            }|S )Nr   c                  F    	  | i |S # t           $ r Y nw xY w | i |S r   r   )r   kwdscachedfuncs     r   innerz+_tp_cache.<locals>.decorator.<locals>.inner`  sR    vt,t,,,   4&&&&s    
)	functools	lru_cache	_cleanupsr   cache_clearwraps)r   r   r   r   s   ` @r   	decoratorz_tp_cache.<locals>.decorator\  ss    1$5111$77+,,,				' 	' 	' 	' 	' 
		' r   r   )r   r   r   s    ` r   	_tp_cacher   W  s=         yr   c                    	 t          | t                    r|                               S t          | t          t          t
          j        f          r+t          | t                    rot          d | j        D                       }| j	        }t          | |          r| j        |d d         |d         f         } n| j        |         } |rt          |          } t          fd| j        D                       }|| j        k    r| S t          | t                    rt	          | j        |          S t          | t
          j                  rt          j        t          j        |          S |                     |          S | S )Nc              3   b   K   | ]*}t          |t                    rt          |          n|V  +d S r   )ry   rz   r   .0r{   s     r   	<genexpr>z_eval_type.<locals>.<genexpr>y  sO         $.c3#7#7@
3S     r   r   c              3   <   K   | ]}t          |          V  d S r   )
_eval_type)r   aglobalnslocalnsrecursive_guards     r   r   z_eval_type.<locals>.<genexpr>  s1      ^^a
1hII^^^^^^r   )ry   r   	_evaluater   r	   r   r   r   r   __unpacked__r   r   rr   r   reduceoperatoror_	copy_with)r   r   r   r   r   is_unpackedev_argss    ```   r   r   r   n  s    !Z   ?{{8Wo>>>!m\5?CDD (a&& 	  :    D .K.q$77 'L$ss)T"X!67L& 1I^^^^^^STS]^^^^^aj  Ha&& 	7g666a)) 	(#HL':::;;w'''Hr   c                       e Zd Z	 dZd ZdS )_Final)__weakref__c                ,    d|vrt          d          d S )N_rootz&Cannot subclass special typing classesr   )r   r   r   s      r   __init_subclass__z_Final.__init_subclass__  s$    $DEEE r   N)r   r   r   	__slots__r   r   r   r   r   r     s0        ( IF F F F Fr   r   c                        e Zd Z	 dZd Zd ZdS )
_Immutabler   c                     | S r   r   selfs    r   __copy__z_Immutable.__copy__      r   c                     | S r   r   )r   memos     r   __deepcopy__z_Immutable.__deepcopy__  r  r   N)r   r   r   r   r   r  r   r   r   r   r     s:        =I      r   r   c                       e Zd Z	 dZdZdS )_NotIterabler   N)r   r   r   r   __iter__r   r   r   r  r    s         IHHHr   r  c                   d    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zed             ZdS )r   )_name__doc___getitemc                 D    || _         |j        | _        |j        | _        d S r   )r  r   r	  r
  )r   getitems     r   __init__z_SpecialForm.__init__  s     %
r   c                 6    |dv r| j         S t          |          )N>   r   r   )r	  AttributeError)r   items     r   __getattr__z_SpecialForm.__getattr__  s$    ///:T"""r   c                 &    t          d|           )NCannot subclass r   )r   basess     r   __mro_entries__z_SpecialForm.__mro_entries__  s    3433444r   c                     d| j         z   S Ntyping.r	  r   s    r   __repr__z_SpecialForm.__repr__      4:%%r   c                     | j         S r   r  r   s    r   
__reduce__z_SpecialForm.__reduce__  
    zr   c                 &    t          d|           )NzCannot instantiate r   )r   r   r   s      r   __call__z_SpecialForm.__call__  s    6d66777r   c                      t           | |f         S r   r"   r   others     r   __or__z_SpecialForm.__or__      T5[!!r   c                      t           || f         S r   r#  r$  s     r   __ror__z_SpecialForm.__ror__      UD[!!r   c                 &    t          |  d          )Nz! cannot be used with isinstance()r   r   r   s     r   __instancecheck__z_SpecialForm.__instancecheck__      4BBBCCCr   c                 &    t          |  d          )Nz! cannot be used with issubclass()r   r   r   s     r   __subclasscheck__z_SpecialForm.__subclasscheck__  r.  r   c                 .    |                      | |          S r   )r  r   r   s     r   __getitem__z_SpecialForm.__getitem__  s    }}T:...r   N)r   r   r   r   r  r  r  r  r  r!  r&  r)  r-  r1  r   r4  r   r   r   r   r     s        0I' ' '
# # #5 5 5& & &  8 8 8" " "" " "D D DD D D / / Y/ / /r   r   )r   c                       e Zd Zd ZdS )_LiteralSpecialFormc                 N    t          |t                    s|f} | j        | g|R  S r   )ry   r   r  r3  s     r   r4  z_LiteralSpecialForm.__getitem__  s5    *e,, 	'$Jt}T/J////r   N)r   r   r   r4  r   r   r   r6  r6    s#        0 0 0 0 0r   r6  c                   (     e Zd Z fdZ fdZ xZS )_AnyMetac                 v    | t           u rt          d          t                                          |          S )Nz+typing.Any cannot be used with isinstance())r   r   superr-  )r   r   	__class__s     r   r-  z_AnyMeta.__instancecheck__  s3    3;;IJJJww((---r   c                 Z    | t           u rdS t                                                      S )Nz
typing.Any)r   r;  r  r   r<  s    r   r  z_AnyMeta.__repr__  s'    3;;<ww!!!r   )r   r   r   r-  r  __classcell__r<  s   @r   r9  r9    sQ        . . . . .
" " " " " " " " "r   r9  c                         e Zd Z	  fdZ xZS )r   c                 n    | t           u rt          d           t                      j        | g|R i |S )NzAny cannot be instantiated)r   r   r;  __new__)r   r   kwargsr<  s      r   rC  zAny.__new__  sA    #::8999uwws4T444V444r   )r   r   r   rC  r?  r@  s   @r   r   r     s=        	5 5 5 5 5 5 5 5 5r   r   )	metaclassc                 (    	 t          |  d          Nz is not subscriptabler   r3  s     r   re   re   	  s      t222
3
33r   c                 (    	 t          |  d          rG  r   r3  s     r   ra   ra     s     ( t222
3
33r   c                 (    	 t          |  d          rG  r   r3  s     r   rm   rm   7  s      t222
3
33r   c                 (    	 t          |  d          rG  r   r3  s     r   r`   r`   K  s     , t222
3
33r   c                 L    	 t          ||  d          }t          | |f          S N accepts only single type.r   r   r   r   r  s      r   r   r   f  3    " zd#F#F#FGGDw'''r   c                 L    	 t          ||  d          }t          | |f          S rL  rN  rO  s      r   r   r   |  rP  r   c                 z   	 |dk    rt          d          t          |t                    s|f}dt          fd|D                       }t          |          }t	          |          dk    r|d         S t	          |          dk    r#t          d           |v rt          | |d	          S t          | |          S )
Nr   z Cannot take a Union of no types.z)Union[arg, ...]: each arg must be a type.c              3   8   K   | ]}t          |          V  d S r   r   r   r   r   s     r   r   zUnion.<locals>.<genexpr>  s-      ??q{1c**??????r      r   r   r   name)r   ry   r   r   r   rx   r   r   r   r   s     @r   r"   r"     s    : R:;;;j%(( # ]

5C????J?????J%j11J
:!!}
:!T

j 8 8!$
DDDDdJ///r   c                 b    	 t          ||  d          }t          |t          d           f         S )Nz requires a single type.)r   r"   rx   )r   r   r{   s      r   r   r     s2    6
jT"C"C"C
D
DCd4jj!!r   c           
          	 t          |          }	 t          d t          t          t	          |                              D                       }n# t
          $ r Y nw xY wt          | |          S )Nc              3       K   | ]	\  }}|V  
d S r   r   )r   r   r   s      r   r   zLiteral.<locals>.<genexpr>  s&      ^^A1^^^^^^r   )r   r   r   r   _value_and_type_iterr   r   r3  s     r   r   r     s    , )44J^^d;OPZ;[;[6\6\)])]^^^^^

     j111s   A A 
A A c                 (    	 t          |  d          rG  r   r3  s     r   rp   rp     s      t222
3
33r   c                 2   	 |dk    rt          d          t          |t                    s|f}|d         du s*t          |d         t                    st          d          dg fd|d d         D             |d         R }t	          | |d	          S )
Nr   z&Cannot take a Concatenate of no types.r   .zMThe last parameter to Concatenate should be a ParamSpec variable or ellipsis.z/Concatenate[arg, ...]: each arg must be a type.c              3   8   K   | ]}t          |          V  d S r   rT  rU  s     r   r   zConcatenate.<locals>.<genexpr>  s-      AAAK3''AAAAAAr   T_paramspec_tvars)r   ry   r   r   r   rY  s     @r   r   r     s     R@AAAj%(( # ]
rNc!!Z
2	%J%J! : ; ; 	;
;CRAAAACRCAAAR:b>RRJ#D*59; ; ; ;r   c                 L    	 t          ||  d          }t          | |f          S rL  rN  rO  s      r   rq   rq     s4    +X zd#F#F#FGGDw'''r   c                   F    e Zd Z	 dZddddZd Zd Zd	 Zd
 Zd Z	d Z
dS )r   )__forward_arg____forward_code____forward_evaluated____forward_value____forward_is_argument____forward_is_class____forward_module__TNF)rw   c                F   t          |t                    st          d|          |d         dk    rd| d}n|}	 t          |dd          }n # t          $ r t	          d|          w xY w|| _        || _        d	| _        d | _        || _	        || _
        || _        d S )
Nz*Forward reference must be a string -- got r   *(z,)[0]z<string>evalz/Forward reference must be an expression -- got F)ry   rz   r   compileSyntaxErrorre  rf  rg  rh  ri  rj  rk  )r   r{   r   rv   rw   arg_to_compilecodes          r   r  zForwardRef.__init__M  s    #s## 	RPPPQQQ
 q6S==+^^^NN N	Y>:v>>DD 	Y 	Y 	YWPSWWXXX	Y  # $%*"!%'2$$,!"(s   A A-c                    | j         |v r| S | j        r||ur||i x}}n	||}n||}| j        4t          t          j                            | j        d           d|          }t          t          | j	        ||          d| j
        | j                  }t          ||||| j         hz            | _        d| _        | j        S )N__dict__z*Forward references must evaluate to types.)r   rt   T)re  rg  rk  r   sysmodulesgetr   ro  rf  ri  rj  r   rh  )r   r   r   r   type_s        r   r   zForwardRef._evaluatee  s    ?22K) 	.WH-D-DGO%''77!""&2"KOOD$;TBBJPX   T*Hg>>< 8$($=	  E &0x/T=Q<R*R& &D" *.D&%%r   c                     t          |t                    st          S | j        r'|j        r | j        |j        k    o| j        |j        k    S | j        |j        k    o| j        |j        k    S r   )ry   r   NotImplementedrg  re  rh  rk  r$  s     r   __eq__zForwardRef.__eq__  s    %,, 	"!!% 	G%*E 	G(E,AA F*e.EEG$(== D'5+CC	Er   c                 8    t          | j        | j        f          S r   )hashre  rk  r   s    r   __hash__zForwardRef.__hash__  s    T)4+BCDDDr   c                      t           | |f         S r   r#  r$  s     r   r&  zForwardRef.__or__  r'  r   c                      t           || f         S r   r#  r$  s     r   r)  zForwardRef.__ror__  r*  r   c                 D    | j         d}n
d| j         }d| j        | dS )N z	, module=zForwardRef())rk  re  )r   module_reprs     r   r  zForwardRef.__repr__  s;    "*KKAd&=AAKCT1C[CCCCr   TN)r   r   r   r   r  r   r|  r  r&  r)  r  r   r   r   r   r   E  s        7'I
)u ) ) ) ) )0& & &4E E EE E E" " "" " "D D D D Dr   r   r   returnc                 P    t          | t                     ot          | dd          S )N#__typing_is_unpacked_typevartuple__F)ry   rx   r   r   s    r   _is_unpacked_typevartupler    s.    At$$$ EA<eDDFr   c                 X    t          | t          t          f          pt          |           S r   )ry   r    r   r  r  s    r   _is_typevar_liker    s%    a'9-..N2KA2N2NNr   c                       e Zd Z	 d ZdS )_PickleUsingNameMixinc                     | j         S r   r   r   s    r   r  z _PickleUsingNameMixin.__reduce__  
    }r   N)r   r   r   r  r   r   r   r  r    s&        9    r   r  c                   (    e Zd Z	 d Zd Zd Zd ZdS )_BoundVarianceMixinc                     	 |r|rt          d          t          |          | _        t          |          | _        |rt	          |d          | _        d S d | _        d S )Nz"Bivariant types are not supported.zBound must be a type.)
ValueErrorbool__covariant____contravariant__r   	__bound__)r   bound	covariantcontravariants       r   r  z_BoundVarianceMixin.__init__  sp    	  	C 	CABBB!)__!%m!4!4 	"(0GHHDNNN!DNNNr   c                      t           | |f         S r   r#  r   rights     r   r&  z_BoundVarianceMixin.__or__  r'  r   c                      t           || f         S r   r#  r   lefts     r   r)  z_BoundVarianceMixin.__ror__      T4Z  r   c                 B    | j         rd}n| j        rd}nd}|| j        z   S )N+-~)r  r  r   )r   prefixs     r   r  z_BoundVarianceMixin.__repr__  s8     	FF# 	FFF%%r   N)r   r   r   r  r&  r)  r  r   r   r   r  r    sU        " " "" " "! ! !& & & & &r   r  c                   0     e Zd Z	 dddd fd
Zd Z xZS )r    NFr  r  r  c                J   || _         t                                          |||           |r|t          d          |r"t	          |          dk    rt          d          dt          fd|D                       | _        t                      }|dk    r	|| _        d S d S )Nz-Constraints cannot be combined with bound=...rV  z"A single constraint is not allowedz:TypeVar(name, constraint, ...): constraints must be types.c              3   8   K   | ]}t          |          V  d S r   rT  )r   r   r   s     r   r   z#TypeVar.__init__.<locals>.<genexpr>  s-      $N$NQ[C%8%8$N$N$N$N$N$Nr   typing)	r   r;  r  r   r   r   __constraints___callerr   )	r   rX  r  r  r  constraintsdef_modr   r<  s	          @r   r  zTypeVar.__init__  s    	=999 	M5,KLLL 	B3{++q00@AAAJ$$N$N$N$N+$N$N$NNN))h%DOOO r   c                     d}t          ||d          }t          |t                    r|j        t          u s&t          |t
                    r#t          |dd          rt          | d          |S )N*Parameters to generic types must be types.T)r   r   Fr~   )r   ry   r   r   rr   r	   r   r   )r   r{   r   s      r   r   zTypeVar.__typing_subst__	  s~    :#s555]++ 	D&0H0H\** 1I/6sNE/R/R 1IsBBBCCC
r   )r   r   r   r  r   r?  r@  s   @r   r    r      sa        )V 26 & & & & & & &      r   r    c                   .    e Zd Z	 d Zd Zd Zd Zd ZdS )r!   c                 N    || _         t                      }|dk    r	|| _        d S d S Nr  )r   r  r   )r   rX  r  s      r   r  zTypeVarTuple.__init__+  s2     ))h%DOOO r   c              #   (   K   t           |          V  d S r   rr   r   s    r   r  zTypeVarTuple.__iter__3        Tlr   c                     | j         S r   r  r   s    r   r  zTypeVarTuple.__repr__6  r  r   c                      t          d          )Nz2Substitution of bare TypeVarTuple is not supportedr   r   r{   s     r   r   zTypeVarTuple.__typing_subst__9  s    LMMMr   c           	      "   |j         }|                    |           }||dz   d          D ])}t          |t                    rt	          d|           *t          |          }t          |          }|}||z
  dz
  }	d }
d }t          |          D ]e\  }}t          |t                    sKt          |dd           }|r8t          |          dk    r%|d         du r|
t	          d          |}
|d         }f|
't          ||
          }t          |	||
z
  dz
            }	n$||	z   |k    rt	          d	| d
| d|dz
             g |d |         |g||z
  z  t          ||||	z
                     |g||	z
  |z
  |z
  dz
  z  |||	z
  d          R S )NrV  z(More than one TypeVarTuple parameter in r   r   r   .z6More than one unpacked arbitrary-length tuple argumentr   Too few arguments for r   z, expected at least )r   indexry   r!   r   r   	enumeraterx   r   minr   )r   aliasr   r   typevartuple_indexparamr   plenr  r  var_tuple_indexfillargkr{   r   s                  r   __typing_prepare_subst__z%TypeVarTuple.__typing_prepare_subst__<  sF   %#\\$//.2334 	T 	TE%.. T R5 R RSSST 4yy6{{!))A-oo 	) 	)FAsc4(( )!#'GNN )s7||q00WR[C5G5G&2'(`aaa&'O%ajG&t_--Dto59::EEE\D   JU J J'+J JAEaJ J K K K
%4%[
i+d23
 $tTE\)*++
 i,/AAAEF	

 $,-- 
 
 	
r   N)r   r   r   r  r  r  r   r  r   r   r   r!   r!     sg        0& & &    N N N"
 "
 "
 "
 "
r   r!   c                   "    e Zd Z	 d Zd Zd ZdS )rh   c                     || _         d S r   r   r   origins     r   r  zParamSpecArgs.__init__m       r   c                      | j         j         dS )Nz.argsr   r   r   s    r   r  zParamSpecArgs.__repr__p  s    /*1111r   c                 Z    t          |t                    st          S | j        |j        k    S r   )ry   rh   r{  r   r$  s     r   r|  zParamSpecArgs.__eq__s  s*    %// 	"!!%"222r   Nr   r   r   r  r  r|  r   r   r   rh   rh   a  sF        
! ! !2 2 23 3 3 3 3r   rh   c                   "    e Zd Z	 d Zd Zd ZdS )ri   c                     || _         d S r   r  r  s     r   r  zParamSpecKwargs.__init__  r  r   c                      | j         j         dS )Nz.kwargsr  r   s    r   r  zParamSpecKwargs.__repr__  s    /*3333r   c                 Z    t          |t                    st          S | j        |j        k    S r   )ry   ri   r{  r   r$  s     r   r|  zParamSpecKwargs.__eq__  s*    %11 	"!!%"222r   Nr  r   r   r   ri   ri   y  sF        
! ! !4 4 43 3 3 3 3r   ri   c                   b     e Zd Z	 ed             Zed             Zdddd fd
Zd Zd Z xZ	S )	r   c                      t          |           S r   )rh   r   s    r   r   zParamSpec.args  s    T"""r   c                      t          |           S r   )ri   r   s    r   rD  zParamSpec.kwargs  s    t$$$r   NFr  c                    || _         t                                          |||           t                      }|dk    r	|| _        d S d S r  )r   r;  r  r  r   )r   rX  r  r  r  r  r<  s         r   r  zParamSpec.__init__  sM    	=999))h%DOOO r   c                     t          |t          t          f          rt          d |D                       }n!t          |          st	          d|           |S )Nc              3   6   K   | ]}t          |d           V  dS )zExpected a type.NrT  r   r   s     r   r   z-ParamSpec.__typing_subst__.<locals>.<genexpr>  s-      HHqA'9::HHHHHHr   zFExpected a list of types, an ellipsis, ParamSpec, or Concatenate. Got )ry   r   r   r   r   r  s     r   r   zParamSpec.__typing_subst__  sw    cD%=)) 	EHHCHHHHHCC$$ 	E D>AD D E E E
r   c                 t   |j         }|                    |           }|t          |          k    rt          d|           t          |          dk    rt	          |d                   s|f}nJt          ||         t                    r/g |d |         t          ||                   ||dz   d          R }|S )Nr  rV  r   )r   r  r   r   r   ry   r   r   )r   r  r   r   is        r   r  z"ParamSpec.__typing_prepare_subst__  s    %LLD		>><U<<===v;;!N47$;$;7DDQ&& 	<;T"1"X;uT!W~~;QqSTT
;;Dr   )
r   r   r   propertyr   rD  r  r   r  r?  r@  s   @r   r   r     s        #J # # X# % % X% '+e5 & & & & & & &        r   r   c                 V    |                      d          o|                     d          S )N__)
startswithendswith)attrs    r   
_is_dunderr    s%    ??4  8T]]4%8%88r   c                   V     e Zd Z	 ddddZd Zd Zd Z fdZd	 Zd
 Z	 fdZ
 xZS )_BaseGenericAliasTNinstrX  c                >    || _         || _        || _        d | _        d S r   )_instr	  r   r   )r   r  r  rX  s       r   r  z_BaseGenericAlias.__init__  s"    

 r   c                     | j         s%t          d| j         d| j        j         d           | j        |i |}	 | |_        n# t          $ r Y nw xY w|S )NzType z cannot be instantiated; use z
() instead)r  r   r	  r   r   __orig_class__r  )r   r   rD  results       r   r!  z_BaseGenericAlias.__call__  s    z 	I HDJ H H#'?#;H H H I I I $1&11	$(F!! 	 	 	D	s   A 
AAc                 @   g }| j         |vr|                    | j                    |                    |           }||dz   d          D ].}t          |t                    st          |t                    r n/|                    t                     t          |          S )NrV  )r   r   r  ry   r  
issubclassr   r   )r   r  resr  bs        r   r  z!_BaseGenericAlias.__mro_entries__  s    ?%''JJt'''KKqstt 	  	 A!.// :a3I3I  JJwSzzr   c                     |dv r| j         p| j        j        S d| j        v r$t	          |          st          | j        |          S t          |          )N>   r   r   r   )r	  r   r   ru  r  r   r  )r   r  s     r   r  z_BaseGenericAlias.__getattr__  s\    ///:9!99 4=((D1A1A(4?D111T"""r   c                     t          |          s|dv r$t                                          ||           d S t          | j        ||           d S )N>   r  r	  _nparamsrb  )r  r;  __setattr__setattrr   )r   r  valr<  s      r   r  z_BaseGenericAlias.__setattr__  s^    d 	0t (<  <  <GGc*****DOT3/////r   c                 F    |                      t          |                    S r   r1  rx   r,  s     r   r-  z#_BaseGenericAlias.__instancecheck__      %%d3ii000r   c                      t          d          )NzBSubscripted generics cannot be used with class and instance checksr   r0  s     r   r1  z#_BaseGenericAlias.__subclasscheck__  s     5 6 6 	6r   c           	          t          t          t                                                      d t	          | j                  D             z                       S )Nc                 0    g | ]}t          |          |S r   )r  )r   r  s     r   
<listcomp>z-_BaseGenericAlias.__dir__.<locals>.<listcomp>!  s%    QQQD
4@P@PQ4QQQr   )r   r   r;  __dir__dirr   r>  s    r   r  z_BaseGenericAlias.__dir__  sW    C))QQC$8$8QQQR S S T T 	Tr   )r   r   r   r  r!  r  r  r  r-  r1  r  r?  r@  s   @r   r  r    s         (,$     	 	 	
 
 
# # #0 0 0 0 01 1 16 6 6T T T T T T T T Tr   r  c                        e Zd Zdddd fd
Zd Zd Zd Zd	 Zed
             Z	d Z
d Zd Zd Zd Z fdZd Z xZS )r   TNF)r  rX  rb  c                   t                                          |||           t          |t                    s|f}t          d |D                       | _        t          |          | _        || _        |s|j        | _        d S d S )Nr  c              3   0   K   | ]}|t           u rd n|V  dS ).N)_TypingEllipsisr  s     r   r   z)_GenericAlias.__init__.<locals>.<genexpr>N  sE       / /$% &'/%9%9cc/ / / / / /r   )	r;  r  ry   r   r   r   r   rb  r   )r   r  r   r  rX  rb  r<  s         r   r  z_GenericAlias.__init__I  s    d666$&& 	7D / /)-/ / / / /1$77 0 	0$/DOOO	0 	0r   c                 z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r   )ry   r   r{  r   r   r$  s     r   r|  z_GenericAlias.__eq__U  s=    %// 	"!!5#33 4MU^3	5r   c                 8    t          | j        | j        f          S r   )r~  r   r   r   s    r   r  z_GenericAlias.__hash__[  s    T_dm4555r   c                      t           | |f         S r   r#  r  s     r   r&  z_GenericAlias.__or__^  r'  r   c                      t           || f         S r   r#  r  s     r   r)  z_GenericAlias.__ror__a  r  r   c                 Z   | j         t          t          fv rt          d|            | j        st          |  d          t          |t                    s|f}t          d |D                       }t          |          }|                     |          }| 	                    |          }|S )Nz%Cannot subscript already-subscripted r   c              3   4   K   | ]}t          |          V  d S r   r|   r   r   s     r   r   z,_GenericAlias.__getitem__.<locals>.<genexpr>~  s*      44!]1%%444444r   )
r   r   r   r   r   ry   r   r   _determine_new_argsr   )r   r   new_argsrs       r   r4  z_GenericAlias.__getitem__d  s    " ?w111JDJJKKK" 	>t<<<=== $&& 	7D44t44444D!!++D11NN8$$r   c           
      p   | j         }|D ]!}t          |dd           }| || |          }"t          |          }t          |          }||k    r#t          d||k    rdnd d|  d| d|           t	          t          ||                    }t          |                     | j        |                    S )Nr  r   r   r   r   r   r   )	r   r   r   r   dictzipr   _make_substitutionr   )r   r   r   r  preparer   r  new_arg_by_params           r   r  z!_GenericAlias._determine_new_args  s     $ 	+ 	+Ee%?FFG"wtT**4yy6{{4<< ?TD[[66e ? ?TX ? ?'+? ?8<? ? @ @ @FD 1 122T,,T]<LMMNNNr   c           	      R   	 g }|D ]}t          |t                    r|                    |           .t          |dd           }|r |||                   }n~t          |dd          }|s|}nhg }|D ]N}	t          |	t                    r|                    ||	                    3|                    ||	                    O|t          |                   }| j        t          j	        j
        k    r,t          |t                    r|                    |           t          |          r|                    |           =t          |t                    r8|                    t          |                     ||                               |                    |           |S r   )ry   rx   r   r   r!   r   r   r   r   r   r   r  r  )
r   r   r  r  old_arg	substfuncnew_arg	subparamsr   r   s
             r   r  z _GenericAlias._make_substitution  s   2 8	) 8	)G'4(( ((();TBBI 6#)$4W$=>>#G-=rBB	  	6%GG G& @ @%a66 @#NN+;A+>????#NN+;A+>????%eGnn5G+/":::z'SX?Y?Y: ((((*733 ) ((((GU++ ) $11';KLLMM    ((((r   c                 ^    |                      | j        || j        | j        | j                  S )NrX  r  rb  )r<  r   r	  r  rb  r   r   s     r   r   z_GenericAlias.copy_with  s4    ~~dot$*4:/3/D  F F 	Fr   c                     | j         rd| j         z   }nt          | j                  }| j        r%d                    d | j        D                       }nd}| d| dS )Nr  , c                 ,    g | ]}t          |          S r   r   r  s     r   r  z*_GenericAlias.__repr__.<locals>.<listcomp>  s    CCCjmmCCCr   z()[])r	  r   r   r   join)r   rX  r   s      r   r  z_GenericAlias.__repr__  su    : 	/tz)DDdo..D= 	99CCT]CCCDDDD D      r   c                     | j         rt                      | j                  }n| j        }t          | j                  }t          |          dk    rt          |d         t                    s|\  }t          j        ||ffS )NrV  r   )	r	  globalsr   r   r   r   ry   r   r  )r   r  r   s      r   r  z_GenericAlias.__reduce__  sn    : 	%YYtz*FF_FT]##t99>>*T!We"<"<>ED&$//r   c                 p   t          | j        t                    rt          d|           | j        r!t                                          |          S | j        t          u rLt          |v rdS |	                    |           }||dz   d          D ]}t          |t                    r|| ur dS | j        fS )Nr  r   rV  )ry   r   r   r   r	  r;  r  r   r   r  r  )r   r  r  r  r<  s       r   r  z_GenericAlias.__mro_entries__  s    do|44 	97t77888: 	277**5111?g%%5  rD!!A1Q344[  a!233 22!!r   c              #   (   K   t           |          V  d S r   r  r   s    r   r  z_GenericAlias.__iter__  r  r   )r   r   r   r  r|  r  r&  r)  r   r4  r  r  r   r  r  r  r  r?  r@  s   @r   r   r   /  s       4 .2"'
0 
0 
0 
0 
0 
0 
05 5 56 6 6" " "! ! !   Y>O O O:< < <|F F F
! 
! 
!0 0 0" " " " "      r   r   c                   d     e Zd Zddd fd
Zed             Zd Zd Z fdZd	 Z	d
 Z
d Z xZS )_SpecialGenericAliasTNr  c                    ||j         }t                                          |||           || _        |j        dk    rd|j         d| _        d S d|j         d|j         d| _        d S )Nr  r   zA generic version of r   )r   r;  r  r  r   r   r
  )r   r  nparamsr  rX  r<  s        r   r  z_SpecialGenericAlias.__init__  s    <?Dd666
**I63FIIIDLLL]63D]]vGZ]]]DLLLr   c                     t          |t                    s|f}dt          fd|D                       }t          | || j                   |                     |          S )Nr  c              3   8   K   | ]}t          |          V  d S r   rT  rU  s     r   r   z3_SpecialGenericAlias.__getitem__.<locals>.<genexpr>   -      ;;q{1c**;;;;;;r   )ry   r   r   r  r   r   r   r   s     @r   r4  z _SpecialGenericAlias.__getitem__  si    &%(( 	YF:;;;;F;;;;;tVT]333~~f%%%r   c                 F    t          | j        || j        | j                  S )N)rX  r  )r   r   r	  r  r   r   s     r   r   z_SpecialGenericAlias.copy_with$  s(    T_f"&*4:? ? ? 	?r   c                     d| j         z   S r  r  r   s    r   r  z_SpecialGenericAlias.__repr__(  r  r   c                     t          |t                    rt          |j        | j                  S t          |t                    st          || j                  S t                                          |          S r   )ry   r.  r  r   r   r;  r1  )r   r   r<  s     r   r1  z&_SpecialGenericAlias.__subclasscheck__+  sf    c/00 	?cndo>>>#}-- 	4c4?333ww((---r   c                     | j         S r   r  r   s    r   r  z_SpecialGenericAlias.__reduce__2  r  r   c                      t           | |f         S r   r#  r  s     r   r&  z_SpecialGenericAlias.__or__5  r'  r   c                      t           || f         S r   r#  r  s     r   r)  z_SpecialGenericAlias.__ror__8  r  r   )r   r   r   r  r   r4  r   r  r1  r  r&  r)  r?  r@  s   @r   r.  r.    s        044 ^ ^ ^ ^ ^ ^ ^ & & Y&? ? ?& & &. . . . .  " " "! ! ! ! ! ! !r   r.  c                   $     e Zd Z fdZd Z xZS )_CallableGenericAliasc                 $   | j         }t          |          dk    r5t          |d                   r t                                                      S dd                    d |d d         D                        dt          |d                    dS )	Nr   r   ztyping.Callable[[r#  c                 ,    g | ]}t          |          S r   r%  r  s     r   r  z2_CallableGenericAlias.__repr__.<locals>.<listcomp>B  s    AAA!
1AAAr   r   z], r'  )r   r   r   r;  r  r(  r   r   r   r<  s     r   r  z_CallableGenericAlias.__repr__<  s    }t99>>nT!W55>77##%%%+YYAAtCRCyAAABB+ +d2h''+ + + 	,r   c                     | j         }t          |          dk    rt          |d                   st          |d d                   |d         f}t          j        t          |ffS )Nr   r   r   )r   r   r   r   r   r  r   r!  s     r   r  z _CallableGenericAlias.__reduce__E  sW    }D		Q>$q'#:#:SbS	??DH,D(D!111r   )r   r   r   r  r  r?  r@  s   @r   r=  r=  ;  sG        , , , , ,2 2 2 2 2 2 2r   r=  c                   0    e Zd Zd Zd Zed             ZdS )_CallableTypec                 H    t          | j        || j        | j        d          S )NTr   )r=  r   r	  r  r6  s     r   r   z_CallableType.copy_withM  s+    $T_f*.*4:6:< < < 	<r   c                     t          |t                    rt          |          dk    rt          d          |\  }}t          |t                    rt          |          |f}n||f}|                     |          S )Nr   z6Callable must be used as Callable[[arg, ...], result].)ry   r   r   r   r   __getitem_inner__)r   r   r   r  s       r   r4  z_CallableType.__getitem__R  s    &%(( 	=CKK1,<,< < = = =f dD!! 	$Dkk6*FFF^F%%f---r   c                    |\  }}d}t          ||          }|t          u r|                     t          |f          S t	          |t
                    s|f}t          d |D                       }||fz   }|                     |          S )Nz.Callable[args, result]: result must be a type.c              3   4   K   | ]}t          |          V  d S r   r  r   s     r   r   z2_CallableType.__getitem_inner__.<locals>.<genexpr>i  s*      88C]3''888888r   )r   Ellipsisr   r  ry   r   )r   r   r   r  r   s        r   rF  z_CallableType.__getitem_inner__`  s    f>VS))8>>?F";<<<$&& 	7D88488888	!~~f%%%r   N)r   r   r   r   r4  r   rF  r   r   r   rC  rC  L  sM        < < <
. . . 
& 
& Y
& 
& 
&r   rC  c                   $    e Zd Zed             ZdS )
_TupleTypec                 Z   t          |t                    s|f}t          |          dk    rN|d         du rDdt          fd|d d         D                       }|                     g |t          R           S dt          fd|D                       }|                     |          S )Nr   r   .z Tuple[t, ...]: t must be a type.c              3   8   K   | ]}t          |          V  d S r   rT  rU  s     r   r   z)_TupleType.__getitem__.<locals>.<genexpr>u  s-      DD1;q#..DDDDDDr   z*Tuple[t0, t1, ...]: each t must be a type.c              3   8   K   | ]}t          |          V  d S r   rT  rU  s     r   r   z)_TupleType.__getitem__.<locals>.<genexpr>x  r3  r   )ry   r   r   r   r  r4  s     @r   r4  z_TupleType.__getitem__o  s    &%(( 	YFv;;!r
c 1 14CDDDDssDDDDDF>>"<F"<O"<"<===:;;;;F;;;;;~~f%%%r   N)r   r   r   r   r4  r   r   r   rK  rK  n  s-        	& 	& Y	& 	& 	&r   rK  c                   F     e Zd Zd Zd Zd Z fdZd Zd Z fdZ	 xZ
S )r   c                     t           |         S r   r#  r6  s     r   r   z_UnionGenericAlias.copy_with}  s    V}r   c                     t          |t          t          j        f          st          S t          | j                  t          |j                  k    S r   )ry   r   r   r   r{  r   r   r$  s     r   r|  z_UnionGenericAlias.__eq__  sA    %"4eo!FGG 	"!!4=!!S%8%888r   c                 D    t          t          | j                            S r   )r~  	frozensetr   r   s    r   r  z_UnionGenericAlias.__hash__  s    Idm,,---r   c                 8   | j         }t          |          dk    r`|d         t          d           u rdt          |d                    dS |d         t          d           u rdt          |d                    dS t	                                                      S )Nr   r   ztyping.Optional[rV  r'  )r   r   rx   r   r;  r  r@  s     r   r  z_UnionGenericAlias.__repr__  s    }t99>>Aw$t**$$@*T!W*=*=@@@@aDJJ&&@*T!W*=*=@@@@ww!!!r   c                 F    |                      t          |                    S r   r  r,  s     r   r-  z$_UnionGenericAlias.__instancecheck__  r  r   c                 @    | j         D ]}t          ||          r dS d S NT)r   r  )r   r   r{   s      r   r1  z$_UnionGenericAlias.__subclasscheck__  s;    = 	 	C#s## tt	 	r   c                 f    t                                                      \  }\  }}|t          |ffS r   )r;  r  r"   )r   r   r  r   r<  s       r   r  z_UnionGenericAlias.__reduce__  s0    $ww1133nvteT]""r   )r   r   r   r   r|  r  r  r-  r1  r  r?  r@  s   @r   r   r   |  s          9 9 9
. . ." " " " "1 1 1  
# # # # # # # # #r   r   c                     d | D             S )Nc              3   8   K   | ]}|t          |          fV  d S r   )rx   r  s     r   r   z'_value_and_type_iter.<locals>.<genexpr>  s,      --QQQL------r   r   )r   s    r   r]  r]    s    --*----r   c                       e Zd Zd Zd ZdS )r   c                     t          |t                    st          S t          t	          | j                            t          t	          |j                            k    S r   )ry   r   r{  r   r]  r   r$  s     r   r|  z_LiteralGenericAlias.__eq__  sN    %!566 	"!!'66773?STYTb?c?c;d;dddr   c                 ^    t          t          t          | j                                      S r   )r~  rS  r]  r   r   s    r   r  z_LiteralGenericAlias.__hash__  s#    I24=AABBCCCr   N)r   r   r   r|  r  r   r   r   r   r     s:        e e eD D D D Dr   r   c                        e Zd Z fdZ xZS )r   c                    t          |d         t          t          f          rg |d d         |d         R S t          |d         t                    rg |d d         |d         j        R }t                                          |          S )Nr   )ry   r   r   r   r   r;  r   )r   r   r<  s     r   r   z"_ConcatenateGenericAlias.copy_with  s    fRj4-00 	/.VCRC[.6":...fRj":;; 	:9vcrc{9VBZ%899Fww  (((r   )r   r   r   r   r?  r@  s   @r   r   r     s8        ) ) ) ) ) ) ) ) )r   r   c                 N    	 t          ||  d          }t          | |f          S )NrM  )r  r   )r   _UnpackGenericAliasrO  s      r   rr   rr     s6    : zd#F#F#FGGDd$9999r   c                   P     e Zd Zd Z fdZed             Zed             Z xZS )ra  c                 <    dt          | j        d                   z   S )Nrm  r   )r   r   r   s    r   r  z_UnpackGenericAlias.__repr__  s     T$-*++++r   c                 X    | j         r|S t                                          |          S r   )r  r;  r4  r@  s     r   r4  z_UnpackGenericAlias.__getitem__  s+    3 	Kww""4(((r   c                 P    | j         \  }t          |t                    r|j         S d S r   )r   ry   r   r  s     r   r   z2_UnpackGenericAlias.__typing_unpacked_tuple_args__  s,     }c=)) 	 <tr   c                 B    t          | j        d         t                    S Nr   )ry   r   r!   r   s    r   r  z7_UnpackGenericAlias.__typing_is_unpacked_typevartuple__  s     $-*L999r   )	r   r   r   r  r4  r  r   r  r?  r@  s   @r   ra  ra    s}        , , ,
) ) ) ) )
   X : : X: : : : :r   ra  c                   >     e Zd Z	 dZdZed             Z fdZ xZS )r   r   Fc                 <   	 t          |t                    s|f}t          d |D                       }| t          t          fv r|st	          d| j         d          t          d |D                       st	          d| j         d          t          t          |                    t          |          k    rt	          d| j         d          n| j
        D ]!}t          |dd           }| || |          }"t          | |t          | j
                             g }t          | j
        |          D ]E\  }}t          |t                    r|                    |           0|                    |           Ft          |          }t#          | |d	
          S )Nc              3   4   K   | ]}t          |          V  d S r   r  r  s     r   r   z,Generic.__class_getitem__.<locals>.<genexpr>  s*      88A}Q''888888r   zParameter list to z[...] cannot be emptyc              3   4   K   | ]}t          |          V  d S r   )r  r  s     r   r   z,Generic.__class_getitem__.<locals>.<genexpr>!  s+      ;;q'**;;;;;;r   zParameters to zF[...] must all be type variables or parameter specification variables.z[...] must all be uniquer  Tra  )ry   r   r   r   r   r   allr   r   r   r   r   r   r  r!   r   r   r   )r   r   r  r  r  r  s         r   __class_getitem__zGeneric.__class_getitem__  s   	 &%(( 	YF88888887H%%% P)9PPP   ;;F;;;;; >=S\ = = => > > 3v;;3v;;..KS\KKKM M M /
 + 2 2!%)CTJJ&$WS&11F3C,>(?(?@@@H"%c&8&"A"A - -we\22 -OOG,,,,OOG,,,,8__FS&.24 4 4 	4r   c                   
  t                      j        |i | g }d| j        v rt          | j        v }n1t          | j        v o"| j        dk    ot          |           t          k    }|rt          d          d| j        v rt          | j                  }d }| j        D ]=}t          |t                    r&|j        t          u r|t          d          |j        }>||t          |          }t          |          
|
k    sVd                    
fd|D                       }d                    d |D                       }	t          d| d	|	 d
          |}t#          |          | _        d S )N__orig_bases__r   z!Cannot inherit from plain Genericz0Cannot inherit from Generic[...] multiple times.r#  c              3   >   K   | ]}|vt          |          V  d S r   rz   )r   r   gvarsets     r   r   z,Generic.__init_subclass__.<locals>.<genexpr>Y  s3      &Q&Q!@P@Ps1vv@P@P@P@P&Q&Qr   c              3   4   K   | ]}t          |          V  d S r   rq  )r   gs     r   r   z,Generic.__init_subclass__.<locals>.<genexpr>Z  s(      &=&=!s1vv&=&=&=&=&=&=r   zSome type variables (z) are not listed in Generic[r'  )r;  r   ru  r   ro  	__bases__r   rx   _TypedDictMetar   r   ry   r   r   r   r   r(  r   )r   r   rD  tvarserrorgvarsbasetvarsets_varss_argsrr  r<  s             @r   r   zGeneric.__init_subclass__;  s   !!426222s|++s11EE- 4
24S		^3   	A?@@@s|++'(:;;E E* 0 0t]33 0722('NP P P /E e**e**'))!YY&Q&Q&Q&Qu&Q&Q&QQQF!YY&=&=u&=&=&===F# %HF %H %H>D%H %H %H I I I"5\\r   )	r   r   r   r   _is_protocolr   rm  r   r?  r@  s   @r   r   r     sc        & IL,4 ,4 Y,4\#* #* #* #* #* #* #* #* #*r   r   c                       e Zd ZdS )r  N)r   r   r   r   r   r   r  r  a  s        22r   r  )r   ro  r  r~  _is_runtime_protocol	__final__)__abstractmethods____annotations__ru  r
  r  r   rC  r   __subclasshook__r   rm  _MutableMapping__markerc                 z   	 t                      }| j        d d         D ]}|j        dv rt          |di           }t	          |j                                                  t	          |                                          z   D ]5}|                    d          s|t          vr|	                    |           6|S )Nr   )r   r   r  _abc_)
r   __mro__r   r   r   ru  keysr  EXCLUDED_ATTRIBUTESadd)r   attrsrz  annotationsr  s        r   _get_protocol_attrsr  p  s    
 EEECRC     =333d$5r::++--..k6F6F6H6H1I1II 	  	 D??7++  <O0O0O		$	  Lr   c                 T     t           fdt                     D                       S )Nc              3   T   K   | ]"}t          t          |d                     V  #d S r   )callabler   )r   r  r   s     r   r   z,_is_callable_members_only.<locals>.<genexpr>  s7      WWdxT40011WWWWWWr   )rl  r  r   s   `r   _is_callable_members_onlyr    s0    WWWW>QRU>V>VWWWWWWr   c                 ,   t          |           }|j        rt          d          |j        t          urd S |j        D ]4}|j                            dt                    }|t          ur	||_         n5t          j        |_         |j        | g|R i | d S )Nz Protocols cannot be instantiatedr  )	rx   r~  r   r  _no_init_or_replace_initr  ru  rx  object)r   r   rD  r   rz  inits         r   r  r    s    
t**C
 <:;;; |333  ' '}  -EFF///CLE 0
 CL'''''''''r   rV  __main__c                     	 t          j        | dz             j                            d|          S # t          t
          f$ r Y d S w xY w)NrV  r   )rv  	_getframe	f_globalsrx  r  r  )depthdefaults     r   r  r    sU    }UQY''155j'JJJJ'   tts   /2 AA   c                 &    	 t          |           dv S )N>   Nr   r   )r  r  s    r   _allow_reckless_class_checksr    s    
 5>>777r   )
r   r4   r)   r*   r6   r'   r2   r%   r8   r;   AbstractContextManagerAbstractAsyncContextManager)zcollections.abc
contextlibc                        e Zd Z fdZ xZS )_ProtocolMetac                     t           dd          r0t           dd          st          d          st          d          t           dd          rt                     rt	          j                   rdS  j        r+t           fdt                     D                       rdS t                      
                              S )	Nr~  Fr  r   r  LInstance and class checks can only be used with @runtime_checkable protocolsTc              3      K   | ]E}t          |          o0t          t          |d                      pt          |          d uV  Fd S r   )r   r  r   )r   r  r   instances     r   r   z2_ProtocolMeta.__instancecheck__.<locals>.<genexpr>  sy       : : 	 8T** :!'#tT":":;;; 9Xt,,D8: : : : : :r   )r   r  r   r  r  r<  r~  rl  r  r;  r-  )r   r  r<  s   ``r   r-  z_ProtocolMeta.__instancecheck__  s    C//	=3U;;	= -1555	=
  < = = = ne44 	)#..	8-s33	 4 	 : : : : : !4C 8 8	: : : : : 
 tww((222r   )r   r   r   r-  r?  r@  s   @r   r  r    s8        3 3 3 3 3 3 3 3 3r   r  c                   ,     e Zd Z	 dZdZdZ fdZ xZS )r   r   TFc                      t                      j        |i |  j                            dd          s#t	          d  j        D                        _         fd}d j        vr| _         j        sd S  j        D ]g}|t          t          fv sU|j
        t          v r|j        t          |j
                 v s.t          |t                    r|j        st          d|z            h j        t           j        u rt"           _        d S d S )Nr~  Fc              3   (   K   | ]}|t           u V  d S r   )r   r   r  s     r   r   z-Protocol.__init_subclass__.<locals>.<genexpr>  s&      "H"HQ1="H"H"H"H"H"Hr   c                    j                             dd          st          S t          dd          s$t	                      rt          S t          d          t                    s$t	                      rt          S t          d          t          | t                    st          d          t                    D ]}| j
        D ]w}||j         v r|j         |         t          c c S  n\t          |di           }t          |t          j        j                  r"||v rt          | t                    r	| j        r n
xt          c S dS )	Nr~  Fr  r  z<Protocols with non-method members don't support issubclass()z"issubclass() arg 1 must be a classr  T)ru  rx  r{  r   r  r   r  ry   rx   r  r  r   r   r,   r  r   r~  )r%  r  rz  r  r   s       r   _proto_hookz/Protocol.__init_subclass__.<locals>._proto_hook  s   <##NE:: &%% 3 6>> A/11 *)) !@ A A A,S11 ?/11 *)) !> ? ? ?eT** F DEEE ,C00 * *!M * *Dt},,=.6#111111 #*$0A2"F"FK";0GHH  K//&ug66 0;@;M 0))))4r   r  z7Protocols can only inherit from other protocols, got %r)r;  r   ru  rx  anyru  r~  r  r  r   r   _PROTO_ALLOWLISTr   r  r   r  r   r  )r   r   rD  r  rz  r<  s   `    r   r   zProtocol.__init_subclass__  sI   !!426222 |66 	I""H"H#-"H"H"HHHC$	 $	 $	 $	 $	L S\11#.C   	F M 	= 	=DVW---O'777M%5do%FFFtW-- G262C G !57;!< = = =<8,,,3CLLL -,r   )r   r   r   r   r~  r  r   r?  r@  s   @r   r   r     sP        @ IL >4 >4 >4 >4 >4 >4 >4 >4 >4r   r   c                   H     e Zd Z	  fdZd Zd Zd Zd Zd Z fdZ	 xZ
S )_AnnotatedAliasc                     t          |t                    r|j        |z   }|j        }t	                                          ||           || _        d S r   )ry   r  __metadata__r   r;  r  )r   r  metadatar<  s      r   r  z_AnnotatedAlias.__init__I  sR    fo.. 	'*X5H&F((($r   c                 <    |d         }t          || j                  S rg  )r  r  )r   r   new_types      r   r   z_AnnotatedAlias.copy_withP  s    !9x):;;;r   c                     d                     t          | j                  d                    d | j        D                                 S )Nztyping.Annotated[{}, {}]r#  c              3   4   K   | ]}t          |          V  d S r   )r   r  s     r   r   z+_AnnotatedAlias.__repr__.<locals>.<genexpr>X  s(      99!d1gg999999r   )formatr   r   r(  r  r   s    r   r  z_AnnotatedAlias.__repr__U  sH    )00t''II99t'899999
 
 	
r   c                 H    t           j        t          | j        f| j        z   ffS r   )r   r  r   r   r  r   s    r   r  z_AnnotatedAlias.__reduce__[  s)    )D,=="
 
 	
r   c                 z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r   )ry   r  r{  r   r  r$  s     r   r|  z_AnnotatedAlias.__eq__`  s?    %11 	"!!5#33 <%);;	=r   c                 8    t          | j        | j        f          S r   )r~  r   r  r   s    r   r  z_AnnotatedAlias.__hash__f  s    T_d&78999r   c                 R    |dv rdS t                                          |          S )N>   r   r   r   )r;  r  )r   r  r<  s     r   r  z_AnnotatedAlias.__getattr__i  s,    ///;ww""4(((r   )r   r   r   r  r   r  r  r|  r  r  r?  r@  s   @r   r  r  >  s        % % % % %< < <

 
 

 
 

= = =: : :) ) ) ) ) ) ) ) )r   r  c                   6    e Zd Z	 dZd Zed             Zd ZdS )r   r   c                      t          d          )Nz&Type Annotated cannot be instantiated.r   r   r   rD  s      r   rC  zAnnotated.__new__  s    @AAAr   c                 :   t          |t                    rt          |          dk     rt          d          t	          |d                   rt          d          d}t          |d         |d          }t          |dd                    }t          ||          S )	Nr   zUAnnotated[...] should be used with at least two arguments (a type and an annotation).r   z?Annotated[...] should not be used with an unpacked TypeVarTuplez$Annotated[t, ...]: t must be a type.Trs   rV  )ry   r   r   r   r  r   r  )r   r   r   r  r  s        r   rm  zAnnotated.__class_getitem__  s    &%(( 	,CKK!OO + , , , %VAY// 	5 4 5 5 54VAYFFF$$vx000r   c                 P    t          d                    | j                            )NzCannot subclass {}.Annotated)r   r  r   r  s      r   r   zAnnotated.__init_subclass__  s'    *11#.AA
 
 	
r   N)r   r   r   r   rC  r   rm  r   r   r   r   r   r   o  s]        +Z IB B B 1 1 Y1
 
 
 
 
r   r   c                 r    	 t          | t                    r| j        st          d| z            d| _        | S )NzB@runtime_checkable can be only applied to protocol classes, got %rT)r  r   r~  r   r  r  s    r   rl   rl     sQ    $ c7## )3+; ) "$'( ) ) 	)#CJr   c                     	 |S r   r   )r   r  s     r   rW   rW     s     Jr   c                    	 | S r   r   )r  r   s     r   rU   rU     s     Jr   c                    	 t          | dd           ri S t          | t                    r=i }t          | j                  D ]}|5t          t
          j                            |j        d           di           }n|}|j	                            di           }t          |t          j                  ri }|t          t          |                    n|}||||}}|                                D ]S\  }	}
|
t          d           }
t          |
t                    rt!          |
dd          }
t#          |
||          }
|
||	<   T|r|nd |                                D             S |at          | t          j                  r| j	        }n:| }t'          |d          r|j        }t'          |d          t          |d	i           }||}n||}t          | dd           }|9t          | t*                    ri S t-          d
                    |                     t          |          }|                                D ]j\  }	}
|
t          d           }
t          |
t                    r+t!          |
t          | t          j                   d          }
t#          |
||          ||	<   k|r|nd |                                D             S )N__no_type_check__ru  r  FT)r   rw   c                 4    i | ]\  }}|t          |          S r   _strip_annotationsr   r  r   s      r   
<dictcomp>z"get_type_hints.<locals>.<dictcomp>,	  s'    ,`,`,`$!QQ0B10E0E,`,`,`r   __wrapped____globals__z1{!r} is not a module, class, method, or function.c                 4    i | ]\  }}|t          |          S r   r  r  s      r   r  z"get_type_hints.<locals>.<dictcomp>P	  s'    (\(\(\da,>q,A,A(\(\(\r   )r   ry   rx   reversedr  rv  rw  rx  r   ru  r   GetSetDescriptorTyper  varsitemsrz   r   r   
ModuleTyper   r  _allowed_typesr   r  )r   r   r   include_extrashintsrz  base_globalsannbase_localsrX  valuensobjs               r   r^   r^     s   < s'.. 	#t aS[)) 	$ 	$D&s{t'M'Mz[]^^'-##$5r::C#u9:: .5o$tDzz***7K8#3 -8k"yy{{ $ $e= JJEeS)) P&u%$OOOE"5,DD#d$ '`uu,`,`RWR]R]R_R_,`,`,``c5+,, 	9|HHE%// *) %// *umR88H?G	C*D11E}c>** 	8I ++16#;;8 8 8KKE{{}} ; ;e=JJEeS!! 	  *30@ A AA  E
 !'::d"\55(\(\ekkmm(\(\(\\r   c                    	 t          | t                    rt          | j                  S t	          | d          r/| j        t
          t          fv rt          | j        d                   S t          | t                    r@t          d | j        D                       }|| j        k    r| S | 
                    |          S t          | t                    r@t          d | j        D                       }|| j        k    r| S t          | j        |          S t          | t          j                  rJt          d | j        D                       }|| j        k    r| S t          j        t           j        |          S | S )Nr   r   c              3   4   K   | ]}t          |          V  d S r   r  r  s     r   r   z%_strip_annotations.<locals>.<genexpr>Z	  +      HH033HHHHHHr   c              3   4   K   | ]}t          |          V  d S r   r  r  s     r   r   z%_strip_annotations.<locals>.<genexpr>_	  r  r   c              3   4   K   | ]}t          |          V  d S r   r  r  s     r   r   z%_strip_annotations.<locals>.<genexpr>d	  r  r   )ry   r  r  r   r   rj   rf   r   r   r   r   r	   r   r   r   r   r   r   )r   stripped_argss     r   r  r  S	  sd   2!_%% 0!!,///q, 1ALX{4K$K$K!!*Q-000!]## *HHQZHHHHHAJ&&H{{=)))!\"" 9HHQZHHHHHAJ&&HAL-888!U_%% =HHQZHHHHHAJ&&Hm<<<Hr   c                 
   	 t          | t                    rt          S t          | t          t          t
          t          f          r| j        S | t          u rt          S t          | t          j
                  rt          j
        S d S r   )ry   r  r   r  r	   rh   ri   r   r   r   r   tps    r   r\   r\   l	  s{      "o&& "(,$o7 8 8 }	W}}"eo&& 4r   c                 <   	 t          | t                    r| j        f| j        z   S t          | t          t
          f          r8| j        }t          | |          rt          |d d                   |d         f}|S t          | t          j
                  r| j        S dS )Nr   r   )ry   r  r   r  r   r	   r   r   r   r   r   )r  r  s     r   r[   r[   	  s     "o&& 2"/11"}l344 k*2s33 	,CRC>>3r7+C
"eo&& {2r   c                 .    	 t          | t                    S r   )ry   rv  r  s    r   r_   r_   	  s    
 b.)))r   d   r{   c                    	 t          |           }t          |          t          k    r|d t                   dz   }t          d|           )Nr   z*Expected code to be unreachable, but got: )r   r   _ASSERT_NEVER_REPR_MAX_LENGTHAssertionError)r{   r  s     r   rV   rV   	  sS    $ IIE
5zz1114445=
MeMM
N
NNr   c                    	 t          | t                    rt          |           D ]}t          | |          }t	          |d          r4|j        | j         d|j         k    st          |dd           | j        k    rWt          |t          j	                  rd|_
        t          |t          j                  rd|j        _
        t          |t                    rt          |           	 d| _
        n# t          $ r Y nw xY w| S )Nr   r   r   T)ry   rx   r  r   r   r   r   r   r   r   r  
MethodType__func__rc   r   )r{   keyr   s      r   rc   rc   	  s"    #t #s88 	# 	#C#s##CC00##*:'K'KS\'K'KKK3d33s~EE
 #u122 -(,%#u/00 615.#t$$ #c""" $   Js   *C2 2
C?>C?c                 H     	 t          j                    fd            }|S )Nc                  6     | i |}t          |          }|S r   )rc   )r   r   r   r   s      r   wrapped_decoratorz2no_type_check_decorator.<locals>.wrapped_decorator	  s)    y$'$''T""r   )r   r   )r   r  s   ` r   rd   rd   	  s@    
 _Y     
 r   c                  "    	 t          d          )NzYou should not call an overloaded function. A series of @overload-decorated functions outside a stub module should always be followed by an implementation that is not @overload-ed.)NotImplementedError)r   r   s     r   _overload_dummyr   
  s    4
	9: : :r   c                     	 t          | d|           }	 | t          |j                 |j                 |j        j        <   n# t          $ r Y nw xY wt          S Nr  )r   _overload_registryr   r   __code__co_firstlinenor  r  )r   fs     r   rg   rg   
  sh    > 	j$''AVZ1<(89RSS    s   *? 
AAc                     	 t          | d|           }|j        t          vrg S t          |j                 }|j        |vrg S t	          ||j                                                           S r  )r   r   r  r   r   values)r   r  mod_dicts      r   r]   r]   6
  sh    @j$''A|---	!!,/H~X%%	(//11222r   c                  :    	 t                                            d S r   )r  clearr   r   r   rX   rX   B
  s    .r   c                 H    	 	 d| _         n# t          t          f$ r Y nw xY w| S rW  )r  r  r   )r  s    r   rZ   rZ   G
  sC    2I&    		
 Hs    TKTVTT_co)r  V_coVT_coT_contra)r  CT_co)r  r  rT   r   a  Deprecated alias to collections.abc.Callable.

    Callable[[int], str] signifies a function that takes a single
    parameter of type int and returns a str.

    The subscription syntax must always be used with exactly two
    values: the argument list and the return type.
    The argument list must be a list of types, a ParamSpec,
    Concatenate or ellipsis. The return type must be a single type.

    There is no syntax to indicate optional or keyword arguments;
    such function types are rarely used as callback types.
    r#   rW  r   r   r  a]  Deprecated alias to builtins.tuple.

    Tuple[X, Y] is the cross-product type of X and Y.

    Example: Tuple[T1, T2] is a tuple of two elements corresponding
    to type variables T1 and T2.  Tuple[int, float, str] is a tuple
    of an int, a float and a string.

    To specify a variable-length tuple of homogeneous type, use Tuple[T, ...].
    rH   rE   rJ   rK   r&   r:   rF   rG   r   a  Deprecated alias to builtins.type.

    builtins.type or typing.Type can be used to annotate class objects.
    For example, suppose we have the following classes::

        class User: ...  # Abstract base for User classes
        class BasicUser(User): ...
        class ProUser(User): ...
        class TeamUser(User): ...

    And a function that takes a class argument that's a subclass of
    User and returns an instance of the corresponding class::

        U = TypeVar('U', bound=User)
        def new_user(user_class: Type[U]) -> U:
            user = user_class()
            # (Here we could write the user object to a database)
            return user

        joe = new_user(BasicUser)

    At this point the type checker knows that joe has type BasicUser.
    c                   0    e Zd Z	 dZedefd            ZdS )rA   r   r  c                     d S r   r   r   s    r   __int__zSupportsInt.__int__
      r   N)r   r   r   r   r   intr  r   r   r   rA   rA   
  sA        2I    ^  r   rA   c                   0    e Zd Z	 dZedefd            ZdS )r?   r   r  c                     d S r   r   r   s    r   	__float__zSupportsFloat.__float__
  r  r   N)r   r   r   r   r   floatr  r   r   r   r?   r?   
  A        4I5    ^  r   r?   c                   0    e Zd Z	 dZedefd            ZdS )r>   r   r  c                     d S r   r   r   s    r   __complex__zSupportsComplex.__complex__
  r  r   N)r   r   r   r   r   complexr  r   r   r   r>   r>   
  sA        6IW    ^  r   r>   c                   0    e Zd Z	 dZedefd            ZdS )r=   r   r  c                     d S r   r   r   s    r   	__bytes__zSupportsBytes.__bytes__  r  r   N)r   r   r   r   r   bytesr  r   r   r   r=   r=   
  r  r   r=   c                   0    e Zd Z	 dZedefd            ZdS )r@   r   r  c                     d S r   r   r   s    r   	__index__zSupportsIndex.__index__  r  r   N)r   r   r   r   r   r  r!  r   r   r   r@   r@     sA        4I3    ^  r   r@   c                   0    e Zd Z	 dZedefd            ZdS )r<   r   r  c                     d S r   r   r   s    r   __abs__zSupportsAbs.__abs__  r  r   N)r   r   r   r   r   r  r$  r   r   r   r<   r<     sA        WI    ^  r   r<   c                   6    e Zd Z	 dZeddedefd            ZdS )rB   r   r   ndigitsr  c                     d S r   r   )r   r&  s     r   	__round__zSupportsRound.__round__"  r  r   Nr   )r   r   r   r   r   r  r  r(  r   r   r   rB   rB     sM        YI  T    ^  r   rB   r   c                     d |D             }d |D             }t          j        | |||          }|x|_        |j        _        |S )Nc                     g | ]\  }}|S r   r   r   nr   s      r   r  z!_make_nmtuple.<locals>.<listcomp>(  s    """DAqa"""r   c           	      >    i | ]\  }}|t          |d | d          S )zfield z annotation must be a typerT  r,  s      r   r  z!_make_nmtuple.<locals>.<dictcomp>)  sD          A AEEEEFF      r   defaultsrv   )r   
namedtupler  rC  )rX  r   rv   r0  fieldsnm_tpls         r   _make_nmtupler4  '  sm    ""E"""F        E#D&-5fF F FF>CCFV^;Mr   >
   _makerC  _asdict_fields_sourcer  _replacer   __getnewargs___field_defaults>   r   r   r  c                       e Zd Zd ZdS )NamedTupleMetac                    |D ]#}|t           ur|t          urt          d          $t          d |D                       }                    di           }g }|D ]^}|v r|                    |           |r@t          d| dt          |          dk    rdnd d	d
                    |                     _t          | |j	                    fd|D             d                   }||_
        t          |v r%t          j        j        }	t          |	          |_        D ]F}
|
t          v rt          d|
z             |
t           vr |
|j        vrt%          ||
|
                    Gt          |v r|                                 |S )Nz3can only inherit from a NamedTuple type and Genericc              3   :   K   | ]}|t           u rt          n|V  d S r   )_NamedTupler   )r   rz  s     r   r   z)NamedTupleMeta.__new__.<locals>.<genexpr>@  s0      OOt{22eeOOOOOOr   r  zNon-default namedtuple field z cannot follow default fieldrV  sr   r#  c                      g | ]
}|         S r   r   )r   r-  nss     r   r  z*NamedTupleMeta.__new__.<locals>.<listcomp>L  s    (F(F(F1A(F(F(Fr   r   r/  z&Cannot overwrite NamedTuple attribute )r@  r   r   r   rx  r   r   r(  r4  r  ru  rm  r  classmethod_prohibitedr  _specialr7  r  r   )r   typenamer  rD  rz  r   default_names
field_namer3  class_getitemr  s      `       r   rC  zNamedTupleMeta.__new__:  s    	K 	KD;&&4w+>+>IK K KOOOOOOO("-- 	? 	?JR$$Z0000 ? !>
 !> !>*-m*<*<q*@*@33b!> !> $(99]#;#;!> !> ? ? ??
 x(F(F(F(F(F(F(F&(&68 8 8 !e#5>M'2='A'AF$ 	. 	.Ck!!$%MPS%STTTH$$FN)B)BRW---e$$&&&r   N)r   r   r   rC  r   r   r   r=  r=  9  s#                 r   r=  c                    	 ||                                 }n|rt          d          t          | |t                                S )NzIEither list of fields or keywords can be provided to NamedTuple, not bothrv   )r  r   r4  r  )rH  r2  rD  s      r   rL   rL   ]  sZ    & ~	 D C D D 	D6'))<<<<r   rL   c                     t           fS r   )r@  r  s    r   _namedtuple_mro_entriesrP  z  s
    >r   c                   $    e Zd ZddZeZd ZeZdS )rv  Tc                    	 |D ]0}t          |          t          ur|t          urt          d          1t	          d |D                       r	t          f}nd}t                               t          |g |t          R |          i }|                    di           }dfd|                                D             }t                      }	t                      }
|D ]}|
                    |j                            di                      |	
                    |j                            dd                     |

                    |j                            dd                     |
                    |           |                                D ]\  }}t          |          }|t          u r(t          |          }|r|d	         }t          |          }|t          u r|	                    |           d|t"          u r|
                    |           |r|	                    |           |
                    |           |_        t'          |	          _        t'          |
          _        t-          d
          s|_        S )NzHcannot inherit from both a TypedDict type and a non-TypedDict base classc              3   @   K   | ]}t          |t                    V  d S r   )r  r   r  s     r   r   z)_TypedDictMeta.__new__.<locals>.<genexpr>  s,      55!z!W%%555555r   r   r  z?TypedDict('Name', {f0: t0, f1: t1, ...}); each t must be a typec                 F    i | ]\  }}|t          |j                   S )rM  )r   r   )r   r-  r  r   tp_dicts      r   r  z*_TypedDictMeta.__new__.<locals>.<dictcomp>  sA     
 
 
2 {2s7+=>>>
 
 
r   __required_keys____optional_keys__r   	__total__)rx   rv  r   r   r  rC  r  rx  r  r   updateru  r\   r   r[   rj   r  rf   r  rS  rV  rW  r   rX  )r   rX  r  rD  totalrz  generic_baser  own_annotationsrequired_keysoptional_keysannotation_keyannotation_typeannotation_originannotation_argsr   rU  s                  @@r   rC  z_TypedDictMeta.__new__  s   	  	B 	BDDzz//D4G4G !A B B B 55u55555 	#:LLL,,~t5J|5JT5J5JBOO&&!2B77O
 
 
 
 
(..00
 
 
  	M 	MDt}001BBGGHHH  !2!23F!K!KLLL  !2!23F!K!KLLLL?+++/>/D/D/F/F 	2 	2+NO *? ; ; I--"*?";";" D&5a&8O(2?(C(C% H,,!!.1111"k11!!.1111 2!!.1111!!.1111"-$-m$<$<!$-m$<$<!w,, 	& %Gr   c                      t          d          )Nz4TypedDict does not support instance and class checksr   )r   r%  s     r   r1  z _TypedDictMeta.__subclasscheck__  s    NOOOr   N)T)r   r   r   rC  r  r!  r1  r-  r   r   r   rv  rv    sF        : : : :x HP P P *r   rv  rZ  c                   	 ||}n|rt          d          |rt          j        dt          d           dt	          |          i}t                      }|||d<   t          | d||          S )	Nz@TypedDict takes either a dict or keyword arguments, but not bothzThe kwargs-based syntax for TypedDict definitions is deprecated in Python 3.11, will be removed in Python 3.13, and may not be understood by third-party type checkers.r   
stacklevelr  r   r   rd  )r   warningswarnDeprecationWarningr  r  rv  )rH  r2  rZ  rD  rD  rv   s         r   rM   rM     s    -\ ~	 ) ( ) ) 	) 
7 	
 	
 	
 	
 T&\\	*BYYF!<(B%8888r   rM   c                     t           fS r   )
_TypedDictrO  s    r   <lambda>rm    s    :- r   c                 V    	 t          || j         d          }t          | |f          S Nz accepts only a single type.r   r	  r   rO  s      r   rj   rj     s5    $ zdj#N#N#NOODw'''r   c                 V    	 t          || j         d          }t          | |f          S ro  rp  rO  s      r   rf   rf   (  s5     zdj#N#N#NOODw'''r   c                   8    e Zd Z	 eZd Zd Zd Zd Zd Z	d Z
dS )rb   c                     || _         d|v r|                    d          d         }|| _        || _        t	                      }|dk    r	|| _        d S d S )Nr   r   r  )r   
rpartitionr   __supertype__r  r   )r   rX  r  r  s       r   r  zNewType.__init__S  s_     $;;??3''+D))h%DOOO r   c                 6    | j          G fdd          }|fS )Nc                       e Zd Z fdZdS )&NewType.__mro_entries__.<locals>.Dummyc           	      D    | j         }t          d| d|d d          )NzGCannot subclass an instance of NewType. Perhaps you were looking for: `z = NewType(r#  z)`)r   r   )r   subclass_namesuperclass_names     r   r   z8NewType.__mro_entries__.<locals>.Dummy.__init_subclass__c  sU     #Y%Y Y2?Y YETY Y Y  r   N)r   r   r   r   )r{  s   r   Dummyrx  b  s.              r   r|  r  )r   r  r|  r{  s      @r   r  zNewType.__mro_entries__]  sG     -	 	 	 	 	 	 	 	 	 	 xr   c                 $    | j          d| j         S )Nr   )r   r   r   s    r   r  zNewType.__repr__l  s    /77D$5777r   c                     | j         S r   )r   r   s    r   r  zNewType.__reduce__o  s      r   c                      t           | |f         S r   r#  r$  s     r   r&  zNewType.__or__r  r'  r   c                      t           || f         S r   r#  r$  s     r   r)  zNewType.__ror__u  r*  r   N)r   r   r   r
   r!  r  r  r  r  r&  r)  r   r   r   rb   rb   ;  sz        * H& & &  8 8 8! ! !" " "" " " " "r   rb   c                      e Zd Z	 dZeedefd                        Zeedefd                        Zed#d            Z	eede
fd                        Zedefd            Zed#d	            Zede
fd
            Zed$dedefd            Zede
fd            Zed$dedefd            Zed$dedee         fd            Zed%dededefd            Zede
fd            Zedefd            Zed&dedefd            Zede
fd            Zededefd            Zedee         ddfd            Zed'd!            Zed#d"            ZdS )(rP   r   r  c                     d S r   r   r   s    r   modezIO.mode  	     	r   c                     d S r   r   r   s    r   rX  zIO.name  r  r   Nc                     d S r   r   r   s    r   closezIO.close  r  r   c                     d S r   r   r   s    r   closedz	IO.closed  r  r   c                     d S r   r   r   s    r   filenoz	IO.fileno  r  r   c                     d S r   r   r   s    r   flushzIO.flush  r  r   c                     d S r   r   r   s    r   isattyz	IO.isatty  r  r   r   r-  c                     d S r   r   )r   r-  s     r   readzIO.read  r  r   c                     d S r   r   r   s    r   readablezIO.readable  r  r   limitc                     d S r   r   )r   r  s     r   readlinezIO.readline  r  r   hintc                     d S r   r   )r   r  s     r   	readlineszIO.readlines  r  r   r   offsetwhencec                     d S r   r   )r   r  r  s      r   seekzIO.seek  r  r   c                     d S r   r   r   s    r   seekablezIO.seekable  r  r   c                     d S r   r   r   s    r   tellzIO.tell  r  r   sizec                     d S r   r   )r   r  s     r   truncatezIO.truncate  r  r   c                     d S r   r   r   s    r   writablezIO.writable  r  r   rA  c                     d S r   r   r   rA  s     r   writezIO.write  r  r   linesc                     d S r   r   )r   r  s     r   
writelineszIO.writelines  r  r   
IO[AnyStr]c                     d S r   r   r   s    r   	__enter__zIO.__enter__  r  r   c                     d S r   r   )r   rx   r  	tracebacks       r   __exit__zIO.__exit__  r  r   )r  N)r   r)  r   )r  r  )r   r   r   r   r  r   rz   r  rX  r  r  r  r  r  r  r  rT   r  r  r  rH   r  r  r  r  r  r  r  r  r  r  r   r   r   rP   rP     s       
 Ic    ^ X c    ^ X    ^     ^ X     ^    ^     ^  c 6    ^ $    ^  c 6    ^  c 4<    ^  3  C    ^ $    ^ c    ^  S C    ^ $    ^ v #    ^ V     ^    ^    ^  r   rP   c                   \    e Zd Z	 dZedeeef         defd            Z	edd            Z
dS )rO   r   rA  r  c                     d S r   r   r  s     r   r  zBinaryIO.write  r  r   c                     d S r   r   r   s    r   r  zBinaryIO.__enter__  r  r   N)r  rO   )r   r   r   r   r   r"   r  	bytearrayr  r  r  r   r   r   rO   rO     sr        ?IuUI-. 3    ^    ^  r   rO   c                      e Zd Z	 dZeedefd                        Zeedefd                        Z	eede
e         fd                        Zeedefd                        Zeedefd                        Zed
d            Zd	S )rS   r   r  c                     d S r   r   r   s    r   bufferzTextIO.buffer  r  r   c                     d S r   r   r   s    r   encodingzTextIO.encoding  r  r   c                     d S r   r   r   s    r   errorszTextIO.errors  r  r   c                     d S r   r   r   s    r   line_bufferingzTextIO.line_buffering  r  r   c                     d S r   r   r   s    r   newlineszTextIO.newlines  r  r   c                     d S r   r   r   s    r   r  zTextIO.__enter__  r  r   N)r  rS   )r   r   r   r   r  r   rO   r  rz   r  r   r  r  r  r   r  r  r   r   r   rS   rS     s3       =I    ^ X #    ^ X     ^ X     ^ X #    ^ X    ^  r   rS   c                        e Zd Z fdZ xZS )_DeprecatedTypec                     |dvr5|| j         v r,t          j        | j         d| j         dt          d           t                                          |          S )N)ru  r   z5 is deprecated, import directly from typing instead. z  will be removed in Python 3.12.r   rf  )ru  rh  ri  r   rj  r;  __getattribute__)r   rX  r<  s     r   r  z _DeprecatedType.__getattribute__  sy    111dcl6J6JM< " "(+" " " #    ww''---r   )r   r   r   r  r?  r@  s   @r   r  r    s8        	. 	. 	. 	. 	. 	. 	. 	. 	.r   r  c                   $    e Zd Z	 g dZeZeZeZdS )io)rP   rS   rO   N)r   r   r   __all__rP   rS   rO   r   r   r   r  r  "  s+        3***G	BFHHHr   r  z.ioc                        e Zd Z	 ddgZeZeZdS )rerR   rQ   N)r   r   r   r  rR   rQ   r   r   r   r  r  1  s%        0'"GGEEEr   r  z.rer   c                h    	 t          dt          |           j        t          j                   | S )NzRuntime type is )file)printrx   r   rv  stderrr   s    r   rk   rk   =  s5     

3T#YY/
3
3#*EEEEJr   )
eq_defaultorder_defaultkw_only_defaultfield_specifiersr  r  r  r  .rD  c                 $     	  fd}|S )Nc                 "    d| _         | S )N)r  r  r  r  rD  )__dataclass_transform__)	cls_or_fnr  r  r  rD  r  s    r   r   z&dataclass_transform.<locals>.decorator  s)    $*. 0-
 -
	) r   r   )r  r  r  r  rD  r   s   ````` r   rY   rY   P  sB    =|         r   r   r  )rV  r  )r  )NNF)r   )r   r   r   r   r   collections.abcr  r   r   r  	stdlib_rerv  r   rh  r   r   r   r	   _typingr
   ImportErrorr  r|   r   r   r   r   r   r   r   r   r   r   r   r   rS  r   r   r   r  r   r6  rx   r9  r   re   ra   rm   r`   r   r   r"   r   r   rp   r   rq   r   r  r  r  r  r  r    r!   rh   ri   r   r  r  r   r.  r=  rC  rK  r   r]  r   r   rr   ra  r   r  _TYPING_INTERNALS_SPECIAL_NAMESr  r  r  r  r  r  r  r  r   r  r   rl   rW   rU   r   BuiltinFunctionTyper  r  r  r^   r  r\   r[   r_   r  rV   rc   rd   r  partialr  r  rg   r]   rX   rZ   r  r  r  r  r	  r
  r  r  r  rz   rT   _aliasr'   r4   r7   r6   r5   r)   r*   r;   r2   r%   r8   r   r
  rJ   r#   r0   r,   r.   r1   r/   r$   r   r   r   rH   dequerE   r   rK   r-   r+   r(   r3   r  r&   r  r:   rF   rG   rI   rD   rC   rN   r9   r   rA   r?   r>   r=   r@   r<   rB   r4  rF  rG  r=  rL   rC  r@  rP  r  rv  rM   rl  rj   rf   rb   rn   ro   rP   rO   rS   r  r  r   rw  rR   rQ   rk   rY   r   r   r   <module>r     s2  * ( ' ' ' ' ' ' '     # # # # # #                  



   ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^       
m m mh5     PU     B@ @ @
  (  *  <
< 
< 
<    ' ' '    	U     . 6?Y[[    DF F F F F F F F	 	 	 	 	 	 	 	       ((/ (/ (/ (/ (/6<t (/ (/ (/ (/V0 0 0 0 0,d 0 0 0 0	" 	" 	" 	" 	"t 	" 	" 	"5 5 5 5 5H 5 5 5 5$ 4 4 4( 4 4 40 4 4 4& 4 4 44 ( ( (* ( ( (* )0 )0 )0V " " "
 
2 2  2B 4 4 4  ; ; ;4 .( .( .(bQD QD QD QD QDt QD QD QD QDhF F F F F F
O O O O O O       "& "& "& "& "& "& "& "&JA A A A Afj"57LA A A AHL
 L
 L
 L
 L
6:'<D L
 L
 L
 L
^3 3 3 3 3FJd 3 3 3 303 3 3 3 3fj 3 3 3 30J J J J J
$79NJ J J JX9 9 9AT AT AT AT ATd AT AT AT AT^Z Z Z Z Z%T Z Z Z ZB)! )! )! )! )!<):$ )! )! )! )!V2 2 2 2 2L-t 2 2 2 2"& & & & &( & & & &D& & & & &%T & & & &# # # # #}D # # # #D. . .D D D D D= D D D D) ) ) ) )}D ) ) ) ) : : :D: : : : :-t : : : :8i* i* i* i* i* i* i* i*X3 3 3 3 3 3 3 3J J J J J J
 (.8<U;VV   "X X X
( ( (:   8 8 8 8   ,-JK  3 3 3 3 3G 3 3 38c4 c4 c4 c4 c4w- c4 c4 c4 c4L.) .) .) .) .)lM .) .) .) .)bD
 D
 D
 D
 D
 D
 D
 D
N  4      $e&?"E$4'):<PR
`] `] `] `]F  2  :  2* * * !$ Oe O5 O O O O2! ! !H  : : : ![!2!2;!E!EFF & & &R	3 	3 	3  
! ! !L GCLLWT]]WT]]wv&&&wv&&&4(((7:T2224t444 
5#	&	& 
6+/*A..F;?,a00	F;?,a00	{4a88{4a886+/*A..6+/*A..VKO.22
{$a((F;?,a00	VKO.22
=1155 	  f[_(!-@@@VKO.22

&(!
,
,6::6+/*A..&8!<<VKO.22

5"5w777	  vdAE///{ !'222fS!%e,,,F9ae+>>>	f[_0!446+/*A..F;?,a00	VKO.22

91CSTTTfZCQMbccc vdAE///f[,amDDDf[,a00
&$a
(
(6+&**F;?,a00	6::vdAE/// 4     (        H        h        H        H        (4.        HTN       i D D D E E 9BBBCC! ! ! ! !T ! ! !H= = = =6 ll><R@@   5
 C* C* C* C* C*T C* C* C*LC9 C9 C9 C9 C9 C9J \\.+r2>>
77	  ( ( (. ( ( ($;" ;" ;" ;" ;" ;" ;" ;"~  ` ` ` ` ` ` ` `F    r%y            RW      F
. 
. 
. 
. 
.d 
. 
. 
.    ?     BK 
&"A
&
&y""    ?     BK Q a    * !CEO O OO O 	O
 DIc(::C?@O O qc1fO O O O O Os   A AA