
    <eݒ                       d dl Z d dlZd dlmZ d dlmZ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mZmZmZmZ d dlmZ d dlmZmZ d dlmZmZmZmZ d dlmZmZmZ d d	lmZmZm Z m!Z! d d
lm"Z"m#Z#m$Z$ d dlm%Z%m&Z&m'Z' d dlm(Z(m)Z)m*Z*m+Z+ d dlm,Z, d dlm-Z-m.Z.m/Z/m0Z0m1Z1 d dlm2Z2m3Z3m4Z4 d dlm5Z5 d dlm6Z6m7Z7 d dlm8Z8 d dlm9Z9 d dlm:Z: d dlm;Z;m<Z< d dlm=Z= d dlm>Z>m?Z?m@Z@mAZA d dlmBZBmCZCmDZD d dlmEZEmFZF d dlmGZGmHZH d dlmIZImJZJ d dlmKZK d dlmLZLmMZMmNZNmOZO d dlmPZP d dlQZQd dlRZRd dlZd dlSZSd dlTZTd dlUmVZVmWZWmXZX d d lYmZZZ d d!lYm[Z[  eVj\        d"d#g$          Z] eVj\        d"d#g%          Z^d&Z_ G d' d(e          Z`d) Za G d* d+          Zb G d, d-eb          Zc G d. d/eb          Zd G d0 d1eced          Ze G d2 d3e`          Zf G d4 d5          Zg G d6 d7ege`          Zh G d8 d9ege`          Zi G d: d;e`          Zj G d< d=e`          Zk G d> d?e`          Zl G d@ dAe`          ZmdBeneo         dCepeoeneo         f         dDeneqeo                  fdEZr G dF dGe`          Zs G dH dIe`          Zt G dJ dKe`          Zu G dL dMe`          Zv G dN dOe`          Zw G dP dQe`          Zx G dR dSe`          Zy G dT dU          Zz G dV dWeze`          Z{ G dX dYeze`          Z| G dZ d[e`          Z} ed\eoe~          Z ed]          Z G d^ d_e-eef                   Z G d` daeeef                   Z G db dce1          Ze4 G dd deee1                      Z G df dg          Z G dh die1          Z G dj dke1          Ze4 G dl dmeee1                      Ze4 G dn doe1                      Z G dp dqe          Z G dr ds          Z G dt due>          Ze4 G dv dwe1                      Z G dx dye`          Z G dz d{e`          Z G d| d}e`          Z G d~ de`          Z G d de`          Z G d de`          Z G d de`          Zd dlYmZ e; G d d                      Ze; G d d                      Z G d de`          Z e            d             Z G d d          Z G d de`          Zd dlYmZmZmZmZmZ  ed          Z G d dej        e                   Z G d dej        e                   Z G d d          Z G d d          Z G d de          Z G d de          Z G d de-e"                   Z G d d          Z G d d          Z G d de>          Z G d de>          Z G d de>          Z G d de>          Z eAddeofg          Z G d deA          Z G d de-e"         eA          Z G d de[j        d          Z G d de[j        e"         d          Z G d dee          Z G d deAd          Z G d deA          Z G d deAd          Z G d deAd          Z G dĄ de          Z G dƄ deA          Z G dȄ de          Z G dʄ deA          Z G d̄ deA          Z G d΄ deA          Z G dЄ deZj                  Zdej        e         fdӄZ	  e e                                          d           n%# e$ rZej        d          dk    sJ Y dZ[ndZ[ww xY we5Z G dՄ d֦          Z G dׄ de`          Z G dل de          Z G dۄ de`          Z G d݄ de`          Z G d߄ de`          Z G d de          Z G d d          Z G d dee`          Z ee^d           G d dee`                      Z G d de`          Z G d de`          Z G d de`          Z G d de`          Z G d de`          Z G d de`          Z G d de`          Z G d de`          Z G d de`          Z G d de`          Z G d de`          Z ejL        d           Z ej        deee          Z G d de`          Z G d de`          Z G d de`          Z G d d	e`          Z G d
 de`          Zedk    r e             dS dS (      N)defaultdict)	lru_cachewraps)TestCasemain
skipUnlessskip)patch)copydeepcopy)AnyNoReturnNeverassert_never)overloadget_overloadsclear_overloads)TypeVarTypeVarTupleUnpackAnyStr)TKTVT)UnionOptionalLiteral)TupleListDictMutableMapping)Callable)GenericClassVarFinalfinalProtocol)assert_typecastruntime_checkable)get_type_hints)
get_originget_args)is_typeddict)reveal_type)dataclass_transform)no_type_checkno_type_check_decoratorType)
NamedTupleNotRequiredRequired	TypedDictIOTextIOBinaryIO)PatternMatch)	Annotated
ForwardRef)SelfLiteralString)	TypeAlias)	ParamSpecConcatenateParamSpecArgsParamSpecKwargs)	TypeGuard)import_helpercaptured_stderrcpython_only)mod_generics_cache)_typed_dict_helpertyping_typing)blocked)freshz&Cannot subclass special typing classesc                   $    e Zd ZddZddZd ZdS )BaseTestCaseNc                 r    t          ||          s&|d|}||d|z  z  }|                     |          d S )Nz is not a subclass of  : %s
issubclassfailureExceptionselfclsclass_or_tuplemsgmessages        '/usr/lib/python3.11/test/test_typing.pyassertIsSubclasszBaseTestCase.assertIsSubclass;   sU    #~.. 	169cc>>JG7S=(''000		1 	1    c                 r    t          ||          r&|d|}||d|z  z  }|                     |          d S )Nz is a subclass of rU   rV   rY   s        r_   assertNotIsSubclassz BaseTestCase.assertNotIsSubclassB   sU    c>** 	125##~~FG7S=(''000		1 	1ra   c                 8    t           j        D ]} |             d S N)rN   	_cleanupsrZ   fs     r_   clear_cacheszBaseTestCase.clear_cachesI   s+    ! 	 	AACCCC	 	ra   re   )__name__
__module____qualname__r`   rc   ri    ra   r_   rS   rS   9   sK        1 1 1 11 1 1 1    ra   rS   c                 <     t                      fd            }|S )z:Runs `test_func` with various values for `proto` argument.c                     t          t          j        dz             D ]=}|                     |          5   | |           d d d            n# 1 swxY w Y   >d S )N   )pickle_protoproto)rangepickleHIGHEST_PROTOCOLsubTest)rZ   rs   	test_funcs     r_   wrapperz%all_pickle_protocols.<locals>.wrapperQ   s    62Q677 	- 	-E511 - -	$e,,,,- - - - - - - - - - - - - - -	- 	-s   AA	A	)r   )rx   ry   s   ` r_   all_pickle_protocolsrz   N   s8     9- - - - -
 Nra   c                       e Zd ZdS )EmployeeNrj   rk   rl   rm   ra   r_   r|   r|   Z           Dra   r|   c                       e Zd ZdS )ManagerNr}   rm   ra   r_   r   r   ^   r~   ra   r   c                       e Zd ZdS )FounderNr}   rm   ra   r_   r   r   b   r~   ra   r   c                       e Zd ZdS )ManagingFounderNr}   rm   ra   r_   r   r   f   r~   ra   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )AnyTestsc                     |                      t                    5  t          dt                     d d d            d S # 1 swxY w Y   d S N*   )assertRaises	TypeError
isinstancer   rZ   s    r_   test_any_instance_type_errorz%AnyTests.test_any_instance_type_errorl   s    y)) 	  	 r3	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	    >AAc                     |                      t          t                    d            G d dt                    }|                      t          |          dt           d           d S )Nz
typing.Anyc                       e Zd ZdS )AnyTests.test_repr.<locals>.SubNr}   rm   ra   r_   Subr   s             ra   r   <class 'z".AnyTests.test_repr.<locals>.Sub'>)assertEqualreprr   rj   )rZ   r   s     r_   	test_reprzAnyTests.test_reprp   sq    cL111#IICxCCC	
 	
 	
 	
 	
ra   c                    |                      t                    5  t          dt                     d d d            n# 1 swxY w Y   |                      t                    5  t          t                    d d d            d S # 1 swxY w Y   d S r   )r   r   rW   r   intr   s    r_   test_errorszAnyTests.test_errorsy   s    y)) 	  	 r3	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 y)) 	 	HH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s!   =AA"BB	Bc                 d    G d dt                     }|                     t          |t                                |                      |            |            G d d          }|                     t          |t                                |                      |            |            G d d||          }|                     t          |t                                 |            }|                     ||           |                     ||           |                     ||           d S )Nc                       e Zd ZdS )(AnyTests.test_can_subclass.<locals>.MockNr}   rm   ra   r_   Mockr      r   ra   r   c                       e Zd ZdS )-AnyTests.test_can_subclass.<locals>.SomethingNr}   rm   ra   r_   	Somethingr      r   ra   r   c                       e Zd ZdS )1AnyTests.test_can_subclass.<locals>.MockSomethingNr}   rm   ra   r_   MockSomethingr      r   ra   r   )r   
assertTruerW   assertIsInstanceassertFalseassertNotIsInstance)rZ   r   r   r   mss        r_   test_can_subclasszAnyTests.test_can_subclass   s1   3
4--...ddffd+++Is33444  d33322222It222
=#66777]__b-000b),,,b$'''''ra   c                 $   |                      t                    5  t                       d d d            n# 1 swxY w Y   |                      t                    5   t          t                                 d d d            d S # 1 swxY w Y   d S re   )r   r   r   typer   s    r_   test_cannot_instantiatez AnyTests.test_cannot_instantiate   s    y)) 	 	EEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	DIIKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   6::BB	B	c                     t           j        t                    t           j        t                    t           j        t                    d S re   )rN   r>   r   r=   r:   r   s    r_   test_any_works_with_aliasz"AnyTests.test_any_works_with_alias   s+    Ss	#ra   N)	rj   rk   rl   r   r   r   r   r   r   rm   ra   r_   r   r   j   sn             
 
 
  ( ( (       ra   r   c                   P    e Zd ZU ee         ed<   d Zd Zd Zd Z	d Z
d Zd Zd	S )
BottomTypeTestsMixinbottom_typec                     |                      | j        | j                   |                     | j        | j                   |                     | j        d            d S re   )r   r   assertIsassertNotEqualr   s    r_   test_equalityz"BottomTypeTestsMixin.test_equality   sW    )4+;<<<d&(8999D,d33333ra   c                 V    |                      t          | j                  d            d S re   )r   r,   r   r   s    r_   test_get_originz$BottomTypeTestsMixin.test_get_origin   s'    j!122D99999ra   c                     |                      t                    5  t          d| j                   d d d            d S # 1 swxY w Y   d S r   )r   r   r   r   r   s    r_   test_instance_type_errorz-BottomTypeTestsMixin.test_instance_type_error   s    y)) 	- 	-r4+,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-r   c                 8   |                      t                    5  t          t          | j                   d d d            n# 1 swxY w Y   |                      t                    5  t          t
          | j                   d d d            d S # 1 swxY w Y   d S re   )r   r   rW   r|   r   r   r   s    r_   test_subclass_type_errorz-BottomTypeTestsMixin.test_subclass_type_error   s	   y)) 	3 	3x!1222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3y)) 	3 	3x!1222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3#   AA	A'BBBc                     |                      t                    5  | j        t                    d d d            d S # 1 swxY w Y   d S re   )r   r   r   r   r   s    r_   test_not_genericz%BottomTypeTestsMixin.test_not_generic   s    y)) 	" 	"S!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"   ;??c                 6   |                      t                    5   G d d| j                  }d d d            n# 1 swxY w Y   |                      t                    5   G d dt          | j                            }d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS 4BottomTypeTestsMixin.test_cannot_subclass.<locals>.ANr}   rm   ra   r_   Ar              ra   r   c                       e Zd ZdS r   r}   rm   ra   r_   r   z4BottomTypeTestsMixin.test_cannot_subclass.<locals>.A   r   ra   r   r   r   r   rZ   r   s     r_   test_cannot_subclassz)BottomTypeTestsMixin.test_cannot_subclass   sG   y)) 	 	    D$   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	    D)**   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   ;?? !BBBc                 0   |                      t                    5  |                                  d d d            n# 1 swxY w Y   |                      t                    5   t          | j                               d d d            d S # 1 swxY w Y   d S re   r   r   s    r_   r   z,BottomTypeTestsMixin.test_cannot_instantiate   s   y)) 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	% 	%"D!""$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s!   <A A !BBBN)rj   rk   rl   r$   r   __annotations__r   r   r   r   r   r   r   rm   ra   r_   r   r      s         #4 4 4
: : :- - -3 3 3" " "  % % % % %ra   r   c                   $    e Zd ZeZd Zd Zd ZdS )NoReturnTestsc                 V    |                      t          t                    d           d S )Ntyping.NoReturn)r   r   r   r   s    r_   r   zNoReturnTests.test_repr   s%    h):;;;;;ra   c                     dt           dt           fd}d	d}t           t           d}||fD ]S}|                     |          5  |                     t          |          |           d d d            n# 1 swxY w Y   Td S )
Nargreturnc                     d S re   rm   r   s    r_   somez/NoReturnTests.test_get_type_hints.<locals>.some         ra   r   r   c                     d S re   rm   r   s    r_   some_strz3NoReturnTests.test_get_type_hints.<locals>.some_str   r   ra   r   r   target)r   r   r   r   )r   rw   r   gthrZ   r   r   expectedr   s        r_   test_get_type_hintsz!NoReturnTests.test_get_type_hints   s    0h080000????#x88X& 	8 	8FV,, 8 8  Vh7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8	8 	8   $A22A6	9A6	c                     |                      t          t                     |                      t          t                     d S re   )r   r   r   r   s    r_   test_not_equalityzNoReturnTests.test_not_equality   s4    He,,,E8,,,,,ra   N)rj   rk   rl   r   r   r   r   r   rm   ra   r_   r   r      sF        K< < <8 8 8- - - - -ra   r   c                       e Zd ZeZd Zd ZdS )
NeverTestsc                 V    |                      t          t                    d           d S )Ntyping.Never)r   r   r   r   s    r_   r   zNeverTests.test_repr   s$    en55555ra   c                     dt           dt           fd}d	d}t           t           d}||fD ]S}|                     |          5  |                     t          |          |           d d d            n# 1 swxY w Y   Td S )
Nr   r   c                     d S re   rm   r   s    r_   r   z,NeverTests.test_get_type_hints.<locals>.some   r   ra   r   r   c                     d S re   rm   r   s    r_   r   z0NeverTests.test_get_type_hints.<locals>.some_str   r   ra   r   r   )r   r   r   r   )r   rw   r   r   r   s        r_   r   zNeverTests.test_get_type_hints   s    *e*****9999 E22X& 	8 	8FV,, 8 8  Vh7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8	8 	8r   N)rj   rk   rl   r   r   r   r   rm   ra   r_   r   r      s7        K6 6 68 8 8 8 8ra   r   c                       e Zd Zd ZdS )AssertNeverTestsc                    |                      t                    5  t          d            d d d            n# 1 swxY w Y   d}|                     t          |          5  t          |           d d d            n# 1 swxY w Y   ddz  }|                      t                    5 }t          |           d d d            n# 1 swxY w Y   |                     t          |j        j        d                   t          j	        dz             d S )Nz
some valueai'  r      )
r   AssertionErrorr   assertRaisesRegex
assertLesslen	exceptionargsrN   _ASSERT_NEVER_REPR_MAX_LENGTH)rZ   value
huge_valuecms       r_   test_exceptionzAssertNeverTests.test_exception   s   ~.. 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ##NE:: 	  	 	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  5[
~.. 	%"$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%!!$%%014	
 	
 	
 	
 	
s0   7;;A;;A?A?%CCCN)rj   rk   rl   r   rm   ra   r_   r   r      s#        
 
 
 
 
ra   r   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
	SelfTestsc                     |                      t          t                     |                     t          t                     |                     t          d            d S re   )r   rA   r   r   r   s    r_   r   zSelfTests.test_equality   sH    t$$$dD!!!D$'''''ra   c                 n    G d d          } G d d          } G d d          }|||fD ]_}|                      |          5  |                     t          |j                  dt          i           d d d            n# 1 swxY w Y   `|                     t          t                    d            d S )	Nc                       e Zd ZdefdZdS )"SelfTests.test_basics.<locals>.Foor   c                     d S re   rm   r   s    r_   barz&SelfTests.test_basics.<locals>.Foo.bar  r   ra   N)rj   rk   rl   rA   r  rm   ra   r_   Foor    s!        &T&&&&&&ra   r  c                       e Zd ZddZdS )%SelfTests.test_basics.<locals>.FooStrr   rA   c                     d S re   rm   r   s    r_   r  z)SelfTests.test_basics.<locals>.FooStr.bar  r   ra   N)r   rA   rj   rk   rl   r  rm   ra   r_   FooStrr    s        ((((((ra   r  c                       e Zd ZddZdS )+SelfTests.test_basics.<locals>.FooStrTypingr   typing.Selfc                     d S re   rm   r   s    r_   r  z/SelfTests.test_basics.<locals>.FooStrTyping.bar  r   ra   N)r   r  r
  rm   ra   r_   FooStrTypingr    s        //////ra   r  r   r   )rw   r   r   r  rA   r   r,   rZ   r  r  r  r   s        r_   test_basicszSelfTests.test_basics  sT   	' 	' 	' 	' 	' 	' 	' 	'	) 	) 	) 	) 	) 	) 	) 	)	0 	0 	0 	0 	0 	0 	0 	0 FL1 	D 	DFV,, D D  VZ8T2BCCCD D D D D D D D D D D D D D Dj&&-----   0BB	B	c                 V    |                      t          t                    d           d S )Nr  )r   r   rA   r   s    r_   r   zSelfTests.test_repr  s$    d]33333ra   c                     |                      t                    5  t          t                    d d d            d S # 1 swxY w Y   d S re   )r   r   rA   r   r   s    r_   test_cannot_subscriptzSelfTests.test_cannot_subscript  s    y)) 	 	II	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r   c                 6   |                      t                    5   G d dt          t                              }d d d            n# 1 swxY w Y   |                      t                    5   G d dt                    }d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS )SelfTests.test_cannot_subclass.<locals>.CNr}   rm   ra   r_   Cr    r   ra   r  c                       e Zd ZdS r  r}   rm   ra   r_   r  z)SelfTests.test_cannot_subclass.<locals>.C  r   ra   )r   r   r   rA   rZ   r  s     r_   r   zSelfTests.test_cannot_subclass  s?   y)) 	 	    DJJ   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	    D   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	#   !AAA-BBBc                 $   |                      t                    5  t                       d d d            n# 1 swxY w Y   |                      t                    5   t          t                                 d d d            d S # 1 swxY w Y   d S re   )r   r   rA   r   r   s    r_   test_cannot_initzSelfTests.test_cannot_init  s    y)) 	 	FFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	DJJLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r   c                 .   |                      t                    5  t          dt                     d d d            n# 1 swxY w Y   |                      t                    5  t	          t
          t                     d d d            d S # 1 swxY w Y   d S Nrp   )r   r   r   rA   rW   r   r   s    r_   test_no_isinstancezSelfTests.test_no_isinstance#  s   y)) 	  	 q$	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 y)) 	" 	"sD!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"!   =AA"B

BBc                    t           t          t          f         }t          t                   }t          t                   }|                     t          |          t          t          f           |                     t          |          t          f           |                     t          |          t          f           d S re   )r   rA   r   r$   r   r-   rZ   alias_1alias_2alias_3s       r_   
test_aliaszSelfTests.test_alias)  s    d
#t*4.'**T4L999'**TG444'**TG44444ra   Nrj   rk   rl   r   r  r   r  r   r   r#  r*  rm   ra   r_   r   r      s        ( ( (
. . .4 4 4      " " "5 5 5 5 5ra   r   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
LiteralStringTestsc                     |                      t          t                     |                     t          t                     |                     t          d            d S re   )r   rB   r   r   r   s    r_   r   z LiteralStringTests.test_equality4  sH    666m]333M400000ra   c                 n    G d d          } G d d          } G d d          }|||fD ]_}|                      |          5  |                     t          |j                  dt          i           d d d            n# 1 swxY w Y   `|                     t          t                    d            d S )	Nc                       e Zd ZdefdZdS )+LiteralStringTests.test_basics.<locals>.Foor   c                     d S re   rm   r   s    r_   r  z/LiteralStringTests.test_basics.<locals>.Foo.bar;  r   ra   N)rj   rk   rl   rB   r  rm   ra   r_   r  r1  :  s!        /]//////ra   r  c                       e Zd ZddZdS ).LiteralStringTests.test_basics.<locals>.FooStrr   rB   c                     d S re   rm   r   s    r_   r  z2LiteralStringTests.test_basics.<locals>.FooStr.bar=  r   ra   N)r   rB   r
  rm   ra   r_   r  r4  <  s        111111ra   r  c                       e Zd ZddZdS )4LiteralStringTests.test_basics.<locals>.FooStrTypingr   typing.LiteralStringc                     d S re   rm   r   s    r_   r  z8LiteralStringTests.test_basics.<locals>.FooStrTyping.bar?  r   ra   N)r   r8  r
  rm   ra   r_   r  r7  >  s        888888ra   r  r   r   )rw   r   r   r  rB   r   r,   r  s        r_   r  zLiteralStringTests.test_basics9  sT   	0 	0 	0 	0 	0 	0 	0 	0	2 	2 	2 	2 	2 	2 	2 	2	9 	9 	9 	9 	9 	9 	9 	9 FL1 	M 	MFV,, M M  VZ8]2KLLLM M M M M M M M M M M M M M Mj//66666r  c                 V    |                      t          t                    d           d S )Nr8  )r   r   rB   r   s    r_   r   zLiteralStringTests.test_reprF  s'    m,,.DEEEEEra   c                     |                      t                    5  t          t                    d d d            d S # 1 swxY w Y   d S re   )r   r   rB   r   r   s    r_   r  z(LiteralStringTests.test_cannot_subscriptI  s    y)) 	 	#	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r   c                 6   |                      t                    5   G d dt          t                              }d d d            n# 1 swxY w Y   |                      t                    5   G d dt                    }d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS 2LiteralStringTests.test_cannot_subclass.<locals>.CNr}   rm   ra   r_   r  r?  O  r   ra   r  c                       e Zd ZdS r>  r}   rm   ra   r_   r  z2LiteralStringTests.test_cannot_subclass.<locals>.CR  r   ra   )r   r   r   rB   r  s     r_   r   z'LiteralStringTests.test_cannot_subclassM  sA   y)) 	 	    D''   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	    M   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  c                 $   |                      t                    5  t                       d d d            n# 1 swxY w Y   |                      t                    5   t          t                                 d d d            d S # 1 swxY w Y   d S re   )r   r   rB   r   r   s    r_   r   z#LiteralStringTests.test_cannot_initU  s   y)) 	 	OOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	" 	"D!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"r   c                 .   |                      t                    5  t          dt                     d d d            n# 1 swxY w Y   |                      t                    5  t	          t
          t                     d d d            d S # 1 swxY w Y   d S r"  )r   r   r   rB   rW   r   r   s    r_   r#  z%LiteralStringTests.test_no_isinstance[  s   y)) 	) 	)q-(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)y)) 	+ 	+sM***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+r$  c                    t           t          t          f         }t          t                   }t          t                   }|                     t          |          t          t          f           |                     t          |          t          f           |                     t          |          t          f           d S re   )r   rB   r   r$   r   r-   r&  s       r_   r*  zLiteralStringTests.test_aliasa  s    }45}%=)'**]M,JKKK'**],<==='**],<=====ra   Nr+  rm   ra   r_   r-  r-  3  s        1 1 1
7 7 7F F F    " " "+ + +> > > > >ra   r-  c                   z    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d Zd Zd Zd Zd Zd Zd ZdS )TypeVarTestsc                    t          d          }|                     ||           |                     |t                      |                     |j        d           |                     |j        d           |                     |j        d            |                     |j        d           |                     |j        d           d S )Nr   rm   F)	r   r   r   rj   __constraints__r   	__bound____covariant____contravariant__rZ   r   s     r_   test_basic_plainzTypeVarTests.test_basic_plainj  s    CLLAa)))S)))*B///ak4(((aou---a)511111ra   c                 V   t          dt                    }|                     |j        d           |                     |j        d           |                     |j        t                     t          dt          t                    }|                     |j        d           |                     |j        t          t          f           |                     |j        d            t          dd          }|                     |j        d           |                     |j        d           |                     |j	        d           t          d	d
          }|                     |j        d	           |                     |j        d           |                     |j	        d           d S )NT_boundboundrm   T_constraintsT_coT	covariantFT_contracontravariant)
r   r   r   rj   rG  r   rH  strrI  rJ  )rZ   rN  rQ  rR  rU  s        r_   test_attributeszTypeVarTests.test_attributesv  sr   )3///)95550"555g'---c::/AAA6c
CCCm-t444v...///d($///d,e444:T:::*J777h,e444h0$77777ra   c                     t          d          }|                     t                    5  t          d|           d d d            d S # 1 swxY w Y   d S )Nr   r   )r   r   r   r   rK  s     r_    test_typevar_instance_type_errorz-TypeVarTests.test_typevar_instance_type_error  s    CLLy)) 	 	r1	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc                 B   t          d          }|                     t                    5  t          t          |           d d d            n# 1 swxY w Y   |                     t                    5  t          |t                     d d d            d S # 1 swxY w Y   d S Nr   )r   r   r   rW   r   rK  s     r_    test_typevar_subclass_type_errorz-TypeVarTests.test_typevar_subclass_type_error  s   CLLy)) 	 	sA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	q#	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   AAA1BBBc                     |                      t                    5  t          dt                    }| d d d            d S # 1 swxY w Y   d S )NX)r   r   r   r   rZ   r`  s     r_   test_constrained_errorz#TypeVarTests.test_constrained_error  s    y)) 	 	S!!AA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   A  AAc                 P   t          d          }t          d          }|                     ||           |                     t          |         |           |                     t          |         t          ||f                    |                     t          ||f         |           |                     t          |t          f         t          |                    |                     t          |t          f         t          t                              |                     t          |t          f         j        |t          f           |                     t          |t          f         j        |f           |                     t          |t          f         j        t                     d S )Nr`  Y)	r   r   r   r   r   __args____parameters__r   
__origin__)rZ   r`  re  s      r_   test_union_uniquezTypeVarTests.test_union_unique  s9   CLLCLLAq!!!q1%%%E!HeAqDk222q!ta(((E!S&M58444E!S&M5:666q#v/!S:::q#v5t<<<eAsFm.66666ra   c                    t          d          }|                     |dz  t          |df                    |                     d|z  t          d|f                    |                     t          |dz            |t	          d          f           |                     t          d|z            t	          d          |f           d S Nr`  x)r   r   r   r-   r@   ra  s     r_   test_orzTypeVarTests.test_or  s    CLL 	S%3-000q%Q-000!c'**Q
3,@AAA#'**Z__a,@AAAAAra   c                     t          dt          t                    }|                     t          |t          f         t          |                    d S Nr   )r   rX  bytesr   r   r   s     r_   test_union_constrainedz#TypeVarTests.test_union_constrained  s;    Ce$$E!S&M5844444ra   c                    |                      t          t                    d           |                      t          t                    d           |                      t          t                    d           |                      t          t
                    d           t          dd          }|                      t          |          d           t          d	d
          }|                      t          |          d           d S )Nz~Tz~KTz~VTz~AnyStrrR  TrS  z+T_corU  rV  z	-T_contra)r   r   r   r   r   r   r   )rZ   rR  rU  s      r_   r   zTypeVarTests.test_repr  s    a$'''b5)))b5)))fy111v...dW---:T:::h55555ra   c                     |                      t          d          t          d                     |                      t          dt          t                    t          dt          t                               d S r]  )r   r   r   rX  r   s    r_   test_no_redefinitionz!TypeVarTests.test_no_redefinition  sX    GCLL'#,,777GCc22GCc4J4JKKKKKra   c                     |                      t                    5   G d dt          d                    }d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS )1TypeVarTests.test_cannot_subclass_vars.<locals>.VNr}   rm   ra   r_   Vrw    r   ra   rx  r   r   r   r   rZ   rx  s     r_   test_cannot_subclass_varsz&TypeVarTests.test_cannot_subclass_vars  s    y)) 	 	    GCLL   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc                     |                      t                    5   G d dt                    }d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS )7TypeVarTests.test_cannot_subclass_var_itself.<locals>.VNr}   rm   ra   r_   rx  r~    r   ra   rx  ry  rz  s     r_   test_cannot_subclass_var_itselfz,TypeVarTests.test_cannot_subclass_var_itself  s    y)) 	 	    G   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   <A A c                     |                      t                    5   t          d                       d d d            d S # 1 swxY w Y   d S ro  ry  r   s    r_   test_cannot_instantiate_varsz)TypeVarTests.test_cannot_instantiate_vars  s    y)) 	 	GCLLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	rc  c                 @   |                      t                    5  t          dt                     d d d            n# 1 swxY w Y   |                      t                    5  t          dt          t
          t                     d d d            d S # 1 swxY w Y   d S )Nr`  rO  )r   r   r   r   rX  floatr|   r   s    r_   test_bound_errorszTypeVarTests.test_bound_errors  s   y)) 	& 	&Cu%%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&y)) 	5 	5Ce84444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s!   >AA##BBBc                 *    d}t          |i            d S )Nz&import typing
T = typing.TypeVar('T')
execrZ   codes     r_   test_missing__name__z!TypeVarTests.test_missing__name__  s    , 	T2ra   c                     |                      t                    5  t          ddd           d d d            d S # 1 swxY w Y   d S )Nr   T)rT  rW  )r   
ValueErrorr   r   s    r_   test_no_bivariantzTypeVarTests.test_no_bivariant  s    z** 	= 	=C4t<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=r   c                    t          d          }|j        }|                      |t                    t                     |                      |t
          t                             t
          t                              |                      |t          t                             t          t                              |                      |t                    t                     |                      |t                    t                     |                      |d           t          d                      |                      ||          |           |                      |t          t          z            t          t          z             |                      |t          t          t          f                   t          t          t          f                    d S r]  )r   __typing_subst__r   r   r   listr   r   r   rX  r   )rZ   r   substs      r_   test_var_substitutionz"TypeVarTests.test_var_substitution  sU   CLL"eeCjj#&&&tCy))49555tCy))49555td+++eeCjj#&&&eeDkk4::...eeAhh"""s3wS111uS#X//sCxAAAAAra   c                    t          d          }dt          t          ft          t          t          |         t
          t
          |         t          t          t                   t          t          t                   f}|D ]}|                     |          5  | 	                    t                    5   |j        |           d d d            n# 1 swxY w Y   | 	                    t                    5  t          |         |          d d d            n# 1 swxY w Y   | 	                    t                    5  t          |         |          d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )Nr   rm   r   )r   r   rX  r   r#   r'   r%   r$   rw   r   r   r  r   r  )rZ   r   bad_argsr   s       r_   test_bad_var_substitutionz&TypeVarTests.test_bad_var_substitution  s.   CLLc
EWQZ8A;5:x#

  	! 	!C#&& ! !&&y11 , ,&A&s+++, , , , , , , , , , , , , , ,&&y11 ! !GCLL! ! ! ! ! ! ! ! ! ! ! ! ! ! !&&y11 ! !GCLL! ! ! ! ! ! ! ! ! ! ! ! ! ! !! ! ! ! ! ! ! ! ! ! ! ! ! ! !	! 	!s~   E+-C
>E+
CE+CE+/DE+DE+DE+4EE+EE+EE++E/	2E/	N)rj   rk   rl   rL  rY  r[  r^  rb  ri  rm  rq  r   rt  r{  r  r  r  r  r  r  r  rm   ra   r_   rE  rE  i  s+       
2 
2 
28 8 8*  
    
7 7 7B B B5 5 56 6 6L L L  
  
  5 5 5  = = =B B B! ! ! ! !ra   rE  	templatesreplacementsr   c                    g }|                                 D ]8\  }}g }|D ]}|                    ||f           |                    |           9g }t          j        | D ]^}g }	| D ]5}
|D ]\  }}|
                    ||          }
|	                    |
           6|                    t          |	                     _g }|D ]}||vr|                    |           |S )a  Renders templates with possible combinations of replacements.

    Example 1: Suppose that:
      templates = ["dog_breed are awesome", "dog_breed are cool"]
      replacements = ["dog_breed": ["Huskies", "Beagles"]]
    Then we would return:
      [
          ("Huskies are awesome", "Huskies are cool"),
          ("Beagles are awesome", "Beagles are cool")
      ]

    Example 2: Suppose that:
      templates = ["Huskies are word1 but also word2"]
      replacements = {"word1": ["playful", "cute"],
                      "word2": ["feisty", "tiring"]}
    Then we would return:
      [
          ("Huskies are playful but also feisty"),
          ("Huskies are playful but also tiring"),
          ("Huskies are cute but also feisty"),
          ("Huskies are cute but also tiring")
      ]

    Note that if any of the replacements do not occur in any template:
      templates = ["Huskies are word1", "Beagles!"]
      replacements = {"word1": ["playful", "cute"],
                      "word2": ["feisty", "tiring"]}
    Then we do not generate duplicates, returning:
      [
          ("Huskies are playful", "Beagles!"),
          ("Huskies are cute", "Beagles!")
      ]
    )itemsappend	itertoolsproductreplacetuple)r  r  replacement_combosoriginalpossible_replacementsoriginal_replacement_tuplesreplacementrendered_templatesreplacement_combotemplates_with_replacementstemplate rendered_templates_no_duplicatesrl  s                r_   template_replacer    sS   N +7+=+=+?+? ? ?''&(#0 	H 	HK'..+/FGGGG!!"=>>>> &.0BC F F ')#! 	9 	9H): C C%+#++HkBB'..x8888!!%(C"D"DEEEE (*$ 7 7444,33A666++ra   c                       e Zd Zd Zd ZdS )TemplateReplacementTestsc                 n    t          ddgddgddgd          }g d	}|                     ||           d S )
NCats are word1zDogs are word2smallcutebigfluffyword1word2r  r  ))Cats are smallDogs are big)r  Dogs are fluffy)Cats are cuter  )r  r  r  r   rZ   actualr   s      r_   :test_two_templates_two_replacements_yields_correct_renderszSTemplateReplacementTests.test_two_templates_two_replacements_yields_correct_rendersH  sh    !+-=>%v.#X. 
 
 

 
 
 	*****ra   c                 n    t          ddgddgddgd          }d	d
g}|                     ||           d S )Nr  Dogs!r  r  r  r  r  r  )r  r  )r  r  r  r  s      r_   2test_no_duplicates_if_replacement_not_in_templateszKTemplateReplacementTests.test_no_duplicates_if_replacement_not_in_templatesX  se    !+W5%v.#X. 
 
 
 (&
 	*****ra   N)rj   rk   rl   r  r  rm   ra   r_   r  r  F  s2        + + + + + + + +ra   r  c                   *    e Zd ZdZd Zd Zd Zd ZdS )GenericAliasSubstitutionTestsaK  Tests for type variable substitution in generic aliases.

    For variadic cases, these tests should be regarded as the source of truth,
    since we hadn't realised the full complexity of variadic substitution
    at the time of finalizing PEP 646. For full discussion, see
    https://github.com/python/cpython/issues/91162.
    c           	      X   t          d          }t          d          }t          d          } G d dt          |                   }g d}ddg}g d	}|D ]\  }}	}
t          ||	|
g||d
          }|D ]\  }}}|                     |||          5  |dk    rE|                     t                    5  t          ||z              d d d            n# 1 swxY w Y   n3|                     t          ||z             t          |                     d d d            n# 1 swxY w Y   d S )Nr   TsTs2c                       e Zd ZdS );GenericAliasSubstitutionTests.test_one_parameter.<locals>.CNr}   rm   ra   r_   r  r  u  r   ra   r  )r  r  r   r  r   ))
generic[T][()]r   )r  [int]generic[int])r  
[int, str]r   )r  [tuple_type[int, ...]]generic[tuple_type[int, ...]])r  [*tuple_type[int]]r  )r  z[*tuple_type[()]]r   )r  [*tuple_type[int, str]]r   )r  [*tuple_type[int, ...]]r   )r  [*Ts]r   )r  [T, *Ts]r   )r  [*Ts, T]r   )zC[T, *tuple_type[int, ...]]r  r   )zlist[T, *tuple_type[int, ...]]r  z list[int, *tuple_type[int, ...]])zList[T, *tuple_type[int, ...]]r  r   )zgeneric[*Ts, *Ts2]r  r   generic
tuple_typer  aliasr   r   r   	r   r   r#   r  rw   r   r   evalr   )rZ   r   r  r  r  genericstuple_typestestsalias_templateargs_templateexpected_templater  	alias_strargs_strexpected_strs                  r_   test_one_parameterz0GenericAliasSubstitutionTests.test_one_parameterp  s   CLL$5!!!!!!!
!!!((((
 
 
. AF 	 	<NM+<!1-}>OP-5[!Q!Q" " " 6H 	 	1	8\\\	<\XX  #{22!..y99 7 7 X!56667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 (( X!566 ..                		 	s6   !D3C	DCDC7DD!$D!c           	      \   t          d          }t          d          }t          d          } G d dt          ||f                   }g d}ddg}g d	}|D ]\  }}	}
t          ||	|
g||d
          }|D ]\  }}}|                     |||          5  |dk    rE|                     t                    5  t          ||z              d d d            n# 1 swxY w Y   n3|                     t          ||z             t          |                     d d d            n# 1 swxY w Y   d S )NT1T2r  c                       e Zd ZdS )<GenericAliasSubstitutionTests.test_two_parameters.<locals>.CNr}   rm   ra   r_   r  r    r   ra   r  )r  dictr    r  r   ))generic[T1, T2]r  r   )r  r  r   )r  r  generic[int, str])r  [int, str, bool]r   )r  r  r   )r  r  r  )r  z[*tuple_type[int, str, bool]]r   )r  z[int, *tuple_type[str]]r  )r  z[*tuple_type[int], str]r  )r  z$[*tuple_type[int], *tuple_type[str]]r  )r  z([*tuple_type[int, str], *tuple_type[()]]r  )r  z([*tuple_type[()], *tuple_type[int, str]]r  )r  z#[*tuple_type[int], *tuple_type[()]]r   )r  z#[*tuple_type[()], *tuple_type[int]]r   )r  z+[*tuple_type[int, str], *tuple_type[float]]r   )r  z+[*tuple_type[int], *tuple_type[str, float]]r   )r  z1[*tuple_type[int, str], *tuple_type[float, bool]]r   )r  r  r   )r  ,[tuple_type[int, ...], tuple_type[str, ...]]3generic[tuple_type[int, ...], tuple_type[str, ...]])r  r  r   )r  z[int, *tuple_type[str, ...]]r   )r  [*tuple_type[int, ...], str]r   )r  .[*tuple_type[int, ...], *tuple_type[str, ...]]r   )r  r  r   )r  r  r   )r  r  r   )z"generic[T1, *tuple_type[int, ...]][str]#generic[str, *tuple_type[int, ...]]r  r  r  r   r  rZ   r  r  r  r  r  r  r  r  r  r  r  r  r  r  s                  r_   test_two_parametersz1GenericAliasSubstitutionTests.test_two_parameters  s   T]]T]]$&&&&&B&&&((((%
 %
 %
N AF 	 	<NM+<!1-}>OP-5[!Q!Q" " " 6H 	 	1	8\\\	<\XX  #{22!..y99 7 7 X!56667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 (( X!566 ..                		 	6   !D5C	DCDC7DD#&D#c           	      \   t          d          }t          d          }t          d          } G d dt          |||f                   }dg}ddg}dd	g}|D ]\  }}	}
t          ||	|
g||d
          }|D ]\  }}}|                     |||          5  |dk    rE|                     t
                    5  t          ||z              d d d            n# 1 swxY w Y   n3|                     t          ||z             t          |                     d d d            n# 1 swxY w Y   d S )Nr  r  T3c                       e Zd ZdS )>GenericAliasSubstitutionTests.test_three_parameters.<locals>.CNr}   rm   ra   r_   r  r    r   ra   r  r  r   )generic[T1, bool, T2]r  generic[int, bool, str])r  r  r  r  r  r  r   )r   r#   r  rw   r   r   r  r   )rZ   r  r  r  r  r  r  r  r  r  r  r  r  r  r  s                  r_   test_three_parametersz3GenericAliasSubstitutionTests.test_three_parameters  s   T]]T]]T]]*****B
#***5( G G
 AF 	 	<NM+<!1)=:KL)1MM" " " 6H 	 	1	8\\\	<\XX  #{22!..y99 7 7 X!56667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 (( X!566 ..                		 	r  c           	      ^   t          d          }t          d          }t          d          } G d dt          g |R                    }g d}ddg}g d	}|D ]\  }}	}
t          ||	|
g||d
          }|D ]\  }}}|                     |||          5  |dk    rE|                     t                    5  t          ||z              d d d            n# 1 swxY w Y   n3|                     t          ||z             t          |                     d d d            n# 1 swxY w Y   d S )Nr  r  r  c                       e Zd ZdS )AGenericAliasSubstitutionTests.test_variadic_parameters.<locals>.CNr}   rm   ra   r_   r  r    r   ra   r  )r  r  r   r  r   )@)generic[*Ts]r  zgeneric[()])r  r  r  )r  r  r  )r  r  r  )r  z[*tuple_type[*Ts]]r  )r  r  r  )r  z"[str, *tuple_type[int, ...], bool])generic[str, *tuple_type[int, ...], bool])r  r  r  )r  r  r  )r  r  zgeneric[*tuple_type[int, ...]])r  r  r   )r  r  r  )r  r  generic[T, *Ts])r  r  generic[*Ts, T])r  r  r   )r  r  r  )r  r  r  )r  r  generic[int, str, bool])generic[list[T], *Ts]r  r   )r  r  generic[list[int]])r  r  zgeneric[list[int], str])r  r  zgeneric[list[int], str, bool])r  r  r   )r  r  r  )r  r  r  )r  r  r  )generic[*Ts, list[T]]r  r   )r
  r  r	  )r
  r  zgeneric[int, list[str]])r
  r  zgeneric[int, str, list[bool]])generic[T1, T2, *Ts]r  r   )r  r  r   )r  r  r  )r  r  r  )r  [int, str, bool, bytes]generic[int, str, bool, bytes])generic[*Ts, T1, T2]r  r   )r  r  r   )r  r  r  )r  r  r  )r  r  r  )generic[T1, *Ts, T2]r  r   )r  r  r   )r  r  r  )r  r  r  )r  r  r  )r  r  z#generic[int, *tuple_type[int, ...]])r  [str, *tuple_type[int, ...]]r  )r  r  z(generic[int, *tuple_type[int, ...], str])r  r  z#generic[*tuple_type[int, ...], int])r  r  z(generic[str, *tuple_type[int, ...], int])r  r  #generic[*tuple_type[int, ...], str])r  r  z(generic[int, *tuple_type[int, ...], int])zgeneric[T, str, *Ts]r  z(generic[int, str, *tuple_type[int, ...]])zgeneric[*Ts, str, T]r  z(generic[*tuple_type[int, ...], str, int])r  r  z)generic[list[int], *tuple_type[int, ...]])r
  r  z)generic[*tuple_type[int, ...], list[int]])z!generic[T, *tuple_type[int, ...]]r  r  )z&generic[T1, T2, *tuple_type[int, ...]][str, bool]z)generic[str, bool, *tuple_type[int, ...]])&generic[T1, *tuple_type[int, ...], T2]r  r  )r  z[str, bool, float]r   )z!generic[T1, *tuple_type[T2, ...]]r  z#generic[int, *tuple_type[str, ...]])z!generic[*tuple_type[T1, ...], T2]r  r  )z+generic[T1, *tuple_type[generic[*Ts], ...]]r  z2generic[int, *tuple_type[generic[str, bool], ...]])z+generic[*tuple_type[generic[*Ts], ...], T1]r  z2generic[*tuple_type[generic[int, str], ...], bool]r  r  r  r   r  r  s                  r_   test_variadic_parametersz6GenericAliasSubstitutionTests.test_variadic_parameters  s   T]]T]]$########***(J
 J
 J
X AF 	 	<NM+<!1-}>OP-5[!Q!Q" " " 6H 	 	1	8\\\	<\XX  #{22!..y99 7 7 X!56667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 (( X!566 ..                		 	s6   !D 6C		D CD C7D  D$'D$N)rj   rk   rl   __doc__r  r  r  r  rm   ra   r_   r  r  g  sb         / / /d? ? ?B  @d d d d dra   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )UnpackTestsc                 j    g t           t                   R  t          t          t                             d S re   )r  r   r   r   r   s    r_   test_accepts_single_typez$UnpackTests.test_accepts_single_typem  s&    %*uSzra   c                    t          t          t          t          t                                                }dD ]F}|                     |          5  |                     ||           d d d            n# 1 swxY w Y   Gd S Nrf  rg  rh  required_item)setdirr   r   r   rw   assertInrZ   	dir_itemsr  s      r_   test_dirzUnpackTests.test_dirq  s    F5:.//00	
 	8 	8M M:: 8 8mY7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8	8 	8s   A55A9	<A9	c                     |                      t                    5  t          t          t                   t          t
                   f          d d d            d S # 1 swxY w Y   d S re   )r   r   r   r   r   rX  r   s    r_   test_rejects_multiple_typesz'UnpackTests.test_rejects_multiple_typesy  s    y)) 	+ 	+5:uSz)**	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   0AAAc                    |                      t                    5  g t          t                   R d         t          t                             d d d            n# 1 swxY w Y   |                      t                    5  t          t
          t                            t
          t                             d d d            d S # 1 swxY w Y   d S Nr   )r   r   r  r   r   r   r   s    r_   &test_rejects_multiple_parameterizationz2UnpackTests.test_rejects_multiple_parameterization  s   y)) 	* 	*eCjNN1eCj))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*y)) 	+ 	+5:uSz**	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s#   2AA A>4B??CCc                     |                      t                    5  t                       d d d            d S # 1 swxY w Y   d S re   )r   r   r   r   s    r_   test_cannot_be_calledz!UnpackTests.test_cannot_be_called  s    y)) 	 	HHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   7;;N)rj   rk   rl   r  r$  r&  r)  r+  rm   ra   r_   r  r  k  s_          8 8 8+ + ++ + +    ra   r  c                       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d 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d Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$S )%TypeVarTupleTestsc                 j    |                     |          s|                     d|d|           d S d S )NzString z does not end with )endswithfail)rZ   stringtails      r_   assertEndsWithz TypeVarTupleTests.assertEndsWith  sL    t$$ 	GIIEEETEEFFFFF	G 	Gra   c                     t          d          }|                     |j        d           t          d          }|                     |j        d           d S )Nr  r  )r   r   rj   )rZ   r  r  s      r_   	test_namezTypeVarTupleTests.test_name  sR    $d+++5!!u-----ra   c                 P    t          d          }|                     ||           d S Nr  )r   r   rZ   r  s     r_    test_instance_is_equal_to_itselfz2TypeVarTupleTests.test_instance_is_equal_to_itself  s+    $R     ra   c                 f    |                      t          d          t          d                     d S r8  )r   r   r   s    r_   &test_different_instances_are_differentz8TypeVarTupleTests.test_different_instances_are_different  s.    L..T0B0BCCCCCra   c                 Z    t          d          }|                     |t                      d S r8  )r   r   r9  s     r_   (test_instance_isinstance_of_typevartuplez:TypeVarTupleTests.test_instance_isinstance_of_typevartuple  s+    $b,/////ra   c                     t          d          }|                     t                    5   |             d d d            d S # 1 swxY w Y   d S r8  )r   r   r   r9  s     r_   test_cannot_call_instancez+TypeVarTupleTests.test_cannot_call_instance  s    $y)) 	 	BDDD	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA	Ac                     t          d          }|                     g |R d         g |R d                    |                     t          |         t          |                    d S )Nr  r   )r   r   r   r9  s     r_   -test_unpacked_typevartuple_is_equal_to_itselfz?TypeVarTupleTests.test_unpacked_typevartuple_is_equal_to_itself  s]    $2FbFF1I...VBZ00000ra   c                    t          d          }|                     t          g |R          t          g |R                     |                     t          t          |                  t          t          |                             d S r8  )r   r   r  r   r   r9  s     r_   +test_parameterised_tuple_is_equal_to_itselfz=TypeVarTupleTests.test_parameterised_tuple_is_equal_to_itself  sg    $sssU3B33Z000vbz*E&*,=>>>>>ra   c                 f   t          d          }t          d          }|                     t          g ||R          t          g ||R                     |                     t          t          |         t          |         f         t          t          |         t          |         f                    d S )NTs1r  )r   r   r  r   r   )rZ   rF  r  s      r_    tests_tuple_arg_ordering_mattersz2TypeVarTupleTests.tests_tuple_arg_ordering_matters  s    5!!5!!*3****3***	
 	
 	
 	&+vc{*+&+vc{*+	
 	
 	
 	
 	
ra   c                 n   t          d          }t          g |R          }|                     |j        g |R            |                     |j        |f           t
          t          |                  }|                     |j        t          |         f           |                     |j        |f           d S r8  )r   r  r   rf  rg  r   r   )rZ   r  t1t2s       r_   *test_tuple_args_and_parameters_are_correctz<TypeVarTupleTests.test_tuple_args_and_parameters_are_correct  s    $3B33Zfff---*RE2226":vbzm444*RE22222ra   c           	         t          d          }t          d          }t          d          } G d dt          g |R                    } G d dt          t          |                            }||t          t
          fD 	]M}|g |R          }|                     |d         |d                    |                     |t                   |t                              |                     |t          t          f         |t          t          f                    |t          |                  }|                     |d         |d                    |                     |t                   |t                              |                     |t          t          f         |t          t          f                    t          |g |R                   }	|                     |	d         t          |d                             |                     |	t                   t          |t                                       |                     |	t          t          f         t          |t          t          f                             t          |t          |                           }
|                     |
d         t          |d                             |                     |
t                   t          |t                                       |                     |
t          t          f         t          |t          t          f                             ||g||R          }|                     t                    5  |d          d d d            n# 1 swxY w Y   |                     t                    5  |t                    d d d            n# 1 swxY w Y   |                     |t          t          f         |t          t          f                    |                     |t          t          t          f         |t          t          t          f                    |                     |t          t          t          t          f         |t          t          t          t          f                    ||t          |         |f         }|                     t                    5  |d          d d d            n# 1 swxY w Y   |                     t                    5  |t                    d d d            n# 1 swxY w Y   |                     |t          t          f         |t          t          f                    |                     |t          t          t          f         |t          t          t          f                    |                     |t          t          t          t          f         |t          t          t          t          f                    t
          t          |         |g |R          t          |         f         }|                     t                    5  |d          d d d            n# 1 swxY w Y   |                     t                    5  |t                    d d d            n# 1 swxY w Y   |t          k    r\|                     |t          t          f         t
          t          t                   |d         t          t                   f                    |                     |t          t          t          f         t
          t          t                   |t                   t          t                   f                    |                     |t          t          t          t          f         t
          t          t                   |t          t          f         t          t                   f                    t          t          |         |t          |                  t          |         f         }|                     t                    5  |d          d d d            n# 1 swxY w Y   |                     t                    5  |t                    d d d            n# 1 swxY w Y   |t          k    r\|                     |t          t          f         t          t          t                   |d         t          t                   f                    |                     |t          t          t          f         t          t          t                   |t                   t          t                   f                    |                     |t          t          t          t          f         t          t          t                   |t          t          f         t          t                   f                    	Od S )	Nr  r   r  c                       e Zd ZdS )3TypeVarTupleTests.test_var_substitution.<locals>.G1Nr}   rm   ra   r_   G1rN    r   ra   rO  c                       e Zd ZdS )3TypeVarTupleTests.test_var_substitution.<locals>.G2Nr}   rm   ra   r_   G2rQ    r   ra   rR  rm   )r   r   r#   r   r   r  r   r  rX  r  r   r   r   r   rp  )rZ   r  r   r  rO  rR  r   Br  DEFGHIs                  r_   r  z'TypeVarTupleTests.test_var_substitution  s0	   $CLLT]]$$$$$"$$$+++++$+++R% ?	K ?	KA#2##AQrUAbE***QuXqx000Qucz]AeSjM:::&*AQrUAbE***QuXqx000Qucz]AeSjM:::QsssVAQrUD2K000QuXtAeH~666Qucz]D5#:,?@@@Qvbz]#AQrUD2K000QuXtAeH~666Qucz]D5#:,?@@@!*b*"**A""9--  "              ""9--  %              Qucz]AeSjM:::Quc3/5#s?1CDDDQuc356%c5:P8QRRR!VBZ#$A""9--  "              ""9--  %              Qucz]AeSjM:::Quc3/5#s?1CDDDQuc356%c5:P8QRRRd1gq"vtBx/0A""9--  "              ""9--  %              Ezz  5#:!&tE{AbE49'D!EG G GQuc3/"4;#S	#ABD D DQuc356"4;#s(T%[#HIK K K d1gq}d2h67A""9--  "              ""9--  %              Ezz  5#:!&tE{AbE49'D!EG G GQuc3/"4;#S	#ABD D DQuc356"4;#s(T%[#HIK K K K}?	K ?	Ks   	M22M6	9M6	N11N5	8N5	>	SS	S	8TT	T	8	YY	Y	2ZZ	Z	*	`??a	a	$a>>b	b	c                 x   t          d          }t          d          }t          d          } G d dt          g |R                    } G d dt          t          |                            }||t          t
          fD ]:}||         }|                     t                    5  |t          t          f          d d d            n# 1 swxY w Y   |||f         }|                     t                    5  |g |R           d d d            n# 1 swxY w Y   |                     t                    5  |t          |                   d d d            n# 1 swxY w Y   ||g|t          |R          }|                     t                    5  |t          g|R           d d d            n# 1 swxY w Y   |                     t                    5  |t          g||R           d d d            n# 1 swxY w Y   ||t          |         t          |f         }|                     t                    5  |t          t          |         f          d d d            n# 1 swxY w Y   |                     t                    5  |t          t          |         t          |         f          d d d            n# 1 swxY w Y   <d S )Nr  r   r  c                       e Zd ZdS )7TypeVarTupleTests.test_bad_var_substitution.<locals>.G1Nr}   rm   ra   r_   rO  r\    r   ra   rO  c                       e Zd ZdS )7TypeVarTupleTests.test_bad_var_substitution.<locals>.G2Nr}   rm   ra   r_   rR  r^    r   ra   rR  )
r   r   r#   r   r   r  r   r   r   rX  )	rZ   r  r   r  rO  rR  r   rS  r  s	            r_   r  z+TypeVarTupleTests.test_bad_var_substitution  s9   $CLLT]]$$$$$"$$$+++++$+++R% 	/ 	/A"A""9--  #s(               !R%A""9--  #2##              ""9--  &*               !/b/#/r//"A""9--  #(((              ""9-- ! !#--R--  ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !VBZb()A""9-- # ##vbz/""# # # # # # # # # # # # # # #""9-- / /#vbz6":-../ / / / / / / / / / / / / / /)	/ 	/s~   #CC	C	3DD	D	0EE	E	
F((F,	/F,	G--G1	4G1	.II	I	:'J--J1	4J1	c                 P   t          d          } G d dt          g |R                    } G d dt          t          |                            }|                     t	          |          d           |                     t	          g |R d                   d           |                     t	          t          |                   d           |                     t	          t
          g |R                    d           |                     t	          t          t          |                            d	           |                     t	          t
          g |R           d
           |                     t	          t          t          t          |                                     d           d S )Nr  c                       e Zd ZdS )2TypeVarTupleTests.test_repr_is_correct.<locals>.G1Nr}   rm   ra   r_   rO  ra  /  r   ra   rO  c                       e Zd ZdS )2TypeVarTupleTests.test_repr_is_correct.<locals>.G2Nr}   rm   ra   r_   rR  rc  0  r   ra   rR  r   *Tsz
tuple[*Ts]ztyping.Tuple[*Ts]z*tuple[*Ts]z*typing.Tuple[*Ts])r   r#   r   r   r   r  r   )rZ   r  rO  rR  s       r_   test_repr_is_correctz&TypeVarTupleTests.test_repr_is_correct,  sb   $$$$$$"$$$+++++$+++b4(((fffQi%000fRj))5111eCRCCj))<888eF2J/002EFFFuSbSSz*M:::fU6":%6788:NOOOOOra   c           
      ^   t          d          } G d dt          g |R                    } G d dt          t          |                            }|                     t	          |d                   d           |                     t	          |d                   d           |                     t	          |t
                             d	           |                     t	          |t
                             d
           |                     t	          |t
          t          f                   d           |                     t	          |t
          t          f                   d           |                     t	          |g t          t          df         R                    d           |                     t	          |t          t          t          df                                     d           |                     t	          |t
          gt          t          df         R                    d           |                     t	          |t
          t          t          t          df                  f                   d           |                     t	          |g t          t          df         t          R                    d           |                     t	          |t          t          t          df                  t          f                   d           |                     t	          |t
          gt          t          df         t          R                    d           |                     t	          |t
          t          t          t          df                  t          f                   d           d S )Nr  c                       e Zd ZdS )@TypeVarTupleTests.test_variadic_class_repr_is_correct.<locals>.ANr}   rm   ra   r_   r   rh  ?  r   ra   r   c                       e Zd ZdS )@TypeVarTupleTests.test_variadic_class_repr_is_correct.<locals>.BNr}   rm   ra   r_   rS  rj  @  r   ra   rS  rm   A[()]zB[()]A[float]zB[float]A[float, str]zB[float, str].zA[*tuple[int, ...]]zB[*typing.Tuple[int, ...]]zA[float, *tuple[int, ...]]z!A[float, *typing.Tuple[int, ...]]zA[*tuple[int, ...], str]zB[*typing.Tuple[int, ...], str]zA[float, *tuple[int, ...], str]z&B[float, *typing.Tuple[int, ...], str])
r   r#   r   r4  r   r  rX  r  r   r   )rZ   r  r   rS  s       r_   #test_variadic_class_repr_is_correctz5TypeVarTupleTests.test_variadic_class_repr_is_correct=  s!   $########*****r
#***D2KK111D2KK111D5NNJ777D5NNJ777D5#://AAAD5#://AAAD#3E#s(O#3#3!4551	3 	3 	3D6%S/#:!;<<8	: 	: 	: 	D5#:5c?#:#:!;<<8	: 	: 	:D5&sCx*A#A!BCC?	A 	A 	A 	D#8E#s(O#8S#8#8!9::6	8 	8 	8D6%S/#:C#?!@AA=	? 	? 	? 	D5#?5c?#?C#?#?!@AA=	? 	? 	?D5&sCx*A3#F!GHHD	F 	F 	F 	F 	Fra   c                    t          d          } G d dt          t          |                            }|g |R          }|                     t	          |          d           |                     t	          |d                   d           |                     t	          |t
                             d           |                     t	          |t
          t          f                   d           |t          |                  }|                     t	          |          d           |                     t	          |d                   d           |                     t	          |t
                             d           |                     t	          |t
          t          f                   d           |g |t          R          }|                     t	          |          d	           |                     t	          |d                   d
           |                     t	          |t
                             d           |                     t	          |t
          t          f                   d           |t          |         t          f         }|                     t	          |          d	           |                     t	          |d                   d
           |                     t	          |t
                             d           |                     t	          |t
          t          f                   d           |t          g|R          }|                     t	          |          d           |                     t	          |d                   d
           |                     t	          |t
                             d           |                     t	          |t
          t          f                   d           |t          t          |         f         }|                     t	          |          d           |                     t	          |d                   d
           |                     t	          |t
                             d           |                     t	          |t
          t          f                   d           |t          g|t          R          }	|                     t	          |	          d           |                     t	          |	d                   d           |                     t	          |	t
                             d           |                     t	          |	t
          t          f                   d           |t          t          |         t          f         }
|                     t	          |
          d           |                     t	          |
d                   d           |                     t	          |
t
                             d           |                     t	          |
t
          t          f                   d           |g |t          t          df         R          }|                     t	          |          d           |                     t	          |d                   d           |                     t	          |t
                             d           |                     t	          |t
          t          f                   d           |t          |         t          t          t          df                  f         }|                     t	          |          d           |                     t	          |d                   d           |                     t	          |t
                             d           |                     t	          |t
          t          f                   d           d S )Nr  c                       e Zd ZdS )FTypeVarTupleTests.test_variadic_class_alias_repr_is_correct.<locals>.ANr}   rm   ra   r_   r   rq  _  r   ra   r   zA[*Ts]rm   rk  rl  rm  zA[*Ts, int]zA[int]zA[float, int]zA[float, str, int]zA[int, *Ts]zA[int, float]zA[int, float, str]zA[int, *Ts, str]zA[int, str]zA[int, float, str, str].zA[*Ts, *tuple[str, ...]]zA[*tuple[str, ...]]zA[float, *tuple[str, ...]]zA[float, str, *tuple[str, ...]]zA[*Ts, *typing.Tuple[str, ...]]zA[*typing.Tuple[str, ...]]z!A[float, *typing.Tuple[str, ...]]z&A[float, str, *typing.Tuple[str, ...]])
r   r#   r   r4  r   r  rX  r   r  r   )rZ   r  r   rS  r  rT  rU  rV  rW  rX  rY  JKs                r_   )test_variadic_class_alias_repr_is_correctz;TypeVarTupleTests.test_variadic_class_alias_repr_is_correct]  s-   $*****r
#***crccFDGGX...D2KK111D5NNJ777D5#://AAAfRjMDGGX...D2KK111D5NNJ777D5#://AAAhrh3hhKDGG]333D2KK222D5NNO<<<D5#://1EFFFfRj#oDGG]333D2KK222D5NNO<<<D5#://1EFFFchBhhKDGG]333D2KK222D5NNO<<<D5#://1EFFFc6":oDGG]333D2KK222D5NNO<<<D5#://1EFFFcmBmmmDGG%7888D2KK777D5NN,@AAAD5#://1JKKKc6":s"#DGG%7888D2KK777D5NN,@AAAD5#://1JKKK#r#E#s(O##$DGG%?@@@D2KK)>???D5NN,HIIID5#://1RSSSfRj&sCx112DGG%FGGGD2KK)EFFFD5NN,OPPPD5#://1YZZZZZra   c                     |                      t                    5   G d dt                    }d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS )7TypeVarTupleTests.test_cannot_subclass_class.<locals>.CNr}   rm   ra   r_   r  rw    r   ra   r  )r   r   r   r  s     r_   test_cannot_subclass_classz,TypeVarTupleTests.test_cannot_subclass_class  s    y)) 	( 	('''''L'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(r  c           	      L   t          d          }|                     t                    5   G d d|          }d d d            n# 1 swxY w Y   |                     t          t                    5   G d dt          t                              }d d d            n# 1 swxY w Y   |                     t          t                    5   G d dt          |           }d d d            n# 1 swxY w Y   |                     t          t                    5   G d dt          t          |                             }d d d            n# 1 swxY w Y   |                     t          d          5   G d dt                    }d d d            n# 1 swxY w Y   |                     t          d	          5   G d
 dg|R  }d d d            n# 1 swxY w Y   |                     t          d	          5   G d dt          |                   }d d d            d S # 1 swxY w Y   d S )Nr  c                       e Zd ZdS :TypeVarTupleTests.test_cannot_subclass_instance.<locals>.CNr}   rm   ra   r_   r  r|    r   ra   r  c                       e Zd ZdS r{  r}   rm   ra   r_   r  z:TypeVarTupleTests.test_cannot_subclass_instance.<locals>.C  r   ra   c                       e Zd ZdS r{  r}   rm   ra   r_   r  z:TypeVarTupleTests.test_cannot_subclass_instance.<locals>.C  r   ra   c                       e Zd ZdS r{  r}   rm   ra   r_   r  z:TypeVarTupleTests.test_cannot_subclass_instance.<locals>.C  r   ra   zCannot subclass typing\.Unpackc                       e Zd ZdS r{  r}   rm   ra   r_   r  z:TypeVarTupleTests.test_cannot_subclass_instance.<locals>.C  r   ra   zCannot subclass \*Tsc                       e Zd ZdS r{  r}   rm   ra   r_   r  z:TypeVarTupleTests.test_cannot_subclass_instance.<locals>.C  r   ra   c                       e Zd ZdS r{  r}   rm   ra   r_   r  z:TypeVarTupleTests.test_cannot_subclass_instance.<locals>.C  r   ra   )r   r   r   r   CANNOT_SUBCLASS_TYPEr   r   rZ   r  r  s      r_   test_cannot_subclass_instancez/TypeVarTupleTests.test_cannot_subclass_instance  s   $y)) 	 	B	 	 	 	 	 	 	 	 	 	 	 	 	 	 	##I/CDD 	( 	('''''DLL'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(##I/CDD 	% 	%$$$$$D"I$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%##I/CDD 	, 	,+++++D$$+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,##I$EG G 	" 	"!!!!!F!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" ##I/FGG 	 	R	 	 	 	 	 	 	 	 	 	 	 	 	 	 	##I/FGG 	& 	&%%%%%F2J%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s}   AA	A	0!BB!$B!C**C.1C.'EEE.FFF4GGG2HH Hc                    t          d          }t          d          } G d dt          g |R                    } G d dt          t          |                            }|d         }|d         }|                     |j        d           |                     |j        d           |t                   }|t                   }|                     |j        t          f           |                     |j        t          f           |t          t          f         }	|t          t          f         }
|                     |	j        t          t          f           |                     |
j        t          t          f           ||         }||         }|                     |j        |f           |                     |j        |f           |g |R          }|t          |                  }|                     |j        g |R            |                     |j        t          |         f           ||g|R          }||t          |         f         }|                     |j        |g|R            |                     |j        |t          |         f           |g ||R          }|t          |         |f         }|                     |j        g ||R            |                     |j        t          |         |f           d S )Nr   r  c                       e Zd ZdS )ATypeVarTupleTests.test_variadic_class_args_are_correct.<locals>.ANr}   rm   ra   r_   r   r    r   ra   r   c                       e Zd ZdS )ATypeVarTupleTests.test_variadic_class_args_are_correct.<locals>.BNr}   rm   ra   r_   rS  r    r   ra   rS  rm   )r   r   r#   r   r   rf  r   rX  )rZ   r   r  r   rS  r  rT  rU  rV  rW  rX  rY  rr  rs  LMNOPs                      r_   $test_variadic_class_args_are_correctz6TypeVarTupleTests.test_variadic_class_args_are_correct  s   CLL$########*****r
#***bEbER(((R(((cFcFcV,,,cV,,,c3hKc3hKc3Z000c3Z000aDaDaT***aT***crccFfRjMVrVV,,,fRj]333af"ffIamaX"XX...a_555frf1ffIfRj!mXrX1XX...fRj!_55555ra   c                    t          d          } G d dt          g |R                    }|                     |t                   j        |           |                     |t
                   j        |           |                     |t          |                  j        |            G d dt          t          |                            }|                     |t                   j        |           |                     |t
                   j        |           |                     |t          |                  j        |           d S )Nr  c                       e Zd ZdS )BTypeVarTupleTests.test_variadic_class_origin_is_correct.<locals>.CNr}   rm   ra   r_   r  r    r   ra   r  c                       e Zd ZdS )BTypeVarTupleTests.test_variadic_class_origin_is_correct.<locals>.DNr}   rm   ra   r_   rT  r    r   ra   rT  )r   r#   r   r   rh  r   r   )rZ   r  r  rT  s       r_   %test_variadic_class_origin_is_correctz7TypeVarTupleTests.test_variadic_class_origin_is_correct  s   $########af'+++adoq)))ar
m.222*****r
#***af'+++adoq)))ar
m.22222ra   c                 P   t          d          }d|\  fd}|                     t          |          dt          |         i           dt          t
          t          f         \  fd}|                     t          |          dt          t          t
          t          f                  i            G d dt          g |R                    }d|t
          t          f         \  fd}|                     t          |          dt          |t
          t          f                  i           d S )Nr  r   c                      d S re   rm   r   s    r_   func1zCTypeVarTupleTests.test_get_type_hints_on_unpack_args.<locals>.func1  r   ra   c                      d S re   rm   r  s    r_   func2zCTypeVarTupleTests.test_get_type_hints_on_unpack_args.<locals>.func2  r   ra   c                       e Zd ZdS )LTypeVarTupleTests.test_get_type_hints_on_unpack_args.<locals>.CustomVariadicNr}   rm   ra   r_   CustomVariadicr    r   ra   r  c                      d S re   rm   r  s    r_   func3zCTypeVarTupleTests.test_get_type_hints_on_unpack_args.<locals>.func3  r   ra   r   r   r   r   r  r   rX  r#   rZ   r  r  r  r  r  s         r_   "test_get_type_hints_on_unpack_argsz4TypeVarTupleTests.test_get_type_hints_on_unpack_args  s   $#"#####UffRj%9:::0%S/00000UffU38_.E%FGGG00000WSbSS\0009.c299999Uff^CH5M.N%OPPPPPra   c                    t          d          }dd}|                     t          |d|i          dt          |         i           dd}|                     t          |          dt          t          t
          t          f                  i            G d d	t          g |R                    }dd}|                     t          |d	|i          dt          |t
          t          f                  i           d S )Nr  r   rd  c                      d S re   rm   r  s    r_   r  zJTypeVarTupleTests.test_get_type_hints_on_unpack_args_string.<locals>.func1  r   ra   )localns*tuple[int, str]c                      d S re   rm   r  s    r_   r  zJTypeVarTupleTests.test_get_type_hints_on_unpack_args_string.<locals>.func2  r   ra   c                       e Zd ZdS )STypeVarTupleTests.test_get_type_hints_on_unpack_args_string.<locals>.CustomVariadicNr}   rm   ra   r_   r  r    r   ra   r  *CustomVariadic[int, str]c                      d S re   rm   r  s    r_   r  zJTypeVarTupleTests.test_get_type_hints_on_unpack_args_string.<locals>.func3  r   ra   )r   rd  )r   r  )r   r  r  r  s         r_   )test_get_type_hints_on_unpack_args_stringz;TypeVarTupleTests.test_get_type_hints_on_unpack_args_string  s   $%%%%UT2J777,	. 	. 	. 	3222UffU38_.E%FGGG00000WSbSS\000;;;;U-=~,NOOO &S)A"BC	E 	E 	E 	E 	Era   c                 (   t          d          }|                     t          g |R          j        g |R            |                     t          t
          |                  j        t
          |         f           |                     t          g |t          R          j        g |t          R            |                     t          t
          |         t          f         j        t
          |         t          f           |                     t          t          g|R          j        t          g|R            |                     t          t          t
          |         f         j        t          t
          |         f           |                     t          t          g|t          R          j        t          g|t          R            |                     t          t          t
          |         t          f         j        t          t
          |         t          f           |                     t          g |t          R          j        g |t          R            |                     t          t
          |                  j        t
          |         f           d S r8  )r   r   r  rf  r   r   r   rX  r9  s     r_   test_tuple_args_are_correctz-TypeVarTupleTests.test_tuple_args_are_correct  s   $sss,fff555vbz*3fRj]CCCxxCxx1:R:::>>>vbz3/86":s:KLLLsxRxx1C:"::>>>sF2J/83r
:KLLLs}R}}}-6C	* 	* 	*sF2J34=vbz3/	1 	1 	1 	xxCxx1:R:::>>>vbz*3fRj]CCCCCra   c           	          t          d          }t          d          }t          d          }t          g |d f         }t          t          |         gd f         }|                     |j        g |t          d           R            |                     |j        t          |         t          d           f           t          t          g|d f         }t          t          t          |         gd f         }|                     |j        t          g|t          d           R            |                     |j        t          t          |         t          d           f           t          g |t          d f         }t          t          |         t          gd f         }	|                     |j        g |t          t          d           R            |                     |	j        t          |         t          t          d           f           t          t          g|t          d f         }
t          t          t          |         t          gd f         }|                     |
j        t          g|t          t          d           R            |                     |j        t          t          |         t          t          d           f           t          d gg|R          }t          d gt          |         f         }|                     |j        t          d           g|R            |                     |j        t          d           t          |         f           t          d gt          t          g|R          f         }t          d gt          t          t          |         f         f         }|                     |j        t          d           t          t          g|R          f           |                     |j        t          d           t          t          t          |         f         f           t          d gt          g |t          R          f         }t          d gt          t          |         t          f         f         }|                     |j        t          d           t          g |t          R          f           |                     |j        t          d           t          t          |         t          f         f           t          d gt          t          g|t          R          f         }t          d gt          t          t          |         t          f         f         }|                     |j        t          d           t          t          g|t          R          f           |                     |j        t          d           t          t          t          |         t          f         f           t          g |g|R          }t          t          |         gt          |         f         }|                     |j        g ||R            |                     |j        t          |         t          |         f           t          g |g|R          }t          t          |         gt          |         f         }|                     |j        g ||R            |                     |j        t          |         t          |         f           d S )Nr  rF  r  )
r   r"   r   r   rf  r   r   rX  r  r   )rZ   r  rF  r  r   bcderh   ghijklmnopqrsus                           r_   test_callable_args_are_correctz0TypeVarTupleTests.test_callable_args_are_correct  s   $5!!5!! UrUD[!fRj\4'(%6r%64::%6%6777fRj$t**%=>>>cZBZ%&c6":&,-c%;B%;T

%;%;<<<c6":tDzz%BCCCZrZ3Z%&fRj#&,-%;r%;3%;T

%;%;<<<fRj#tDzz%BCCCc_B__d*+c6":s+T12c%@B%@%@T$ZZ%@%@AAAc6":sDJJ%GHHH dV[b[[!dVVBZ'(d4jj%62%6%6777d4jj&*%=>>>dVU3888_,-dVU3r
?334d4jj%b/%BCCCd4jj%VBZ2H%IJJJdVU8B888_,-dVU6":s?334d4jj%S/%BCCCd4jj%r
C2H%IJJJdVU3==S==112dVU3r
C#7889d4jj%b#2F%GHHHd4jj%VBZ8L2M%NOOO UrUZRZZ fRj\6":-.ZrZBZZ000fRj&*%=>>>VsV\c\\"fSk]F3K/0\s\S\\222fSk6#;%?@@@@@ra   c           
      ,   t          d          }t          d          }|                     t                    5   G d dt          g ||R                    }d d d            n# 1 swxY w Y   |                     t                    5   G d dt          t          |         t          |         f                   }d d d            n# 1 swxY w Y   |                     t                    5   G d dt          g |||R                    }d d d            n# 1 swxY w Y   |                     t                    5   G d dt          t          |         t          |         t          |         f                   }d d d            d S # 1 swxY w Y   d S )NrF  r  c                       e Zd ZdS STypeVarTupleTests.test_variadic_class_with_duplicate_typevartuples_fails.<locals>.CNr}   rm   ra   r_   r  r  ]  r   ra   r  c                       e Zd ZdS r  r}   rm   ra   r_   r  zSTypeVarTupleTests.test_variadic_class_with_duplicate_typevartuples_fails.<locals>.C_  r   ra   c                       e Zd ZdS r  r}   rm   ra   r_   r  zSTypeVarTupleTests.test_variadic_class_with_duplicate_typevartuples_fails.<locals>.Cb  r   ra   c                       e Zd ZdS r  r}   rm   ra   r_   r  zSTypeVarTupleTests.test_variadic_class_with_duplicate_typevartuples_fails.<locals>.Cd  r   ra   )r   r   r   r#   r   )rZ   rF  r  r  s       r_   6test_variadic_class_with_duplicate_typevartuples_failszHTypeVarTupleTests.test_variadic_class_with_duplicate_typevartuples_failsX  s   5!!5!!y)) 	/ 	/.....GJSJ3JJ'...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/y)) 	= 	=<<<<<GF3K45<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= y)) 	5 	544444G,S,3,,,-444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5y)) 	J 	JIIIIIGF3KfSkABIII	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	JsG   A$$A(+A(	2CCC,!DD D>>F		FFc                 ,   t          d          } G d dt          t          |                            }|t          g|R           |t          t          |         f          |g |t          R           |t          |         t          f          |t          g|t          R           |t          t          |         t          f          |t          t
          g|t          t          R           |t          t
          t          |         t          t          f          d S )Nr  c                       e Zd ZdS )]TypeVarTupleTests.test_type_concatenation_in_variadic_class_argument_list_succeeds.<locals>.CNr}   rm   ra   r_   r  r  h  r   ra   r  )r   r#   r   r   rX  boolr  r  s      r_   @test_type_concatenation_in_variadic_class_argument_list_succeedszRTypeVarTupleTests.test_type_concatenation_in_variadic_class_argument_list_succeedsf  s    $*****r
#***	#(((	#vbz/	(2(s((	&*c/	#--C--	#vbz3
	#t
$b
$%
$
$
$%%	#tVBZ
+,,,,ra   c                 4   t          d          }t          t          g|R           t          g |t          R           t          t          g|t          R           t          t          t          g|t
          t          R           t          t          t          |         f          t          t          |         t          f          t          t          t          |         t          f          t          t          t          t          |         t
          t          f          d S r8  )r   r  r   rX  r  r  r   r   r9  s     r_   7test_type_concatenation_in_tuple_argument_list_succeedszITypeVarTupleTests.test_type_concatenation_in_tuple_argument_list_succeedsv  s    $chBhhhrh3hhcmBmmmc4("(e(S(())c6":ofRj#oc6":s"##c4UC/0000ra   c                     t          d          }|                     t                    5   G d dt          |                   }d d d            d S # 1 swxY w Y   d S )Nr  c                       e Zd ZdS )[TypeVarTupleTests.test_variadic_class_definition_using_packed_typevartuple_fails.<locals>.CNr}   rm   ra   r_   r  r    r   ra   r  )r   r   r   r#   r  s      r_   >test_variadic_class_definition_using_packed_typevartuple_failszPTypeVarTupleTests.test_variadic_class_definition_using_packed_typevartuple_fails  s    $y)) 	' 	'&&&&&GBK&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   AAAc                    t          d          }|                     t                    5   G d dt          g |t          R                    }d d d            n# 1 swxY w Y   |                     t                    5   G d dt          t
          |         t          f                   }d d d            d S # 1 swxY w Y   d S )Nr  c                       e Zd ZdS )VTypeVarTupleTests.test_variadic_class_definition_using_concrete_types_fails.<locals>.FNr}   rm   ra   r_   rV  r    r   ra   rV  c                       e Zd ZdS )VTypeVarTupleTests.test_variadic_class_definition_using_concrete_types_fails.<locals>.ENr}   rm   ra   r_   rU  r    r   ra   rU  )r   r   r   r#   r   r   )rZ   r  rV  rU  s       r_   9test_variadic_class_definition_using_concrete_types_failszKTypeVarTupleTests.test_variadic_class_definition_using_concrete_types_fails  s@   $y)) 	- 	-,,,,,GHRHHH%,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-y)) 	4 	433333GF2JO,333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s#   $AA!A?,B88B<?B<c           	         t          d          }t          d          }t          d          } G d dt          ||g|R                    }|t          t          f          |t          t          t
          f          |t          t          t
          t          f           G d dt          ||t          |         f                   }|t          t          f          |t          t          t
          f          |t          t          t
          t          f           G d d	t          |g||R                    }|t          t          f          |t          t          t
          f          |t          t          t
          t          f           G d
 dt          |t          |         |f                   }|t          t          f          |t          t          t
          f          |t          t          t
          t          f           G d dt          g |||R                    }|t          t          f          |t          t          t
          f          |t          t          t
          t          f           G d dt          t          |         ||f                   }	|	t          t          f          |	t          t          t
          f          |	t          t          t
          t          f          d S )Nr  r  r  c                       e Zd ZdS )WTypeVarTupleTests.test_variadic_class_with_2_typevars_accepts_2_or_more_args.<locals>.ANr}   rm   ra   r_   r   r    r   ra   r   c                       e Zd ZdS )WTypeVarTupleTests.test_variadic_class_with_2_typevars_accepts_2_or_more_args.<locals>.BNr}   rm   ra   r_   rS  r    r   ra   rS  c                       e Zd ZdS )WTypeVarTupleTests.test_variadic_class_with_2_typevars_accepts_2_or_more_args.<locals>.CNr}   rm   ra   r_   r  r    r   ra   r  c                       e Zd ZdS )WTypeVarTupleTests.test_variadic_class_with_2_typevars_accepts_2_or_more_args.<locals>.DNr}   rm   ra   r_   rT  r    r   ra   rT  c                       e Zd ZdS )WTypeVarTupleTests.test_variadic_class_with_2_typevars_accepts_2_or_more_args.<locals>.ENr}   rm   ra   r_   rU  r    r   ra   rU  c                       e Zd ZdS )WTypeVarTupleTests.test_variadic_class_with_2_typevars_accepts_2_or_more_args.<locals>.FNr}   rm   ra   r_   rV  r    r   ra   rV  )r   r   r#   r   rX  r  r  r   )
rZ   r  r  r  r   rS  r  rT  rU  rV  s
             r_   :test_variadic_class_with_2_typevars_accepts_2_or_more_argszLTypeVarTupleTests.test_variadic_class_with_2_typevars_accepts_2_or_more_args  sV   $T]]T]]+++++B$+++	#s(	#sE/	#sE4
  22222Br
*+222	#s(	#sE/	#sE4
  +++++R$+++	#s(	#sE/	#sE4
  22222F2J*+222	#s(	#sE/	#sE4
  +++++R$+++	#s(	#sE/	#sE4
  22222r
B*+222	#s(	#sE/	#sE4
    ra   c                     t          d          }dt          |         fd}d|\  fd}|                     |j        dt          |         i           |                     |j        dg |R d         i           d S )Nr  r   c                      d S re   rm   r  s    r_   rh   zGTypeVarTupleTests.test_variadic_args_annotations_are_correct.<locals>.f  r   ra   c                      d S re   rm   r  s    r_   r  zGTypeVarTupleTests.test_variadic_args_annotations_are_correct.<locals>.g  r   ra   r   )r   r   r   r   )rZ   r  rh   r  s       r_   *test_variadic_args_annotations_are_correctz<TypeVarTupleTests.test_variadic_args_annotations_are_correct  s    $&VBZ&&&&b*VVBZ,@AAA*VVrVVAY,?@@@@@ra   c                 d   dt           t          df         \  fd}|                     |j        dg t           t          df         R d         i           dt          t
          t          df                  fd}|                     |j        dt          t
          t          df                  i           d S )Nr   .c                      d S re   rm   r  s    r_   r   zUTypeVarTupleTests.test_variadic_args_with_ellipsis_annotations_are_correct.<locals>.a  r   ra   r   c                      d S re   rm   r  s    r_   r  zUTypeVarTupleTests.test_variadic_args_with_ellipsis_annotations_are_correct.<locals>.b  r   ra   )r  r   r   r   r   r   )rZ   r   r  s      r_   8test_variadic_args_with_ellipsis_annotations_are_correctzJTypeVarTupleTests.test_variadic_args_with_ellipsis_annotations_are_correct  s    ,eCHo,,,,,* "5E#s(O"5"5a"89	; 	; 	; 	4VE#s(O,3333* &sCx"9:	< 	< 	< 	< 	<ra   c                 <   t          d          }dt          t          g|R          \  fd}|                     |j        dg t          t          g|R          R d         i           dt          g |t          R          \  fd}|                     |j        dg t          g |t          R          R d         i           dt          t
          g|t          R          \  fd}|                     |j        dg t          t
          g|t          R          R d         i           dt          t          t          g|t          t
          R          \  fd}|                     |j        dg t          t          t          g|t          t
          R          R d         i           dt          t          t          t          |         f                  fd}|                     |j        dt          t          t          t          |         f                  i           dt          t          t          |         t          f                  fd	}|                     |j        dt          t          t          |         t          f                  i           dt          t          t
          t          |         t          f                  fd
}|                     |j        dt          t          t
          t          |         t          f                  i           dt          t          t          t          t          |         t          t
          f                  fd}	|                     |	j        dt          t          t          t          t          |         t          t
          f                  i           d S )Nr  r   c                      d S re   rm   r  s    r_   r   zXTypeVarTupleTests.test_concatenation_in_variadic_args_annotations_are_correct.<locals>.a  r   ra   r   c                      d S re   rm   r  s    r_   r  zXTypeVarTupleTests.test_concatenation_in_variadic_args_annotations_are_correct.<locals>.b  r   ra   c                      d S re   rm   r  s    r_   r  zXTypeVarTupleTests.test_concatenation_in_variadic_args_annotations_are_correct.<locals>.c  r   ra   c                      d S re   rm   r  s    r_   r  zXTypeVarTupleTests.test_concatenation_in_variadic_args_annotations_are_correct.<locals>.d  r   ra   c                      d S re   rm   r  s    r_   r  zXTypeVarTupleTests.test_concatenation_in_variadic_args_annotations_are_correct.<locals>.e  r   ra   c                      d S re   rm   r  s    r_   rh   zXTypeVarTupleTests.test_concatenation_in_variadic_args_annotations_are_correct.<locals>.f  r   ra   c                      d S re   rm   r  s    r_   r  zXTypeVarTupleTests.test_concatenation_in_variadic_args_annotations_are_correct.<locals>.g  r   ra   c                      d S re   rm   r  s    r_   r  zXTypeVarTupleTests.test_concatenation_in_variadic_args_annotations_are_correct.<locals>.h  r   ra   )
r   r  r   r   r   rX  r  r  r   r   )
rZ   r  r   r  r  r  r  rh   r  r  s
             r_   ;test_concatenation_in_variadic_args_annotations_are_correctzMTypeVarTupleTests.test_concatenation_in_variadic_args_annotations_are_correct  sY   $ 	-eCH"HHo,,,,,(uSX2XX((+,	
 	
 	

 	-eHRHHHo,,,,,(uXbX#XX((+,	
 	
 	

 	2eCM"McMM*11111-uS]2]s]]+--a01	
 	
 	

 	?eC66E63667>>>>>:uS$77U7C778::1=>	
 	
 	
 	;VE#vbz/23::::VE#vbz/234	
 	
 	

 	;VE&*c/23::::VE&*c/234	
 	
 	

 	@VE#vbz3"678????VE#vbz3"6789	
 	
 	

 	MVE#tVBZ"CDELLLLVE#tVBZ"CDEF	
 	
 	
 	
 	
ra   c                 x   t          d          } G d dt          g |R                    } G d dt          t          |                            }|                     |t                   |t                              |                     |t                   |t                              t          d          }t          d          }|                     |g |R          |g |R                     |                     |t          |                  |t          |                             |                     |g ||R          |g ||R                     |                     |t          |         t          |         f         |t          |         t          |         f                    |                     |t          g||R          |t          g||R                     |                     |t          t          |         t          |         f         |t          t          |         t          |         f                    d S )Nr  c                       e Zd ZdS )MTypeVarTupleTests.test_variadic_class_same_args_results_in_equalty.<locals>.CNr}   rm   ra   r_   r  r     r   ra   r  c                       e Zd ZdS )MTypeVarTupleTests.test_variadic_class_same_args_results_in_equalty.<locals>.DNr}   rm   ra   r_   rT  r    r   ra   rT  rF  r  )r   r#   r   r   r   rZ   r  r  rT  rF  r  s         r_   0test_variadic_class_same_args_results_in_equaltyzBTypeVarTupleTests.test_variadic_class_same_args_results_in_equalty  s"   $########*****r
#***33(((33(((5!!5!!dsddGdsddG	
 	
 	
 	fSkNfSkN	
 	
 	

 	jsjSjjMjsjSjjM	
 	
 	
 	fSk6#;&'fSk6#;&'	
 	
 	

 	coCo#oocoCo#oo	
 	
 	
 	c6#;s+,c6#;s+,	
 	
 	
 	
 	
ra   c                    t          d          } G d dt          g |R                    } G d dt          t          |                            }|                     |t          t
          f         |t
          t          f                    |                     |t          t
          f         |t
          t          f                    t          d          }t          d          }|                     |g ||R          |g ||R                     |                     |t          |         t          |         f         |t          |         t          |         f                    d S )Nr  c                       e Zd ZdS )ETypeVarTupleTests.test_variadic_class_arg_ordering_matters.<locals>.CNr}   rm   ra   r_   r  r  "  r   ra   r  c                       e Zd ZdS )ETypeVarTupleTests.test_variadic_class_arg_ordering_matters.<locals>.DNr}   rm   ra   r_   rT  r	  #  r   ra   rT  rF  r  )r   r#   r   r   r   rX  r  s         r_   (test_variadic_class_arg_ordering_mattersz:TypeVarTupleTests.test_variadic_class_arg_ordering_matters   sX   $########*****r
#***c3hKc3hK	
 	
 	
 	c3hKc3hK	
 	
 	

 5!!5!!jsjSjjMjsjSjjM	
 	
 	
 	fSk6#;&'fSk6#;&'	
 	
 	
 	
 	
ra   c                    t          d          }t          d          }t          d          } G d dt          g |R                    } G d dt          t          |                            }|                     |g |R          |g |R                     |                     |t          |                  |t          |                             d S )Nr  rF  r  c                       e Zd ZdS )RTypeVarTupleTests.test_variadic_class_arg_typevartuple_identity_matters.<locals>.CNr}   rm   ra   r_   r  r  ?  r   ra   r  c                       e Zd ZdS )RTypeVarTupleTests.test_variadic_class_arg_typevartuple_identity_matters.<locals>.DNr}   rm   ra   r_   rT  r  @  r   ra   rT  )r   r#   r   r   )rZ   r  rF  r  r  rT  s         r_   5test_variadic_class_arg_typevartuple_identity_matterszGTypeVarTupleTests.test_variadic_class_arg_typevartuple_identity_matters:  s    $5!!5!!########*****r
#***AdsddGQtttW---AfSkNAfSkN;;;;;ra   N)&rj   rk   rl   r4  r6  r:  r<  r>  r@  rB  rD  rG  rK  r  r  re  rn  rt  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  rm   ra   r_   r.  r.    sP       G G G. . .! ! !D D D0 0 0  
1 1 1
? ? ?


 

 

3 3 3FK FK FKP/ / /<P P P"F F F@>[ >[ >[@( ( (& & &$'6 '6 '6R3 3 3Q Q QE E E D D D(;A ;A ;AzJ J J- - - 1 1 1' ' '
4 4 4!! !! !!FA A A< < <5
 5
 5
n$
 $
 $
L
 
 
4	< 	< 	< 	< 	<ra   r.  c                   P    e Zd Zed             Zed             Zed             ZdS )TypeVarTuplePicklingTestsc                     t          d          at          j        t          j        t          |                    }|                     t          |           d S )N
global_Ts1)r   r  ru   loadsdumpsr   )rZ   rs   
global_Ts2s      r_   6test_pickling_then_unpickling_results_in_same_identityzPTypeVarTuplePicklingTests.test_pickling_then_unpickling_results_in_same_identityL  sF     ",//
\&,z5"A"ABB
j*-----ra   c                 \   t          d          ag t          R d         }t          j        t          j        ||                    }|                     ||           t          t                   }t          j        t          j        ||                    }|                     ||           d S )N	global_Tsr   )r   r  ru   r  r  r   r   )rZ   rs   	unpacked1	unpacked2	unpacked3	unpacked4s         r_   ?test_pickling_then_unpickling_unpacked_results_in_same_identityzYTypeVarTuplePicklingTests.test_pickling_then_unpickling_unpacked_results_in_same_identityS  s     !--	!iMM!$	Li!?!?@@	i+++9%	Li!?!?@@	i+++++ra   c           	         t          d          at          d          at          g t          R          t
          t          t                            t          t          gt          R          t
          t          t          t                   f         t          t          gt          R          t
          t          t          t                   f         g}|D ]?}t          j
        t          j        ||                    }|                     ||           @d S )Nglobal_Tr  )r   r!  r   r  r  r   r   r   r   ru   r  r  r   )rZ   rs   tuplestrJ  s        r_   >test_pickling_then_unpickling_tuple_with_typevartuple_equalityzXTypeVarTuplePicklingTests.test_pickling_then_unpickling_tuple_with_typevartuple_equality`  s    
 :&& --	 *9**&#$!-i-- !VI&&'#/	//"#vi(()	
  	$ 	$Afl1e4455BQ####	$ 	$ra   N)rj   rk   rl   rz   r  r  r$  rm   ra   r_   r  r  F  sh         . . . 
, 
, 
, $ $ $ $ $ra   r  c                       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d Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )
UnionTestsc                 n    t           t          t          f         }|                     |t                      d S re   )r   r   r  r   rZ   r  s     r_   r  zUnionTests.test_basicsy  s,    #u*Au%%%%%ra   c                    |                      t                    5  t          t          t                     d d d            n# 1 swxY w Y   |                      t                    5  t          t          t                     d d d            n# 1 swxY w Y   |                      t                    5  t          t          t          t
          f         t                     d d d            d S # 1 swxY w Y   d S re   )r   r   rW   r   r   rX  r   s    r_   test_subclass_errorzUnionTests.test_subclass_error}  s   y)) 	# 	#sE"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#y)) 	# 	#uc"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#y)) 	- 	-uS#X,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s5   AA	A'BBB3-C--C14C1c                    t           t                   }|                     |t                     t           t          t          f         }t           t          t          f         }t           t          t          f         }|                     ||           |                     |t                     |                     |t                     |                     |t                     d S re   )r   r   r   r   objectr   )rZ   r  u1u2u3s        r_   test_union_anyzUnionTests.test_union_any  s    #JC   38_38_3;R   B$$$B$$$B$$$$$ra   c                 \   t           t                   }|                     |t                     t           t          t          f         }t           t          t          f         }|                     ||           |                     |t                     |                     |t                     d S re   )r   r,  r   r   r   )rZ   r  r-  r.  s       r_   test_union_objectzUnionTests.test_union_object  s    &MF###3;63;R   B'''B'''''ra   c                     t           t          t          f         }t           t          t          f         }|                     ||           d S re   )r   r   r  r   )rZ   r-  r.  s      r_   test_unorderedzUnionTests.test_unordered  s:    3:5#:R     ra   c                 `    t           t                   }|                     |t                     d S re   )r   r|   r   )rZ   r#  s     r_   test_single_class_disappearsz'UnionTests.test_single_class_disappears  s%    (Oa"""""ra   c                     t           t          t          f         }|                     |t                     |                     t          |j                   |                     t          |j                   d S re   )r   r|   r   r   r!  rf  r(  s     r_   test_base_class_keptzUnionTests.test_base_class_kept  sY    (G#$Ax(((h
+++gqz*****ra   c                     t           t          t          f         }t           |t          f         }|                     |t           t          t          t          f                    d S re   )r   r   r  r|   r   )rZ   r  vs      r_   test_union_unionzUnionTests.test_union_union  sF    #u*!X+E#uh"6788888ra   c                    |                      t          t                    d           t          t          t          f         }|                      t          |          dt
          z             t          t          t          f         }|                      t          |          dt
          z             t          d          }t          |t          f         t                   }|                      t          |          t          t                               t          t          t                   t          f         }|                      t          |          d           t          t          t                   t          t          t          f         f         }|                      t          |          d           t          t          t          z           }|                      t          |          d           t          d t          f         }|                      t          |          d           t          t          d f         }|                      t          |          d           t          d t          t          f         }|                      t          |          d	           t          t                   }|                      t          |          d           d S )
Nztyping.Unionztyping.Union[%s.Employee, int]ztyping.Union[int, %s.Employee]r   z#typing.Union[typing.List[int], int]z)typing.Union[list[int], dict[str, float]]ztyping.Union[int, float]ztyping.Optional[str]z typing.Union[NoneType, str, int])r   r   r   r|   r   rj   r   r   r  r  rX  r  r   )rZ   r  r   s      r_   r   zUnionTests.test_repr  s   en555(C- a"BX"MNNN#x- a"BX"MNNNCLL!S&M#a$s)),,,$s)S.!a"GHHH$s)T#u*--.a"MNNN#+a"<===$)a"8999#t)a"8999$S.!a"DEEESMa"899999ra   c                     t          t          t          t          t          f                             }dD ]F}|                     |          5  |                     ||           d d d            n# 1 swxY w Y   Gd S r  )r  r   r   rX  r   rw   r!  r"  s      r_   r$  zUnionTests.test_dir  s    E#s(O,,--	
 	8 	8M M:: 8 8mY7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8	8 	8s   A11A5	8A5	c                    |                      t                    5   G d dt                    }d d d            n# 1 swxY w Y   |                      t                    5   G d dt          t                              }d d d            n# 1 swxY w Y   |                      t                    5   G d dt          t          t
          f                   }d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS *UnionTests.test_cannot_subclass.<locals>.CNr}   rm   ra   r_   r  rA    r   ra   r  c                       e Zd ZdS r@  r}   rm   ra   r_   r  z*UnionTests.test_cannot_subclass.<locals>.C  r   ra   c                       e Zd ZdS r@  r}   rm   ra   r_   r  z*UnionTests.test_cannot_subclass.<locals>.C  r   ra   )r   r   r   r   r   rX  r  s     r_   r   zUnionTests.test_cannot_subclass  s   y)) 	 	    E   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	    DKK   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	    E#s(O   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s1   ;?? !BBB2&C%%C),C)c                 `   |                      t                    5  t                       d d d            n# 1 swxY w Y   |                      t                    5   t          t                                 d d d            n# 1 swxY w Y   t          t          t
          f         }|                      t                    5   |             d d d            n# 1 swxY w Y   |                      t                    5   t          |                       d d d            d S # 1 swxY w Y   d S re   )r   r   r   r   r   r  r(  s     r_   r   z"UnionTests.test_cannot_instantiate  s   y)) 	 	GGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	DKKMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	#u*y)) 	 	ACCC	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	DGGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sB   6::BBBCC C>D##D'*D'c                 v   |                      t          t          t          j        t
                   f         t          k               |                      t          t          t          j        t
                   f         t          j        t
                   k               |                     t          t          t          t          j        t
                   f         j                   |                     t          j        t
                   t          t          t          j        t
                   f         j                   d S re   )r   r   rX  rN   Iterabler   r!  rf  r   s    r_   test_union_generalizationz$UnionTests.test_union_generalization  s    sFOC$889S@AAAsFOC$889V_S=QQRRRc5foc&:!:;DEEEfoc*E#vs7K2K,L,UVVVVVra   c                    |                      t          t                     |                      t          t                     |                      t          t                     |                      t
          t                     |                      d gt
                     |                      t
          t          j                   |                      t
          t          j                 t                     d S re   )	r   r   r,  r   r$   r   rN   Mappingr!   r   s    r_   test_union_compare_otherz#UnionTests.test_union_compare_other  s    E6***E3'''He,,,He,,,TFH---Hfn555HV%:;UCCCCCra   c                 ~    t           t                   }t          t          d f         }|                     ||           d S re   )r   r   r   r   )rZ   r  r  s      r_   test_optionalzUnionTests.test_optional  s5    SM#t)Ara   c                     |                      t                    5  t          d          d d d            d S # 1 swxY w Y   d S Nrm   )r   r   r   r   s    r_   
test_emptyzUnionTests.test_empty  s    y)) 	 	"II	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   6::c                     t           t          t          f         }d|fd}|                     t	          |          d         |           d S )Nrl  c                     d S re   rm   rl  s    r_   rh   z(UnionTests.test_no_eval_union.<locals>.f  r   ra   )r   r   rX  r   r+   )rZ   r  rh   s      r_   test_no_eval_unionzUnionTests.test_no_eval_union  sG    #s(OnQ'',a00000ra   c                     dt           fd}|                     t          t          |t           f                   d           d S )Nr   c                      d S re   rm   rm   ra   r_   funz0UnionTests.test_function_repr_union.<locals>.fun  r   ra   ztyping.Union[fun, int])r   r   r   r   )rZ   rW  s     r_   test_function_repr_unionz#UnionTests.test_function_repr_union  s@    SeCHo..0HIIIIIra   c                 <    t           t          t          f         }| d S re   )r   rX  r=   r   s     r_   test_union_str_patternz!UnionTests.test_union_str_pattern  s    #w,	ra   c                 n    ddl m t          t          f          fd}t          |t          f          d S )Nr   )Elementc                       |  S re   rm   )r   r\  s    r_   Elemz#UnionTests.test_etree.<locals>.Elem  s    7D>!ra   )xml.etree.ElementTreer\  r   rX  )rZ   r^  r\  s     @r_   
test_etreezUnionTests.test_etree
  sV     	211111gsl	" 	" 	" 	" 	" 	dCira   c                    |                      t          t          d         t          d         f         j        t          d         t          d         f           |                      t          t          d         t          d         f         t          d                    |                      t          t          d         t          d         f         j        t          d         t          d         f           |                      t          t          d         t          d         f         j        t          d         t          d         f           dd l} G d d|j                  }|                      t          t          |j                 t          |j                 f         t          |j                            |                      t          t          |j                 t          |j                 f         t          |j                            |                      t          t          |j                 t          |j                 f         j        t          |j                 t          |j                 f           |                      t          t          d         t          |j                 t          d         f         j        t          d         t          |j                 t          d         f           |                      t          t          d         t          |j                 t          d         f         j        t          d         t          |j                 t          d         f           d S )Nrp   r   Fr   Tc                       e Zd ZdZdZdS )/UnionTests.test_union_of_literals.<locals>.Intsr   rp   Nrj   rk   rl   r   rS  rm   ra   r_   Intsrc  "          AAAAra   re  )r   r   r   rf  enumIntEnumr   rS  )rZ   rg  re  s      r_   test_union_of_literalsz!UnionTests.test_union_of_literals  s   wqz71:56?!!*gaj1	3 	3 	3wqz71:56 	% 	% 	% 	wu~wqz9:C!%.'!*5	7 	7 	7wt}gaj89B!$-4	6 	6 	6 		 	 	 	 	4< 	 	 	 	wtv?@ 	* 	* 	*wtv?@ 	* 	* 	* 	wtv?@I!$&/746?;	= 	= 	= 	wqz746?GENJKT!!*gdfowu~F	H 	H 	Hwqz746?GDMIJS!!*gdfowt}E	G 	G 	G 	G 	Gra   N)rj   rk   rl   r  r*  r0  r2  r4  r6  r8  r;  r   r$  r   r   rG  rJ  rL  rO  rT  rX  rZ  r`  ri  rm   ra   r_   r&  r&  w  s]       & & &- - -	% 	% 	%( ( (! ! !
# # #+ + +9 9 9
: : :28 8 8	 	 		 	 	W W WD D D  
  1 1 1
J J J
 
 


 
 
G G G G Gra   r&  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )
TupleTestsc                    |                      t                    5  t          t          t          t          t
          f                    d d d            n# 1 swxY w Y   |                      t                    5  t          t          t          t          t
          f                    d d d            n# 1 swxY w Y    G d dt                    }|                     t          t                     |                     |t                     d S )Nc                       e Zd ZdS )"TupleTests.test_basics.<locals>.TPNr}   rm   ra   r_   TPrn  <  r   ra   ro  )r   r   rW   r   r   rX  r  r`   )rZ   ro  s     r_   r  zTupleTests.test_basics6  sR   y)) 	/ 	/ueCHo...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/y)) 	/ 	/ueCHo...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	eU+++b%(((((s#   -AAA9-B22B69B6c                    |                      t          t                   t          t                              |                      t          t          df         t          t          df                    |                     t          t                   t          t          t          f                    |                     t          t                   t          t          df                    d S N.)r   r   r   r   r   s    r_   r   zTupleTests.test_equality@  s    sU3Z000sCx%S/:::E#Jc3h888E#Jc3h88888ra   c                      G d dt                     }|                     |t                     |                     t          t                     |                     t           t                     d S )Nc                       e Zd ZdS )/TupleTests.test_tuple_subclass.<locals>.MyTupleNr}   rm   ra   r_   MyTuplert  G          Dra   ru  )r  r`   r   )rZ   ru  s     r_   test_tuple_subclasszTupleTests.test_tuple_subclassF  st    	 	 	 	 	e 	 	 	gu---eU+++eU+++++ra   c                     |                      t                    5  t          dt          t          t          f                    d d d            n# 1 swxY w Y   |                     dt                     d S )N)r   r   )r   r   r   r   r   r   r   s    r_   test_tuple_instance_type_errorz)TupleTests.test_tuple_instance_type_errorM  s    y)) 	0 	0vuS#X///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0fe,,,,,s   (AAAc                    |                      t          t                    d           |                      t          t          d                   d           |                      t          t          t          t          f                   d           |                      t          t          t          df                   d           |                      t          t          t
          t                                      d           d S )Nztyping.Tuplerm   ztyping.Tuple[()]ztyping.Tuple[int, float].ztyping.Tuple[int, ...]ztyping.Tuple[list[int]])r   r   r   r   r  r  r   s    r_   r   zTupleTests.test_reprR  s    en555eBi*<===eCJ/002LMMMeCHo..0HIIIeDI.//1JKKKKKra   c                 :   |                      t                    5  t          dt                     d d d            n# 1 swxY w Y   |                      t                    5  t          dt          t                              d d d            d S # 1 swxY w Y   d S r   )r   r   rW   r   r   r   s    r_   r   zTupleTests.test_errorsY  s   y)) 	" 	"r5!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"y)) 	' 	'r5:&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's!   =AA"!BBBN)	rj   rk   rl   r  r   rw  ry  r   r   rm   ra   r_   rk  rk  4  sq        ) ) )9 9 9, , ,- - -
L L L' ' ' ' 'ra   rk  c                       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d Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )BaseCallableTestsc                 >   | j         }|                     t                    5  t          t          j        |t          gt          f                    d d d            n# 1 swxY w Y   |                     t          j        |           |                     ||           d S re   )r"   r   r   rW   typesFunctionTyper   r`   rZ   r"   s     r_   test_self_subclassz$BaseCallableTests.test_self_subclassb  s    =y)) 	A 	Au)8SE3J+?@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	Ae0(;;;h11111s   .AA #A c                    | j         }|t          gt          f         }|                     ||t          gt          f                    |                     t          ||t          gt          f         h          d           |                     ||t          gt
          f                    |                     ||t
          gt          f                    |                     ||t          t          gt          f                    |                     ||g t          f                    |                     ||dt          f                    |                     ||           d S )Nrp   .)r"   r   r   r   r   rX  )rZ   r"   r  s      r_   test_eq_hashzBaseCallableTests.test_eq_hashi  s'   =cUCZ HcUCZ0111a3%*!5677;;;Axs
3444Axs
3444Axc
C8999AxC0111AxS1222Ax(((((ra   c                     | j         }t          t          |dt          f                             }dD ]F}|                     |          5  |                     ||           d d d            n# 1 swxY w Y   Gd S )N.r  r  )r"   r  r   r   rw   r!  )rZ   r"   r#  r  s       r_   r$  zBaseCallableTests.test_diru  s    =HS#X.//00	
 	8 	8M M:: 8 8mY7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8	8 	8s   A..A2	5A2	c                 T   | j         }|                     t                    5   |             d d d            n# 1 swxY w Y   |                     t                    5   t          |                       d d d            n# 1 swxY w Y   |t          gt
          f         }|                     t                    5   |             d d d            n# 1 swxY w Y   |                     t                    5   t          |                       d d d            d S # 1 swxY w Y   d S re   )r"   r   r   r   r   rX  )rZ   r"   r  s      r_   r   z)BaseCallableTests.test_cannot_instantiate~  s   =y)) 	 	HJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	DNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	cUCZ y)) 	 	ACCC	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	DGGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sC   9= =BB	B<CCC8DD!$D!c                     | j         }|                     t                    5  |t                    d d d            d S # 1 swxY w Y   d S re   )r"   r   r   r   r  s     r_   test_callable_wrong_formsz+BaseCallableTests.test_callable_wrong_forms  s    =y)) 	 	SMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   =AAc                 r    | j         }d }|                     ||           |                     d |           d S )Nc                      d S re   rm   rm   ra   r_   rh   z9BaseCallableTests.test_callable_instance_works.<locals>.f      Dra   )r"   r   r   rZ   r"   rh   s      r_   test_callable_instance_worksz.BaseCallableTests.test_callable_instance_works  sJ    =	 	 	a***  x00000ra   c                    | j         }d }|                     t                    5  |                     ||g d f                    d d d            n# 1 swxY w Y   |                     t                    5  |                     ||g t          f                    d d d            n# 1 swxY w Y   |                     t                    5  |                     d |g d f                    d d d            n# 1 swxY w Y   |                     t                    5  |                     d |g t          f                    d d d            d S # 1 swxY w Y   d S )Nc                      d S re   rm   rm   ra   r_   rh   z>BaseCallableTests.test_callable_instance_type_error.<locals>.f  r  ra   )r"   r   r   r   r   r   r  s      r_   !test_callable_instance_type_errorz3BaseCallableTests.test_callable_instance_type_error  sG   =	 	 	y)) 	9 	9!!!Xb$h%7888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9y)) 	8 	8!!!Xb#g%6777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8y)) 	? 	?$$T8BH+=>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?y)) 	> 	>$$T8BG+<===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>sG   AAA5$B%%B),B)
C55C9<C9$EEEc                    | j         }|j         d}|g t          f         }|                     t	          |          | d           |t
          t          gt          f         }|                     t	          |          | d           |dt
          f         }|                     t	          |          | d           |t
          t          gt          t                   f         }|                     t	          |          | d           d S )N	.Callablez
[[], bool]z[[str, float], int].z
[..., str]z[[str, float], list[int]])	r"   rk   r  r   r   rX  r  r   r  )rZ   r"   fullnamect0ct2ctvct3s          r_   r   zBaseCallableTests.test_repr  s    =)444r4x cx$;$;$;<<<U|S()cx$D$D$DEEEsCx cx$;$;$;<<<U|T#Y./cx$J$J$JKKKKKra   c                     | j         }d|dt          f         fd}|                     t          |t	                      t                                d|dt          f         i           d S )Nr   .c                     d S re   rm   r   s    r_   fooz:BaseCallableTests.test_callable_with_ellipsis.<locals>.foo  r  ra   )r"   r   r   r+   globalslocals)rZ   r"   r  s      r_   test_callable_with_ellipsisz-BaseCallableTests.test_callable_with_ellipsis  sx    =	8CF# 	 	 	 	 	WYYAAxQ/0	2 	2 	2 	2 	2ra   c                 R    | j         }t          j        |dt          f                   d S rq  )r"   rN   r   rX  r  s     r_   test_ellipsis_in_genericz*BaseCallableTests.test_ellipsis_in_generic  s%    =HS#X&''''ra   c                     | j         }|                     |t          z  t          |t          f                    |                     t          |z  t          t          |f                    d S re   )r"   r   r   r   r  s     r_   test_or_and_rorz!BaseCallableTests.test_or_and_ror  sW    =E)55+ABBB)5+ABBBBBra   c                    | j         }|t          t          gt          f         }|t          j        j         u r |                     |t          j                   | 	                    |j
        t          j        j                    |                     |j        t          t          t          f           |                     |j        d           d S rN  )r"   r   rX  r  collectionsabcr   r  GenericAliasr   rh  r   rf  rg  rZ   r"   r  s      r_   
test_basiczBaseCallableTests.test_basic  s    =#sU*+{///!!%);<<<e&(@AAA#sE):;;;-r22222ra   c                     | j         }|t          t          gt          f         }|                      t          j        |                      |           d S re   )r"   r   rX  r  r   weakrefrefr  s      r_   test_weakrefzBaseCallableTests.test_weakref  sK    =#sU*++U++--u55555ra   c                 J   | j         }t          d          at          d          at          d          a|t          t          gt          f         |t          t          f         |t          t          f         |t          t          t          f         t          f         |t          g t          t          R          t          f         g}|D ]}t          t          j        dz             D ]}|                     ||          5  t          j        ||          }t          j        |          }|                     |j        |j                   |                     |j        |j                   |                     |j        |j                   d d d            n# 1 swxY w Y   bbbd S )NT_pickleP_pickle	TS_picklerp   )r  rs   )r"   r   r  rD   r  r   r  r   rX  r  rE   rt   ru   rv   rw   r  r  r   rh  rf  rg  )rZ   r"   samplesr  rs   r  loadeds          r_   test_picklezBaseCallableTests.test_pickle  s   =:&&Z(( --	 c3Z&'Xs]#Xx'([h/45[!5)!5X!5!56;<
  	R 	REv6:;; R R\\U\;; R RUE22A#\!__F$$U%5v7HIII$$U^V_EEE$$U%96;PQQQR R R R R R R R R R R R R R RR h			s   =B
FFFc                    | j         }|j         d}|t          t          gt          f         }|t          t          gt
          f         }|dt          f         }|                     |t                   |t          t          gt          f                    |                     |d          |t          t          d           gt          d           f                    |                     |t          t          t          f         |t          t          gt          f                    |                     |t                   |dt          f                    |                     |t                   |dt          f                    |t          t
          t          f         }|                     t          |          | d           |                     t          |t                             | d           |                     |t                   |t          t          gt          f                    |t          j        t                   t          t          t          f         t
          gt          f         }|                     |t          t          t          f         |t          j        t                   t          t          t          f         t          gt          f                    d S )Nr  .z[[int, ~VT], str]z[[int, dict], str])r"   rk   r   r   r   r   r   rX  r   r  r   r   r  rN   r   r  )rZ   r"   r  C1C2C3C4C5s           r_   r  z'BaseCallableTests.test_var_substitution  s"   =)444sAhk"r1grk"c1fC(C:s?";<<<D8S$t**,=tDzz,I#JKKKCO,hU|S7H.IJJJC(38"4555HxX'>??? Rbh#A#A#ABBBbhH)H)H)HIIID8S$K,<#=>>> v{1~uRU|R8#=>CeO,!6;s#3U38_e"Lc"QR	T 	T 	T 	T 	Tra   c                     | j         }t          d          }t          d          }d}|                     t          |          5  |||f         dt
          f          d d d            d S # 1 swxY w Y   d S )Nr  r   zAExpected a list of types, an ellipsis, ParamSpec, or Concatenate.r   )r"   rD   r   r   r   r   )rZ   r"   r  r   pats        r_   test_type_subst_errorz'BaseCallableTests.test_type_subst_error   s    =cNNCLLQ##Is33 	# 	#QTN1c6""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   A((A,/A,c                    | j         } G d d|          }|t          gt          f         }|                      |            j        |           |                      |            j        |t          gt          f                    d S )Nc                       e Zd Zd ZdS )/BaseCallableTests.test_type_erasure.<locals>.C1c                     d S re   rm   r   s    r_   __call__z8BaseCallableTests.test_type_erasure.<locals>.C1.__call__      tra   Nrj   rk   rl   r  rm   ra   r_   r  r    s#            ra   r  )r"   r   r   r   	__class__r   __orig_class__)rZ   r"   r  r   s       r_   test_type_erasurez#BaseCallableTests.test_type_erasure
  s    =	 	 	 	 	 	 	 	 uaxLaaccmR(((+Rq\:::::ra   c                    | j         }|j         d}t          d          }t          d          }||t          f         }|                     |t
          gt          f         |t
          gt          f                    |                     |t
          t          gt          f         |t
          t          gt          f                    |                     |g t          f         |g t          f                    |                     |dt          f         |dt          f                    |                     ||t          f         ||t          f                    |                     |t          t
          |f         t          f         |t          t
          |f         t          f                    |                     t          |          | d           |                     t          |t
          t          gt          f                   | d           | 	                    t                    5  |t
          t          f          d d d            n# 1 swxY w Y   ||t
          f         }|                     |t
          g         |t
          gt
          f                    |                     |t
          t          g         |t
          t          gt
          f                    |                     |g          |g t
          f                    |                     |d         |dt
          f                    |                     ||         ||t
          f                    |                     |t          t
          |f                  |t          t
          |f         t
          f                    |                     |t
                   |t
          gt
          f                    |                     |t
          t          f         |t
          t          gt
          f                    |                     t          |          | d           |                     t          |t
          t          f                   | d           d S )	Nr  r  P2.z[~P, ~T]z[[int, str], str]z	[~P, int]z[[int, str], int])r"   rk   rD   r   r   r   rX  rE   r   r   r   )rZ   r"   r  r  r  r  r  s          r_   test_paramspecz BaseCallableTests.test_paramspec  s   =)444cNNt__ad^SE3J3%*)=>>>S#JO,hSz3.GHHHBGhr3w&7888CHxS'9:::BGhr3w&7888KR0#56!+c2g"6";<	> 	> 	>bh#8#8#8999b#sS122x4R4R4RSSSy)) 	 	sCxLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 afSEHcUCZ$8999S#J3*c/)BCCCB"c'!2333C(38"4555B"c'!2333KR01!+c2g"6";<	> 	> 	> 	C(C5#:"6777CHxc
C'@AAAbh#9#9#9:::bcl++-K-K-KLLLLLs   &IIIc                 d   | j         }|j         d}t          d          }t          d          }t          d          }|t          t
          |f         |f         }|                     t          |          | d           |                     ||t
          f         |t          t
          |f         t
          f                    |                     |t          t          gt
          f         |t
          t          t          gt
          f                    |                     |g t
          f         |t
          gt
          f                    |                     |t          t          |f         t
          f         |t          t
          t          |f         t
          f                    |                     |dt
          f         |t          t
          df         t
          f                    |t          t
          |f         t
          f         }|                     t          |          | d           |                     ||         |t          t
          |f         t
          f                    |                     |t          t          g         |t
          t          t          gt
          f                    |                     |t          t          f         |t
          t          t          gt
          f                    |                     |g          |t
          gt
          f                    |                     |t          t          |f                  |t          t
          t          |f         t
          f                    |                     |d         |t          t
          df         t
          f                    d S )Nr  r   r  r  z![typing.Concatenate[int, ~P], ~T].z"[typing.Concatenate[int, ~P], int])
r"   rk   r   rD   rE   r   r   r   rX  r  )rZ   r"   r  r   r  r  r  s          r_   test_concatenatez"BaseCallableTests.test_concatenate5  s   =)444CLLcNNt__[a(!+,a$GGG	I 	I 	I2s7Xk#r'.BC.G%HIIIC<,-xc58I38N/OPPP2s7XseSj%9:::;sBw/45!+c3l";S"@A	C 	C 	C38h{38/Dc/I&JKKK[a(#-.a$HHH	J 	J 	J2S"W)=s)B CDDDC<(Ce3Dc3I*JKKK3:#sE1BC1G(HIII2# 4555;sBw/0!+c3l";S"@A	C 	C 	C3+c3h*?*D!EFFFFFra   c           	      	   | j         }t          d          }t          d          }t          d          }t          d          }t          d          } G d dt          ||f                   }|                     |j        ||f           |t          |g|||f         f         }|                     |j        t          |f|||f         f           |                     |j        ||f           |                     |t          t          t                   t          gf         |t          t          g|t          t                   t          gt          f         f                    |||gt          f         t          |         gt          f         }	|                     |	j        ||gt          f         t          |         ft          f           |                     |	j        |f           |                     |	t          t                            ||t          t                   gt          f         t          t          t                            gt          f                    ||||f         |g|f         }
|                     |
j        |||f         |f|f           |                     |
j        ||f           |                     |
g t          f         ||g t          f         t          gt          f                    |                     |
t          t          gt          f         ||t          t          gt          f         t          gt          f                    |                     |
t          t          g|f         t                   ||t          t          gt          f         t          gt          f                    ||t          g|t          |f         |g|f         }|                     |j        |t          g|t          |f         |f|f           |                     |j        ||f           |                     |t          t          t          f         ||t          t          t          t          gt          f         t          gt          f                    d S )Nr  r  r   r  r  c                       e Zd ZdS )3BaseCallableTests.test_nested_paramspec.<locals>.MyNr}   rm   ra   r_   Myr  Y  rv  ra   r  )r"   rD   r   r   r#   r   rg  r   rf  rX  r  rp  r  r  )rZ   r"   r  r  r   r  r  r  r  r  r  r  s               r_   test_nested_paramspecz'BaseCallableTests.test_nested_paramspecP  s!    =cNNt__CLLT]]$	 	 	 	 	A 	 	 	 	*QF333b	8BF++,Ry(2r62B&CDDD*RH555C$s)U!334S#J$s)U1CS1H(IIJ	L 	L 	L 2$)$d2h/45"s(;T"X'F&LMMM*RE222DIXtCyk3&67d3iI3NO	Q 	Q 	Q "b&!2&*+R(8"'=r&BCCC*RH555BGXb#g.4c9:	< 	< 	<S$K,-XsDk3&67=sBC	E 	E 	ES$KN+C0XsDk3&67=sBC	E 	E 	E 3//S/2-.3R78#C"1D(Er'JB&OPPP*RH555D%./XsD%&=u&DEuMuTU	W 	W 	W 	W 	Wra   c                 "   | j         }|t          t          gt          f         }|                     t
          d          5  |t                    d d d            n# 1 swxY w Y   t          d          }||t          f         }|                     t
          d          5  |t          t          t          f          d d d            n# 1 swxY w Y   |                     t
          d          5  |t                    d d d            d S # 1 swxY w Y   d S )Nzis not a generic classr  many arguments forfew arguments for)r"   r   rX  r  r   r   rD   r   )rZ   r"   r  r  r  s        r_   r   zBaseCallableTests.test_errorsz  s   =#sU*+##I/GHH 	 	#JJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	cNNad^##I/CDD 	 	sC}	 	 	 	 	 	 	 	 	 	 	 	 	 	 	##I/BCC 	 	sGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   AAACC
C)DDDN)rj   rk   rl   r  r  r$  r   r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r   rm   ra   r_   r}  r}  `  sc       2 2 2
) 
) 
)8 8 8
 
 
  
1 1 1> > >
L 
L 
L2 2 2( ( (
C C C
3 3 36 6 6
* * *2T T T0# # #; ; ; M  M  MDG G G6(W (W (WT
 
 
 
 
ra   r}  c                   "    e Zd Zej        Zd ZdS )TypingCallableTestsc                 X   t           j        t          t          gt          f         }t
          j        j        t          t          gt          f         }|                     |j        |j                   |                     t          |j                  t          |j                             d S re   )
rN   r"   r   rX  r  r  r  r   rf  hash)rZ   c1c2s      r_   test_consistencyz$TypingCallableTests.test_consistency  s{     _c3Z-._%sCj$&67bk222bk**D,=,=>>>>>ra   N)rj   rk   rl   rN   r"   r  rm   ra   r_   r  r    s*        H? ? ? ? ?ra   r  c                   &    e Zd Zej        j        ZdS )CollectionsCallableTestsN)rj   rk   rl   r  r  r"   rm   ra   r_   r  r    s        'HHHra   r  c                   h    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d Zd Zd Zd ZdS )LiteralTestsc                    t           d          t           d          t           d          t           d           t           d          t           d          t           t           d         t           d         f          t           d          d S )	Nrp   rp   r      )rl  yzT)rp   2Frp   r         )s   foor  )r   r   s    r_   r  zLiteralTests.test_basics  sg    

wt},--ra   c                     dd l } G d d|j                  }|                     t          |j                 j        |j        f           d S )Nr   c                       e Zd ZdZdS )"LiteralTests.test_enum.<locals>.Myr   N)rj   rk   rl   r   rm   ra   r_   r  r    s        AAAra   r  )rg  Enumr   r   r   rf  )rZ   rg  r  s      r_   	test_enumzLiteralTests.test_enum  sb    	 	 	 	 	 	 	 	 	/"$99999ra   c                     t           t                    t           d          t           ddd          t           t                    d S )N)y       @      @.rm   r  r  r  r  )r   r   r   r   s    r_   3test_illegal_parameters_do_not_raise_runtime_errorsz@LiteralTests.test_illegal_parameters_do_not_raise_runtime_errors  s8     	  !$$%%



ra   c                 f    t           t          d                   t           t          d                   d S )Nr  )r  r  baz)r   r   r   s    r_    test_literals_inside_other_typesz-LiteralTests.test_literals_inside_other_types  s)    WWW*+,,,,ra   c                 ,   |                      t          t          d                   d           |                      t          t          d                   d           |                      t          t          t                             d           |                      t          t                    d           |                      t          t          d                    d           |                      t          t          d                   d	           d S )
Nrp   ztyping.Literal[1])rp   Tr  ztyping.Literal[1, True, 'foo']ztyping.Literal[int]ztyping.Literalztyping.Literal[None]rp   r   r  r  ztyping.Literal[1, 2, 3])r   r   r   r   r   s    r_   r   zLiteralTests.test_repr  s    gaj))+>???gn5668XYYYgcl++-BCCCg(8999gdm,,.DEEEgj1224MNNNNNra   c                     t          t          t          d                             }dD ]F}|                     |          5  |                     ||           d d d            n# 1 swxY w Y   Gd S )Nr  r  r  )r  r   r   rw   r!  r"  s      r_   r$  zLiteralTests.test_dir  s    GG,--..	
 	8 	8M M:: 8 8mY7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8	8 	8s   A%%A)	,A)	c                 X   |                      t                    5  t                       d d d            n# 1 swxY w Y   |                      t                    5  t          d                      d d d            n# 1 swxY w Y   |                      t                    5   t          t                                 d d d            n# 1 swxY w Y   |                      t                    5   t          t          d                                d d d            d S # 1 swxY w Y   d S r"  )r   r   r   r   r   s    r_   r   zLiteralTests.test_cannot_init  s   y)) 	 	III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	AJLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	DMMOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sB   6::A<<B B !C

CC/#DD#&D#c                    |                      t                    5  t          dt          d                    d d d            n# 1 swxY w Y   |                      t                    5  t          t          t          d                    d d d            n# 1 swxY w Y   |                      t                    5  t          dt          d                    d d d            n# 1 swxY w Y   |                      t                    5  t          t          t          d                    d d d            d S # 1 swxY w Y   d S r"  )r   r   r   r   r   rW   r   s    r_    test_no_isinstance_or_issubclassz-LiteralTests.test_no_isinstance_or_issubclass  s   y)) 	& 	&q'!*%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&y)) 	( 	(sGAJ'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(y)) 	& 	&q'!*%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&y)) 	( 	(sGAJ'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(sG   AA
A(!BBB:C""C&)C&!D55D9<D9c                 (   |                      t                    5   G d dt          d                   }d d d            n# 1 swxY w Y   |                      t                    5   G d dt                    }d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS )-LiteralTests.test_no_subclassing.<locals>.FooNr}   rm   ra   r_   r  r    r   ra   r  rp   c                       e Zd ZdS )-LiteralTests.test_no_subclassing.<locals>.BarNr}   rm   ra   r_   Barr    r   ra   r  r   r   r   )rZ   r  r  s      r_   test_no_subclassingz LiteralTests.test_no_subclassing  s   y)) 	( 	('''''gaj'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(y)) 	% 	%$$$$$g$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s#   AAA&BBBc                     |                      t                    5  t          d         d          d d d            d S # 1 swxY w Y   d S r"  r   r   s    r_   test_no_multiple_subscriptsz(LiteralTests.test_no_multiple_subscripts  s    y)) 	 	AJqMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  c                    |                      t          d         t          d                    |                      t          d         t          d                    |                      t          d         t          d                    |                      t          d         t          d                    |                      t          d         t          d                    |                      t          d         t          d	                    |                     t          d         t          d                    |                     t          d         t          d
                    |                     t          d         t          d                    d S )Nr   FTrp   r   )rp   T)rp   rp   r  Tr   r   rp   r  r  )r   r   r   r   s    r_   
test_equalzLiteralTests.test_equal  s   GAJ777GDM71:666GAJ
333GG,gaj999GG,gdm<<<GDM77+;<<<WQZ000666)7:+>?????ra   c                    |                      t          t          d                   t          t          d                              |                      t          t          d                   t          t          d                              |                      t          t          d                   t          t          d                              d S )Nrp   r  r  r  r  )r   r  r   r   s    r_   	test_hashzLiteralTests.test_hash  s    gaj))4
+;+;<<<gdm,,d74=.A.ABBBgg.//gj6I1J1JKKKKKra   c                 p   |                      t          d         j        d           |                      t          d         j        d           |                      t          dt          d         t          d         f         j        d           |                      t          g g f         j        g g f           d S )Nr  r  rp   r   )r  r  )rp   r   r  r  )r   r   rf  r   s    r_   	test_argszLiteralTests.test_args  s    )2I>>>,5yAAAGAJ!=>GVVVR1B8<<<<<ra   c                 T   t           t           d         t           d         t           d         f         }t           t           d         df         }t           t           d                  }|||fD ]>}|                     |t           d                    |                     |j        d           ?d S )Nrp   r   r  r  r  )r   r   rf  )rZ   l1l2l3r  s        r_   test_flattenzLiteralTests.test_flatten  s    WQZWQZ78WT]A%&WW%&R 	4 	4AQ 0111QZ3333	4 	4ra   c                    dd l } G d d|j                  }t          t          |j                 t          |j                 t          d         t          d         f         }|                     |j        |j        |j        ddf           d S )Nr   c                       e Zd ZdZdZdS )5LiteralTests.test_does_not_flatten_enum.<locals>.Intsrp   r   Nrd  rm   ra   r_   re  r  	  rf  ra   re  rp   r   )rg  rh  r   r   rS  r   rf  )rZ   rg  re  r  s       r_   test_does_not_flatten_enumz'LiteralTests.test_does_not_flatten_enum	  s    	 	 	 	 	4< 	 	 	 DFODFOAJAJ
 	dfdfa%;<<<<<ra   N)rj   rk   rl   r  r  r  r  r   r$  r   r  r  r  r  r	  r  r  r  rm   ra   r_   r  r    s        	  	  	 : : :  - - -O O O8 8 8  ( ( (% % %  	@ 	@ 	@L L L
= = =4 4 4= = = = =ra   r  XKXVc                   D    e Zd ZdedefdZdedefdZd	dededefdZdS )
SimpleMappingkeyr   c                     d S re   rm   rZ   r  s     r_   __getitem__zSimpleMapping.__getitem__	      ra   r   c                     d S re   rm   rZ   r  r   s      r_   __setitem__zSimpleMapping.__setitem__	  r  ra   Ndefaultc                     d S re   rm   rZ   r  r!  s      r_   getzSimpleMapping.get	  r  ra   re   )rj   rk   rl   r  r  r  r   r$  rm   ra   r_   r  r  	  s        r b    r "     r B "      ra   r  c                   :    e Zd Zd ZdefdZdefdZddefdZdS )MySimpleMappingc                     i | _         d S re   storer   s    r_   __init__zMySimpleMapping.__init__#	  s    


ra   r  c                     | j         |         S re   r(  r  s     r_   r  zMySimpleMapping.__getitem__&	  s    z#ra   c                     || j         |<   d S re   r(  r  s      r_   r   zMySimpleMapping.__setitem__)	  s    
3ra   Nc                 B    	 | j         |         S # t          $ r |cY S w xY wre   )r)  KeyErrorr#  s      r_   r$  zMySimpleMapping.get,	  s7    	:c?" 	 	 	NNN	s    re   )rj   rk   rl   r*  rX  r  r   r$  rm   ra   r_   r&  r&  !	  sy          s     s         s      ra   r&  c                   $    e Zd ZU eed<   eed<   dS )
Coordinaterl  r  Nrj   rk   rl   r   r   rm   ra   r_   r0  r0  3	  "         
FFF
FFFFFra   r0  c                       e Zd ZU eed<   dS )PointlabelNrj   rk   rl   rX  r   rm   ra   r_   r4  r4  7	  s         JJJJJra   r4  c                   .    e Zd ZU eed<   eed<   eed<   dS )MyPointrl  r  r5  Nrj   rk   rl   r   r   rX  rm   ra   r_   r8  r8  ;	  s+         
FFF
FFFJJJJJra   r8  c                       e Zd ZU eed<   dS )XAxisrl  Nr1  rm   ra   r_   r;  r;  @	           
FFFFFra   r;  c                       e Zd ZU eed<   dS )YAxisr  Nr1  rm   ra   r_   r>  r>  C	  r<  ra   r>  c                       e Zd ZdS )PositionNr}   rm   ra   r_   r@  r@  F	  s        Dra   r@  c                   *    e Zd ZU eed<   dedefdZdS )Protoattrr   r   c                     d S re   rm   rZ   r   s     r_   methz
Proto.methM	  r  ra   N)rj   rk   rl   r   r   rX  rF  rm   ra   r_   rB  rB  J	  sA         
III       ra   rB  c                       e Zd ZdS )ConcreteNr}   rm   ra   r_   rH  rH  P	  r~   ra   rH  c                   .    e Zd ZU dZeed<   dedefdZdS )Otherrp   rC  r   r   c                     |dk    rdS dS )Nthisrp   r   rm   rE  s     r_   rF  z
Other.methU	  s    &==1qra   N)rj   rk   rl   rC  r   r   rX  rF  rm   ra   r_   rJ  rJ  S	  sE         D#MMM       ra   rJ  c                   $    e Zd ZU eed<   eed<   dS )NTrl  r  Nr1  rm   ra   r_   rN  rN  Z	  r2  ra   rN  c                   $    e Zd ZU ej        ed<   dS )HasCallProtocolr  N)rj   rk   rl   rN   r"   r   rm   ra   r_   rP  rP  ^	  s          ora   rP  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d 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d 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'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5 Z7d6 Z8d7 Z9d8 Z:d9 Z;d:S );ProtocolTestsc                    t            G d dt                                } G d d          } G d d          }d }|                     ||           |                      |            |           |                     ||           |                      |            |           |                     t          j        |           |                     ||           d S )Nc                       e Zd Zd ZdS ),ProtocolTests.test_basic_protocol.<locals>.Pc                     d S re   rm   r   s    r_   rF  z1ProtocolTests.test_basic_protocol.<locals>.P.methg	      ra   Nrj   rk   rl   rF  rm   ra   r_   r  rU  e	  #            ra   r  c                       e Zd ZdS ),ProtocolTests.test_basic_protocol.<locals>.CNr}   rm   ra   r_   r  r[  j	  r   ra   r  c                       e Zd Zd ZdS ),ProtocolTests.test_basic_protocol.<locals>.Dc                     d S re   rm   r   s    r_   rF  z1ProtocolTests.test_basic_protocol.<locals>.D.methm	  rW  ra   NrX  rm   ra   r_   rT  r]  l	  #            ra   rT  c                      d S re   rm   rm   ra   r_   rh   z,ProtocolTests.test_basic_protocol.<locals>.fp	  r  ra   )r*   r'   r`   r   rc   r   r  r  )rZ   r  r  rT  rh   s        r_   test_basic_protocolz!ProtocolTests.test_basic_protocold	  s   		 	 	 	 	 	 	 
		 		 	 	 	 	 	 	 		 	 	 	a###aacc1%%%  A&&&  a(((  !3Q777  A&&&&&ra   c                 :   t            G d dt                                } G d d          }d }t          t          t          |t
          j        fD ]}|                     ||           t                      ddt          |fD ]}| 	                    ||           d S )Nc                       e Zd ZdS )FProtocolTests.test_everything_implements_empty_protocol.<locals>.EmptyNr}   rm   ra   r_   Emptyrd  {	          Dra   re  c                       e Zd ZdS )BProtocolTests.test_everything_implements_empty_protocol.<locals>.CNr}   rm   ra   r_   r  rh  	  rv  ra   r  c                      d S re   rm   rm   ra   r_   rh   zBProtocolTests.test_everything_implements_empty_protocol.<locals>.f	  r  ra   rp   rm   )
r*   r'   r,  r   r  r  r  r`   rN   r   )rZ   re  r  rh   things        r_   )test_everything_implements_empty_protocolz7ProtocolTests.test_everything_implements_empty_protocolz	  s    		 	 	 	 	H 	 	 
			 	 	 	 	 	 	 		 	 	 dE1e.@A 	0 	0E!!%////hh2vq1 	0 	0E!!%////	0 	0ra   c                 B    d }|                      |t                     d S )Nc                      d S re   rm   rm   ra   r_   rh   z:ProtocolTests.test_function_implements_protocol.<locals>.f	  r  ra   )r   rP  rg   s     r_   !test_function_implements_protocolz/ProtocolTests.test_function_implements_protocol	  s/    	 	 	 	a11111ra   c                     G d d          } G d dt                     }|                     t                    5   G d d|t                     }d d d            n# 1 swxY w Y   |                     t                    5   G d dt           |          }d d d            n# 1 swxY w Y   |                     t                    5   G d d||t                     }d d d            n# 1 swxY w Y    G d	 d
||          } G d d||          }|                      |            |           |                      |            |           d S )Nc                       e Zd ZdS )9ProtocolTests.test_no_inheritance_from_nominal.<locals>.CNr}   rm   ra   r_   r  rq  	  r   ra   r  c                       e Zd ZdS ):ProtocolTests.test_no_inheritance_from_nominal.<locals>.BPNr}   rm   ra   r_   BPrs  	  r   ra   rt  c                       e Zd ZdS 9ProtocolTests.test_no_inheritance_from_nominal.<locals>.PNr}   rm   ra   r_   r  rw  	  r   ra   r  c                       e Zd ZdS rv  r}   rm   ra   r_   r  z9ProtocolTests.test_no_inheritance_from_nominal.<locals>.P	  r   ra   c                       e Zd ZdS rv  r}   rm   ra   r_   r  z9ProtocolTests.test_no_inheritance_from_nominal.<locals>.P	  r   ra   c                       e Zd ZdS )9ProtocolTests.test_no_inheritance_from_nominal.<locals>.DNr}   rm   ra   r_   rT  r{  	  r   ra   rT  c                       e Zd ZdS )9ProtocolTests.test_no_inheritance_from_nominal.<locals>.ENr}   rm   ra   r_   rU  r}  	  r   ra   rU  )r'   r   r   r   )rZ   r  rt  r  rT  rU  s         r_    test_no_inheritance_from_nominalz.ProtocolTests.test_no_inheritance_from_nominal	  sj           y)) 	 	    Ax   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	    Ha   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	    B8   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	A2  a(((  a(((((s5   AA #A B""B&)B&C))C-0C-c                 \    G d dt                     }|                     t                    5   |             d d d            n# 1 swxY w Y    G d d|          }|                      |            |           |                     t                    5   |d           d d d            n# 1 swxY w Y   t	          d          } G d dt           |                   }|                     t                    5   |             d d d            n# 1 swxY w Y   |                     t                    5   |t
                                d d d            n# 1 swxY w Y   |                     t                    5   ||                      d d d            n# 1 swxY w Y    G d	 d
||                   }|                      |t
                               |           |                     t                    5   |t
                   d           d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS ).ProtocolTests.test_no_instantiation.<locals>.PNr}   rm   ra   r_   r  r  	  r   ra   r  c                       e Zd ZdS ).ProtocolTests.test_no_instantiation.<locals>.CNr}   rm   ra   r_   r  r  	  r   ra   r  r   r   c                       e Zd ZdS )/ProtocolTests.test_no_instantiation.<locals>.PGNr}   rm   ra   r_   PGr  	  r   ra   r  c                       e Zd ZdS )/ProtocolTests.test_no_instantiation.<locals>.CGNr}   rm   ra   r_   CGr  	  r   ra   r  )r'   r   r   r   r   r   )rZ   r  r  r   r  r  s         r_   test_no_instantiationz#ProtocolTests.test_no_instantiation	  s   y)) 	 	ACCC	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	aacc1%%%y)) 	 	AbEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 CLL#####!###y)) 	 	BDDD	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	BsGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	BqEGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	Agbgii,,,y)) 	 	BsGBKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sk   AA	A	B..B25B2;DDD7EE E>FF"F=H!!H%(H%c                      G d dt                     } G d d          } |            }|                    |d           |                     |j        d           d S )Nc                   *    e Zd ZU eed<   deddfdZdS )LProtocolTests.test_protocol_defining_init_does_not_get_overridden.<locals>.Prl  r   Nc                     || _         d S re   rS  rZ   rl  s     r_   r*  zUProtocolTests.test_protocol_defining_init_does_not_get_overridden.<locals>.P.__init__	      ra   rj   rk   rl   r   r   r*  rm   ra   r_   r  r  	  A         FFF# $      ra   r  c                       e Zd ZdS )LProtocolTests.test_protocol_defining_init_does_not_get_overridden.<locals>.CNr}   rm   ra   r_   r  r  	  r   ra   r  rp   )r'   r*  r   rl  rZ   r  r  r  s       r_   3test_protocol_defining_init_does_not_get_overriddenzAProtocolTests.test_protocol_defining_init_does_not_get_overridden	  s|    	 	 	 	 	 	 	 	 	ACC	

1aa     ra   c                      G d dt                     } G d d|          } |d          }|                     ||           |                     |j        d           d S )Nc                   *    e Zd ZU eed<   deddfdZdS )JProtocolTests.test_concrete_class_inheriting_init_from_protocol.<locals>.Prl  r   Nc                     || _         d S re   rS  r  s     r_   r*  zSProtocolTests.test_concrete_class_inheriting_init_from_protocol.<locals>.P.__init__	  r  ra   r  rm   ra   r_   r  r  	  r  ra   r  c                       e Zd ZdS )JProtocolTests.test_concrete_class_inheriting_init_from_protocol.<locals>.CNr}   rm   ra   r_   r  r  	  r   ra   r  rp   )r'   r   r   rl  r  s       r_   1test_concrete_class_inheriting_init_from_protocolz?ProtocolTests.test_concrete_class_inheriting_init_from_protocol	  s    	 	 	 	 	 	 	 	
 	AaDDa###a     ra   c                 2   t            G d dt                                } G d d|          } G d d|          }|                     t                    5   |             d d d            n# 1 swxY w Y   |                      |            |           d S )Nc                   4    e Zd Zej        defd            ZdS )9ProtocolTests.test_cannot_instantiate_abstract.<locals>.Pr   c                     t           re   )NotImplementedErrorr   s    r_   amethz?ProtocolTests.test_cannot_instantiate_abstract.<locals>.P.ameth	  s    ))ra   N)rj   rk   rl   r  abstractmethodr   r  rm   ra   r_   r  r  	  s=        *s * * *  * * *ra   r  c                       e Zd ZdS )9ProtocolTests.test_cannot_instantiate_abstract.<locals>.BNr}   rm   ra   r_   rS  r  	  rv  ra   rS  c                       e Zd ZdefdZdS )9ProtocolTests.test_cannot_instantiate_abstract.<locals>.Cr   c                     dS )N   rm   r   s    r_   r  z?ProtocolTests.test_cannot_instantiate_abstract.<locals>.C.ameth	      rra   N)rj   rk   rl   r   r  rm   ra   r_   r  r  	  s/        s      ra   r  )r*   r'   r   r   r   )rZ   r  rS  r  s       r_    test_cannot_instantiate_abstractz.ProtocolTests.test_cannot_instantiate_abstract	  s#   		* 	* 	* 	* 	* 	* 	* 
		*
	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 y)) 	 	ACCC	 	 	 	 	 	 	 	 	 	 	 	 	 	 	aacc1%%%%%s   A..A25A2c                     G d dt                     }t           G d d|t                                 } G d d          } G d d          } G d	 d
          }|                      |            |           |                      |            |           |                     ||           |                     ||           |                      |            |           |                     ||           d S )Nc                       e Zd Zd ZdS )5ProtocolTests.test_subprotocols_extending.<locals>.P1c                     d S re   rm   r   s    r_   meth1z;ProtocolTests.test_subprotocols_extending.<locals>.P1.meth1	  rW  ra   Nrj   rk   rl   r  rm   ra   r_   P1r  	  r_  ra   r  c                       e Zd Zd ZdS )5ProtocolTests.test_subprotocols_extending.<locals>.P2c                     d S re   rm   r   s    r_   meth2z;ProtocolTests.test_subprotocols_extending.<locals>.P2.meth2	  rW  ra   Nrj   rk   rl   r  rm   ra   r_   r  r  	  rY  ra   r  c                       e Zd Zd Zd ZdS )4ProtocolTests.test_subprotocols_extending.<locals>.Cc                     d S re   rm   r   s    r_   r  z:ProtocolTests.test_subprotocols_extending.<locals>.C.meth1	  rW  ra   c                     d S re   rm   r   s    r_   r  z:ProtocolTests.test_subprotocols_extending.<locals>.C.meth2	  rW  ra   Nrj   rk   rl   r  r  rm   ra   r_   r  r  	  2              ra   r  c                       e Zd Zd ZdS )5ProtocolTests.test_subprotocols_extending.<locals>.C1c                     d S re   rm   r   s    r_   r  z;ProtocolTests.test_subprotocols_extending.<locals>.C1.meth1
  rW  ra   Nr  rm   ra   r_   r  r   
  r_  ra   r  c                       e Zd Zd ZdS )5ProtocolTests.test_subprotocols_extending.<locals>.C2c                     d S re   rm   r   s    r_   r  z;ProtocolTests.test_subprotocols_extending.<locals>.C2.meth2
  rW  ra   Nr  rm   ra   r_   r  r  
  r_  ra   r  r'   r*   r   rc   r   r`   )rZ   r  r  r  r  r  s         r_   test_subprotocols_extendingz)ProtocolTests.test_subprotocols_extending	  s{   	 	 	 	 	 	 	 	 
	 	 	 	 	X 	 	 
			 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	  r***  r***  R(((  R(((aacc2&&&a$$$$$ra   c                     G d dt                     } G d dt                     }t           G d d||t                                 } G d d          } G d	 d
          } G d d          }|                      |            |           |                      |            |           |                     ||           |                     ||           |                      |            |           |                     ||           d S )Nc                       e Zd Zd ZdS )3ProtocolTests.test_subprotocols_merging.<locals>.P1c                     d S re   rm   r   s    r_   r  z9ProtocolTests.test_subprotocols_merging.<locals>.P1.meth1
  rW  ra   Nr  rm   ra   r_   r  r  
  r_  ra   r  c                       e Zd Zd ZdS )3ProtocolTests.test_subprotocols_merging.<locals>.P2c                     d S re   rm   r   s    r_   r  z9ProtocolTests.test_subprotocols_merging.<locals>.P2.meth2
  rW  ra   Nr  rm   ra   r_   r  r  
  r_  ra   r  c                       e Zd ZdS )2ProtocolTests.test_subprotocols_merging.<locals>.PNr}   rm   ra   r_   r  r  
  rf  ra   r  c                       e Zd Zd Zd ZdS )2ProtocolTests.test_subprotocols_merging.<locals>.Cc                     d S re   rm   r   s    r_   r  z8ProtocolTests.test_subprotocols_merging.<locals>.C.meth1
  rW  ra   c                     d S re   rm   r   s    r_   r  z8ProtocolTests.test_subprotocols_merging.<locals>.C.meth2 
  rW  ra   Nr  rm   ra   r_   r  r  
  r  ra   r  c                       e Zd Zd ZdS )3ProtocolTests.test_subprotocols_merging.<locals>.C1c                     d S re   rm   r   s    r_   r  z9ProtocolTests.test_subprotocols_merging.<locals>.C1.meth1$
  rW  ra   Nr  rm   ra   r_   r  r  #
  r_  ra   r  c                       e Zd Zd ZdS )3ProtocolTests.test_subprotocols_merging.<locals>.C2c                     d S re   rm   r   s    r_   r  z9ProtocolTests.test_subprotocols_merging.<locals>.C2.meth2(
  rW  ra   Nr  rm   ra   r_   r  r  '
  r_  ra   r  r  )rZ   r  r  r  r  r  r  s          r_   test_subprotocols_mergingz'ProtocolTests.test_subprotocols_merging
  s   	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 
	 	 	 	 	B 	 	 
			 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	  q)))  q)))  Q'''  Q'''aacc1%%%a#####ra   c                    t          d          }t           G d dt                                }t           G d dt          |                               } G d dt                    } G d d	t          |                   } G d
 d          }|                     ||           |                     ||           |                     ||           |                     t
                    5  t          |||                    d d d            n# 1 swxY w Y   |                     t
                    5  t          |||                    d d d            n# 1 swxY w Y   |                     t
                    5  t          ||           d d d            n# 1 swxY w Y   |                     t
                    5  t          ||           d d d            n# 1 swxY w Y   |                     t
                    5  t          |||                    d d d            n# 1 swxY w Y   |                     t
                    5  t          ||t                              d d d            n# 1 swxY w Y   d}|                     t
          |          5  t          d|           d d d            n# 1 swxY w Y   |                     t
          |          5  t          d|           d d d            n# 1 swxY w Y   |                     t
          |          5  t          d|           d d d            n# 1 swxY w Y   |                     t
          |          5  t          d|           d d d            d S # 1 swxY w Y   d S )Nr   c                       e Zd Zd ZdS )2ProtocolTests.test_protocols_issubclass.<locals>.Pc                     d S re   rm   r   s    r_   rl  z4ProtocolTests.test_protocols_issubclass.<locals>.P.x7
  r   ra   Nrj   rk   rl   rl  rm   ra   r_   r  r  5
          ra   r  c                       e Zd Zd ZdS )3ProtocolTests.test_protocols_issubclass.<locals>.PGc                     d S re   rm   r   s    r_   rl  z5ProtocolTests.test_protocols_issubclass.<locals>.PG.x;
  r   ra   Nr  rm   ra   r_   r  r  9
  r  ra   r  c                       e Zd Zd ZdS )5ProtocolTests.test_protocols_issubclass.<locals>.BadPc                     d S re   rm   r   s    r_   rl  z7ProtocolTests.test_protocols_issubclass.<locals>.BadP.x>
  r   ra   Nr  rm   ra   r_   BadPr  =
          ra   r  c                       e Zd Zd ZdS )6ProtocolTests.test_protocols_issubclass.<locals>.BadPGc                     d S re   rm   r   s    r_   rl  z8ProtocolTests.test_protocols_issubclass.<locals>.BadPG.xA
  r   ra   Nr  rm   ra   r_   BadPGr  @
  r  ra   r  c                       e Zd Zd ZdS )2ProtocolTests.test_protocols_issubclass.<locals>.Cc                     d S re   rm   r   s    r_   rl  z4ProtocolTests.test_protocols_issubclass.<locals>.C.xD
  r   ra   Nr  rm   ra   r_   r  r  C
  r  ra   r  z$issubclass\(\) arg 1 must be a classrp   )	r   r*   r'   r`   r   r   rW   r   r   )rZ   r   r  r  r  r  r  only_classes_alloweds           r_   test_protocols_issubclassz'ProtocolTests.test_protocols_issubclass2
  s/   CLL		 	 	 	 	 	 	 
		 
	 	 	 	 	! 	 	 
			 	 	 	 	8 	 	 		 	 	 	 	HQK 	 	 		 	 	 	 	 	 	 	 	a###a$$$dB'''y)) 	! 	!q"Q%   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!y)) 	! 	!q"Q%   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!y)) 	  	 q$	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 y)) 	! 	!q%   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!y)) 	! 	!q"Q%   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!y)) 	$ 	$r2c7###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$  G##I/CDD 	 	q!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	##I/CDD 	 	q"	 	 	 	 	 	 	 	 	 	 	 	 	 	 	##I/CDD 	  	 q$	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 ##I/CDD 	! 	!q%   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   +DDD3EEE;FFF=GG!G?H""H&)H&I//I36I3J44J8;J8K77K;>K;L::L>L> M>>NNc                    t            G d dt                                } G d dt                    } G d dt                    } G d dt                    } G d	 d
t                    } G d dt                    } G d dt                    }||||||fD ]K}|                     |j                  5  |                     ||           d d d            n# 1 swxY w Y   L G d dt                    }	 G d dt                    }
|                     |	|           |                     |
|            G d d          } G d d          } G d d          } G d d          }|                     ||           |                     ||           |                     ||           |                     ||           d S )Nc                       e Zd Zd ZdS )ZProtocolTests.test_implicit_issubclass_between_two_protocols.<locals>.CallableMembersProtoc                     d S re   rm   r   s    r_   rF  z_ProtocolTests.test_implicit_issubclass_between_two_protocols.<locals>.CallableMembersProto.methe
  r   ra   NrX  rm   ra   r_   CallableMembersProtor  c
  s        ra   r  c                       e Zd Zd ZdS )TProtocolTests.test_implicit_issubclass_between_two_protocols.<locals>.IdenticalProtoc                     d S re   rm   r   s    r_   rF  zYProtocolTests.test_implicit_issubclass_between_two_protocols.<locals>.IdenticalProto.methl
  r   ra   NrX  rm   ra   r_   IdenticalProtor  k
  s        ra   r  c                       e Zd Zd Zd ZdS )SProtocolTests.test_implicit_issubclass_between_two_protocols.<locals>.SupersetProtoc                     d S re   rm   r   s    r_   rF  zXProtocolTests.test_implicit_issubclass_between_two_protocols.<locals>.SupersetProto.metho
  r   ra   c                     d S re   rm   r   s    r_   r  zYProtocolTests.test_implicit_issubclass_between_two_protocols.<locals>.SupersetProto.meth2p
  r   ra   N)rj   rk   rl   rF  r  rm   ra   r_   SupersetProtor  n
  s"             ra   r  c                   *    e Zd ZU eg df         ed<   dS )]ProtocolTests.test_implicit_issubclass_between_two_protocols.<locals>.NonCallableMembersProtoNrF  rj   rk   rl   r"   r   rm   ra   r_   NonCallableMembersProtor  r
  '         2t8$$$$$$ra   r  c                   H    e Zd ZU eg df         ed<   eeegef         ed<   dS )eProtocolTests.test_implicit_issubclass_between_two_protocols.<locals>.NonCallableMembersSupersetProtoNrF  r  )rj   rk   rl   r"   r   rX  r   r  rm   ra   r_   NonCallableMembersSupersetProtor  u
  sA         2t8$$$$S#J,------ra   r  c                   0    e Zd ZU eg df         ed<   d ZdS )XProtocolTests.test_implicit_issubclass_between_two_protocols.<locals>.MixedMembersProto1NrF  c                     d S re   rm   r   s    r_   r  z^ProtocolTests.test_implicit_issubclass_between_two_protocols.<locals>.MixedMembersProto1.meth2{
  r   ra   )rj   rk   rl   r"   r   r  rm   ra   r_   MixedMembersProto1r	  y
  0         2t8$$$$     ra   r  c                   4    e Zd ZU d Zeeegef         ed<   dS )XProtocolTests.test_implicit_issubclass_between_two_protocols.<locals>.MixedMembersProto2c                     d S re   rm   r   s    r_   rF  z]ProtocolTests.test_implicit_issubclass_between_two_protocols.<locals>.MixedMembersProto2.meth~
  r   ra   r  N)	rj   rk   rl   rF  r"   rX  r   r  r   rm   ra   r_   MixedMembersProto2r  }
  s5         S#J,------ra   r  rr   c                       e Zd ZdS )SProtocolTests.test_implicit_issubclass_between_two_protocols.<locals>.EmptyProtocolNr}   rm   ra   r_   EmptyProtocolr  
  r   ra   r  c                       e Zd Zd ZdS )WProtocolTests.test_implicit_issubclass_between_two_protocols.<locals>.UnrelatedProtocolc                     d S re   rm   r   s    r_   wutz[ProtocolTests.test_implicit_issubclass_between_two_protocols.<locals>.UnrelatedProtocol.wut
  r   ra   N)rj   rk   rl   r  rm   ra   r_   UnrelatedProtocolr  
  s        ra   r  c                   *    e Zd ZU eg df         ed<   dS )^ProtocolTests.test_implicit_issubclass_between_two_protocols.<locals>.AnnotatedButNotAProtocolNrF  r  rm   ra   r_   AnnotatedButNotAProtocolr  
  r  ra   r  c                       e Zd Zd ZdS )gProtocolTests.test_implicit_issubclass_between_two_protocols.<locals>.NotAProtocolButAnImplicitSubclassc                     d S re   rm   r   s    r_   rF  zlProtocolTests.test_implicit_issubclass_between_two_protocols.<locals>.NotAProtocolButAnImplicitSubclass.meth
  r   ra   NrX  rm   ra   r_   !NotAProtocolButAnImplicitSubclassr  
               ra   r  c                   0    e Zd ZU eg df         ed<   d ZdS )hProtocolTests.test_implicit_issubclass_between_two_protocols.<locals>.NotAProtocolButAnImplicitSubclass2NrF  c                     d S re   rm   r   s    r_   rF  zmProtocolTests.test_implicit_issubclass_between_two_protocols.<locals>.NotAProtocolButAnImplicitSubclass2.meth
  r   ra   )rj   rk   rl   r"   r   rF  rm   ra   r_   "NotAProtocolButAnImplicitSubclass2r"  
  r  ra   r$  c                   T    e Zd ZU eg df         ed<   eeegef         ed<   d Zd ZdS )hProtocolTests.test_implicit_issubclass_between_two_protocols.<locals>.NotAProtocolButAnImplicitSubclass3NrF  r  c                     d S re   rm   r   s    r_   rF  zmProtocolTests.test_implicit_issubclass_between_two_protocols.<locals>.NotAProtocolButAnImplicitSubclass3.meth
  r   ra   c                     dS )NTrm   rZ   rl  r  s      r_   rF  zmProtocolTests.test_implicit_issubclass_between_two_protocols.<locals>.NotAProtocolButAnImplicitSubclass3.meth
  s    ra   )	rj   rk   rl   r"   r   r   rX  r  rF  rm   ra   r_   "NotAProtocolButAnImplicitSubclass3r&  
  sS         2t8$$$$S#J,----   -----ra   r*  )r*   r'   rw   rj   r`   rc   )rZ   r  r  r  r  r  r  r  rs   r  r  r  r  r$  r*  s                  r_   .test_implicit_issubclass_between_two_protocolsz<ProtocolTests.test_implicit_issubclass_between_two_protocolsb
  sn   		  	  	  	  	 8 	  	  
		 	  	  	  	  	 X 	  	  	 	! 	! 	! 	! 	!H 	! 	! 	!	% 	% 	% 	% 	%h 	% 	% 	%	. 	. 	. 	. 	.h 	. 	. 	.	! 	! 	! 	! 	! 	! 	! 	!	. 	. 	. 	. 	. 	. 	. 	.
 M+B+-?AS
 	C 	CE EN33 C C%%e-ABBBC C C C C C C C C C C C C C C 	+****H***	 	 	 	 	 	 	 	 	  0DEEE  !24HIII	% 	% 	% 	% 	% 	% 	% 	%	! 	! 	! 	! 	! 	! 	! 	!	! 	! 	! 	! 	! 	! 	! 	!	. 	. 	. 	. 	. 	. 	. 	. 	  !9;OPPP?AUVVV@BVWWW@BVWWWWWs   8CC	"C	c                 `   |                      t          j                   t          j                     |                     t
          d          5   G d dt          j        j        t                    }d d d            n# 1 swxY w Y   | 
                    g t          j        j                   d S )Nz/Protocols can only inherit from other protocolsc                       e Zd ZdS )CProtocolTests.test_isinstance_checks_not_at_whim_of_gc.<locals>.FooNr}   rm   ra   r_   r  r.  
  r   ra   r  )
addCleanupgcenabledisabler   r   r  r  rI  r'   r   rZ   r  s     r_   (test_isinstance_checks_not_at_whim_of_gcz6ProtocolTests.test_isinstance_checks_not_at_whim_of_gc
  s    	"""

##=
 
 	 	    ko-x   		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  [_%<=====s   $A>>BBc                     G d d          }t            G d dt                                }|                     t                    5  t	          ||           d d d            n# 1 swxY w Y   |                      |            |           |                    |           |                     t                    5  t	          ||           d d d            n# 1 swxY w Y   |                      |            |            G d d|          }|                     ||           |                      |            |           |                    |           | 	                    ||           |                      |            |           |                     t                    5  t	          ||           d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdZdS )?ProtocolTests.test_protocols_issubclass_non_callable.<locals>.Crp   Nr  rm   ra   r_   r  r7  
          AAAra   r  c                       e Zd ZdZdS )FProtocolTests.test_protocols_issubclass_non_callable.<locals>.PNonCallrp   Nr  rm   ra   r_   PNonCallr:  
          AAAra   r;  c                       e Zd ZdS )?ProtocolTests.test_protocols_issubclass_non_callable.<locals>.DNr}   rm   ra   r_   rT  r>  
  r   ra   rT  )
r*   r'   r   r   rW   r   registerrc   r   r`   )rZ   r  r;  rT  s       r_   &test_protocols_issubclass_non_callablez4ProtocolTests.test_protocols_issubclass_non_callable
  s   	 	 	 	 	 	 	 	 
	 	 	 	 	x 	 	 
		 y)) 	$ 	$q(###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$aacc8,,,!y)) 	$ 	$q(###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$aacc8,,, 	  A&&&  a(((	

1a###aacc1%%%y)) 	$ 	$q(###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s6   A%%A),A)=CC!C(GG
G
c                 V   t          d          }t           G d dt                                }t           G d dt          |                               }t           G d dt                                }t           G d d	t                                } G d
 d          t           G fddt                                } G d dt                    } G d dt          |                   } G d d          }	 G d d          }
|	|
fD ]c}|||||fD ]Y}|                     |j        |j                  5  |                      |            |           d d d            n# 1 swxY w Y   Zd|                     t                    5  t           |	            ||                    d d d            n# 1 swxY w Y   |                     t                    5  t           |	            ||	                    d d d            n# 1 swxY w Y   |                     t                    5  t           |	            |           d d d            n# 1 swxY w Y   |                     t                    5  t           |	            |           d d d            d S # 1 swxY w Y   d S )Nr   c                       e Zd Zd ZdS )2ProtocolTests.test_protocols_isinstance.<locals>.Pc                     d S re   rm   rS  s    r_   rF  z7ProtocolTests.test_protocols_isinstance.<locals>.P.meth
  r   ra   NrX  rm   ra   r_   r  rC  
  r  ra   r  c                       e Zd Zd ZdS )3ProtocolTests.test_protocols_isinstance.<locals>.PGc                     d S re   rm   rS  s    r_   rF  z8ProtocolTests.test_protocols_isinstance.<locals>.PG.meth
  r   ra   NrX  rm   ra   r_   r  rF  
  r  ra   r  c                       e Zd Zej        ZdS );ProtocolTests.test_protocols_isinstance.<locals>.WeirdProtoN)rj   rk   rl   rX  	maketransrF  rm   ra   r_   
WeirdProtorI  
  s        =DDDra   rK  c                       e Zd Zd ZdS )<ProtocolTests.test_protocols_isinstance.<locals>.WeirdProto2c                      d S re   rm   r   kwargss     r_   <lambda>zEProtocolTests.test_protocols_isinstance.<locals>.WeirdProto2.<lambda>
  s    4 ra   NrX  rm   ra   r_   WeirdProto2rM  
  s        //DDDra   rR  c                       e Zd Zd ZdS )?ProtocolTests.test_protocols_isinstance.<locals>.CustomCallablec                     d S re   rm   rZ   r   rP  s      r_   r  zHProtocolTests.test_protocols_isinstance.<locals>.CustomCallable.__call__
  rW  ra   Nr  rm   ra   r_   CustomCallablerT  
  r_  ra   rW  c                   $    e Zd Z              ZdS )=ProtocolTests.test_protocols_isinstance.<locals>.WeirderProtoNrX  )rW  s   r_   WeirderProtorY  
  s        !>##DDDra   rZ  c                       e Zd Zd ZdS )5ProtocolTests.test_protocols_isinstance.<locals>.BadPc                     d S re   rm   rS  s    r_   rF  z:ProtocolTests.test_protocols_isinstance.<locals>.BadP.meth
  r   ra   NrX  rm   ra   r_   r  r\  
  r  ra   r  c                       e Zd Zd ZdS )6ProtocolTests.test_protocols_isinstance.<locals>.BadPGc                     d S re   rm   rS  s    r_   rF  z;ProtocolTests.test_protocols_isinstance.<locals>.BadPG.meth
  r   ra   NrX  rm   ra   r_   r  r_  
  r  ra   r  c                       e Zd Zd ZdS )2ProtocolTests.test_protocols_isinstance.<locals>.Cc                     d S re   rm   rS  s    r_   rF  z7ProtocolTests.test_protocols_isinstance.<locals>.C.meth
  r   ra   NrX  rm   ra   r_   r  rb  
  r  ra   r  c                       e Zd Zd ZdS )3ProtocolTests.test_protocols_isinstance.<locals>.C2c                     d | _         d S )Nc                      d S re   rm   rm   ra   r_   rQ  zNProtocolTests.test_protocols_isinstance.<locals>.C2.__init__.<locals>.<lambda>
  s    D ra   )rF  r   s    r_   r*  z<ProtocolTests.test_protocols_isinstance.<locals>.C2.__init__
  s    (L			ra   Nrj   rk   rl   r*  rm   ra   r_   r  re  
  s#        ) ) ) ) )ra   r  )klassrs   )	r   r*   r'   rw   rj   r   r   r   r   )rZ   r   r  r  rK  rR  rZ  r  r  r  r  ri  rs   rW  s                @r_   test_protocols_isinstancez'ProtocolTests.test_protocols_isinstance
  s   CLL		 	 	 	 	 	 	 
		 
	 	 	 	 	! 	 	 
		 
	! 	! 	! 	! 	! 	! 	! 
		! 
	0 	0 	0 	0 	0( 	0 	0 
		0	 	 	 	 	 	 	 	 
	$ 	$ 	$ 	$ 	$ 	$ 	$8 	$ 	$ 
		$	 	 	 	 	8 	 	 		 	 	 	 	HQK 	 	 		 	 	 	 	 	 	 		) 	) 	) 	) 	) 	) 	) 	) U 	: 	:EB
KE : :\\en\MM : :))%%''5999: : : : : : : : : : : : : : :: y)) 	# 	#qqssBqE"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#y)) 	# 	#qqssBqE"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#y)) 	" 	"qqssD!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"y)) 	# 	#qqssE"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#sZ   <E''E+.E+F99F= F=H		HH.III8JJ"%J"c           	      l    G d d          } G d d           G fdd          } G d d|          } G d	 d
|          } G d d          }t          d          t           G d dt                                }t           G d dt                                }t           G d dt                                         }t           G fddt                                         }	||||	fD ]}
||||fD ]Y}|                     |j        |
j                  5  |                      |            |
           d d d            n# 1 swxY w Y   Z|                     d|
j                  5  |                      |            |
           d d d            n# 1 swxY w Y    G d dt                    } G d dt                    } G d dt                             } G fddt                             }|         ||         |	         |	|         ||||fD ]}|||||fD ]}|                     |j        |          5  |                     t                    5  t           |            |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S ) Nc                   $    e Zd Zed             ZdS )MProtocolTests.test_protocols_isinstance_properties_and_descriptors.<locals>.Cc                     dS r   rm   r   s    r_   rC  zRProtocolTests.test_protocols_isinstance_properties_and_descriptors.<locals>.C.attr  s    rra   Nrj   rk   rl   propertyrC  rm   ra   r_   r  rm    s-          X  ra   r  c                       e Zd ZddZdS )\ProtocolTests.test_protocols_isinstance_properties_and_descriptors.<locals>.CustomDescriptorNc                     dS r   rm   )rZ   objobjtypes      r_   __get__zdProtocolTests.test_protocols_isinstance_properties_and_descriptors.<locals>.CustomDescriptor.__get__  r  ra   re   )rj   rk   rl   rv  rm   ra   r_   CustomDescriptorrr    s(             ra   rw  c                   $    e Zd Z              ZdS )MProtocolTests.test_protocols_isinstance_properties_and_descriptors.<locals>.DN)rj   rk   rl   rC  )rw  s   r_   rT  ry    s        ##%%DDDra   rT  c                       e Zd ZdS )MProtocolTests.test_protocols_isinstance_properties_and_descriptors.<locals>.ENr}   rm   ra   r_   rU  r{    r   ra   rU  c                       e Zd ZdS )MProtocolTests.test_protocols_isinstance_properties_and_descriptors.<locals>.FNr}   rm   ra   r_   rV  r}    r   ra   rV  c                       e Zd ZdS )QProtocolTests.test_protocols_isinstance_properties_and_descriptors.<locals>.EmptyNr}   rm   ra   r_   re  r    r   ra   re  r   c                   $    e Zd Zed             ZdS )MProtocolTests.test_protocols_isinstance_properties_and_descriptors.<locals>.Pc                     d S re   rm   r   s    r_   rC  zRProtocolTests.test_protocols_isinstance_properties_and_descriptors.<locals>.P.attr"      Cra   Nro  rm   ra   r_   r  r     #         Xra   r  c                       e Zd ZU eed<   dS )NProtocolTests.test_protocols_isinstance_properties_and_descriptors.<locals>.P1rC  Nr1  rm   ra   r_   r  r  %  s         IIIIIra   r  c                   $    e Zd Zed             ZdS )NProtocolTests.test_protocols_isinstance_properties_and_descriptors.<locals>.PGc                     d S re   rm   r   s    r_   rC  zSProtocolTests.test_protocols_isinstance_properties_and_descriptors.<locals>.PG.attr+  r  ra   Nro  rm   ra   r_   r  r  )  r  ra   r  c                       e Zd ZU  ed<   dS )OProtocolTests.test_protocols_isinstance_properties_and_descriptors.<locals>.PG1rC  Nrj   rk   rl   r   r   s   r_   PG1r  .  s         GGGGGra   r  )ri  protocol_classc                   $    e Zd Zed             ZdS )PProtocolTests.test_protocols_isinstance_properties_and_descriptors.<locals>.BadPc                     d S re   rm   r   s    r_   rC  zUProtocolTests.test_protocols_isinstance_properties_and_descriptors.<locals>.BadP.attr>  r  ra   Nro  rm   ra   r_   r  r  =  #         Xra   r  c                       e Zd ZU eed<   dS )QProtocolTests.test_protocols_isinstance_properties_and_descriptors.<locals>.BadP1rC  Nr1  rm   ra   r_   BadP1r  A           IIIIIra   r  c                   $    e Zd Zed             ZdS )QProtocolTests.test_protocols_isinstance_properties_and_descriptors.<locals>.BadPGc                     d S re   rm   r   s    r_   rC  zVProtocolTests.test_protocols_isinstance_properties_and_descriptors.<locals>.BadPG.attrE  r  ra   Nro  rm   ra   r_   r  r  D  r  ra   r  c                       e Zd ZU  ed<   dS )RProtocolTests.test_protocols_isinstance_properties_and_descriptors.<locals>.BadPG1rC  Nr  r  s   r_   BadPG1r  H  s         GGGGGra   r  )ri  rt  )
r   r*   r'   rw   rj   r   r   r   r   r   )rZ   r  rT  rU  rV  re  r  r  r  r  r  ri  r  r  r  r  rt  rw  r   s                    @@r_   4test_protocols_isinstance_properties_and_descriptorszBProtocolTests.test_protocols_isinstance_properties_and_descriptors
  s:   	 	 	 	 	 	 	 	
	 	 	 	 	 	 	 		& 	& 	& 	& 	& 	& 	& 	& 	& 	&
 	CLL		  	  	  	  	  	  	  
		  
	 	 	 	 	 	 	 
		 
	  	  	  	  	 ! 	  	  
		  
	 	 	 	 	 	 	(1+ 	 	 
		  Rn 		B 		BNAq! C C\\.#1#: "   C C ))%%''>BBB	C C C C C C C C C C C C C C C GN<STT B B((.AAAB B B B B B B B B B B B B B B	  	  	  	  	 8 	  	  	 	 	 	 	 	H 	 	 		  	  	  	  	 HQK 	  	  	 	 	 	 	 	 	 	Xa[ 	 	 	 a5"Q%QQueVK 	1 	1CAq!U* 1 1\\C\@@ 1 1**955 1 1"5577C0001 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 11	1 	1sZ   #EEE6F!!F%	(F%	J'+J	J'JJ'JJ''J+.J+c                     t            G d dt                                } G d d          } G d d          }|                      |            |           |                      |            |           d S )Nc                       e Zd ZU eed<   dS )NProtocolTests.test_protocols_isinstance_not_fooled_by_custom_dir.<locals>.HasXrl  Nr1  rm   ra   r_   HasXr  R           FFFFFra   r  c                       e Zd ZdZd ZdS )XProtocolTests.test_protocols_isinstance_not_fooled_by_custom_dir.<locals>.CustomDirWithX
   c                     g S re   rm   r   s    r_   __dir__z`ProtocolTests.test_protocols_isinstance_not_fooled_by_custom_dir.<locals>.CustomDirWithX.__dir__X      	ra   N)rj   rk   rl   rl  r  rm   ra   r_   CustomDirWithXr  V  s(        A    ra   r  c                       e Zd Zd ZdS )[ProtocolTests.test_protocols_isinstance_not_fooled_by_custom_dir.<locals>.CustomDirWithoutXc                     dgS )Nrl  rm   r   s    r_   r  zcProtocolTests.test_protocols_isinstance_not_fooled_by_custom_dir.<locals>.CustomDirWithoutX.__dir__\  s	    ura   N)rj   rk   rl   r  rm   ra   r_   CustomDirWithoutXr  [  #            ra   r  )r*   r'   r   r   )rZ   r  r  r  s       r_   2test_protocols_isinstance_not_fooled_by_custom_dirz@ProtocolTests.test_protocols_isinstance_not_fooled_by_custom_dirQ  s    		 	 	 	 	8 	 	 
			 	 	 	 	 	 	 	
	 	 	 	 	 	 	 	 	nn..555  !2!2!4!4d;;;;;ra   c                 8    G d d          } G d d          } G d d          } G d d          }|                       |d	d
d          t                     |                       |d	d
          t                     |                     t                      t                     |                       |d	d
          t                     |                      t                      t                     |                      t                      t                     |                       |d          t                     |                      |            t                     |                      |            t                     |                      |            t                     |                      |            t                     |                     t                      t                     |                      t          d	d
          t                     d S )Nc                       e Zd Zd ZdS )<ProtocolTests.test_protocols_isinstance_py36.<locals>.APointc                 0    || _         || _        || _        d S re   rl  r  r5  )rZ   rl  r  r5  s       r_   r*  zEProtocolTests.test_protocols_isinstance_py36.<locals>.APoint.__init__d  s    "


ra   Nrh  rm   ra   r_   APointr  c  s#        # # # # #ra   r  c                       e Zd ZdZd ZdS )<ProtocolTests.test_protocols_isinstance_py36.<locals>.BPointrS  c                 "    || _         || _        d S re   rl  r  r)  s      r_   r*  zEProtocolTests.test_protocols_isinstance_py36.<locals>.BPoint.__init__l  s    ra   N)rj   rk   rl   r5  r*  rm   ra   r_   BPointr  i  s(        E    ra   r  c                       e Zd Zd Zd ZdS )7ProtocolTests.test_protocols_isinstance_py36.<locals>.Cc                     || _         d S re   rC  rZ   rC  s     r_   r*  z@ProtocolTests.test_protocols_isinstance_py36.<locals>.C.__init__q       			ra   c                     dS r(  rm   rE  s     r_   rF  z<ProtocolTests.test_protocols_isinstance_py36.<locals>.C.metht      qra   N)rj   rk   rl   r*  rF  rm   ra   r_   r  r  p  s2        ! ! !    ra   r  c                       e Zd ZdS )9ProtocolTests.test_protocols_isinstance_py36.<locals>.BadNr}   rm   ra   r_   Badr  w  r   ra   r  rp   r   r   r   )	r   r4  r   r8  r@  rJ  rB  rH  rN  )rZ   r  r  r  r  s        r_   test_protocols_isinstance_py36z,ProtocolTests.test_protocols_isinstance_py36b  s   	# 	# 	# 	# 	# 	# 	# 	#	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	ffQ3//777ffQllE222  E222ffQllH555eggu---hjj%000aaeeU+++  ...  ...  111  111  (333bAhh11111ra   c                 F   t          d          }t           G d dt                                }t           G d dt          |                               } G d d          }|                      |d          |           |                      |d          |           d S )	Nr   c                       e Zd ZdZdS )7ProtocolTests.test_protocols_isinstance_init.<locals>.Prp   Nr  rm   ra   r_   r  r    r<  ra   r  c                       e Zd ZdZdS )8ProtocolTests.test_protocols_isinstance_init.<locals>.PGrp   Nr  rm   ra   r_   r  r    r<  ra   r  c                       e Zd Zd ZdS )7ProtocolTests.test_protocols_isinstance_init.<locals>.Cc                     || _         d S re   rS  r  s     r_   r*  z@ProtocolTests.test_protocols_isinstance_init.<locals>.C.__init__  r  ra   Nrh  rm   ra   r_   r  r    #            ra   r  rp   )r   r*   r'   r   )rZ   r   r  r  r  s        r_   test_protocols_isinstance_initz,ProtocolTests.test_protocols_isinstance_init  s    CLL		 	 	 	 	 	 	 
		 
	 	 	 	 	! 	 	 
			 	 	 	 	 	 	 	 	aaddA&&&aaddB'''''ra   c                 
   t            G d dt                                } G d d          } |            }|                     ||           d|_        |                     ||           |`|                     ||           d S )Nc                       e Zd ZU eed<   dS )DProtocolTests.test_protocols_isinstance_monkeypatching.<locals>.HasXrl  Nr1  rm   ra   r_   r  r    r  ra   r  c                       e Zd ZdS )CProtocolTests.test_protocols_isinstance_monkeypatching.<locals>.FooNr}   rm   ra   r_   r  r    r   ra   r  r   )r*   r'   r   rl  r   )rZ   r  r  rh   s       r_   (test_protocols_isinstance_monkeypatchingz6ProtocolTests.test_protocols_isinstance_monkeypatching  s    		 	 	 	 	8 	 	 
		 	CEE  D)))a&&&C  D)))))ra   c                     G d dt           t                             } G d d|t                             } G d d          } G d d          }|t                   }|                      |            |           |                     ||            G d	 d
|t                             } G d d|t                             }|t
                   }|                      |            |           |                     ||           d S )Nc                       e Zd ZdS )=ProtocolTests.test_protocol_checks_after_subscript.<locals>.PNr}   rm   ra   r_   r  r    r   ra   r  c                       e Zd ZdS )=ProtocolTests.test_protocol_checks_after_subscript.<locals>.CNr}   rm   ra   r_   r  r    r   ra   r  c                       e Zd ZdS )BProtocolTests.test_protocol_checks_after_subscript.<locals>.Other1Nr}   rm   ra   r_   Other1r    r   ra   r  c                       e Zd ZdS )BProtocolTests.test_protocol_checks_after_subscript.<locals>.Other2Nr}   rm   ra   r_   Other2r    r   ra   r  c                       e Zd ZdS )>ProtocolTests.test_protocol_checks_after_subscript.<locals>.D1Nr}   rm   ra   r_   D1r    r   ra   r  c                       e Zd ZdS )>ProtocolTests.test_protocol_checks_after_subscript.<locals>.D2Nr}   rm   ra   r_   D2r    r   ra   r  )r'   r   r   r   rc   r   r   r`   )	rZ   r  r  r  r  CAr  r  CIs	            r_   $test_protocol_checks_after_subscriptz2ProtocolTests.test_protocol_checks_after_subscript  s&   """"""""!sV  1---  +++33sVbbddA&&&b!$$$$$ra   c                 n   t            G d dt                                } G d dt                    } G d d|          } G d d          }|                    |           |                    |           |                      |            |           |                      |            |           d S )	Nc                       e Zd ZdZdS )8ProtocolTests.test_protocols_support_register.<locals>.Prp   Nr  rm   ra   r_   r  r    r<  ra   r  c                       e Zd Zd ZdS )9ProtocolTests.test_protocols_support_register.<locals>.PMc                     d S re   rm   r   s    r_   rF  z>ProtocolTests.test_protocols_support_register.<locals>.PM.meth  r   ra   NrX  rm   ra   r_   PMr    r   ra   r  c                       e Zd ZdS )8ProtocolTests.test_protocols_support_register.<locals>.DNr}   rm   ra   r_   rT  r    r   ra   rT  c                       e Zd ZdS )8ProtocolTests.test_protocols_support_register.<locals>.CNr}   rm   ra   r_   r  r    r   ra   r  )r*   r'   r?  r   )rZ   r  r  rT  r  s        r_   test_protocols_support_registerz-ProtocolTests.test_protocols_support_register  s    		 	 	 	 	 	 	 
			! 	! 	! 	! 	! 	! 	! 	! 		

1	

1aacc1%%%aacc1%%%%%ra   c                    t            G d dt                                } G d d          } G d d|          } G d d          }|                      |            |           |                      |            |           d S )	Nc                       e Zd ZdZdS )NProtocolTests.test_none_on_non_callable_doesnt_block_implementation.<locals>.Prp   Nr  rm   ra   r_   r  r    r<  ra   r  c                       e Zd ZdZdS )NProtocolTests.test_none_on_non_callable_doesnt_block_implementation.<locals>.Arp   Nr  rm   ra   r_   r   r    r8  ra   r   c                       e Zd ZdZdS )NProtocolTests.test_none_on_non_callable_doesnt_block_implementation.<locals>.BNr  rm   ra   r_   rS  r            AAAra   rS  c                       e Zd Zd ZdS )NProtocolTests.test_none_on_non_callable_doesnt_block_implementation.<locals>.Cc                     d | _         d S re   rS  r   s    r_   r*  zWProtocolTests.test_none_on_non_callable_doesnt_block_implementation.<locals>.C.__init__      ra   Nrh  rm   ra   r_   r  r    #            ra   r  )r*   r'   r   rZ   r  r   rS  r  s        r_   5test_none_on_non_callable_doesnt_block_implementationzCProtocolTests.test_none_on_non_callable_doesnt_block_implementation  s    		 	 	 	 	 	 	 
			 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	aacc1%%%aacc1%%%%%ra   c                    t            G d dt                                } G d d          } G d d|          } G d d          }|                      |            |           |                      |            |           d S )	Nc                       e Zd Zd ZdS )DProtocolTests.test_none_on_callable_blocks_implementation.<locals>.Pc                     d S re   rm   r   s    r_   rl  zFProtocolTests.test_none_on_callable_blocks_implementation.<locals>.P.x  r   ra   Nr  rm   ra   r_   r  r	    r  ra   r  c                       e Zd Zd ZdS )DProtocolTests.test_none_on_callable_blocks_implementation.<locals>.Ac                     d S re   rm   r   s    r_   rl  zFProtocolTests.test_none_on_callable_blocks_implementation.<locals>.A.x  r   ra   Nr  rm   ra   r_   r   r    r  ra   r   c                       e Zd ZdZdS )DProtocolTests.test_none_on_callable_blocks_implementation.<locals>.BNr  rm   ra   r_   rS  r    r  ra   rS  c                       e Zd Zd ZdS )DProtocolTests.test_none_on_callable_blocks_implementation.<locals>.Cc                     d | _         d S re   rS  r   s    r_   r*  zMProtocolTests.test_none_on_callable_blocks_implementation.<locals>.C.__init__  r  ra   Nrh  rm   ra   r_   r  r    r  ra   r  )r*   r'   r   r  s        r_   +test_none_on_callable_blocks_implementationz9ProtocolTests.test_none_on_callable_blocks_implementation  s    		 	 	 	 	 	 	 
			 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	  a(((  a(((((ra   c                     G d dt                     }t           G d dt                                 } G d d|          } G d d|          } G d	 d
          } G d d          }|                      |            |           |                      |            |           |                     ||           |                     ||           |                      |            |           |                     ||           d S )Nc                       e Zd ZdZdS )5ProtocolTests.test_non_protocol_subclasses.<locals>.Prp   Nr  rm   ra   r_   r  r    r8  ra   r  c                       e Zd Zd ZdS )6ProtocolTests.test_non_protocol_subclasses.<locals>.PRc                     d S re   rm   r   s    r_   rF  z;ProtocolTests.test_non_protocol_subclasses.<locals>.PR.meth  r   ra   NrX  rm   ra   r_   PRr                 ra   r  c                       e Zd ZdZdS )8ProtocolTests.test_non_protocol_subclasses.<locals>.NonPrp   Nr  rm   ra   r_   NonPr    r8  ra   r  c                       e Zd ZdS )9ProtocolTests.test_non_protocol_subclasses.<locals>.NonPRNr}   rm   ra   r_   NonPRr     r   ra   r!  c                       e Zd ZdZdS )5ProtocolTests.test_non_protocol_subclasses.<locals>.Crp   Nr  rm   ra   r_   r  r#    r8  ra   r  c                       e Zd Zd ZdS )5ProtocolTests.test_non_protocol_subclasses.<locals>.Dc                     d S re   rm   r   s    r_   rF  z:ProtocolTests.test_non_protocol_subclasses.<locals>.D.meth  r   ra   NrX  rm   ra   r_   rT  r%    r   ra   rT  r  )rZ   r  r  r  r!  r  rT  s          r_   test_non_protocol_subclassesz*ProtocolTests.test_non_protocol_subclasses  s   	 	 	 	 	 	 	 	 
	! 	! 	! 	! 	! 	! 	! 
		!	 	 	 	 	1 	 	 	 	B	 	 	 	 	 	 	 		! 	! 	! 	! 	! 	! 	! 	! 	  d+++  e,,,  D)))  E***eeggr***eR(((((ra   c                 L    G d dt                     } G d d          } G d d          } G d d|          }|                      |            |           |                      |            |           |                     ||           |                     ||           d S )	Nc                       e Zd ZdZdS )1ProtocolTests.test_custom_subclasshook.<locals>.Prp   Nr  rm   ra   r_   r  r*    r8  ra   r  c                       e Zd ZdS )7ProtocolTests.test_custom_subclasshook.<locals>.OKClassNr}   rm   ra   r_   OKClassr,    r   ra   r-  c                       e Zd ZdZdS )8ProtocolTests.test_custom_subclasshook.<locals>.BadClassrp   Nr  rm   ra   r_   BadClassr/    r8  ra   r0  c                   $    e Zd Zed             ZdS )1ProtocolTests.test_custom_subclasshook.<locals>.Cc                 6    |j                             d          S NOK)rj   
startswithr[   others     r_   __subclasshook__zBProtocolTests.test_custom_subclasshook.<locals>.C.__subclasshook__  s    ~00666ra   Nrj   rk   rl   classmethodr9  rm   ra   r_   r  r2    s-        7 7 [7 7 7ra   r  )r'   r   r   r`   rc   )rZ   r  r-  r0  r  s        r_   test_custom_subclasshookz&ProtocolTests.test_custom_subclasshook  s   	 	 	 	 	 	 	 	 		 	 	 	 	 	 	 		7 	7 	7 	7 	7 	7 	7 	7
 	ggii+++  Q///gq)))  1-----ra   c                     t            G d dt                                } G d d          }|                     t                    5  t	           |            |           d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdZdS )8ProtocolTests.test_issubclass_fails_correctly.<locals>.Prp   Nr  rm   ra   r_   r  r?    r<  ra   r  c                       e Zd ZdS )8ProtocolTests.test_issubclass_fails_correctly.<locals>.CNr}   rm   ra   r_   r  rA    r   ra   r  )r*   r'   r   r   rW   rZ   r  r  s      r_   test_issubclass_fails_correctlyz-ProtocolTests.test_issubclass_fails_correctly  s    		 	 	 	 	 	 	 
		 	y)) 	 	qqssA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A..A25A2c                 r   t          d          }t          d          }t           G d dt          ||f                               } G d d|t          |f         t          |                   }|                     t
                    5  |t                    d d d            n# 1 swxY w Y   |                     t
                    5  |t          t          f          d d d            n# 1 swxY w Y    G d d|t          |f                   }|                      |t                               |           d S )	Nr   Sc                       e Zd Zd ZdS )9ProtocolTests.test_defining_generic_protocols.<locals>.PRc                     d S re   rm   r   s    r_   rF  z>ProtocolTests.test_defining_generic_protocols.<locals>.PR.meth*  r   ra   NrX  rm   ra   r_   r  rG  (  r  ra   r  c                       e Zd ZdZdS )8ProtocolTests.test_defining_generic_protocols.<locals>.Prp   Nrj   rk   rl   r  rm   ra   r_   r  rJ  ,  r8  ra   r  c                       e Zd ZdS )8ProtocolTests.test_defining_generic_protocols.<locals>.CNr}   rm   ra   r_   r  rM  4  r   ra   r  )r   r*   r'   r   r   r   rX  r   )rZ   r   rE  r  r  r  s         r_   test_defining_generic_protocolsz-ProtocolTests.test_defining_generic_protocols$  s   CLLCLL		! 	! 	! 	! 	!!Q$ 	! 	! 
		!	 	 	 	 	36
HQK 	 	 	 y)) 	 	sGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	c3hKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	"!!!!36
!!!fafhh*****s$   B""B&)B&C((C,/C,c           	      p   t          d          t          d          }t           G d dt          t          |f                               } G d d|t          t
          f         t                    }|                     t                    5  t          |t          t
          f         |           d d d            n# 1 swxY w Y   | 	                    ||           |                     t                    5  |t                    d d d            n# 1 swxY w Y    G fddt          t                             } G fd	d
t                   t                    }t           G d d|t
                   t                                } G d d          }| 
                     |            |           d S )Nr   rE  c                       e Zd Zd ZdS )CProtocolTests.test_defining_generic_protocols_old_style.<locals>.PRc                     d S re   rm   r   s    r_   rF  zHProtocolTests.test_defining_generic_protocols_old_style.<locals>.PR.meth>  r   ra   NrX  rm   ra   r_   r  rQ  <  r  ra   r  c                       e Zd ZdZdS )BProtocolTests.test_defining_generic_protocols_old_style.<locals>.Prp   NrK  rm   ra   r_   r  rT  @  r8  ra   r  c                        e Zd Zd defdZdS )CProtocolTests.test_defining_generic_protocols_old_style.<locals>.P1rl  r   c                     d S re   rm   r  s     r_   r  zGProtocolTests.test_defining_generic_protocols_old_style.<locals>.P1.barJ  r   ra   Nrj   rk   rl   rX  r  r  s   r_   r  rV  I  '        +Q+3++++++ra   r  c                        e Zd Zd defdZdS )CProtocolTests.test_defining_generic_protocols_old_style.<locals>.P2rl  r   c                     d S re   rm   r  s     r_   r  zGProtocolTests.test_defining_generic_protocols_old_style.<locals>.P2.barM  r   ra   NrX  r  s   r_   r  r[  L  rY  ra   r  c                       e Zd ZdZdS )EProtocolTests.test_defining_generic_protocols_old_style.<locals>.PSubrp   Nr  rm   ra   r_   PSubr^  O  r<  ra   r_  c                   "    e Zd ZdZdedefdZdS )EProtocolTests.test_defining_generic_protocols_old_style.<locals>.Testrp   rl  r   c                     |S re   rm   r  s     r_   r  zIProtocolTests.test_defining_generic_protocols_old_style.<locals>.Test.barV  s    ra   N)rj   rk   rl   rl  rX  r  rm   ra   r_   Testra  S  s;        AS S      ra   rc  )r   r*   r'   r#   r   rX  r   r   rW   r`   r   )	rZ   rE  r  r  r  r  r_  rc  r   s	           @r_   )test_defining_generic_protocols_old_stylez7ProtocolTests.test_defining_generic_protocols_old_style8  s   CLLCLL		! 	! 	! 	! 	!71a4= 	! 	! 
		!	 	 	 	 	38h 	 	 	 y)) 	) 	)r#s(|R(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)a$$$y)) 	 	sGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 		, 	, 	, 	, 	, 	, 	,71: 	, 	, 	,	, 	, 	, 	, 	, 	, 	,X 	, 	, 	, 
	 	 	 	 	2c7H 	 	 
			 	 	 	 	 	 	 	 	ddffd+++++s$   #B==CC8DDDc                     t          d          } G d dt          |                   } G d d||                   }|                      |t                               j        d            G d d          } G d	 d
|||                   }|                      |t                               j        d            G d d||         |          }|                      |t                               j        d           d S )Nr   c                       e Zd ZdS ))ProtocolTests.test_init_called.<locals>.PNr}   rm   ra   r_   r  rg  ^  r   ra   r  c                       e Zd Zd ZdS ))ProtocolTests.test_init_called.<locals>.Cc                     d| _         d S r4  testr   s    r_   r*  z2ProtocolTests.test_init_called.<locals>.C.__init__a  r  ra   Nrh  rm   ra   r_   r  ri  `  #        ! ! ! ! !ra   r  r5  c                       e Zd Zd ZdS ))ProtocolTests.test_init_called.<locals>.Bc                     d| _         d S r4  rk  r   s    r_   r*  z2ProtocolTests.test_init_called.<locals>.B.__init__g  r  ra   Nrh  rm   ra   r_   rS  ro  f  rm  ra   rS  c                       e Zd ZdS )*ProtocolTests.test_init_called.<locals>.D1Nr}   rm   ra   r_   r  rr  j  rv  ra   r  c                       e Zd ZdS )*ProtocolTests.test_init_called.<locals>.D2Nr}   rm   ra   r_   r  rt  o  rv  ra   r  )r   r'   r   r   rl  )rZ   r   r  r  rS  r  r  s          r_   test_init_calledzProtocolTests.test_init_called[  sS   CLL""""""""	! 	! 	! 	! 	!! 	! 	! 	! 	3---	! 	! 	! 	! 	! 	! 	! 	!	 	 	 	 	AaD 	 	 	 	C...	 	 	 	 	1q 	 	 	 	C.....ra   c                    t          d          } G d dt          |                   } G d d||                   }|                      |t                               j        d           |                     t                    5   |t                   d           d d d            n# 1 swxY w Y   |                     t                    5   |t                   d           d d d            d S # 1 swxY w Y   d S )	Nr   c                       e Zd ZdS )(ProtocolTests.test_new_called.<locals>.PNr}   rm   ra   r_   r  rx  w  r   ra   r  c                        e Zd Z fdZ xZS )(ProtocolTests.test_new_called.<locals>.Cc                 J     t                      j        | g|R  }d|_        |S r4  )super__new__rl  )r[   r   rZ   r  s      r_   r}  z0ProtocolTests.test_new_called.<locals>.C.__new__z  s,    &uwws2T222 	ra   rj   rk   rl   r}  __classcell__r  s   @r_   r  rz  y  s8                ra   r  r5  r   r  )r   r'   r   r   rl  r   r   )rZ   r   r  r  s       r_   test_new_calledzProtocolTests.test_new_calledt  s   CLL""""""""	 	 	 	 	! 	 	 	 	3---y)) 	 	AcF2JJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	AcFRLLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   B((B,/B,C22C69C6c                    t          d          }t          d          }|                     t                    5   G d dt          ||f                   }d d d            n# 1 swxY w Y   |                     t                    5   G d dt          t                             }d d d            n# 1 swxY w Y   |                     t                    5   G d dt          |         t          |                   }d d d            n# 1 swxY w Y   |                     t                    5   G d dt
          j        ||f         t          |                   }d d d            d S # 1 swxY w Y   d S )Nr   rE  c                       e Zd ZdS 6ProtocolTests.test_protocols_bad_subscripts.<locals>.PNr}   rm   ra   r_   r  r    r   ra   r  c                       e Zd ZdS r  r}   rm   ra   r_   r  z6ProtocolTests.test_protocols_bad_subscripts.<locals>.P  r   ra   c                       e Zd ZdS r  r}   rm   ra   r_   r  z6ProtocolTests.test_protocols_bad_subscripts.<locals>.P  r   ra   c                       e Zd ZdS r  r}   rm   ra   r_   r  z6ProtocolTests.test_protocols_bad_subscripts.<locals>.P  r   ra   )r   r   r   r'   r   rN   rI  rZ   r   rE  r  s       r_   test_protocols_bad_subscriptsz+ProtocolTests.test_protocols_bad_subscripts  sZ   CLLCLLy)) 	* 	*)))))HQTN)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*y)) 	) 	)(((((HSM(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)y)) 	4 	433333HQK!333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4y)) 	= 	=<<<<<FN1a4((1+<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=sG   A!!A%(A%B11B58B5&DDD--E''E+.E+c                    t          d          }t          d          } G d dt          ||f                   }|                     t          |||f                                       d                     |                     t          |t
          t          f                                       d                     d S )Nr   rE  c                       e Zd ZdS )4ProtocolTests.test_generic_protocols_repr.<locals>.PNr}   rm   ra   r_   r  r    r   ra   r  z	P[~T, ~S]zP[int, str])r   r'   r   r   r0  r   rX  r  s       r_   test_generic_protocols_reprz)ProtocolTests.test_generic_protocols_repr  s    CLLCLL%%%%%A%%%Qq!tW..{;;<<<QsCx[))22=AABBBBBra   c                    t          d          }t          d          } G d dt          ||f                   }|                     ||           |                     |t          |f         |t          |f                    |                     |||f         t          ||f                  t          t
          f         |t          t          t
          f         t          t          t
          f         f                    d S )Nr   rE  c                       e Zd ZdS )2ProtocolTests.test_generic_protocols_eq.<locals>.PNr}   rm   ra   r_   r  r    r   ra   r  )r   r'   r   r   r   rX  r  s       r_   test_generic_protocols_eqz'ProtocolTests.test_generic_protocols_eq  s    CLLCLL%%%%%A%%%A36Ac1fI...1a4q!t-c3h75c?E#s(O;<	> 	> 	> 	> 	>ra   c                 ~   t          d          } G d dt          |                   }|                     |j        |f           |                     |t                   j        d           |                     |t                   j        t          f           |                     |t                   j        |           d S )Nr   c                       e Zd ZdS )DProtocolTests.test_generic_protocols_special_from_generic.<locals>.PNr}   rm   ra   r_   r  r    r   ra   r  rm   )r   r'   r   rg  r   rf  r   rh  )rZ   r   r  s      r_   +test_generic_protocols_special_from_genericz9ProtocolTests.test_generic_protocols_special_from_generic  s    CLL"""""""")A40003.33333&111af'+++++ra   c                 6   t            G d dt                                } G d dt                    }t          d          } G d dt          |                   }|                     |j                   |                     |j                   |                     |j                   |                     |j                   |                     |j                   |                     |t                   j                   |                     t          j
        |          dh           |                     t          j
        |          d	h           |                     t          t          j
        |                    t          d	dh                     d S )
Nc                       e Zd ZdZdS )FProtocolTests.test_generic_protocols_special_from_protocol.<locals>.PRrp   Nr  rm   ra   r_   r  r    r<  ra   r  c                       e Zd Zd ZdS )EProtocolTests.test_generic_protocols_special_from_protocol.<locals>.Pc                     d S re   rm   r   s    r_   rF  zJProtocolTests.test_generic_protocols_special_from_protocol.<locals>.P.meth  rW  ra   NrX  rm   ra   r_   r  r    r_  ra   r  r   c                       e Zd ZdZd ZdS )FProtocolTests.test_generic_protocols_special_from_protocol.<locals>.PGrp   c                     d S re   rm   r   s    r_   rF  zKProtocolTests.test_generic_protocols_special_from_protocol.<locals>.PG.meth  rW  ra   N)rj   rk   rl   rl  rF  rm   ra   r_   r  r    s(        A    ra   r  rF  rl  )r*   r'   r   r   _is_protocolr   _is_runtime_protocolr   r   rN   _get_protocol_attrs	frozenset)rZ   r  r  r   r  s        r_   ,test_generic_protocols_special_from_protocolz:ProtocolTests.test_generic_protocols_special_from_protocol  s   		 	 	 	 	 	 	 
			 	 	 	 	 	 	 	 CLL	 	 	 	 	! 	 	 	 	'''((((((/000/0003,---3A66AAA3B77#???6#=b#A#ABB"C=11	3 	3 	3 	3 	3ra   c                 `   |                      t                    5  t           G d d                      }d d d            n# 1 swxY w Y    G d dt                    }|                      t                    5  t           G d d|                      }d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS )8ProtocolTests.test_no_runtime_deco_on_nominal.<locals>.CNr}   rm   ra   r_   r  r    s        Tra   r  c                       e Zd ZdZdS )<ProtocolTests.test_no_runtime_deco_on_nominal.<locals>.Protorp   Nr  rm   ra   r_   rB  r    r8  ra   rB  c                       e Zd ZdS )?ProtocolTests.test_no_runtime_deco_on_nominal.<locals>.ConcreteNr}   rm   ra   r_   rH  r    s        ra   rH  )r   r   r*   r'   )rZ   r  rB  rH  s       r_   test_no_runtime_deco_on_nominalz-ProtocolTests.test_no_runtime_deco_on_nominal  sa   y)) 	 	MMMMMM 	 	 	 	 	 	 	 	 	 	 	 	 	 	 		 	 	 	 	H 	 	 	 y)) 	 	    5   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   AA	A:B##B'*B'c                     t            G d dt                                } G d dt                    }|                      |            |            G d d          } G d d          }|                      |            |           |                      |            |            G d	 d
          } G d d          }|                      |            |           |                      |            |           d S )Nc                       e Zd ZdZdS )4ProtocolTests.test_none_treated_correctly.<locals>.PNr  rm   ra   r_   r  r    s        AAAra   r  c                       e Zd ZdS )4ProtocolTests.test_none_treated_correctly.<locals>.BNr}   rm   ra   r_   rS  r    r   ra   rS  c                       e Zd ZdZdS )4ProtocolTests.test_none_treated_correctly.<locals>.Crp   Nr  rm   ra   r_   r  r    r8  ra   r  c                       e Zd ZdZdS )4ProtocolTests.test_none_treated_correctly.<locals>.DNr  rm   ra   r_   rT  r    r  ra   rT  c                       e Zd Zd ZdS )5ProtocolTests.test_none_treated_correctly.<locals>.CIc                     d| _         d S r"  rS  r   s    r_   r*  z>ProtocolTests.test_none_treated_correctly.<locals>.CI.__init__  r  ra   Nrh  rm   ra   r_   r  r    r  ra   r  c                       e Zd Zd ZdS )5ProtocolTests.test_none_treated_correctly.<locals>.DIc                     d | _         d S re   rS  r   s    r_   r*  z>ProtocolTests.test_none_treated_correctly.<locals>.DI.__init__  r  ra   Nrh  rm   ra   r_   DIr    r  ra   r  )r*   r'   r,  r   r   )rZ   r  rS  r  rT  r  r  s          r_   test_none_treated_correctlyz)ProtocolTests.test_none_treated_correctly  s   		 	 	 	 	 	 	 
		 	  a(((	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	aacc1%%%aacc1%%%	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	bbddA&&&bbddA&&&&&ra   c                      G d dt                     }t          j        t          j        |f         }t          j        |t          j        f         }|                     ||           d S )Nc                       e Zd ZdZdS )1ProtocolTests.test_protocols_in_unions.<locals>.PNr  rm   ra   r_   r  r    r  ra   r  )r'   rN   r   rF  r   )rZ   r  AliasAlias2s       r_   test_protocols_in_unionsz&ProtocolTests.test_protocols_in_unions  sp    	 	 	 	 	 	 	 	 V_a/0a01'''''ra   c                    t          d          }t           G d dt          |                               a G d dt          t                             at                      }d|_        d|_        t          t          j
        dz             D ]}t          j        ||          }t          j        |          }|                     |j        d           |                     |j        d           |                     |j        d           |                     |j        ddd	           t          j        t          |          }t          j        |          } G d
 d          }|                      |            |           d S )Nr   c                       e Zd ZdZdS )r  rp   Nr  rm   ra   r_   r  r    r<  ra   r  c                       e Zd ZdS )CPNr}   rm   ra   r_   r  r    rv  ra   r  r   r  rp   r  c                       e Zd ZdZdS )2ProtocolTests.test_protocols_pickleable.<locals>.Erp   Nr  rm   ra   r_   rU  r    s        ra   rU  )r   r*   r'   r  r   r  r  r  rt   ru   rv   r  r  r   rl  __dict__r   )	rZ   r   r  rs   r  rl  r  rT  rU  s	            r_   test_protocols_pickleablez'ProtocolTests.test_protocols_pickleable  s   CLL		 	 	 	 	 	 	 
			 	 	 	 	3 	 	 	 DD62Q677 	* 	*EQ&&AQAQUB'''QUE***QS!$$$QZE)B)BCCCQ&&AQA        !!!!##q))))	* 	*ra   c                     |                      t          t          j                   |                     t
          t          j                   d S re   )r`   r   rN   SupportsIntrc   rX  r   s    r_   test_supports_intzProtocolTests.test_supports_int  s:    c6#5666  f&899999ra   c                     |                      t          t          j                   |                     t
          t          j                   d S re   )r`   r  rN   SupportsFloatrc   rX  r   s    r_   test_supports_floatz!ProtocolTests.test_supports_float  s:    eV%9:::  f&:;;;;;ra   c                      G d d          }|                      t          t          j                   |                      |t          j                   |                     t
          t          j                   d S )Nc                       e Zd Zd ZdS ).ProtocolTests.test_supports_complex.<locals>.Cc                     dS )Ny                rm   r   s    r_   __complex__z:ProtocolTests.test_supports_complex.<locals>.C.__complex__%  r  ra   N)rj   rk   rl   r  rm   ra   r_   r  r  $  s#            ra   r  )r`   complexrN   SupportsComplexrc   rX  r  s     r_   test_supports_complexz#ProtocolTests.test_supports_complex"  s}    	 	 	 	 	 	 	 	 	gv'=>>>a!7888  f&<=====ra   c                      G d d          }|                      t          t          j                   |                      |t          j                   |                     t
          t          j                   d S )Nc                       e Zd Zd ZdS ),ProtocolTests.test_supports_bytes.<locals>.Bc                     dS Nra   rm   r   s    r_   	__bytes__z6ProtocolTests.test_supports_bytes.<locals>.B.__bytes__/  s    sra   N)rj   rk   rl   r  rm   ra   r_   rS  r  .  r  ra   rS  )r`   rp  rN   SupportsBytesrc   rX  )rZ   rS  s     r_   test_supports_bytesz!ProtocolTests.test_supports_bytes,  s}    	 	 	 	 	 	 	 	 	eV%9:::a!5666  f&:;;;;;ra   c                     |                      t          t          j                   |                      t          t          j                   |                     t          t          j                   d S re   )r`   r  rN   SupportsAbsr   rc   rX  r   s    r_   test_supports_abszProtocolTests.test_supports_abs6  sS    eV%7888c6#5666  f&899999ra   c                 "   t          t          t          j                   |                     t          t          j                   |                     t
          t          j                   |                     t          t          j                   d S re   )rW   r  rN   SupportsRoundr`   r   rc   rX  r   s    r_   test_supports_roundz!ProtocolTests.test_supports_round;  sf    5&.///eV%9:::c6#7888  f&:;;;;;ra   c                     |                      t          t          j                   |                     t
          t          j                   d S re   )r`   r  rN   
Reversiblerc   r   r   s    r_   test_reversiblezProtocolTests.test_reversibleA  s:    dF$5666  f&788888ra   c                     |                      t          t          j                   |                     t
          t          j                   d S re   )r`   r   rN   SupportsIndexrc   rX  r   s    r_   test_supports_indexz!ProtocolTests.test_supports_indexE  s:    c6#7888  f&:;;;;;ra   c                     |                      dt          j                    G d dt          j                  } G d d|          } |            }|                      ||           d S )Nr   c                       e Zd ZdefdZdS )>ProtocolTests.test_bundled_protocol_instance_works.<locals>.C1r   c                     dS r   rm   r   s    r_   __int__zFProtocolTests.test_bundled_protocol_instance_works.<locals>.C1.__int__L  r  ra   N)rj   rk   rl   r   r  rm   ra   r_   r  r  K  s/              ra   r  c                       e Zd ZdS )>ProtocolTests.test_bundled_protocol_instance_works.<locals>.C2Nr}   rm   ra   r_   r  r  N  rv  ra   r  )r   rN   r  r  )rZ   r  r  r  s       r_   $test_bundled_protocol_instance_worksz2ProtocolTests.test_bundled_protocol_instance_worksI  s    a!3444	 	 	 	 	# 	 	 		 	 	 	 	 	 	 	BDDa$$$$$ra   c                     t            G d dt          j        j        t                                } G d d          } G d d          }|                     ||           |                     ||           d S )Nc                       e Zd Zd ZdS )@ProtocolTests.test_collections_protocols_allowed.<locals>.Customc                     d S re   rm   r   s    r_   closezFProtocolTests.test_collections_protocols_allowed.<locals>.Custom.closeV  r   ra   N)rj   rk   rl   r  rm   ra   r_   Customr  T  r  ra   r  c                       e Zd ZdS );ProtocolTests.test_collections_protocols_allowed.<locals>.ANr}   rm   ra   r_   r   r  X  r   ra   r   c                       e Zd Zd Zd ZdS );ProtocolTests.test_collections_protocols_allowed.<locals>.Bc                     g S re   rm   r   s    r_   __iter__zDProtocolTests.test_collections_protocols_allowed.<locals>.B.__iter__Z  r  ra   c                     dS r(  rm   r   s    r_   r  zAProtocolTests.test_collections_protocols_allowed.<locals>.B.close\  r  ra   N)rj   rk   rl   r  r  rm   ra   r_   rS  r  Y  s2              ra   rS  )r*   r  r  rF  r'   r`   rc   )rZ   r  r   rS  s       r_   "test_collections_protocols_allowedz0ProtocolTests.test_collections_protocols_allowedS  s    		! 	! 	! 	! 	![_-x 	! 	! 
		! 		 	 	 	 	 	 	 	 	a(((  F+++++ra   c                     |                      t                    5   G d dt          t                    }d d d            n# 1 swxY w Y    G d dt          j        t                    }d S )Nc                       e Zd ZdS )EProtocolTests.test_builtin_protocol_allowlist.<locals>.CustomProtocolNr}   rm   ra   r_   CustomProtocolr  d  r   ra   r  c                       e Zd ZdS )KProtocolTests.test_builtin_protocol_allowlist.<locals>.CustomContextManagerNr}   rm   ra   r_   CustomContextManagerr	  g  rv  ra   r
  )r   r   r   r'   rN   ContextManager)rZ   r  r
  s      r_   test_builtin_protocol_allowlistz-ProtocolTests.test_builtin_protocol_allowlistb  s    y)) 	 	    8   	 	 	 	 	 	 	 	 	 	 	 	 	 	 		 	 	 	 	6#8( 	 	 	 	 	s   AAAc                      G d dt                     }|                     t          d          5  t          d|           d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZU eed<   dS )CProtocolTests.test_non_runtime_protocol_isinstance_check.<locals>.Prl  Nr1  rm   ra   r_   r  r  k           FFFFFra   r  z@runtime_checkablerp   )r'   r   r   r   rZ   r  s     r_   *test_non_runtime_protocol_isinstance_checkz8ProtocolTests.test_non_runtime_protocol_isinstance_checkj  s    	 	 	 	 	 	 	 	 ##I/CDD 	 	q!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   AAAc                 \     G d dt                     } G d d|          } |             d S )Nc                       e Zd ZU eed<   dS )-ProtocolTests.test_super_call_init.<locals>.Prl  Nr1  rm   ra   r_   r  r  r  r  ra   r  c                        e Zd Z fdZ xZS )/ProtocolTests.test_super_call_init.<locals>.Fooc                 H    t                                                       d S re   )r|  r*  )rZ   r  s    r_   r*  z8ProtocolTests.test_super_call_init.<locals>.Foo.__init__v  s      """""ra   rj   rk   rl   r*  r  r  s   @r_   r  r  u  s8        # # # # # # # # #ra   r  )r'   )rZ   r  r  s      r_   test_super_call_initz"ProtocolTests.test_super_call_initq  sg    	 	 	 	 	 	 	 		# 	# 	# 	# 	#! 	# 	# 	# 	ra   c                     t           t           G d dt                                            }|                     t          |           |                     t	                      |           d S )Nc                       e Zd ZdS )MProtocolTests.test_empty_protocol_decorated_with_final.<locals>.EmptyProtocolNr}   rm   ra   r_   r  r  |  s        '*sra   r  )r&   r*   r'   r`   r,  r   )rZ   r  s     r_   (test_empty_protocol_decorated_with_finalz6ProtocolTests.test_empty_protocol_decorated_with_final{  sg    		*****H** 
	 
*fm444fhh66666ra   c                 $   t           t           G d dt                                            }|                     t          |           |                     t          |           |                     d|           |                     d|           d S )Nc                       e Zd ZdedefdZdS )]ProtocolTests.test_protocol_decorated_with_final_callable_members.<locals>.ProtocolWithMethodr2  r   c                     d S re   rm   )rZ   r2  s     r_   r6  zhProtocolTests.test_protocol_decorated_with_final_callable_members.<locals>.ProtocolWithMethod.startswith  r   ra   N)rj   rk   rl   rX  r  r6  rm   ra   r_   ProtocolWithMethodr"    s(         ;:::::::ra   r$  r  r   )	r&   r*   r'   r`   rX  rc   r   r   r   )rZ   r$  s     r_   3test_protocol_decorated_with_final_callable_memberszAProtocolTests.test_protocol_decorated_with_final_callable_members  s    			; 	; 	; 	; 	; 	; 	; 
	 
	; 	c#5666  &8999e%7888  %788888ra   c                    t           t           G d dt                                            } G d d          }d}|                     t          |          5  t          ||           d d d            n# 1 swxY w Y   |                     t          |          5  t          t          |           d d d            n# 1 swxY w Y   |                      |            |           |                     d|           d S )Nc                       e Zd ZU eed<   dS )kProtocolTests.test_protocol_decorated_with_final_noncallable_members.<locals>.ProtocolWithNonCallableMemberrl  Nr1  rm   ra   r_   ProtocolWithNonCallableMemberr(    s          FFFFFra   r)  c                       e Zd ZdZdS )QProtocolTests.test_protocol_decorated_with_final_noncallable_members.<locals>.Foor   Nr  rm   ra   r_   r  r+    s        AAAra   r  <Protocols with non-method members don't support issubclass()r   	r&   r*   r'   r   r   rW   r   r   r   )rZ   r)  r  only_callable_members_pleases       r_   6test_protocol_decorated_with_final_noncallable_memberszDProtocolTests.test_protocol_decorated_with_final_noncallable_members  s   			 	 	 	 	H 	 	 
	 
		 	 	 	 	 	 	 	 L 	% ##I/KLL 	; 	;s9:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; ##I/KLL 	; 	;s9:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	ccee%BCCC  %BCCCCC$   A55A9<A9B==CCc                    t           t           G d dt                                            } G d d          }d}|                     t          |          5  t          ||           d d d            n# 1 swxY w Y   |                     t          |          5  t          t          |           d d d            n# 1 swxY w Y   |                      |            |           |                     d|           d S )Nc                   "    e Zd ZU eed<   ddZdS )`ProtocolTests.test_protocol_decorated_with_final_mixed_members.<locals>.ProtocolWithMixedMembersrl  r   Nc                     d S re   rm   r   s    r_   methodzgProtocolTests.test_protocol_decorated_with_final_mixed_members.<locals>.ProtocolWithMixedMembers.method  r   ra   r   N)rj   rk   rl   r   r   r5  rm   ra   r_   ProtocolWithMixedMembersr3    s)          FFF))))))ra   r7  c                       e Zd ZdZddZdS )KProtocolTests.test_protocol_decorated_with_final_mixed_members.<locals>.Foor   r   Nc                     d S re   rm   r   s    r_   r5  zRProtocolTests.test_protocol_decorated_with_final_mixed_members.<locals>.Foo.method  r   ra   r6  )rj   rk   rl   rl  r5  rm   ra   r_   r  r9    s!        A))))))ra   r  r,  r   r-  )rZ   r7  r  r.  s       r_   0test_protocol_decorated_with_final_mixed_membersz>ProtocolTests.test_protocol_decorated_with_final_mixed_members  s   			* 	* 	* 	* 	*x 	* 	* 
	 
	*	* 	* 	* 	* 	* 	* 	* 	*
 L 	% ##I/KLL 	6 	6s4555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 ##I/KLL 	6 	6s4555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	ccee%=>>>  %=>>>>>r0  N)<rj   rk   rl   ra  rk  rn  r~  r  r  r  r  r  r  r  r+  r4  r@  rj  r  r  r  r  r  r  r  r  r  r'  r<  rC  rN  rd  ru  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r%  r/  r;  rm   ra   r_   rR  rR  c	  s       ' ' ',0 0 0 2 2 2) ) ),  :! ! !
! 
! 
!& & &$% % %@!$ !$ !$F.! .! .!`HX HX HXT> > >$ $ $64# 4# 4#lE1 E1 E1N< < <"#2 #2 #2J( ( ($* * *% % %"& & &"& & &$) ) )$) ) )4. . .&  + + +(!, !, !,F/ / /2  "
= 
= 
=C C C	> 	> 	>, , ,3 3 38  ' ' ':( ( (* * *:: : :< < <> > >< < <: : :
< < <9 9 9< < <% % %, , ,      7 7 7	9 	9 	9D D D,? ? ? ? ?ra   rR  c                   L   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d 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d 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'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5 Z7d6S )7GenericTestsc                 *   t           t          t          f         }|                     |j        d           |                     t                    5  |t                    d d d            n# 1 swxY w Y   |                     t                    5  |t          t          f          d d d            n# 1 swxY w Y   t           t          t          f         }|                     |j        t          f           |t                    |                     t                    5  |t          t          f          d d d            n# 1 swxY w Y   t           t          t          f         }|                     t                    5  t          |t                      d d d            n# 1 swxY w Y   | 
                     |            t                      t          d          }|                     t          t          |         t          z           j        |f           d S )Nrm   r   )r  rX  r   r   rg  r   r   r  r   rW   r   r   r   r  r  )rZ   r`  re  SM1r   s        r_   r  zGenericTests.test_basics  s   #s(#)2...y)) 	 	cFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	c3hKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	"c'")B5111	#y)) 	 	c3hKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	CH%y)) 	+ 	+sM***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ccee]333CLLd1go.=tDDDDDsH   A))A-0A-B//B36B3D<<E E :FF #F c                 b   t          d          }t          d          }|                     t                    5  t          |         |          d d d            n# 1 swxY w Y   |                     t                    5  t          |         |          d d d            n# 1 swxY w Y   |                     t                    5   G d dt          |         t          |                   }d d d            n# 1 swxY w Y   |                     t                    5  t	          g t
          t                              d d d            n# 1 swxY w Y   |                     t                    5  t          t          t
          t                              d d d            n# 1 swxY w Y   |                     t                    5   G d dt                    }d d d            n# 1 swxY w Y   |                     t                    5   G d dt          |         t          |                   }d d d            n# 1 swxY w Y   |                     t                    5   G d	 dt
          |         t          |                   }d d d            n# 1 swxY w Y   |                     t                    5  t          d
          d d d            n# 1 swxY w Y    G d dt          |                   }|                     t                    5  |d
          d d d            d S # 1 swxY w Y   d S )Nr   rE  c                       e Zd ZdS +GenericTests.test_generic_errors.<locals>.CNr}   rm   ra   r_   r  rC    r   ra   r  c                       e Zd ZdS )4GenericTests.test_generic_errors.<locals>.NewGenericNr}   rm   ra   r_   
NewGenericrE    r   ra   rF  c                       e Zd ZdS 3GenericTests.test_generic_errors.<locals>.MyGenericNr}   rm   ra   r_   	MyGenericrI    r   ra   rJ  c                       e Zd ZdS rH  r}   rm   ra   r_   rJ  z3GenericTests.test_generic_errors.<locals>.MyGeneric  r   ra   rm   c                       e Zd ZdS rB  r}   rm   ra   r_   r  z+GenericTests.test_generic_errors.<locals>.C  r   ra   )	r   r   r   r#   r   r   r   rW   r  )rZ   r   rE  r  rF  rJ  s         r_   test_generic_errorsz GenericTests.test_generic_errors  s9   CLLCLLy)) 	 	AJqMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	AJqMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	1 	100000GAJ
000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1y)) 	& 	&r49%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&y)) 	( 	(tT#Y'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(y)) 	+ 	+*****W***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+y)) 	9 	988888GAJ
888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9y)) 	6 	655555DGWQZ555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6y)) 	 	BKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	!!!!!
!!!y)) 	 	bEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA A>BB"%B"&C55C9<C9!EEE,&FF"%F"G##G'*G'&H::H>H>&JJJ6KKK	L$$L(+L(c                 J   t          d          }t          d          }|                     t                    5  t          ||f          d d d            n# 1 swxY w Y   |                     t                    5  t          |||f          d d d            d S # 1 swxY w Y   d S )Nr   rE  )r   r   r   r#   )rZ   r   rE  s      r_   	test_initzGenericTests.test_init  s   CLLCLLy)) 	 	AqDMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	Aq!G	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   AAA:BBBc                     G d dt           j        t                             } G d d|          }|                     |j        d           |                     t                    5  |j         d d d            n# 1 swxY w Y   d|_        d|_         G d d	|          } G d
 d|t                             }|                     |j        d           |                     |j        d           |                     |j        d           d S )Nc                        e Zd Z fdZ xZS )*GenericTests.test_init_subclass.<locals>.Xc                 H     t                      j        di | d| _        d S )Nr   rm   )r|  __init_subclass__rC  )r[   rP  r  s     r_   rT  z<GenericTests.test_init_subclass.<locals>.X.__init_subclass__  s+    ))33F333ra   rj   rk   rl   rT  r  r  s   @r_   r`  rR    s8                ra   r`  c                       e Zd ZdS )*GenericTests.test_init_subclass.<locals>.YNr}   rm   ra   r_   re  rW    rv  ra   re  r   rp   r   c                       e Zd ZdS )*GenericTests.test_init_subclass.<locals>.ZNr}   rm   ra   r_   ZrY    rv  ra   rZ  c                       e Zd ZdS )*GenericTests.test_init_subclass.<locals>.WNr}   rm   ra   r_   Wr\    rv  ra   r]  )rN   r#   r   r   rC  r   AttributeErrorr   )rZ   r`  re  rZ  r]  s        r_   test_init_subclasszGenericTests.test_init_subclass  s   	 	 	 	 	q! 	 	 		 	 	 	 	 	 	 	$$$~.. 	 	FF	 	 	 	 	 	 	 	 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	# 	 	 	###$$$$$$$$s   'A;;A?A?c                     |                      t          t                    dt           d           |                      t          t                    dt           d           d S )Nr   z.SimpleMapping'>z.MySimpleMapping'>)r   r   r  rj   r&  r   s    r_   r   zGenericTests.test_repr  st    m,,>H>>>	@ 	@ 	@o..@H@@@	B 	B 	B 	B 	Bra   c                 r   t          d          }t          d          } G d dt          |                   }|t          ||f                  }|                     ||t          ||f                             |                     ||t          ||f                             ||t
          f         }|                     |||t
          f                    |                     |||t
          f                    |                     |||t          f                    |t                   }|                     ||t                              |                     ||t
                              |                     |||                    |                     t          |                              d                     d S )Nr   rE  c                       e Zd ZdS )'GenericTests.test_chain_repr.<locals>.CNr}   rm   ra   r_   r  rc    rv  ra   r  z.C[typing.Tuple[str, int]])	r   r#   r   r   r   r   rX  r   r0  )rZ   r   rE  r  r`  re  rZ  s          r_   test_chain_reprzGenericTests.test_chain_repr  s   CLLCLL	 	 	 	 	
 	 	 	 eAqDkNAeAqDkN+++Aqq!t~...afIAafI&&&AqCy)))AqCy)))cFAcF###Aqv&&&Aqt$$$A(* * 	+ 	+ 	+ 	+ 	+ra   c                 P   t          d          }t          dd          }t          d          }|                     t          t                    d           |                     t          t          |                   d           |                     t          t          |                   d           |                     t          t          |         |         t                             d	           |                     t          t          t                             d	           d S )
Nr   UTrS  rE  ztyping.Listztyping.List[~T]ztyping.List[+U]ztyping.List[int])r   r   r   r   r   )rZ   r   rf  rE  s       r_   test_new_reprzGenericTests.test_new_repr%  s    CLLC4(((CLLd]333d1g(9:::d1g(9:::d1gajo..0BCCCd3i*<=====ra   c                    t          d          }t          d          }|                     t          t          j        ||f         ||f                   d           |                     t          t
          t          ||f                  t          |f                   d           |                     t          t
          t          ||f                  t
          t                                      d           d S )Nr   TSztyping.Mapping[~TS, ~T]z"typing.List[typing.Tuple[int, ~T]]z=typing.List[typing.Tuple[typing.List[int], typing.List[int]]])r   r   r   rN   rI  r   r   r   )rZ   r   ri  s      r_   test_new_repr_complexz"GenericTests.test_new_repr_complex0  s    CLLT]]fnQU3BE:;;=VWWWd5B<0a899=	? 	? 	?eAqDk"49-..K	
 	
 	
 	
 	
ra   c                 b   t          d          }|                     t          t          |                   d           |                     t          t          j        |                   d            G d dt          j        t          t          f                   }t          |j                   d S )Nr   ztyping.Generic[~T]ztyping.Protocol[~T]c                       e Zd ZdS )*GenericTests.test_new_repr_bare.<locals>.CNr}   rm   ra   r_   r  rm  @  r   ra   r  )	r   r   r   r#   rN   r'   r    r   __mro__rZ   r   r  s      r_   test_new_repr_barezGenericTests.test_new_repr_bare<  s    CLLgaj))+?@@@foa0113HIII+++++CH%+++QYra   c                 @   t          d          } G d dt          |                   } |            }d|_        |                     |j        ddi            G d d|t
                             } |            }d|_        |                     |j        d	di           d S )
Nr   c                       e Zd ZdS )!GenericTests.test_dict.<locals>.BNr}   rm   ra   r_   rS  rs  G  rv  ra   rS  r   r  c                       e Zd ZdS )!GenericTests.test_dict.<locals>.CNr}   rm   ra   r_   r  ru  N  rv  ra   r  r  r  )r   r#   r  r   r  r   r  )rZ   r   rS  r  r  r  s         r_   	test_dictzGenericTests.test_dictD  s    CLL	 	 	 	 	
 	 	 	 ACCeR[111	 	 	 	 	# 	 	 	 ACCeU^44444ra   c                    t          d          } G d dt          |                   }|                     |t                   j        d           |                     ||t                            j        d           d||t                            _        |                     |j        d           |                     |t
                   j        d           d|t          t
                            _        |                     |j        d           |                     |t          t                            j        d           |                      |            j        d           |                      |t          t
                                        j        d            G d d||                   }|                     |t                   j        d           |                     |j        d           d	|_        d
|t                   _        |                     |j        d           |                     |t                   j        d           |                     |j        d
           |                     |t
                   j        d	           d S )Nr   c                       e Zd ZdZdS )<GenericTests.test_subscripted_generics_as_proxies.<locals>.CdefNr  rm   ra   r_   r  ry  W  s        AAAra   r  rz  changednewc                       e Zd ZdS )<GenericTests.test_subscripted_generics_as_proxies.<locals>.DNr}   rm   ra   r_   rT  r~  e  rv  ra   rT  zfrom derived zzfrom derived x)	r   r#   r   r   rl  rX  r   r  r   rZ   r   r  rT  s       r_   $test_subscripted_generics_as_proxiesz1GenericTests.test_subscripted_generics_as_proxiesU  s*   CLL	 	 	 	 	
 	 	 	35)))1S6e,,,!C&	i(((39---$s)e$$$5:%000	***5:*E222	 	 	 	 	! 	 	 	39---e$$$##i(((35))).///3#344444ra   c                 l   t          d          } G d dt          j        j        t          |                   }|                    t                     |                     d|           |t                    |                     d|           |                                 |	                                 d S )Nr   c                       e Zd ZdS ).GenericTests.test_abc_registry_kept.<locals>.CNr}   rm   ra   r_   r  r  r  r   ra   r  rp   )
r   r  r  rI  r#   r?  r   r   _abc_registry_clear_abc_caches_clearro  s      r_   test_abc_registry_keptz#GenericTests.test_abc_registry_keptp  s    CLL99999'999	

3a###	#a###		ra   c                      G d dt           t          t          f                   }|                     i |           |                     t          |           d S )Nc                       e Zd ZdS )5GenericTests.test_false_subclasses.<locals>.MyMappingNr}   rm   ra   r_   	MyMappingr  {  r   ra   r  )r!   rX  r   rc   r  )rZ   r  s     r_   test_false_subclassesz"GenericTests.test_false_subclassesz  sW    77777sCx0777  Y///  y11111ra   c                     G d dt           t          t          f                   } |                                             |                      |            t          j        j                    |                      |            t                      |                      |            t                     |                     i |           d S )Nc                   ,    e Zd Zd Zd Zd Zd Zd ZdS )'GenericTests.test_abc_bases.<locals>.MMc                     d S re   rm   rZ   r  s     r_   r  z3GenericTests.test_abc_bases.<locals>.MM.__getitem__  r  ra   c                     d S re   rm   rZ   r  r:  s      r_   r   z3GenericTests.test_abc_bases.<locals>.MM.__setitem__  rW  ra   c                     d S re   rm   r  s     r_   __delitem__z3GenericTests.test_abc_bases.<locals>.MM.__delitem__  rW  ra   c                      t          d          S rN  iterr   s    r_   r  z0GenericTests.test_abc_bases.<locals>.MM.__iter__      Bxxra   c                     dS r(  rm   r   s    r_   __len__z/GenericTests.test_abc_bases.<locals>.MM.__len__  r  ra   Nrj   rk   rl   r  r   r  r  r  rm   ra   r_   MMr    _                       ra   r  )r!   rX  updater   r  r  r   r   )rZ   r  s     r_   test_abc_baseszGenericTests.test_abc_bases  s    
	 
	 
	 
	 
	S) 
	 
	 
	 	bbddKO$BCCCbbddN333  t,,,  R(((((ra   c                 <    G d dt           t          t          f         t          j        j                   } G d dt          j        j         t           t          t          f                   }|                     |j        t          j        j         t          f           d S )Nc                       e Zd ZdS )-GenericTests.test_multiple_bases.<locals>.MM1Nr}   rm   ra   r_   MM1r    rv  ra   r  c                       e Zd ZdS )-GenericTests.test_multiple_bases.<locals>.MM2Nr}   rm   ra   r_   MM2r    rv  ra   r  )r!   rX  r  r  r   	__bases__r#   )rZ   r  r  s      r_   test_multiple_basesz GenericTests.test_multiple_bases  s    	 	 	 	 	.c*KO,J 	 	 		 	 	 	 	+/0.c2J 	 	 	)G(QRRRRRra   c                     t          d          } G d dt          j        t          |f                   }|                     |j        t          j        t          |f         f           d S )Nr   c                       e Zd ZdS )'GenericTests.test_orig_bases.<locals>.CNr}   rm   ra   r_   r  r    r   ra   r  )r   rN   r    rX  r   __orig_bases__ro  s      r_   test_orig_baseszGenericTests.test_orig_bases  s_    CLL)))))CF#))))FKQ,?+ABBBBBra   c                    d }|                       |ddit          j        t          t          f                              |                      |ddit          j        t          t          f                              |                     t                    5   |ddit          j        t          t          f                    d d d            n# 1 swxY w Y   d } G d dt          t                             }|                       | |t                               |t                                        |                      | |t                               |t                                        |                      | |t                               t                               |                     t                    5   |g d|t                              d d d            n# 1 swxY w Y   d } G d	 d
t          t                             }|                       |g d|                     |                      |ddg|                     d S )Nc                     t          |j                  dk    rt          |j        r8|j        \  t	          fd|                                 D                       S d S )Nr   c              3   ^   K   | ]'\  }}t          |          ot          |          V  (d S re   )r   ).0r  r:  r   r   s      r_   	<genexpr>zSGenericTests.test_naive_runtime_checks.<locals>.naive_dict_check.<locals>.<genexpr>  sT        1 q"%%;*Q*;*;     ra   )r   rg  r  rf  allr  )rt  tpr   r   s     @@r_   naive_dict_checkz@GenericTests.test_naive_runtime_checks.<locals>.naive_dict_check  s    2$%%)))){ B      #		      ra   rl  rp   c                 F    t          | d          st          | j        |k    S )Nr  )hasattrr  r  rt  r  s     r_   naive_generic_checkzCGenericTests.test_naive_runtime_checks.<locals>.naive_generic_check  s)    3 011 *))%++ra   c                       e Zd ZdS )4GenericTests.test_naive_runtime_checks.<locals>.NodeNr}   rm   ra   r_   Noder    r   ra   r  r  c                 :    t          fd| D                       S )Nc              3   d   K   | ]*}t          |j        d          j        d                    V  +dS )r   N)r   r  rf  )r  rl  r  s     r_   r  zXGenericTests.test_naive_runtime_checks.<locals>.naive_list_base_check.<locals>.<genexpr>  sQ       % % "!R%6q%9%B1%EFF % % % % % %ra   )r  r  s    `r_   naive_list_base_checkzEGenericTests.test_naive_runtime_checks.<locals>.naive_list_base_check  s;     % % % % #% % % % % %ra   c                       e Zd ZdS )1GenericTests.test_naive_runtime_checks.<locals>.CNr}   rm   ra   r_   r  r    r   ra   r  r   r  )r   rN   r    rX  r   r   r   r  r   r#   r   )rZ   r  r  r  r  r  s         r_   test_naive_runtime_checksz&GenericTests.test_naive_runtime_checks  s   		 		 		 	((#q6;sCx3HIIJJJ))1c(FKS4IJJKKK233 	< 	<aXv{36':;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<	, 	, 	,
 	$####71:###++IDIKKcCCDDD,,YT#Y[[$s)DDEEE,,YT#Y[[$??@@@233 	6 	6			49555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6	% 	% 	% 	 S	--iii;;<<<..Sz1==>>>>>s$   +CCCG,,G03G0c                    t          d          }t          d          }t          d          } G d dt          |         |         |                   } G d d|t          |         |         |                   }|                     |j        |f           |                     |j        |f           |                     |t                   j        d           |                     |t                   j        d           |                     |t                   j        t          f           |                     |t                   j        t          f           |                     |j        t          t          f           |                     |j        |t          t          f           |                     |j	        t          |         |         |         f           |                     |j	        |t          |         |         |         f           d S )	Nr   rf  rx  c                       e Zd ZdS ).GenericTests.test_multi_subscr_base.<locals>.CNr}   rm   ra   r_   r  r    r   ra   r  c                       e Zd ZdS ).GenericTests.test_multi_subscr_base.<locals>.DNr}   rm   ra   r_   rT  r    r   ra   rT  rm   )
r   r   r   rg  r   rf  r  r  r#   r  )rZ   r   rf  rx  r  rT  s         r_   test_multi_subscr_basez#GenericTests.test_multi_subscr_base  s   CLLCLLCLL#####Q
1###&&&&&471:a=&&&)A4000)A40003.3333.33333&11133&111tWo666q$&8999)DGAJqM+;<<<)AtAwqz!}+=>>>>>ra   c                    t          d          } G d dt                    }|                     t          |         t          |                    |                     t          |t
          f         |         t          |t
          f                    |                     t          d|f         j        t          |f           d S )Nr   c                       e Zd ZdS ).GenericTests.test_subscript_meta.<locals>.MetaNr}   rm   ra   r_   Metar    r   ra   r  .)	r   r   r   r4   r   r   r"   rf  Ellipsis)rZ   r   r  s      r_   test_subscript_metaz GenericTests.test_subscript_meta  s    CLL4dT$Z000q#vt,eD#I.>???#t),5$7GHHHHHra   c                     G d dt           t                             } G d dt           t                             }|                     ||           |                     t          j        t
                   t          j        t
                              |                     |j        |j                   |                     t          j        j        |j        t
                            t          j        j        |j        t
                                       |                     ||j                   |                     |t          j                   |                     |t          j        j                   |                     |j        t          j                   |                     |j        t          j        j                   |                     |t
                   |j        t
                              |                     |t          t                            |j        t          t                                       |                     |t
                   t          j        t
                              |                     |t
                   t          j        j        t
                              |                     |j        t                   t          j        t                              |                     |j        t          t                            t          j        j        t          t                                       |                     t          |t
                            t          |j        t
                                       |                     t          |t          t                                     t          |j        t          t                                                |                     t          t
          |t
                   f         t          t
          t          j        t
                   f                    |                     t          |t
                   |t
                   f         t          |t
                   t          j        t
                   f                    |                     t          j        |t
                            t          j        t          j        j        t
                                       |                     t!          t          |t
                                                          d                     |                     t!          t          |j        t
                                                          d                     |                     t!          t          t          j        t
                                                          d                     |                     t!          t          t          j        j        t
                                                          d                     d S )	Nc                       e Zd ZdS )+GenericTests.test_generic_hashes.<locals>.ANr}   rm   ra   r_   r   r            Cra   r   c                   6    e Zd Z G d dee                   ZdS )+GenericTests.test_generic_hashes.<locals>.Bc                       e Zd ZdS )-GenericTests.test_generic_hashes.<locals>.B.ANr}   rm   ra   r_   r   r            ra   r   N)rj   rk   rl   r#   r   r   rm   ra   r_   rS  r    sB            GAJ     ra   rS  z<locals>.A[str]]z<locals>.B.A[str]]zmod_generics_cache.A[str]]zmod_generics_cache.B.A[str]])r#   r   r   rL   r   rX  rS  r   r   r   r   r   r   rN   	FrozenSetr   r   r0  rZ   r   rS  s      r_   test_generic_hashesz GenericTests.test_generic_hashes  sv   	 	 	 	 	
 	 	 		 	 	 	 	
 	 	 	 	A+-c24F4H4MNNNac"""+-/C9+-/C9	; 	; 	; 	Aqs###A13444A135666AC!3!5666AC!3!5!7888AcFACH---Ad3iL!#d3i.999AcF$6$8$=>>>AcF$6$8$:3$?@@@ACH&8&:3&?@@@ACS	N,>,@,B49,MNNNE!C&M5S?;;;E!DI,/qs49~1FGGGE#qv+.c;M;OPS;T6T0UVVVE!C&!C&.1!!C&*<*>s*C"CD	F 	F 	FF,QsV4",-?-A-CC-HI	K 	K 	K 	U1S6]++445GHHIIIU13s8_--667KLLMMMU#5#7#<=>>!">??	A 	A 	AU#5#7#9##>?@@!"@AA	C 	C 	C 	C 	Cra   c                 2   t          d          }t          d          }|                     t          ||f         t                   t          t          t          f                    |                     t          j        t          ||f                  |         t          j        t          ||f                             |                     t                    5  t          |t          f         d          d d d            n# 1 swxY w Y   |                     t          |t          f         t                   t                     |                     t          ||f         t          t          t          t          f         f         t          t          t          f                     G d d          } G d d|          }|                     t          ||f         t          ||f                  t          ||f                    |                     t          |g|f         t                   t          t          gt          f                    |                     t          dt          |         f         t                   t          dt          t                   f                    d S )	Nr   rf  rm   c                       e Zd ZdS )9GenericTests.test_extended_generic_rules_eq.<locals>.BaseNr}   rm   ra   r_   Baser    r   ra   r  c                       e Zd ZdS )<GenericTests.test_extended_generic_rules_eq.<locals>.DerivedNr}   rm   ra   r_   Derivedr    r   ra   r  .)r   r   r   r   rN   rF  r   r   r   rX  r"   r   r   )rZ   r   rf  r  r  s        r_   test_extended_generic_rules_eqz+GenericTests.test_extended_generic_rules_eq  s$   CLLCLLq!tS)5c?;;;q!t5a8&/%PQSTPT+:VWWWy)) 	 	!S&M"	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	q#vs+S111q!tS%S/%9:E#s(OLLL     d   q$wdGm(<=uT7]?STTT1#q&)"-xb/ABBB#tAw,/4hsDI~6NOOOOOs   C;;C?C?c                    t          d          }|                     t          t          t          t
          f                                       dd          d           |                     t          t          t          t          t                   f                                       dd          d           |                     t          t
          dt          |         f         t                                                 dd          d           |                     t          t
          g t          |         f         t                                                 dd          d           d S )	Nr   ztyping. zUnion[Tuple, Callable]zUnion[Tuple, Tuple[int]].zCallable[..., Optional[int]]zCallable[[], List[int]])
r   r   r   r   r   r"   r  r   r   r   rK  s     r_    test_extended_generic_rules_reprz-GenericTests.test_extended_generic_rules_repr  s(   CLLeE8O455==iLL1	3 	3 	3eE5:$5677??	2NN3	5 	5 	5hsHQK'78=>>FFyRTUU7	9 	9 	9hr47{3C899AA)RPP2	4 	4 	4 	4 	4ra   c                    dt           t           d                  fd}dt          t          t          d                            fd}dt          t          d                   t          z  fd} G d d          }|                     t          |t                      t                                dt           t           |                  i           |                     t          |t                      t                                dt          t          |                  i           |                     t          |t                      t                                dt          |t          z           t          z  i           t          d          }t          |d	f         }d|fd
}| 
                    t          |t                      t                                d         |           t          d	t           |         f         }d|fd}	| 
                    t          |	t                      t                                d         |           d S )Nrl  CCc                     d S re   rm   rS  s    r_   foobarz5GenericTests.test_generic_forward_ref.<locals>.foobar   r   ra   c                     d S re   rm   rS  s    r_   foobar2z6GenericTests.test_generic_forward_ref.<locals>.foobar2!  r   ra   zCC | intc                     d S re   rm   rS  s    r_   foobar3z6GenericTests.test_generic_forward_ref.<locals>.foobar3"  r   ra   c                       e Zd ZdS )1GenericTests.test_generic_forward_ref.<locals>.CCNr}   rm   ra   r_   r  r  #  r   ra   r   .c                     d S re   rm   rS  s    r_   barfooz5GenericTests.test_generic_forward_ref.<locals>.barfoo3  r   ra   c                     d S re   rm   rS  s    r_   barfoo2z6GenericTests.test_generic_forward_ref.<locals>.barfoo26  r   ra   )r   r  r@   r   r   r+   r  r  r   r   r   r"   )
rZ   r  r  r  r  r   ATr  CTr  s
             r_   test_generic_forward_refz%GenericTests.test_generic_forward_ref  s   ,d4:&,,,,9tDD!1!1239999?tJz223c9????6799fhh77$tBx.!	
 	
 	
 	7GIIvxx88$tBx.!	
 	
 	
 	7GIIvxx88$rCx.3&'	
 	
 	

 CLL1c6]bnVWYYAA#FKKKc47l#rnWgiiBB3GLLLLLra   c           
          G d d          }|                      t          |t                      t                                dt          |         i            G d d          }|                      t          |t                      t                                dt
          |t          t          t          |                           f         i           i }t          t          j	        d          |           |d         }|                      |j
        d         d           |                      t          |t                      t                                dt          t          |                  i           t          d	         }d
|fd}|                      t          |t                      t                                d
t          t          t          d	                            i           d S )Nc                   &    e Zd ZU ed         ed<   dS )8GenericTests.test_generic_pep585_forward_ref.<locals>.C1r  r   Nrj   rk   rl   r  r   rm   ra   r_   r  r  <  s         DzMMMMMra   r  r   c                   N    e Zd ZU edeeed                           f         ed<   dS )8GenericTests.test_generic_pep585_forward_ref.<locals>.C2r  r  r   N)rj   rk   rl   r  r  r   r   rm   ra   r_   r  r  C  s6         D$tDJ/00111111ra   r  zf
        from __future__ import annotations
        class C3:
            a: List[list["C2"]]
        r  zList[list['C2']]r`  rl  c                     d S re   rm   rS  s    r_   rh   z7GenericTests.test_generic_pep585_forward_ref.<locals>.fZ  r   ra   )r   r+   r  r  r  r  r   r  textwrapdedentr   r@   )rZ   r  r  scoper  r`  rh   s          r_   test_generic_pep585_forward_refz,GenericTests.test_generic_pep585_forward_ref9  s   	 	 	 	 	 	 	 	2wyy&((33$r(O	
 	
 	

	2 	2 	2 	2 	2 	2 	2 	22wyy&((33$r4T"X//01	
 	
 	
 X_    		 	 	
 4[+C02DEEE2wyy&((33$tBx.!	
 	
 	
 I1gii22$tJsOO,-.	
 	
 	
 	
 	
ra   c                     G d dt           t          t          f                   } G d dt           t          df                   } G d dt          j        t                             }|                     |j        t          t          f           |                     |t          t          f         j	        t          t          f           |                     |t          t          f         j
        |           |                     |j        t          f           |                     t          |t                                                 d          d	         d
           |                     |j        t          f           |                      |            t          j        j                   |                     |t          j        j                   |                      |            t"                     |                     |t"                     |                     t&                    5  t)          t           t          df         t          j                   d d d            n# 1 swxY w Y   |                     t&                    5  t)          t           t          df         t          j                   d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS )@GenericTests.test_extended_generic_rules_subclassing.<locals>.T1Nr}   rm   ra   r_   r  r  a  r   ra   r  c                       e Zd ZdS )@GenericTests.test_extended_generic_rules_subclassing.<locals>.T2Nr}   rm   ra   r_   r  r  b  r   ra   r  .c                       e Zd Zd ZdS )@GenericTests.test_extended_generic_rules_subclassing.<locals>.C1c                     dS )NFrm   )rZ   items     r_   __contains__zMGenericTests.test_extended_generic_rules_subclassing.<locals>.C1.__contains__d  s    ura   N)rj   rk   rl   r  rm   ra   r_   r  r  c  r  ra   r  .zC1[int])r   r   r   rN   	Containerr   rg  r   rX  rf  rh  r   splitr   r  r  r`   r  r   r   rW   SequencerF  )rZ   r  r  r  s       r_   'test_extended_generic_rules_subclassingz4GenericTests.test_extended_generic_rules_subclassing`  s   #####q"u###$$$$$q#v$$$	 	 	 	 	!!$ 	 	 	 	*QG444CH.c
;;;CF.333*QD111 	bg,,S11"5yAAA*QD111bbddKO$=>>>b+/";<<<bbddE***b%(((y)) 	9 	9uS#X888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9y)) 	9 	9uS#X888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s$   )-I""I&)I&-KKKc                 T   |                      t                    5  t          t                    d d d            n# 1 swxY w Y   |                      t                    5  t          t
                    d d d            n# 1 swxY w Y   |                      t                    5  t          t          t                             d d d            n# 1 swxY w Y   |                      t                    5  t          t          t                             d d d            d S # 1 swxY w Y   d S re   )r   r   r   r   r   r   r$   r   r   s    r_   test_fail_with_bare_unionz&GenericTests.test_fail_with_bare_union}  s   y)) 	 	KK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	(OO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	$ 	$Xc]##	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$y)) 	  	 #	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 sC   :>>A>>BB#CCC2DD!$D!c                    t          d          }|                     t                    5  t          t                    d d d            n# 1 swxY w Y   |                     t                    5  t
          t          |                   d d d            n# 1 swxY w Y   |                     t                    5  t          t          j                  d d d            d S # 1 swxY w Y   d S r]  )r   r   r   r   r#   r   rN   r'   rK  s     r_   test_fail_with_bare_genericz(GenericTests.test_fail_with_bare_generic  s|   CLLy)) 	 	MM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	'!*	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	" 	"!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s5   A		AA.BBB8CC!$C!c                    t          d          }|                                   G d dt          ||f                   }|                      |t                               j        |           |                      |t                               j        |t                               G d dt          j	        ||f                   }|                      |t                               j        |           |                      |t                               j        |t                               G d dt          j
        t          |f                   }|                      |t                               j        |           |                      |t                               j        |t                               G d d	t          j        t          |f                   }|                      |t                               j        |           |                      |t                               j        |t                              d S )
Nr   c                       e Zd ZdS )5GenericTests.test_type_erasure_special.<locals>.MyTupNr}   rm   ra   r_   MyTupr    r   ra   r  c                       e Zd ZdS )6GenericTests.test_type_erasure_special.<locals>.MyDictNr}   rm   ra   r_   MyDictr    r   ra   r  c                       e Zd ZdS )5GenericTests.test_type_erasure_special.<locals>.MyDefNr}   rm   ra   r_   MyDefr    r   ra   r  c                       e Zd ZdS )7GenericTests.test_type_erasure_special.<locals>.MyChainNr}   rm   ra   r_   MyChainr!    r   ra   r"  )r   ri   r   r   r   r  r   r  rN   r    DefaultDictrX  ChainMap)rZ   r   r  r  r  r"  s         r_   test_type_erasure_specialz&GenericTests.test_type_erasure_special  s   CLL%%%%%E!Q$K%%%jeCjll,e444s4eCjAAA,,,,,V[A&,,,kfSkmm-v6665vc{CCC44444F&sAv.444jeCjll,e444s4eCjAAA33333foc1f-333lgclnn.8886EEEEEra   c                 t   d t           j        D             }|D ]}|                     t          |          d           |                     ||           t          |dd           rxt          |t           j                  s^t          |j        t                    rDt          |j                  dk    r,|                     |t                   j        t          f           t          |t                    rC|j        D ];}|                     t          |          d           |                     ||           <d S )Nc              3   @   K   | ]}t          t          |          V  d S re   )getattrrN   )r  els     r_   r  z4GenericTests.test_all_repr_eq_any.<locals>.<genexpr>  s,      ==##======ra   r  rg  rp   )rN   __all__r   r   r   r(  r   r   rg  r  r   r   rf  r   rn  )rZ   objsrt  bases       r_   test_all_repr_eq_anyz!GenericTests.test_all_repr_eq_any  s0   ==fn=== 	1 	1CS		2...S#&&&-t44 <&sFN;;<"3#5u==< C.//144  S!2SF;;;#t$$ 1K 1 1D''T

B777$$T40000	1 	1ra   c                    t          d          } G d dt          |                   } G d d|t                             at                      }d|_        d|_        t          t          j        dz             D ]}t          j	        ||          }t          j
        |          }|                     |j        d           |                     |j        d           |                     |j        ddd	           t          t          t          t           t"          t          t          t$          f         t"          t&                   t          t          d
f         t          d         t           t$          gt(          f         t*          j        t*          j        t                   g}|D ]`}t          t          j        dz             D ]A}t          j	        ||          }t          j
        |          }|                     ||           Bat&          t*          j        t*          j        t&          t                   t*          j        t*          j                 t*          j        t          t          t$          f                  g}	|	D ]`}t          t          j        dz             D ]A}t          j	        ||          }t          j
        |          }|                     ||           Bad S )Nr   c                       e Zd ZdS )#GenericTests.test_pickle.<locals>.BNr}   rm   ra   r_   rS  r0    rv  ra   rS  c                       e Zd ZdS )r  Nr}   rm   ra   r_   r  r    rv  ra   r  r   r  rp   r  .rm   )r   r#   r   r  r  r  rt   ru   rv   r  r  r   r  r   r   r   r"   r$   rX  r   rp  rN   r#  r  rF  r4   rI  AbstractSet)
rZ   r   rS  r  rs   r  rl  r  r  more_sampless
             r_   r  zGenericTests.test_pickle  s   CLL	 	 	 	 	
 	 	 		 	 	 	 	# 	 	 	 CC62Q677 	D 	DEQ&&AQAQUB'''QUE***QZE)B)BCCCCuhc?HTNE#s(OU2YSE5L)%v'7'<>  	' 	'Av6:;; ' 'LE**LOO  A&&&&' fov{DIFN3V5GcSVh5XZ 	' 	'Av6:;; ' 'LE**LOO  A&&&&'	' 	'ra   c                    t          d          } G d dt          |                   }t          |t          f         t          |t          f         t          d         t
          d|f         t
          t          gt          f         t          t          t          f         ||         |t                   |t                   t          j        |         t          j        t                   t          j        t                   t          j	        t          t          f         t          j	        |t          f         t          t                   t          t          |                  t          d         t          dt          f         t          d         t          j        dt          f         g}|t          gz   D ]H}|                     |t          |                     |                     |t!          |                     Id S )Nr   c                       e Zd ZdS )1GenericTests.test_copy_and_deepcopy.<locals>.NodeNr}   rm   ra   r_   r  r6    r   ra   r  rm   .)r   r   )r   r#   r   r   r   r"   r   rN   rF  r    rX  r$   r   rI  r   r   r   )rZ   r   r  thingsr#  s        r_   test_copy_and_deepcopyz#GenericTests.test_copy_and_deepcopy  sM   CLL#####71:###3-q#vb	36"HcUCZ$8S/47DItCy&/RSBT/#&(<fk#s(>S+af%x}htAw6GxS/49fnS#X.FH 3% 	- 	-AQQ(((Q,,,,	- 	-ra   c                    t          d          at          dt                    at          dt          t
                    at          d          at          t          t          t          t          t          j        t          t          j        t          t          t           t"          fD ]}|                     |          5  |                     t)          |          |           |                     t+          |          |           t-          t.          j        dz             D ]=}|                     t/          j        t/          j        ||                    |           >	 d d d            n# 1 swxY w Y   bbbbt          d          }t          d	t                    }t          d
t          t
                    }t          d          }||||fD ]v}|                     |          5  |                     t)          |          |           |                     t+          |          |           d d d            n# 1 swxY w Y   wd S )Nro  TPBrO  TPVPP)rj  rp   TLTLBTLVPL)r   ro  r   r:  rp  rX  r;  rD   r<  r   rN   rI  r$   rF  r   r   r   r"   rw   r   r   r   rt   ru   rv   r  r  )rZ   r`  rs   r=  r>  r?  r@  s          r_   $test_immutability_by_copy_and_picklez1GenericTests.test_immutability_by_copy_and_pickle  sz    T]]e3'''eUC((t__c3&/eX/ 	K 	KA A&& K Kd1ggq)))hqkk1---"6#:Q#>?? K KEMM&,v|Au/E/E"F"FJJJJKK K K K K K K K K K K K K K K
 S" T]]e3'''eUC((t__c3# 	. 	.AA&& . .d1ggq)))hqkk1---. . . . . . . . . . . . . . .	. 	.s&   <B!E**E.	1E.	'AH::H>	H>	c                    t          d           G fddt                             } |d          }|                     t          |          j        d           |                     t          |          j        d           |                     t          |          |           |                     t          |          |           d|_        |                     t          |          j        d           |                     t          |          j        d            |t                   d          }|                     t          |          j        d           |                     t          |          j        d           |                     t          |          |           |                     t          |          |           d|_        |                     t          |          j        d           |                     t          |          j        d           |                     |j        |t                              d S )Nr   c                        e Zd Zd ddfdZdS )3GenericTests.test_copy_generic_instances.<locals>.CrC  r   Nc                     || _         d S re   r  r  s     r_   r*  z<GenericTests.test_copy_generic_instances.<locals>.C.__init__   r  ra   rh  r  s   r_   r  rD    s7        !Q !4 ! ! ! ! ! !ra   r  r   rp   )	r   r#   r   r   rC  r   assertIsNotr   r  )rZ   r  r  cir   s       @r_   test_copy_generic_instancesz(GenericTests.test_copy_generic_instances  s   CLL	! 	! 	! 	! 	! 	! 	!
 	! 	! 	! AbEEar***!)2...a!$$$!a(((aq)))!)1---QsVBZZb+++"*B///b2&&&"r***b***"*A...*AcF33333ra   c           	         t          d          }t          t          |t          f         t          d|f         t
          t          t          f         t          t          t                            t          j	        t          t          f         t          j        t                   t          j        d         g}|D ]2}|                      t          j        |                      |           3d S )Nr   .whatever)r   r   r   r   r"   r   r   r   rN   rI  rX  r>   rp  rF  r   r  r  )rZ   r   r7  r#  s       r_   test_weakref_allzGenericTests.test_weakref_all  s    CLLuQV}hsAv&6c3h49%v~c3h'?,u%vz'BD  	2 	2A^W[^^--q1111	2 	2ra   c                    t          d          } G d dt          |                   } |            } |t                               }d|_        d|_        |                     t
                    5  d|_        d d d            n# 1 swxY w Y   |                     t
                    5  d|_        d d d            n# 1 swxY w Y   d|d         fd}|                     t          |t                      t                                d         ||                    |                     t          |t                             t          |t                                        d S )Nr   c                       e Zd ZdZdS )0GenericTests.test_parameterized_slots.<locals>.C)potatoNrj   rk   rl   	__slots__rm   ra   r_   r  rN    s        #IIIra   r  r   rl  c                     d S re   rm   rS  s    r_   r  z2GenericTests.test_parameterized_slots.<locals>.foo,  r   ra   )r   r#   r   rO  r   r^  tomator   r+   r  r  r   r   )rZ   r   r  r  c_intr  s         r_   test_parameterized_slotsz%GenericTests.test_parameterized_slots  s   CLL	$ 	$ 	$ 	$ 	$
 	$ 	$ 	$ ACC#~.. 	 	AH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	~.. 	 	EL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 1S6WYYAA#F!MMMafx#'7'788888s$   0BBB)B==CCc                    t          d          } G d dt          |                   } |            } |t                               }d|_        d|_        |                     t
                    5  d|_        d d d            n# 1 swxY w Y   |                     t
                    5  d|_        d d d            d S # 1 swxY w Y   d S )Nr   c                       e Zd ZddiZdS )5GenericTests.test_parameterized_slots_dict.<locals>.Dbananar   NrP  rm   ra   r_   rT  rX  2  s        !2IIIra   rT  yesno)r   r#   r   rY  r   r^  r  )rZ   r   rT  r  d_ints        r_   test_parameterized_slots_dictz*GenericTests.test_parameterized_slots_dict0  sT   CLL	' 	' 	' 	' 	'
 	' 	' 	' ACC#~.. 	 	AH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	~.. 	  	 EL	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s$   0BBB)B>>CCc                     |                      t                    5  t          t          t          f         } G d dt
          |                   }d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS )#GenericTests.test_errors.<locals>.CNr}   rm   ra   r_   r  r`  C  r   ra   r  )r   r   r  r  r   r#   )rZ   rS  r  s      r_   r   zGenericTests.test_errors?  s    y)) 	 	b#g&A    GAJ   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   3AA"Ac                 2    G d dt           t                             }|                     |j        t                     |                     |j        d           |t                   }|                     |j        t                     |                     t          |                              d          d         d            G d d|t                             }|                     |j        t                     |                     |j        d	           d S )
Nc                       e Zd ZdS )#GenericTests.test_repr_2.<locals>.CNr}   rm   ra   r_   r  rc  G  rv  ra   r  rc  r  r  zC[int]c                       e Zd ZdS )#GenericTests.test_repr_2.<locals>.YNr}   rm   ra   r_   re  re  Q  rv  ra   re  re  )	r#   r   r   rk   rj   rl   r   r   r  )rZ   r  r`  re  s       r_   test_repr_2zGenericTests.test_repr_2F  s0   	 	 	 	 	
 	 	 	 	x000>	@ 	@ 	@cFx000as++B/:::	 	 	 	 	# 	 	 	 	x000>	@ 	@ 	@ 	@ 	@ra   c                    |                      t          t                     |                      t          t                   t          t                              |                     t          t                   t          t
                              d S re   )r   r#   r   r   r   r   r   s    r_   	test_eq_1zGenericTests.test_eq_1X  sZ    '***WQZ000GBK55555ra   c                     G d dt           t                             } G d dt           t                             }|                     ||           |                     ||           |                     |t                   |t                              |                     |t                   |t                              d S )Nc                       e Zd ZdS )!GenericTests.test_eq_2.<locals>.ANr}   rm   ra   r_   r   rk  _  rv  ra   r   c                       e Zd ZdS )!GenericTests.test_eq_2.<locals>.BNr}   rm   ra   r_   rS  rm  b  rv  ra   rS  )r#   r   r   r   r  s      r_   	test_eq_2zGenericTests.test_eq_2]  s    	 	 	 	 	
 	 	 		 	 	 	 	
 	 	 	 	AAq!!!1qt$$$AaD!A$'''''ra   c           	          G d dt           t          t          f                   } G d dt           t          t          f                   } G d d|t          t          f         t           t          t          t          f         |t          t          f                   }|                     |j        t          t          t          f           d S )Nc                       e Zd ZdS )1GenericTests.test_multiple_inheritance.<locals>.ANr}   rm   ra   r_   r   rq  l  rv  ra   r   c                       e Zd ZdS )1GenericTests.test_multiple_inheritance.<locals>.BNr}   rm   ra   r_   rS  rs  o  rv  ra   rS  c                       e Zd ZdS )1GenericTests.test_multiple_inheritance.<locals>.CNr}   rm   ra   r_   r  ru  r  rv  ra   r  )r#   r   r   r   r   rg  )rZ   r   rS  r  s       r_   test_multiple_inheritancez&GenericTests.test_multiple_inheritancej  s    	 	 	 	 	2 	 	 		 	 	 	 	A 	 	 		 	 	 	 	!R%'"a),aAh 	 	 	 	)B2;77777ra   c                     t          d          } G d dt          |                   } G d dt          t                   |          }|                     |j        |t          |t          t          f           d S )NrE  c                       e Zd ZdS )9GenericTests.test_multiple_inheritance_special.<locals>.BNr}   rm   ra   r_   rS  ry  y  r   ra   rS  c                       e Zd ZdS )9GenericTests.test_multiple_inheritance_special.<locals>.CNr}   rm   ra   r_   r  r{  z  r   ra   r  )r   r#   r   r   r   rn  r  r,  )rZ   rE  rS  r  s       r_   !test_multiple_inheritance_specialz.GenericTests.test_multiple_inheritance_specialw  st    CLL     
   """""S	1"""Qa&$ABBBBBra   c                     G d dt                      G fdd           G d dt          t                             }|                               5   G d d|          }d d d            n# 1 swxY w Y   |                               5   G d	 d|t                             }d d d            d S # 1 swxY w Y   d S )
Nc                       e Zd ZdS )DGenericTests.test_init_subclass_super_called.<locals>.FinalExceptionNr}   rm   ra   r_   FinalExceptionr  ~  rv  ra   r  c                   &     e Zd Zd fdZ xZS );GenericTests.test_init_subclass_super_called.<locals>.Finalr   Nc                     | j         D ]!}|urt          |          r |          " t                      j        di | d S rN  )r  rW   r|  rT  )r[   rP  r,  r%   r  r  s      r_   rT  zMGenericTests.test_init_subclass_super_called.<locals>.Final.__init_subclass__  sb    M 3 3D5((Ze-D-D(,nT222))33F33333ra   r6  rU  )r  r%   r  s   @r_   r%   r    sH        4 4 4 4 4 4 4 4 4 4 4 4ra   r%   c                       e Zd ZdS ):GenericTests.test_init_subclass_super_called.<locals>.TestNr}   rm   ra   r_   rc  r    rv  ra   rc  c                       e Zd ZdS >GenericTests.test_init_subclass_super_called.<locals>.SubclassNr}   rm   ra   r_   Subclassr    r   ra   r  c                       e Zd ZdS r  r}   rm   ra   r_   r  z>GenericTests.test_init_subclass_super_called.<locals>.Subclass  r   ra   )	Exceptionr#   r   r   r   )rZ   rc  r  r%   r  s      @@r_   test_init_subclass_super_calledz,GenericTests.test_init_subclass_super_called}  s   	 	 	 	 	Y 	 	 		4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4	 	 	 	 	71:u 	 	 	~.. 	 	    4   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ~.. 	 	    49   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   A55A9<A9B<<C C c                    t           } G d d|t                             }|t          j        t                            } G d d|          } |            }|                    g            |                    d           |                    d           |                     |                                ddg           d S )Nc                   0    e Zd ZdZdefdZd ZdefdZdS ))GenericTests.test_nested.<locals>.VisitorNr   c                     || _         d S re   r  rZ   r   s     r_   r  z-GenericTests.test_nested.<locals>.Visitor.set  r  ra   c                     | j         S re   r  r   s    r_   r$  z-GenericTests.test_nested.<locals>.Visitor.get  	    vra   r   c                     | j         S re   r  r   s    r_   visitz/GenericTests.test_nested.<locals>.Visitor.visit  r  ra   )rj   rk   rl   r   r   r  r$  r  rm   ra   r_   Visitorr    s^        AQ      q      ra   r  c                       e Zd ZdefdZdS )0GenericTests.test_nested.<locals>.IntListVisitorrl  c                 :    | j                             |           d S re   )r   r  r  s     r_   r  z7GenericTests.test_nested.<locals>.IntListVisitor.append  s    a     ra   N)rj   rk   rl   r   r  rm   ra   r_   IntListVisitorr    s/        ! ! ! ! ! ! !ra   r  rp   r   )	r#   r   rN   r   r   r  r  r   r$  )rZ   rW  r  rx  r  r   s         r_   test_nestedzGenericTests.test_nested  s    	 	 	 	 	ad 	 	 	 FK$%	! 	! 	! 	! 	!Q 	! 	! 	!
 N	b					1b'*****ra   c                      t          d           G fddt                             df fd} |d           d S )Nr   c                   *    e Zd Z	 	 dd ddddfdZdS ),GenericTests.test_type_erasure.<locals>.NodeNr5  leftNode[T]rightc                 0    || _         || _        || _        d S re   r5  r  r  )rZ   r5  r  r  s       r_   r*  z5GenericTests.test_type_erasure.<locals>.Node.__init__  s     #
 	"


ra   NNrh  r  s   r_   r  r    sK        +/,0# #a #(# )# # # # # #ra   r  rl  c                     |           }          |           } t                    |           }                    t          |                                         t          |                                         t          |                                         |j        |                                |j        |                                |j        |            d S re   )r   r   r   r   r5  )rl  r   r  r  r  r   rZ   s       r_   r  z+GenericTests.test_type_erasure.<locals>.foo  s    QAQ

AS	!AMM$q''4(((MM$q''4(((MM$q''4(((QWa(((QWa(((QWa(((((ra   r   r   r#   )rZ   r  r  r   s   ` @@r_   r  zGenericTests.test_type_erasure  s    CLL	# 	# 	# 	# 	# 	# 	#71: 	# 	# 	#		)1 		) 		) 		) 		) 		) 		) 		) 		) 	Bra   c                    t          d          } G d dt          |                   } G d d|          }|                     |j        d           |                     t
                    5  |t                    d d d            n# 1 swxY w Y   |                     t
                    5  |t                    d d d            n# 1 swxY w Y   |                     t
                    5  ||          d d d            d S # 1 swxY w Y   d S )Nr   c                       e Zd ZdS ))GenericTests.test_implicit_any.<locals>.CNr}   rm   ra   r_   r  r    rv  ra   r  c                       e Zd ZdS ))GenericTests.test_implicit_any.<locals>.DNr}   rm   ra   r_   rT  r    rv  ra   rT  rm   )r   r#   r   rg  r   r   r   r   r  s       r_   test_implicit_anyzGenericTests.test_implicit_any  s   CLL	 	 	 	 	
 	 	 		 	 	 	 	 	 	 	 	)2...y)) 	 	cFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	cFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	aDD	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s6   ,BB
B
+CC	C	*	D  DDc                      G d dt           t                             } G d d          } G d d||          } |d          }|                     |j        d           d S )Nc                       e Zd ZdS )*GenericTests.test_new_with_args.<locals>.ANr}   rm   ra   r_   r   r    rv  ra   r   c                        e Zd Z fdZ xZS )*GenericTests.test_new_with_args.<locals>.Bc                 X    t                                          |           }||_        |S re   )r|  r}  r   r[   r   rt  r  s      r_   r}  z2GenericTests.test_new_with_args.<locals>.B.__new__  s$    ggooc**
ra   r~  r  s   @r_   rS  r    8                ra   rS  c                       e Zd ZdS )*GenericTests.test_new_with_args.<locals>.CNr}   rm   ra   r_   r  r    rv  ra   r  r  )r#   r   r   r   rZ   r   rS  r  r  s        r_   test_new_with_argszGenericTests.test_new_with_args  s    	 	 	 	 	
 	 	 		 	 	 	 	 	 	 		 	 	 	 	1 	 	 	 AeHH&&&&&ra   c                      G d d          } G d dt           t                   |          } |d          }|                     |j        d           |                     |j        d           d S )Nc                        e Zd Z fdZ xZS )+GenericTests.test_new_with_args2.<locals>.Ac                 V    || _         t                                                       d S re   )from_ar|  r*  rZ   r   r  s     r_   r*  z4GenericTests.test_new_with_args2.<locals>.A.__init__  s&    !  """""ra   r  r  s   @r_   r   r    s8        # # # # # # # # #ra   r   c                        e Zd Z fdZ xZS )+GenericTests.test_new_with_args2.<locals>.Cc                 X    || _         t                                          |           d S re   )from_cr|  r*  r  s     r_   r*  z4GenericTests.test_new_with_args2.<locals>.C.__init__  s(    !  %%%%%ra   r  r  s   @r_   r  r    s8        & & & & & & & & &ra   r  r  )r#   r   r   r  r  )rZ   r   r  r  s       r_   test_new_with_args2z GenericTests.test_new_with_args2  s    	# 	# 	# 	# 	# 	# 	# 	#	& 	& 	& 	& 	&
A 	& 	& 	& AeHH5)))5)))))ra   c                     G d dt           t                             }|                     t                    5   |d           d d d            n# 1 swxY w Y    G d d          } G d d||          } |d          }|                     |j        d           |                     |j        d           |                     |j        d	           d S )
Nc                       e Zd ZdS )(GenericTests.test_new_no_args.<locals>.ANr}   rm   ra   r_   r   r     rv  ra   r   r  c                        e Zd Z fdZ xZS )(GenericTests.test_new_no_args.<locals>.Bc                 X    t                                          |           }d|_        |S )Nr  )r|  r}  from_b)r[   rt  r  s     r_   r}  z0GenericTests.test_new_no_args.<locals>.B.__new__  $    ggooc** 

ra   r~  r  s   @r_   rS  r    r  ra   rS  c                   $     e Zd Zd Z fdZ xZS )(GenericTests.test_new_no_args.<locals>.Cc                     || _         d S re   r   rE  s     r_   r*  z1GenericTests.test_new_no_args.<locals>.C.__init__  s    ra   c                 X    t                                          |           }d|_        |S )Nr  )r|  r}  r  r  s      r_   r}  z0GenericTests.test_new_no_args.<locals>.C.__new__  r  ra   )rj   rk   rl   r*  r}  r  r  s   @r_   r  r    sG                  ra   r  r  r  )r#   r   r   r   r   r   r  r  r  s        r_   test_new_no_argszGenericTests.test_new_no_args  sY   	 	 	 	 	
 	 	 	 y)) 	 	AeHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	1 	 	 	 AeHH&&&3'''3'''''s   AAAc           
      0   t           t                   t          t                   t          t          t          f         t
          t                   t          d         t          t          t          d          f         t          t                   fD ]}| 
                    |          5  |                     t          dt          j        d|           d          5   G d d|          }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )	Nr  r  )r]   ^zCannot subclass $c                       e Zd ZdS )4GenericTests.test_subclass_special_form.<locals>.FooNr}   rm   ra   r_   r  r  +          ra   r  )r$   r   r%   r   r  r   r   rE   rD   rH   rw   r   r   reescape)rZ   rt  r  s      r_   test_subclass_special_formz'GenericTests.test_subclass_special_form  s   SM#J#u*SMDMYs^^+,cN
 	 	C #&&  ++!#Ory1KC1K1K'L'L#O#O#O       c                               	 	s6   #5D
C3'D
3C77D
:C7;D

D	D	c                     t          dd          } G d dt          |                   }t          d          } G d d|t          |                   }d S )	NrR  TrS  c                       e Zd ZdS )2GenericTests.test_complex_subclasses.<locals>.BaseNr}   rm   ra   r_   r  r  1  r  ra   r  r   c                       e Zd ZdS )1GenericTests.test_complex_subclasses.<locals>.SubNr}   rm   ra   r_   r   r  7  r  ra   r   r  )rZ   rR  r  r   r   s        r_   test_complex_subclassesz$GenericTests.test_complex_subclasses.  s    v...	 	 	 	 	74= 	 	 	 CLL	 	 	 	 	$
 	 	 	 	 	ra   c           	      >   |                      t          t                   j        t          f           |                      t          t          t                            j        t          f            G d d          }t          t          fD ]}|t
          t          t          t          t          j
        t          j        fD ]w}|                     ||          5  |                     t          d          5  ||         t                    d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   x|                      t           |                     j        t          f           |                      t           |                     j        t          f           d S )Nc                       e Zd ZefZdS )0GenericTests.test_parameter_detection.<locals>.AN)rj   rk   rl   r   rg  rm   ra   r_   r   r  =  s        TNNNra   r   )r  subz.* is not a generic class)r   r   r   rg  r  r   r   r   rD   r  r  	UnionTyperw   r   r   rX  )rZ   r   r   r  s       r_   test_parameter_detectionz%GenericTests.test_parameter_detection:  s   a/!666d1g5t<<<	" 	" 	" 	" 	" 	" 	" 	"  	" 	"Ag|Y@RTYTcd " "\\!\33 " "//	;VWW " "!S		" " " " " " " " " " " " " " "" " " " " " " " " " " " " " "" 	aacc1A4888aacc1A488888s6   D(1D	D(DD(DD((D,/D,c           
         t          d           G d dt                             } G fdd          }t          ||t          t          t           t
          t          t          j        t          j	        f
D ]}t          t          fD ]}|                     ||          5  |                     ||f         t                   ||t          f                    |                     ||f         t                   |t          |f                    ||         }|                     t                    5  |t                    d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t           t"          j        j        fD ]}|                     ||          5  |                     ||gf         t                   ||gt          f                    |                     |g|f         t                   |t          g|f                    ||g|f         }|                     t                    5  |t                    d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )Nr   c                       e Zd ZdS )2GenericTests.test_non_generic_subscript.<locals>.GNr}   rm   ra   r_   rW  r  M  rv  ra   rW  c                       e Zd Z fZdS )2GenericTests.test_non_generic_subscript.<locals>.AN)rj   rk   rl   rg  r  s   r_   r   r  O  s        TNNNra   r   )r  r  )callabler  )r   r#   r   r   r  r   rD   r  r  r  r   r  rw   r   r   r   r"   r  r  )rZ   rW  r   r  r#  r   r  r   s          @r_   test_non_generic_subscriptz'GenericTests.test_non_generic_subscriptK  s`   CLL	 	 	 	 	
 	 	 		" 	" 	" 	" 	" 	" 	" 	" 	" 	" q!T4<$eo7 	 	A E\  \\q\11  $$Qq!tWS\1QV9===$$Qq!tWS\1S!V9===!A**955  #              	               {77  \\1!\44  $$QsAvYs^QsCx[AAA$$QsAvYs^Quax[AAA1#q&	A**955  #              	              	 	sn   !BE!0E
	>E!
EE!EE!!E%(E%BI%4I	I%II%II%%I),I)N)8rj   rk   rl   r  rM  rO  r_  r   rd  rg  rj  rp  rv  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r%  r-  r  r8  rA  rH  rK  rU  r]  r   rf  rh  rn  rv  r|  r  r  r  r  r  r  r  r  r  r  r  rm   ra   r_   r=  r=    sT       E E E&  2  % % %(B B B+ + +0	> 	> 	>

 

 

  5 5 5"5 5 56  2 2 2
) ) )&S S SC C C
"? "? "?H? ? ?"I I I(C (C (CTP P P 	4 	4 	4M M M4%
 %
 %
N9 9 9:     " " "F F F"1 1 1"' "' "'H- - -. . .84 4 402 2 29 9 9&       @ @ @$6 6 6
( ( (8 8 8C C C  &+ + +<  0  $' ' '&* * *&( ( (>  "
 
 
9 9 9"    ra   r=  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )ClassVarTestsc                 <   |                      t                    5  t          t          t          f          d d d            n# 1 swxY w Y   |                      t                    5  t          t                   t                    d d d            d S # 1 swxY w Y   d S re   )r   r   r$   r   rX  r   s    r_   r  zClassVarTests.test_basicsi  s   y)) 	 	S#X	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	SM#	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   AAA&BBBc                 :   |                      t          t                    d           t          t                   }|                      t          |          d           t          t                   }|                      t          |          dt
          z             d S )Nztyping.ClassVartyping.ClassVar[int]ztyping.ClassVar[%s.Employee])r   r   r$   r   r|   rj   rZ   cvs     r_   r   zClassVarTests.test_repro  sw    h):;;;c]b#9:::hb#AH#LMMMMMra   c           	      f   |                      t                    5   G d dt          t                              }d d d            n# 1 swxY w Y   |                      t                    5   G d dt          t          t                                       }d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS -ClassVarTests.test_cannot_subclass.<locals>.CNr}   rm   ra   r_   r  r  x  r   ra   r  c                       e Zd ZdS r  r}   rm   ra   r_   r  z-ClassVarTests.test_cannot_subclass.<locals>.C{  r   ra   )r   r   r   r$   r   r  s     r_   r   z"ClassVarTests.test_cannot_subclassv  sK   y)) 	 	    DNN   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	    D#''   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	#   !AAA-,B&&B*-B*c                    |                      t                    5  t                       d d d            n# 1 swxY w Y   |                      t                    5   t          t                                 d d d            n# 1 swxY w Y   |                      t                    5   t          t          t          t
                                                   d d d            d S # 1 swxY w Y   d S re   )r   r   r$   r   r   r   r   s    r_   r   zClassVarTests.test_cannot_init~     y)) 	 	JJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	DNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	, 	,)D(3-())+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,0   6::BBB)3C))C-0C-c                 D   |                      t                    5  t          dt          t                              d d d            n# 1 swxY w Y   |                      t                    5  t          t          t                     d d d            d S # 1 swxY w Y   d S r"  )r   r   r   r$   r   rW   r   s    r_   r#  z ClassVarTests.test_no_isinstance     y)) 	) 	)q(3-(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)y)) 	& 	&sH%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&#   !AAA-BBBNrj   rk   rl   r  r   r   r   r#  rm   ra   r_   r  r  g  sb          N N N  , , ,& & & & &ra   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )
FinalTestsc                    t           t                    |                     t                    5  t           t          t          f          d d d            n# 1 swxY w Y   |                     t                    5  t           t                   t                    d d d            n# 1 swxY w Y   |                     t                    5  t
          t           t                             d d d            d S # 1 swxY w Y   d S re   )r%   r   r   r   rX  r   r   s    r_   r  zFinalTests.test_basics  s~   c

y)) 	 	#s(OO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	#JsOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	! 	!U3Z  	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s5   AAA8B""B&)B&C22C69C6c                    |                      t          t                    d           t          t                   }|                      t          |          d           t          t                   }|                      t          |          dt
          z             t          t          t                            }|                      t          |          d           d S )Nztyping.Finalztyping.Final[int]ztyping.Final[%s.Employee]ztyping.Final[tuple[int]])r   r   r%   r   r|   rj   r  r  s     r_   r   zFinalTests.test_repr  s    en5553Zb#67778_b#>#IJJJ5:b#=>>>>>ra   c           	      f   |                      t                    5   G d dt          t                              }d d d            n# 1 swxY w Y   |                      t                    5   G d dt          t          t                                       }d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS *FinalTests.test_cannot_subclass.<locals>.CNr}   rm   ra   r_   r  r	    r   ra   r  c                       e Zd ZdS r	  r}   rm   ra   r_   r  z*FinalTests.test_cannot_subclass.<locals>.C  r   ra   )r   r   r   r%   r   r  s     r_   r   zFinalTests.test_cannot_subclass  sK   y)) 	 	    DKK   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	    Ds$$   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  c                    |                      t                    5  t                       d d d            n# 1 swxY w Y   |                      t                    5   t          t                                 d d d            n# 1 swxY w Y   |                      t                    5   t          t          t          t
                                                   d d d            d S # 1 swxY w Y   d S re   )r   r   r%   r   r   r   r   s    r_   r   zFinalTests.test_cannot_init  s   y)) 	 	GGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	DKKMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	) 	)&Dx}%&&(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)r  c                 D   |                      t                    5  t          dt          t                              d d d            n# 1 swxY w Y   |                      t                    5  t          t          t                     d d d            d S # 1 swxY w Y   d S r"  )r   r   r   r%   r   rW   r   s    r_   r#  zFinalTests.test_no_isinstance  s   y)) 	& 	&q%*%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&y)) 	# 	#sE"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#r  Nr 	  rm   ra   r_   r	  r	    s_        ! ! !? ? ?  ) ) )# # # # #ra   r	  c                       e Zd Zd Zd ZdS )FinalDecoratorTestsc                 R    d }|                      |t          |                     d S )Nc                     d S re   rm   rS  s    r_   funcz7FinalDecoratorTests.test_final_unmodified.<locals>.func  r   ra   )r   r&   rZ   r	  s     r_   test_final_unmodifiedz)FinalDecoratorTests.test_final_unmodified  s+    dE$KK(((((ra   c                    t           d             }t            G d d                      }|                     d|j                   |                     d|j                    G d d          }t           |d                         }|                     ||           |                     dt	          |d	                      G d
 dt
                    }t            G d d|                      }|                     |j        d           t          t                     |                     dt	          t          d	                      G d d          }|                     dt          j	        |d          j                   |                     dt          j	        |d          j                   |                     d|j
        j        j                   |                     d|j        j                   d S )Nc                      d S re   rm   rm   ra   r_   r	  z3FinalDecoratorTests.test_dunder_final.<locals>.func      Cra   c                       e Zd ZdS )2FinalDecoratorTests.test_dunder_final.<locals>.ClsNr}   rm   ra   r_   Clsr	    s        3ra   r	  Tc                       e Zd ZdZd Zd ZdS )6FinalDecoratorTests.test_dunder_final.<locals>.Wrapperr	  c                     || _         d S re   r	  r	  s     r_   r*  z?FinalDecoratorTests.test_dunder_final.<locals>.Wrapper.__init__  r  ra   c                      | j         |i |S re   r	  rV  s      r_   r  z?FinalDecoratorTests.test_dunder_final.<locals>.Wrapper.__call__  s     ty$1&111ra   N)rj   rk   rl   rQ  r*  r  rm   ra   r_   Wrapperr	    s7        !I! ! !2 2 2 2 2ra   r	  c                      d S re   rm   rm   ra   r_   wrappedz6FinalDecoratorTests.test_dunder_final.<locals>.wrapped  s    sra   F	__final__c                   $    e Zd Zed             ZdS )3FinalDecoratorTests.test_dunder_final.<locals>.Metac                     dS )Ncan't set merm   r   s    r_   r!	  z=FinalDecoratorTests.test_dunder_final.<locals>.Meta.__final__  s    (6ra   N)rj   rk   rl   rp  r!	  rm   ra   r_   r  r#	    s#        66 X666ra   r  c                       e Zd ZdS )7FinalDecoratorTests.test_dunder_final.<locals>.WithMetaNr}   rm   ra   r_   WithMetar'	    s        (+ra   r(	  	metaclassr%	  c                       e Zd Zeed                         Zeed                         Zeed                         Z	e e
            d                         ZdS )6FinalDecoratorTests.test_dunder_final.<locals>.Methodsc                     d S re   rm   r[   s    r_   	clsmethodz@FinalDecoratorTests.test_dunder_final.<locals>.Methods.clsmethod  s     #ra   c                      d S re   rm   rm   ra   r_   stmethodz?FinalDecoratorTests.test_dunder_final.<locals>.Methods.stmethod      Cra   c                     d S re   rm   r   s    r_   propz;FinalDecoratorTests.test_dunder_final.<locals>.Methods.prop  r2	  ra   c                     d S re   rm   r   s    r_   cachedz=FinalDecoratorTests.test_dunder_final.<locals>.Methods.cached  s    !cra   N)rj   rk   rl   r&   r;  r/	  staticmethodr1	  rp  r4	  r   r6	  rm   ra   r_   Methodsr,	    s        ## [ U# \ U  U XY[[!! [ U!!!ra   r8	  r/	  r1	  )r&   r   r!	  r   r  r   r   r   inspectgetattr_staticr4	  fgetr6	  )rZ   r	  r	  r	  r 	  r  r(	  r8	  s           r_   test_dunder_finalz%FinalDecoratorTests.test_dunder_final  s/   	 
	 
dDN+++dCM***	2 	2 	2 	2 	2 	2 	2 	2 
	 
 
gw///eWWk::;;;	7 	7 	7 	7 	74 	7 	7 	7 
++++++++ 
++^<<< 	c


eWS+66777	" 	" 	" 	" 	" 	" 	" 	"* 	"7K88B	
 	
 	
 	"7J77A	
 	
 	
 	dGL-7888dGN455555ra   N)rj   rk   rl   r	  r<	  rm   ra   r_   r	  r	    s7        ) ) )B6 B6 B6 B6 B6ra   r	  c                       e Zd Zd Zd ZdS )	CastTestsc                    |                      t          t          d          d           |                      t          t          d          d           |                     t          t          t          d                    t                     |                      t          t          d          d           |                      t          t          d          d           |                      t          t          t          t          f         d          d           |                      t          t          d          d           |                      t          d d          d           d S r   )r   r)   r   r  r   r   r   r  r   rX  r   r   s    r_   r  zCastTests.test_basics  s   c2+++eR"---d4r??++S111c2+++dB,,,eCJ/44b999fb))2...dB,,,,,ra   c                 F    t          dd           t          dd           d S Nr   hello)r)   r   s    r_   r   zCastTests.test_errors  s%    RWbra   Nrj   rk   rl   r  r   rm   ra   r_   r>	  r>	    s2        - - -    ra   r>	  c                       e Zd Zd Zd ZdS )AssertTypeTestsc                 X   d}|                      t          |t                    |           |                      t          |t          t          z            |           |                      t          |t
                    |           |                      t          |d           |           d S r   )r   r(   r   rX  r  r   rE  s     r_   r  zAssertTypeTests.test_basics  s    k#s++S111k#sU{33S999k#v..444k#t,,c22222ra   c                     d}|                      t          |d          |           |                      t          |d          |           d S rA	  )r   r(   rE  s     r_   r   zAssertTypeTests.test_errors  sI    k#r**C000k#w//55555ra   NrC	  rm   ra   r_   rE	  rE	    s2        3 3 36 6 6 6 6ra   rE	  )ann_module8c                   &    e Zd Zej        j        ZdS )NoTypeCheck_OuterN)rj   rk   rl   rH	  rJ	  Innerrm   ra   r_   rJ	  rJ	  &  s        )/EEEra   rJ	  c                       e Zd Zej        ZdS )NoTypeCheck_WithFunctionN)rj   rk   rl   rH	  NoTypeCheck_functionrm   ra   r_   rM	  rM	  *  s        &;ra   rM	  c                       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d 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d Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$S )%ForwardRefTestsc                 B    G d dt           t                             }|t                   }t          |j        t                      t                                }|                     |d         t          |t                                       |                     |d         |t                              |                     |d         t                     | 	                    d|           t          |j
        t                      t                                }|                     |d         t          |t                                       t          |j        t                      t                                }|                     |d         |t                              d S )Nc                   X    e Zd ZdefdZ	 	 	 ddddddefd	Zd
ed         fdZdddZ	dS ))ForwardRefTests.test_basics.<locals>.Noder5  c                 0    || _         d x| _        | _        d S re   r  )rZ   r5  s     r_   r*  z2ForwardRefTests.test_basics.<locals>.Node.__init__5  s    "
)--	DJJJra   Nr  zOptional[Node[T]]r  r  stuffc                 "    || _         || _        d S re   )r  r  )rZ   r  r  rU	  blahs        r_   add_bothz2ForwardRefTests.test_basics.<locals>.Node.add_both9  s    
 !	"


ra   nodec                 2    |                      |d            d S re   rX	  rZ   rY	  s     r_   add_leftz2ForwardRefTests.test_basics.<locals>.Node.add_leftA      dD)))))ra   c                 2    |                      d |           d S re   r[	  r\	  s     r_   	add_rightz3ForwardRefTests.test_basics.<locals>.Node.add_rightD  r^	  ra   )NNNre   )rY	  r  )
rj   rk   rl   r   r*  r   rX	  r   r]	  r`	  rm   ra   r_   r  rS	  3  s        .a . . . . -1&*"	# #2# )# !$# # # #*Xi%8 * * * ** * * * * * *ra   r  r  r  rU	  rW	  rY	  )r#   r   r   r+   rX	  r  r  r   r   assertNotInr]	  r`	  )rZ   r  r#  
both_hints
left_hintsright_hintss         r_   r  zForwardRefTests.test_basics1  sI   	* 	* 	* 	* 	*71: 	* 	* 	*( I#AJ		688DD
F+Xd1g->???G,d1g666G,c222,,,#AJ		688DD
F+Xd1g->???$Q['))VXXFFV,d1g66666ra   c                     t          j        d          }|                     t                    5  t	          d|           d d d            d S # 1 swxY w Y   d S )Nr   r   )rN   r@   r   r   r   rZ   frs     r_   #test_forwardref_instance_type_errorz3ForwardRefTests.test_forwardref_instance_type_errorT  s    u%%y)) 	 	r2	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  c                     t          j        d          }|                     t                    5  t	          t
          |           d d d            d S # 1 swxY w Y   d S )Nr   )rN   r@   r   r   rW   r   rf	  s     r_   #test_forwardref_subclass_type_errorz3ForwardRefTests.test_forwardref_subclass_type_errorY  s    u%%y)) 	  	 sB	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   AAAc                     |                      t                    5  t          j        d           d d d            d S # 1 swxY w Y   d S r"  )r   r   rN   r@   r   s    r_   test_forwardref_only_str_argz,ForwardRefTests.test_forwardref_only_str_arg^  s    y)) 	! 	!a   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   =AAc                 &   t          j        d          }|                     |t          j        d                     |                     t          d         t          t
                              |                     |t          j        dt                               t          j        dt                    }|                     |t          j        dt                               |                     |t          j        dd                     d S )Nr   module__other_name__)rN   r@   r   r   r   r   rj   )rZ   rg	  frms      r_   test_forward_equalityz%ForwardRefTests.test_forward_equalityb  s    u%%V.u55666DKc333B 1% I I IJJJh777f/hGGGHHHC!25AQ!R!R!RSSSSSra   c                    t          j        d          }t          j        d          }t          j        d          }t          j        d          } G d d          }d|d|fd}|                     t          |t	                      t                                ||d           |                     ||           |                     ||           |                     ||           |                     t          |         t          |                    |                     t          |         t          |                    |                     t          |         t          |                    |                     t          ||f         t          |                    |                     t          ||t          f         t          |t          f                    d S )Nr  c                       e Zd ZdS )4ForwardRefTests.test_forward_equality_gth.<locals>.CNr}   rm   ra   r_   r  ru	  q  rv  ra   r   r  c                     d S re   rm   r   r  s     r_   r  z6ForwardRefTests.test_forward_equality_gth.<locals>.foos  r  ra   rw	  )
rN   r@   r   r+   r  r  r   r   r   r   )rZ   r  c1_gthr  c2_gthr  r  s          r_   test_forward_equality_gthz)ForwardRefTests.test_forward_equality_gthk  s   s##"3''s##"3''	 	 	 	 	 	 	 		6 	f 	 	 	 	 	WYYAAQRCSCSTTTR   V$$$(((b4<000DHd1g...DL$q'222r6z*E"I666r63/r3w@@@@@ra   c           	      <   t          j        d          }t          j        d          }t          j        d          }t          j        d          }d|d|fd}t          |t                      t	                                 |                     t          |          t          |                     |                     t          |          t          |                     |                     t          |          t          |                     t          j        dt                    }t          j        dd          }|                     t          |          t          |                     |                     t          |          t          |                     |                     t          |          t          |                     |                     t          |          t          t          j        dt                                         d S )Nr   r   r  c                     d S re   rm   rw	  s     r_   r  z7ForwardRefTests.test_forward_equality_hash.<locals>.foo  r  ra   rn	  rp	  )	rN   r@   r+   r  r  r   r  rj   r   )rZ   r  rx	  r  ry	  r  c3c4s           r_   test_forward_equality_hashz*ForwardRefTests.test_forward_equality_hash  s   u%%"5))u%%"5))	6 	f 	 	 	 	sGIIvxx000b488,,,ftF||444b4<<000uX666u-=>>>DHHd2hh///DHHd6ll333DHHd2hh///b4(9%(Q(Q(Q#R#RSSSSSra   c                      G d d          }d }d }|                       |             |                       |                      |             |                       d S )Nc                       e Zd ZdS ):ForwardRefTests.test_forward_equality_namespace.<locals>.ANr}   rm   ra   r_   r   r	    rv  ra   r   c                      t          j        d          } d| fd}t          |t                      t	                                 | S )Nr   rl  c                     d S re   rm   rS  s    r_   rW  zPForwardRefTests.test_forward_equality_namespace.<locals>.namespace1.<locals>.fun  rW  ra   rN   r@   r+   r  r  )r   rW  s     r_   
namespace1zCForwardRefTests.test_forward_equality_namespace.<locals>.namespace1  sL    !#&&Aq    3		688444Hra   c                      t          j        d          }  G d d          }d| fd}t          |t                      t	                                 | S )Nr   c                       e Zd ZdS )NForwardRefTests.test_forward_equality_namespace.<locals>.namespace2.<locals>.ANr}   rm   ra   r_   r   r	    r   ra   rl  c                     d S re   rm   rS  s    r_   rW  zPForwardRefTests.test_forward_equality_namespace.<locals>.namespace2.<locals>.fun  rW  ra   r	  )r   r   rW  s      r_   
namespace2zCForwardRefTests.test_forward_equality_namespace.<locals>.namespace2  sv    !#&&A       q     3		688444Hra   )r   r   )rZ   r   r	  r	  s       r_   test_forward_equality_namespacez/ForwardRefTests.test_forward_equality_namespace  s    	 	 	 	 	 	 	 		 	 			 		 		 	zz||444JJLL**,,77777ra   c           	          |                      t          t          d                   d           |                      t          t          t          dd                             d           d S )Nr   ztyping.List[ForwardRef('int')]modrn	  z,typing.List[ForwardRef('int', module='mod')])r   r   r   r@   r   s    r_   test_forward_reprz!ForwardRefTests.test_forward_repr  sk    d5k**,LMMMd:eE#B#B#BCDDG	I 	I 	I 	I 	Ira   c                    dt           d         fd}|                     t          |t                      t	                                dt           t
                   i           dt          t          d                   t          z  fd}|                     t          |t                      t	                                dt          t
                   t          z  i           d S )Nr   r   c                     d S re   rm   r  s    r_   r  z/ForwardRefTests.test_union_forward.<locals>.foo  r  ra   c                     d S re   rm   r  s    r_   r  z/ForwardRefTests.test_union_forward.<locals>.foo  r  ra   )	r   r   r+   r  r  r   r  r@   r   rZ   r  s     r_   test_union_forwardz"ForwardRefTests.test_union_forward  s    	5: 	 	 	 	 	WYYAAuQx	* 	* 	*	5C)C/ 	 	 	 	 	WYYAAuQx#~.	0 	0 	0 	0 	0ra   c                    dt           d         fd}|                     t          |t                      t	                                dt           t
                   i           dt          t          d                   fd}|                     t          |t                      t	                                dt          t
                   i           d S )Nr   r   c                     d S re   rm   r  s    r_   r  z/ForwardRefTests.test_tuple_forward.<locals>.foo  r  ra   c                     d S re   rm   r  s    r_   r  z/ForwardRefTests.test_tuple_forward.<locals>.foo  r  ra   )r   r   r+   r  r  r   r  r@   r	  s     r_   test_tuple_forwardz"ForwardRefTests.test_tuple_forward  s    	5: 	 	 	 	 	WYYAAuQx	* 	* 	*	5C) 	 	 	 	 	WYYAAuQx	* 	* 	* 	* 	*ra   c                     dd}|                      t          |t                      t                                dt          t
                   i           d S )Nr   List['int']c                     d S re   rm   r  s    r_   r  z0ForwardRefTests.test_double_forward.<locals>.foo  r  ra   )r   r	  )r   r+   r  r  r   r   r	  s     r_   test_double_forwardz#ForwardRefTests.test_double_forward  sZ    	 	 	 	WYYAAtCy)	+ 	+ 	+ 	+ 	+ra   c                     d }d }d } |            } |            }|                      ||           |                     t          |||           d S )Nc                      t          j        d          } | }d| fd}t          |t                      t	                                }| S )Nr   rl  c                     d S re   rm   rS  s    r_   rW  zPForwardRefTests.test_forward_recursion_actually.<locals>.namespace1.<locals>.fun  r   ra   r	  r   r   rW  rets       r_   r	  zCForwardRefTests.test_forward_recursion_actually.<locals>.namespace1  F    !#&&AAq gii::CHra   c                      t          j        d          } | }d| fd}t          |t                      t	                                }| S )Nr   rl  c                     d S re   rm   rS  s    r_   rW  zPForwardRefTests.test_forward_recursion_actually.<locals>.namespace2.<locals>.fun  r   ra   r	  r	  s       r_   r	  zCForwardRefTests.test_forward_recursion_actually.<locals>.namespace2  r	  ra   c                     | |k    S re   rm   )o1o2s     r_   cmpz<ForwardRefTests.test_forward_recursion_actually.<locals>.cmp  s    8Ora   )rF  r   RecursionError)rZ   r	  r	  r	  r1r2s         r_   test_forward_recursion_actuallyz/ForwardRefTests.test_forward_recursion_actually  s}    	 	 		 	 		 	 	 Z\\Z\\R   .#r266666ra   c                 |   t           d         t          t          f          G fdd          } G fdd          } G fdd          } G fdd	          }|                     t	          |t                      t                                t	          |t                      t                                           |                     t	          |t                      t                                d
t           t          t          t           t          t          t           d         f                  f                  i           |                     t	          |t                      t                                d
t          t          t           t          t          t           d         f                  f         i           |                     t	          |t                      t                                d
t          t           t          t          t           t          t          t           d         f                  f                  t           t          t          t           d         f                  f         i           |                     t	          |t                      t                                d
t          t          t           t          t          t           d         f                  t           t          t          t           t          t          t           d         f                  f                  f         i           d S )NValuec                   (    e Zd ZU e          ed<   dS )7ForwardRefTests.test_union_forward_recursion.<locals>.Cr  N)rj   rk   rl   r   r   )r	  s   r_   r  r	    s#         era   r  c                   ,    e Zd ZU e f         ed<   dS )7ForwardRefTests.test_union_forward_recursion.<locals>.Dr  N)rj   rk   rl   r   r   r	  	ValueLists   r_   rT  r	    s)         ui'((((((ra   rT  c                   8    e Zd ZU ee          f         ed<   dS )7ForwardRefTests.test_union_forward_recursion.<locals>.Er  Nrj   rk   rl   r   r   r   r	  s   r_   rU  r	    s-         tE{I-......ra   rU  c                   :    e Zd ZU e e          f         ed<   dS )7ForwardRefTests.test_union_forward_recursion.<locals>.Fr  Nr	  r	  s   r_   rV  r	    s/         ud5k94555555ra   rV  r  )r   r   rX  r   r+   r  r  )rZ   r  rT  rU  rV  r	  r	  s        @@r_   test_union_forward_recursionz,ForwardRefTests.test_union_forward_recursion  s   M	c9n%	 	 	 	 	 	 	 	 	 		) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	799fhh??PQSZS\S\^d^f^fAgAghhh799fhh??eCeCg<N6O1P,P&Q!RS	U 	U 	U799fhh??sDsDM7I1J,K'K!LM	O 	O 	O799fhh??!%T%T']8J2K-L(L"MN!%T'](:";<=" 	 	 	 	799fhh?? !%T'](:";<!%T%T']8J2K-L(L"MNO" 	 	 	 	 	ra   c                     dt           dgdf         fd}|                     t          |t                      t	                                dt           t
          gt
          f         i           d S )Nr   r   c                     d S re   rm   r  s    r_   r  z2ForwardRefTests.test_callable_forward.<locals>.foo  r  ra   )r"   r   r+   r  r  r   r	  s     r_   test_callable_forwardz%ForwardRefTests.test_callable_forward  su    	8SE3J' 	 	 	 	 	WYYAAxQ/0	2 	2 	2 	2 	2ra   c                     dd}|                      t          |t                      t                                dt          dt
          f         i           d S )Nr   Callable[..., T]c                     d S re   rm   r  s    r_   r  z@ForwardRefTests.test_callable_with_ellipsis_forward.<locals>.foo  r  ra   .)r   r	  )r   r+   r  r  r"   r   r	  s     r_   #test_callable_with_ellipsis_forwardz3ForwardRefTests.test_callable_with_ellipsis_forward  sa    	 	 	 	 	WYYAAxQ/0	2 	2 	2 	2 	2ra   c                     G d d          } G d d          }|                      t          |t                                d         t          t                              |                      t          |t                                d         t
          t                              |                      t          |t                                d         t                     |                      t          |t                                d         t
                     |                     t                    5  t          |t                                f d d d            d S # 1 swxY w Y   d S )	Nc                   `    e Zd ZU dZed         ed<   dZed         ed<   dZded<   dZded	<   d
S )5ForwardRefTests.test_special_forms_forward.<locals>.Cr  )ClassVar[int])r  r  r   )
Final[int]constr  r$   rl  r%   r  N)	rj   rk   rl   r   r?   r   r  rl  r  rm   ra   r_   r  r	     sY         45Ay0155523Ay./333AzAwNNNNNra   r  c                   *    e Zd ZU dZed         ed<   dS )6ForwardRefTests.test_special_forms_forward.<locals>.CFr  r	  r  N)rj   rk   rl   r  r   r   rm   ra   r_   CFr	  &  s'         $%AtL!%%%%%ra   r	  r   r  rl  r  )r   r+   r  r$   r   r%   r   r   )rZ   r  r	  s      r_   test_special_forms_forwardz*ForwardRefTests.test_special_forms_forward  s   	 	 	 	 	 	 	 		& 	& 	& 	& 	& 	& 	& 	& 	79955c:HSMJJJ79955c:E#JGGG79955c:HEEE79955c:EBBBy)) 	+ 	+2wyy))**	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   7E""E&)E&c                     |                      t                    5  t          d          d d d            d S # 1 swxY w Y   d S )Nz/T)r   SyntaxErrorr#   r   s    r_   test_syntax_errorz!ForwardRefTests.test_syntax_error0  s    {++ 	 	DMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	rP  c                     dd}|                      t                    5  t          |           d d d            d S # 1 swxY w Y   d S )Nr   Node[Tc                     d S re   rm   r  s    r_   r  z6ForwardRefTests.test_delayed_syntax_error.<locals>.foo7  r  ra   )r   r	  )r   r	  r+   r	  s     r_   test_delayed_syntax_errorz)ForwardRefTests.test_delayed_syntax_error5  s    	 	 	 	 {++ 	  	 3	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   <A A c                     dd}|                      t                    5  t          |t                                 d d d            d S # 1 swxY w Y   d S )Nr   Noode[T]c                     d S re   rm   r  s    r_   r  z,ForwardRefTests.test_name_error.<locals>.foo?  r  ra   )r   r	  )r   	NameErrorr+   r  r	  s     r_   test_name_errorzForwardRefTests.test_name_error=  s    	 	 	 	 y)) 	* 	*3)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   A		AAc                 z    t           dddi fd            }t          |          }|                     |i            d S )Nr   	whateversr   c                     d S re   rm   r  s    r_   r  z/ForwardRefTests.test_no_type_check.<locals>.fooG      Dra   )r1   r+   r   )rZ   r  ths      r_   test_no_type_checkz"ForwardRefTests.test_no_type_checkE  sY    		; 	2 	 	 	 
	 C  R     ra   c                     t            G d d                      }t          |j                  }|                     |i            t           |            j                  }|                     |i            d S )Nc                       e Zd Zdddi fdZdS )3ForwardRefTests.test_no_type_check_class.<locals>.Cr   r	  r   c                     d S re   rm   r  s    r_   r  z7ForwardRefTests.test_no_type_check_class.<locals>.C.fooR  rW  ra   Nrj   rk   rl   r  rm   ra   r_   r  r	  P  6        { r      ra   r  )r1   r+   r  r   )rZ   r  cthiths       r_   test_no_type_check_classz(ForwardRefTests.test_no_type_check_classN  s    		 	 	 	 	 	 	 
	 QU##b!!!QQSSW%%b!!!!!ra   c                 4    G d d          t            G fdd                      }|                     t          j                  dt          i            G d d|          }|                     t          |j                  dt          i           d S )Nc                       e Zd ZdefdZdS )6ForwardRefTests.test_no_type_check_no_bases.<locals>.Crl  c                     d S re   rm   r  s     r_   rF  z;ForwardRefTests.test_no_type_check_no_bases.<locals>.C.meth\  r   ra   Nrj   rk   rl   r   rF  rm   ra   r_   r  r	  [  s!        'c''''''ra   r  c                       e Zd Z ZdS )6ForwardRefTests.test_no_type_check_no_bases.<locals>.DN)rj   rk   rl   r  r  s   r_   rT  r	  ]  s        AAAra   rT  rl  c                       e Zd ZdefdZdS ):ForwardRefTests.test_no_type_check_no_bases.<locals>.Childrl  c                     d S re   rm   r  s     r_   r  z>ForwardRefTests.test_no_type_check_no_bases.<locals>.Child.foof  r   ra   N)rj   rk   rl   r   r  rm   ra   r_   Childr	  e  s!        &S&&&&&&ra   r	  )r1   r   r+   rF  r   r  )rZ   rT  r	  r  s      @r_   test_no_type_check_no_basesz+ForwardRefTests.test_no_type_check_no_basesZ  s    	( 	( 	( 	( 	( 	( 	( 	(		 	 	 	 	 	 	 	 	 
	 	//#s<<<	' 	' 	' 	' 	'A 	' 	' 	' 		22S#J?????ra   c                     G d d          } G d d          }t            G d d                      }||j        |j        j        |j        fD ]m}|                     |          5  |                     |j                   |                     t          |          i            d d d            n# 1 swxY w Y   n||fD ]}|                     |          5  | 	                    t                    5  |j         d d d            n# 1 swxY w Y   |                     t          |          i            d d d            n# 1 swxY w Y   d S )	Nc                       e Zd ZU eed<   dS )>ForwardRefTests.test_no_type_check_nested_types.<locals>.Otherr  Nr1  rm   ra   r_   rJ  r	  l  r  ra   rJ  c                       e Zd ZU eed<   dS ):ForwardRefTests.test_no_type_check_nested_types.<locals>.Br  Nr1  rm   ra   r_   rS  r	  n  r  ra   rS  c                   R    e Zd ZU eed<    G d d          Z G d d          ZeZdS ):ForwardRefTests.test_no_type_check_nested_types.<locals>.Ar   c                   4    e Zd ZU eed<    G d d          ZdS )<ForwardRefTests.test_no_type_check_nested_types.<locals>.A.Br  c                       e Zd ZU eed<   dS )>ForwardRefTests.test_no_type_check_nested_types.<locals>.A.B.Cr  Nr1  rm   ra   r_   r  r	  u  s         FFFFFra   r  N)rj   rk   rl   r   r   r  rm   ra   r_   rS  r	  s  sG                  ra   rS  c                       e Zd ZU eed<   dS )<ForwardRefTests.test_no_type_check_nested_types.<locals>.A.Dr  Nr1  rm   ra   r_   rT  r 
  w           ra   rT  N)rj   rk   rl   r   r   rS  rT  rJ  rm   ra   r_   r   r	  p  sp         FFF               EEEra   r   )ri  )not_modified)r1   rS  r  rT  rw   r   __no_type_check__r   r+   r   r^  r   )rZ   rJ  rS  r   ri  r
  s         r_   test_no_type_check_nested_typesz/ForwardRefTests.test_no_type_check_nested_typesj  sq   	 	 	 	 	 	 	 		 	 	 	 	 	 	 				 		 		 		 		 		 		 
		 aceQS) 	< 	<EE** < < 7888  !6!6;;;< < < < < < < < < < < < < < < #AJ 	F 	FL<88 F F&&~66 3 3 223 3 3 3 3 3 3 3 3 3 3 3 3 3 3##N<$@$@"EEEF F F F F F F F F F F F F F F	F 	FsH   '>B11B5	8B5	E4D<EDED&EE		E	c                 V   t            G d d                      }|                     |j        j                   |                     t          |j                  i            |                     |j        j                   |                     t          |j                  i            d S )Nc                   N    e Zd Zededefd            Zededefd            ZdS )IForwardRefTests.test_no_type_check_class_and_static_methods.<locals>.Somerl  r   c                     d S re   rm   rS  s    r_   stzLForwardRefTests.test_no_type_check_class_and_static_methods.<locals>.Some.st  s    #&3ra   r  c                     d S re   rm   )r[   r  s     r_   clzLForwardRefTests.test_no_type_check_class_and_static_methods.<locals>.Some.cl  s    (+ra   N)rj   rk   rl   r7	  r   r	
  r;  r
  rm   ra   r_   Somer
    sP        &c&c&&& \&+3+3+++ [+++ra   r
  )r1   r   r	
  r
  r   r+   r
  )rZ   r
  s     r_   +test_no_type_check_class_and_static_methodsz;ForwardRefTests.test_no_type_check_class_and_static_methods  s    		, 	, 	, 	, 	, 	, 	, 
	, 	122200"555122200"55555ra   c                     |                      t          j                   |                     t                    5  t
          j        j         d d d            n# 1 swxY w Y   |                     t                    5  t
          j        j        j         d d d            n# 1 swxY w Y   |                      t          j                   |                     t                    5  t
          j        j         d d d            d S # 1 swxY w Y   d S re   )	r   rJ	  r
  r   r^  rH	  rK	  rM	  rN	  r   s    r_   test_no_type_check_other_modulez/ForwardRefTests.test_no_type_check_other_module  s   );<<<~.. 	< 	<);;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<~.. 	B 	B)/AA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	0BCCC~.. 	? 	?,>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s5   AAA=B  B$'B$$DD
Dc                 6   dt           dt           fdt           G fdd                      }|                     t                    5  j         d d d            n# 1 swxY w Y   |                     t                    t           t           d           d S )Nr   r   c                      d S re   rm   r  s    r_   r   zBForwardRefTests.test_no_type_check_foreign_functions.<locals>.some  s    Cra   c                   @    e Zd Z Z e           Z e           ZdS )?ForwardRefTests.test_no_type_check_foreign_functions.<locals>.AN)rj   rk   rl   
some_aliasr;  
some_classr7	  some_static)r   s   r_   r   r
    s2        J$T**J&,t,,KKKra   r   )r   r   )r   r1   r   r^  r
  r   r+   )rZ   r   r   s     @r_   $test_no_type_check_foreign_functionsz4ForwardRefTests.test_no_type_check_foreign_functions  s   	 	 	 	 	 	 
	- 	- 	- 	- 	- 	- 	- 	- 	- 
	-
 ~.. 	# 	#""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#--s/K/KLLLLLs   
AA"%A"c                     t            G d d                      }|                     |j        j                   |                     t          |j                  i            d S )Nc                   2    e Zd ZU d Zeegef         ed<   dS )4ForwardRefTests.test_no_type_check_lambda.<locals>.Ac                     | S re   rm   r   s    r_   rQ  z=ForwardRefTests.test_no_type_check_lambda.<locals>.A.<lambda>  s    C ra   r  N)rj   rk   rl   r  r"   r   r   rm   ra   r_   r   r
    s1          )8C3%*%77777ra   r   )r1   r   r  r
  r   r+   r   s     r_   test_no_type_check_lambdaz)ForwardRefTests.test_no_type_check_lambda  ss    		8 	8 	8 	8 	8 	8 	8 
	8 	/000..33333ra   c                 .    t          t                     d S re   )r1   r  r   s    r_   test_no_type_check_TypeErrorz,ForwardRefTests.test_no_type_check_TypeError  s     	dra   c                      G d d          } G d d          } G d d          } G d d          }d	t           j        t                   i}||||fD ]%}|                     t	          |          |           &d S )
Nc                   4    e Zd ZU dZej        e         ed<   dS )CForwardRefTests.test_no_type_check_forward_ref_as_string.<locals>.C   r  N)rj   rk   rl   r  rN   r$   r   r   rm   ra   r_   r  r!
    s)         ()C%)))))ra   r  c                   *    e Zd ZU dZee         ed<   dS )CForwardRefTests.test_no_type_check_forward_ref_as_string.<locals>.Dr"
  r  N)rj   rk   rl   r  r$   r   r   rm   ra   r_   rT  r$
    s&         !"C#"""""ra   rT  c                       e Zd ZU dZded<   dS )CForwardRefTests.test_no_type_check_forward_ref_as_string.<locals>.Er"
  r  r  Nrj   rk   rl   r  r   rm   ra   r_   rU  r&
    s#         *+C'+++++ra   rU  c                       e Zd ZU dZded<   dS )CForwardRefTests.test_no_type_check_forward_ref_as_string.<locals>.Fr"
  r	  r  Nr'
  rm   ra   r_   rV  r)
    s"         #$C$$$$$ra   rV  r  )rN   r$   r   r   r+   )rZ   r  rT  rU  rV  expected_resultclazzs          r_   (test_no_type_check_forward_ref_as_stringz8ForwardRefTests.test_no_type_check_forward_ref_as_string  s    	* 	* 	* 	* 	* 	* 	* 	*	# 	# 	# 	# 	# 	# 	# 	#	, 	, 	, 	, 	, 	, 	, 	,	% 	% 	% 	% 	% 	% 	% 	% !&/#"67Aq\ 	E 	EE^E22ODDDD	E 	Era   c                      G d d          } G d d          }||fD ]C}|                      t                    5  t          |           d d d            n# 1 swxY w Y   Dd S )Nc                       e Zd ZU dZded<   dS )GForwardRefTests.test_nested_classvar_fails_forward_ref_check.<locals>.Er"
  z%typing.ClassVar[typing.ClassVar[int]]r  Nr'
  rm   ra   r_   rU  r/
    s#         ;<C8<<<<<ra   rU  c                   *    e Zd ZU dZed         ed<   dS )GForwardRefTests.test_nested_classvar_fails_forward_ref_check.<locals>.Fr"
  r	  r  N)rj   rk   rl   r  r$   r   rm   ra   r_   rV  r1
    s'         -.C/*.....ra   rV  )r   r   r+   )rZ   rU  rV  r+
  s       r_   ,test_nested_classvar_fails_forward_ref_checkz<ForwardRefTests.test_nested_classvar_fails_forward_ref_check  s    	= 	= 	= 	= 	= 	= 	= 	=	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ V 	& 	&E""9-- & &u%%%& & & & & & & & & & & & & & &	& 	&s   AA	A	c                    t           d             }|                     |j        d           |dddi fd            }| G d d                      }|                     |j        d	           t          |          }|                     |i            t          |j                  }|                     |i            t           |            j                  }|                     |i            d S )
Nc                     | S re   rm   r	  s    r_   magic_decoratorz@ForwardRefTests.test_meta_no_type_check.<locals>.magic_decorator  s    Kra   r5
  r   r	  r   c                     d S re   rm   r  s    r_   r  z4ForwardRefTests.test_meta_no_type_check.<locals>.foo  r	  ra   c                       e Zd Zdddi fdZdS )2ForwardRefTests.test_meta_no_type_check.<locals>.Cr   r	  r   c                     d S re   rm   r  s    r_   r  z6ForwardRefTests.test_meta_no_type_check.<locals>.C.foo  rW  ra   Nr	  rm   ra   r_   r  r8
    r	  ra   r  r  )r2   r   rj   r+   r  )rZ   r5
  r  r  r	  r	  r	  s          r_   test_meta_no_type_checkz'ForwardRefTests.test_meta_no_type_check  s+   	 	 	 
!	 	 	13DEEE		; 	2 	 	 	 
	 
	 	 	 	 	 	 	 
	 	u---C  R   QU##b!!!QQSSW%%b!!!!!ra   c                     d}i }t          ||           t          |d         j                  }|                     ||d         |d         d           d S )Nz^class C:
    def foo(self, a: 'C') -> 'D': pass
class D:
    def bar(self, b: 'D') -> C: pass
r  rT  )r   r   )r  r+   r  r   )rZ   r  nshintss       r_   test_default_globalsz$ForwardRefTests.test_default_globals  s\    9
 T2r#w{++bgC A ABBBBBra   c                    |                      t          t          t                                d         t          t                              |                     t          t          t                                d         t          t                              |                     t          t          t                                d         t                     d S )NrC  )r   r   Loopr  r%   r   r   r   s    r_   test_final_forward_refz&ForwardRefTests.test_final_forward_ref  s    T799--f5uT{CCCCgii008%*EEECgii008%@@@@@ra   c                     t          d          }|                     |dz  t          |df                    |                     d|z  t          d|f                    d S rk  )r@   r   r   ra  s     r_   rm  zForwardRefTests.test_or  sW    sOOS%3-000q%Q-00000ra   N)&rj   rk   rl   r  rh	  rj	  rl	  rr	  rz	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r
  r
  r
  r
  r
  r
  r,
  r2
  r:
  r>
  rA
  rm  rm   ra   r_   rP	  rP	  /  sA       !7 !7 !7F  
     
! ! !T T TA A A*T T T,8 8 80I I I
0 0 0* * *+ + +7 7 72  @2 2 22 2 2+ + +$  
     * * *! ! !
" 
" 
"@ @ @ F F F:6 6 6	? 	? 	?M M M4 4 4  
E E E& & &" " "2	C 	C 	CA A A
1 1 1 1 1ra   rP	  c                     d| z  |z   S )Nr  rm   r  s     r_   cached_funcrD
    s    q519ra   c                   @    e Zd Zed             Zed             Zd ZdS )MethodHolderc                     d S re   rm   r.	  s    r_   r/	  zMethodHolder.clsmethod
  s    ra   c                      d S re   rm   rm   ra   r_   r1	  zMethodHolder.stmethod  r	  ra   c                     d S re   rm   r   s    r_   r5  zMethodHolder.method  r   ra   N)rj   rk   rl   r;  r/	  r7	  r1	  r5  rm   ra   r_   rF
  rF
  	  s?         [ \ra   rF
  c                   z    e Zd Zd Zd Zed             Zd Z ed e	d                     d             Z
d Zd	S )
OverloadTestsc                     |                      t                    5  t          d             } |             d d d            d S # 1 swxY w Y   d S )Nc                      d S re   rm   rm   ra   r_   rW	  z/OverloadTests.test_overload_fails.<locals>.blah  s    ra   )r   r  r   rZ   rW	  s     r_   test_overload_failsz!OverloadTests.test_overload_fails  s    233 	 	  X DFFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA
Ac                 @    t           d             }d } |             d S )Nc                      d S re   rm   rm   ra   r_   rW	  z2OverloadTests.test_overload_succeeds.<locals>.blah  r	  ra   c                      d S re   rm   rm   ra   r_   rW	  z2OverloadTests.test_overload_succeeds.<locals>.blah!  r  ra   r   rN
  s     r_   test_overload_succeedsz$OverloadTests.test_overload_succeeds  s;    		 	 
		 	 	 	ra   c                    t          dt          d                     5  |                     t          j        i            t          t                     t          t                     |                     t          j        t                    g            |                     t          j        t                    g            d d d            d S # 1 swxY w Y   d S )Ntyping._overload_registryc                  *    t          t                    S re   r   r  rm   ra   r_   rQ  zCOverloadTests.test_overload_on_compiled_functions.<locals>.<lambda>)  s    {4'8'8 ra   )	r
   r   r   rN   _overload_registryr   sumprintr   r   s    r_   #test_overload_on_compiled_functionsz1OverloadTests.test_overload_on_compiled_functions&  s    .8899; ; 	> 	> V6;;; SMMMUOOO V1#66;;;V1%88"===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s   B#CCCc                 d    d }|}t          |           d }|}t          |           d }|||gfS )Nc                      d S re   rm   rm   ra   r_   rW	  z,OverloadTests.set_up_overloads.<locals>.blah6  r  ra   c                      d S re   rm   rm   ra   r_   rW	  z,OverloadTests.set_up_overloads.<locals>.blah<  r  ra   c                      d S re   rm   rm   ra   r_   rW	  z,OverloadTests.set_up_overloads.<locals>.blahB  r  ra   rS
  )rZ   rW	  	overload1	overload2s       r_   set_up_overloadszOverloadTests.set_up_overloads5  se    	 	 	 		 	 	 		 	 	 i+++ra   rV
  c                  *    t          t                    S re   rX
  rm   ra   r_   rQ  zOverloadTests.<lambda>I  s    K-- ra   c                 8   |                      t          j        i            |                                 \  }}|                     t          j        i            |                      t          t          |                    |           d }t          |           |}d }|                      t          t          |                    |g           d }|                      t          t          |                    g            t                       |                      t          j        i            |                      t          |          g            d }|                      t          |          g            |                      t          j        i            d S )Nc                      d S re   rm   rm   ra   r_   some_other_funcz=OverloadTests.test_overload_registry.<locals>.some_other_funcR  r   ra   c                      d S re   rm   rm   ra   r_   rg
  z=OverloadTests.test_overload_registry.<locals>.some_other_funcU  r   ra   c                      d S re   rm   rm   ra   r_   not_overloadedz<OverloadTests.test_overload_registry.<locals>.not_overloadedX  r   ra   c                      d S re   rm   rm   ra   r_   the_only_onez:OverloadTests.test_overload_registry.<locals>.the_only_oneb  r   ra   )	r   rN   rY
  rc
  r   r  r   r   r   )rZ   impl	overloadsrg
  other_overloadrj
  rl
  s          r_   test_overload_registryz$OverloadTests.test_overload_registryH  s{    	2B777//11iF5r:::mD1122I>>>###!!!(###mO<<==?OPPP"""mN;;<<bAAA 	2B777t,,b111 	!  |44b9992B77777ra   c                     t          d          D ]I}|                                 \  }}|                     t          t	          |                    |           Jd S Nr   )rt   rc
  r   r  r   )rZ   _rm
  rn
  s       r_   test_overload_registry_repeatedz-OverloadTests.test_overload_registry_repeatedf  sc    q 	C 	CA"3355OD)T-"5"566	BBBB	C 	Cra   N)rj   rk   rl   rO
  rT
  rK   r\
  rc
  r
   r   rp
  rt
  rm   ra   r_   rK
  rK
    s             > > \>, , ,& U&--..0 08 80 088C C C C Cra   rK
  )
ann_moduleann_module2ann_module3ann_module5ann_module6T_ac                   6    e Zd Zd Zdej        e         fdZdS )AwaitableWrapperc                     || _         d S re   r   rZ   r   s     r_   r*  zAwaitableWrapper.__init__u      


ra   r   c              #      K   d V  | j         S re   r~
  r   s    r_   	__await__zAwaitableWrapper.__await__x  s      zra   N)rj   rk   rl   r*  rN   Iteratorrz
  r
  rm   ra   r_   r|
  r|
  s  sE          6?3/      ra   r|
  c                   ^    e Zd Zdej        e         fdZdej        e         fdZdefdZ	dS )AsyncIteratorWrapperr   c                     || _         d S re   r~
  r
  s     r_   r*  zAsyncIteratorWrapper.__init__~  r
  ra   r   c                     | S re   rm   r   s    r_   	__aiter__zAsyncIteratorWrapper.__aiter__  s    ra   c                 6   K   | j          d {V }|r|S t          re   )r   StopAsyncIteration)rZ   datas     r_   	__anext__zAsyncIteratorWrapper.__anext__  s2      Z 	%K$$ra   N)
rj   rk   rl   rN   rF  rz
  r*  AsyncIteratorr
  r
  rm   ra   r_   r
  r
  |  st        foc2    6/4    % % % % % % %ra   r
  c                        e Zd ZdefdZd ZdS )ACMr   c                 
   K   dS r   rm   r   s    r_   
__aenter__zACM.__aenter__  s      rra   c                 
   K   d S re   rm   )rZ   etyper  tbs       r_   	__aexit__zACM.__aexit__  s      tra   N)rj   rk   rl   r   r
  r
  rm   ra   r_   r
  r
    s>        #        ra   r
  c                       e Zd ZU eed<   dS )r   r  N)rj   rk   rl   r  r   rm   ra   r_   r   r     s         HHHHHra   r   c                   J    e Zd ZU dZeed                   ed<   eed<   eed<   dS )rS  Nrl  r  r  )rj   rk   rl   rl  r$   r   r   r   rm   ra   r_   rS  rS    s;         !%Ax%%%
FFF
FFFFFra   rS  c                   :    e Zd ZU  e            Zed          ed<   dS )CSubr  N)rj   rk   rl   rS  r  r$   r   rm   ra   r_   r
  r
    s-         !##Axra   r
  c                   6    e Zd ZU g Zeee                  ed<   dS )rW  lstN)rj   rk   rl   r
  r$   r   r   r   rm   ra   r_   rW  rW    s+         C$q'	ra   rW  c                   &    e Zd ZU ed          ed<   dS )r@
  rC  N)rj   rk   rl   r%   r   rm   ra   r_   r@
  r@
    s"         
-ra   r@
  c                   $    e Zd ZU d ed<   ded<   dS )NoneAndForwardparentNmeaningr  rm   ra   r_   r
  r
    s%         MMMMMra   r
  c                   $    e Zd ZU eed<   eed<   dS )CoolEmployeenamecoolNrj   rk   rl   rX  r   r   rm   ra   r_   r
  r
    s"         
III
IIIIIra   r
  c                   (    e Zd ZU eed<   dZeed<   dS )CoolEmployeeWithDefaultr
  r   r
  N)rj   rk   rl   rX  r   r
  r   rm   ra   r_   r
  r
    s&         
IIID#MMMMMra   r
  c                        e Zd ZU eed<   d ZdS )XMethrl  c                     d| j         z  S rr
  rS  r   s    r_   doublezXMeth.double  s    46zra   N)rj   rk   rl   r   r   r
  rm   ra   r_   r
  r
    s.         
FFF    ra   r
  c                   4    e Zd ZU eed<   dZeed<   d Zd ZdS )XReprrl  rp   r  c                 $    | j          d| j         S )Nz -> r  r   s    r_   __str__zXRepr.__str__  s    &&&df&&&ra   c                     dS r(  rm   rZ   r8  s     r_   __add__zXRepr.__add__  s    qra   N)rj   rk   rl   r   r   r  r
  r
  rm   ra   r_   r
  r
    sJ         
FFFAsJJJ' ' '    ra   r
  Labelr5  c                   $    e Zd ZU eed<   eed<   dS )Point2Drl  r  Nr1  rm   ra   r_   r
  r
    r2  ra   r
  c                   $    e Zd ZU eed<   eed<   dS )Point2DGenericr   r  Nrj   rk   rl   r   r   rm   ra   r_   r
  r
    s"         DDDDDDDDra   r
  c                       e Zd ZU eed<   dS )r  r  Nr1  rm   ra   r_   r  r    r<  ra   r  Ftotalc                       e Zd ZU eed<   dS )
BarGenericr  Nr1  rm   ra   r_   r
  r
    r<  ra   r
  c                       e Zd ZdS )LabelPoint2DNr}   rm   ra   r_   r
  r
    r   ra   r
  c                   $    e Zd ZU eed<   eed<   dS )Options	log_levellog_pathNr9  rm   ra   r_   r
  r
    s"         NNNMMMMMra   r
  c                   0    e Zd ZU eed<   ee         ed<   dS )
TotalMovietitleyearN)rj   rk   rl   rX  r   r6   r   rm   ra   r_   r
  r
    s,         JJJ
c
ra   r
  c                   0    e Zd ZU ee         ed<   eed<   dS )NontotalMovier
  r
  N)rj   rk   rl   r7   rX  r   r   rm   ra   r_   r
  r
    s)         C=
IIIIIra   r
  c                   &    e Zd ZU ee         ed<   dS )ParentNontotalMovier
  N)rj   rk   rl   r7   rX  r   rm   ra   r_   r
  r
    s"         C=ra   r
  c                   &    e Zd ZU ee         ed<   dS )ChildTotalMovier
  N)rj   rk   rl   r6   r   r   rm   ra   r_   r
  r
    s#         
c
ra   r
  c                   F    e Zd ZU eeee         df         df         ed<   dS )ParentDeeplyAnnotatedMovier  another levelr
  N)rj   rk   rl   r?   r7   rX  r   rm   ra   r_   r
  r
    s6         Yx}h67HIIIIIIra   r
  c                   6    e Zd ZU eeedf                  ed<   dS )ChildDeeplyAnnotatedMovie  r
  N)rj   rk   rl   r6   r?   r   r   rm   ra   r_   r
  r
    s,         
iT	*
++++++ra   r
  c                   \    e Zd ZU eee         df         ed<   eeedf                  ed<   dS )AnnotatedMovier  r
  r
  r
  N	rj   rk   rl   r?   r7   rX  r   r6   r   rm   ra   r_   r
  r
    sF         Xc]H,----
iT	*
++++++ra   r
  c                   l    e Zd ZU eeee         df         df         ed<   eeedf                  ed<   dS )DeeplyAnnotatedMovier  r
  r
  r
  r
  Nr
  rm   ra   r_   r
  r
    sP         Yx}h67HIIII
iT	*
++++++ra   r
  c                   <    e Zd ZU ed         ed<   ed         ed<   dS )WeirdlyQuotedMovie)z"Annotated[Required[str], "foobar"]r
  r
  zAnnotated[int, 2000]r
  N)rj   rk   rl   r?   r   r6   rm   ra   r_   r
  r
    s6         JKKKK
,
------ra   r
  c                   $    e Zd ZU ded<   ded<   dS )HasForeignBaseClassr
  
some_xreprzmod_generics_cache.Aother_aNr  rm   ra   r_   r
  r
    s*         ######ra   r
  amc                 f   K   | 4 d {V }|cd d d           d {V  S # 1 d {V swxY w Y   d S re   rm   )r
  rl  s     r_   g_withr
    s             Q                             s    
**r   c                   l    e Zd Zej        dd            Zej        ej        dd                        ZdS )ForRefExamplerZ   c                     d S re   rm   r   s    r_   r	  zForRefExample.func  s    ra   c                     d S re   rm   r   s    r_   nestedzForRefExample.nested  s	     	ra   N)rZ   r
  )rj   rk   rl   ru
  decr	  r
  rm   ra   r_   r
  r
    sb        ^   ^ ^^   ^ ^  ra   r
  c                       e Zd Zd Zd Z ed          d             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d Zd Zd Zd Zd Zd Zd ZdS )GetTypeHintTestsc                    |                      t                    5  t          d           d d d            n# 1 swxY w Y   |                      t                    5  t          d           d d d            n# 1 swxY w Y   |                      t                    5  t          d            d d d            d S # 1 swxY w Y   d S )N{   r  )r   r   r   r   s    r_   (test_get_type_hints_from_various_objectsz9GetTypeHintTests.test_get_type_hints_from_various_objects
  sm   y)) 	 	HHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	JJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s0   7;;A88A<?A<B::B>B>c                 b   dt           t          t          f         t          t          t          t          z  d}|                     t          t                    |           |                     t          t                    i            |                     t          t                    i            d S )Nr   )rp   rh   rl  r  r  )	r   r   rX  r  r   r   ru
  rv
  rw
  )rZ   ann_module_type_hintss     r_   test_get_type_hints_modulesz,GetTypeHintTests.test_get_type_hints_modules  s    $%E#s(O#CVY\aVa b bZ*?@@@[))2...[))2.....ra   z	known bugc                     t           t          j                 t           t          j                 d}|                     t          t                    |           d S )N)	default_a	default_b)r   rL   r   rS  r   r   )rZ   	mgc_hintss     r_   &test_get_type_hints_modules_forwardrefz7GetTypeHintTests.test_get_type_hints_modules_forwardref  sO    
 #++=+?"@"*+=+?"@B B	/00)<<<<<ra   c                    |                      t          t          j                  dt          t          j                 i           |                     t          t          j                  t                     |                      t          t          j                  dt          d           |                      t          t          j
                  t          t          t          t          j                 d           |                      t          t          j                  dt          i           |                      t          t          j                  dt          t          j                 i           |                      t          t          j                  t          t          d           |                      t          t          j                  dt          i           |                      t          t"                    t"          t          d           d           |                      t          t$                    t&          t(          j        t(          j        d	           |                      t          t&          j                  t          t          d           |                      t          t(          j                  t(          j        j        t(          j        j        t(          j        d
           d S )Nr  r
  )123r  )r  r  r  r  r  rl  )r
  r
  )r
  r
  some_b)my_inner_a1my_inner_a2
my_outer_a)r   r   ru
  r  r   r   j_classr  r  r   rT  rX  re  r   h_classrE  r  r
  r
  r
  rL   r   rS  r}  r   s    r_   test_get_type_hints_classesz,GetTypeHintTests.test_get_type_hints_classes"  sR   Z\**x
56	8 	8 	8c*"455t<<<Z\**Cd,C,CDDDZ\**"8JL3IJJ	L 	L 	LZ\**S#J777Z/00x
56	8 	8 	8Z\**#C,@,@AAAZ^,,sCj999^,,$2tDzzJJ	L 	L 	L011(-:L:N$6$8: :	; 	; 	; 	U]++"--	/ 	/ 	//122);)=)?);)=)?(:(<> >	? 	? 	? 	? 	?ra   c                 t     G d d          }|                      t          |          dt          i           d S )Nc                       e Zd ZU dZeed<   dS )ZGetTypeHintTests.test_get_type_hints_classes_no_implicit_optional.<locals>.WithNoneDefaultNfield)rj   rk   rl   r  r   r   rm   ra   r_   WithNoneDefaultr   ;  s"         E3ra   r  r  )r   r   r   )rZ   r  s     r_   0test_get_type_hints_classes_no_implicit_optionalzAGetTypeHintTests.test_get_type_hints_classes_no_implicit_optional:  sT    	 	 	 	 	 	 	 	 	_--~>>>>>ra   c                    t            G d d                      }|                     |j                   |                     |j        j        j                   |                     t          t          j        j	                  i             G d dt          t                             }t            G d d|                      }|                     t          |j	                  dt          i           d S )Nc                   (    e Zd Z G d d          ZdS )>GetTypeHintTests.test_respect_no_type_check.<locals>.NoTpCheckc                       e Zd ZddZdS )BGetTypeHintTests.test_respect_no_type_check.<locals>.NoTpCheck.Innrl  
not a typec                     d S re   rm   r  s     r_   r*  zKGetTypeHintTests.test_respect_no_type_check.<locals>.NoTpCheck.Inn.__init__D  r   ra   N)rl  r	  rh  rm   ra   r_   Innr  C  s        888888ra   r  N)rj   rk   rl   r  rm   ra   r_   	NoTpCheckr  A  s<        9 9 9 9 9 9 9 9 9 9ra   r  c                       e Zd ZdefdZdS ):GetTypeHintTests.test_respect_no_type_check.<locals>.ABaserl  c                     d S re   rm   rS  s    r_   rF  z?GetTypeHintTests.test_respect_no_type_check.<locals>.ABase.methI  r   ra   Nr	  rm   ra   r_   ABaser  H  s!        !!!!!!!ra   r  c                       e Zd ZdS )8GetTypeHintTests.test_respect_no_type_check.<locals>.DerNr}   rm   ra   r_   Derr  J  s        #ra   r  rl  )r1   r   r
  r  r*  r   r   rv
  NTCrF  r#   r   r   )rZ   r  r  r  s       r_   test_respect_no_type_checkz+GetTypeHintTests.test_respect_no_type_check@  s   		9 	9 	9 	9 	9 	9 	9 
	9 		3444	.@AAA[_122B777	" 	" 	" 	" 	"GAJ 	" 	" 	"	% 
UZ3*55555ra   c                 b   |                      t          t                    i            |                      t          t                    i            |                      t          t                    i            |                      t          t
                    i            |                      t          t          j                  i            |                      t          t                      j                  i            |                      t          t          j	                  i            d S re   )
r   r   r   r   r   r   r,  r
  rX  joinr   s    r_    test_get_type_hints_for_builtinsz1GetTypeHintTests.test_get_type_hints_for_builtinsN  s    S2&&&TB'''S2&&&S2&&&V^,,b111VXX-..333SX+++++ra   c                     d }d|j         d<   |                     t          |          dt          i           dd}|                     t          |          dt	          d           i           d S )Nc                     d S re   rm   r  s     r_   testfz6GetTypeHintTests.test_previous_behavior.<locals>.testfY  r   ra   r   rl  c                     d S re   rm   rS  s    r_   testgz6GetTypeHintTests.test_previous_behavior.<locals>.testg\  r   ra   )rl  N)r   r   r   r   r   )rZ   r  r  s      r_   test_previous_behaviorz'GetTypeHintTests.test_previous_behaviorX  sq    %*c"Uc3Z000Uc4::%677777ra   c                      G d d          } G d d          } |            }ddi|_         |                     t          |t                                d|i           d S )Nc                       e Zd ZdS )KGetTypeHintTests.test_get_type_hints_for_object_with_annotations.<locals>.ANr}   rm   ra   r_   r   r!  `  r   ra   r   c                       e Zd ZdS )KGetTypeHintTests.test_get_type_hints_for_object_with_annotations.<locals>.BNr}   rm   ra   r_   rS  r#  a  r   ra   rS  rl  )r   r   r   r  )rZ   r   rS  r  s       r_   /test_get_type_hints_for_object_with_annotationsz@GetTypeHintTests.test_get_type_hints_for_object_with_annotations_  si    ACC #JQ))C844444ra   c           	         |                      t          t          j        t          j                  dt
          j        t          j                 i           |                      t          t          t                                t          t          t          t                            t          d           |                      t          t          t                                t          t                   t          t          t          t          t                            d           |                      t          t                    dt          t          t                            i           d S )Nvar)r  rl  r  )r  r  r  rl  r
  )r   r   rv
  CVr  rN   r$   rS  r  r   r   r
  rW  r   r   r   s    r_   test_get_type_hints_ClassVarz-GetTypeHintTests.test_get_type_hints_ClassVarf  s    [^[-ABB!@A	C 	C 	CQ		**"(1+)>SII	K 	K 	KT799--'~Cc'46 6	7 	7 	7 	Q%$q'):!;<<<<<ra   c                     dt           i}|                     t          t           j                  |           |                     t          t           j                  |           d S )NrZ   )r
  r   r   r	  r
  )rZ   expectss     r_   ,test_get_type_hints_wrapped_decoratored_funcz=GetTypeHintTests.test_get_type_hints_wrapped_decoratored_funcp  sT    =)]/00':::]122G<<<<<ra   c                 
   dt           d         fd}t          t          df         }|                     t	          |t                      t                                dt           t                   i           |                     t	          |t                      t                      d          dt           t          t          df                  i           dt          t          d                   fd}t          t          df         }|                     t	          |t                      t                                dt          t                   i           |                     t	          |t                      t                      d          dt          t          t          df                  i           t          t          t          df         d	f         }d|fd
}|                     t	          |t                      t                                d         t          t          d	f                    |                     t	          |t                      t                      d          d         |           t          t          t          df         d	f         }d|fd}|                     t	          |t                      t                                d         t          t          d	f                    |                     t	          |t                      t                      d          d         |           dt          j        d	t          t           t                   df         f         dt          j        t          t          t          df         f         fd}|                     t	          |t                      t                                t          j        d	t           t                   f         t          j        t          t          f         d           t          j        d	t           t                   f         }d|fd}|                     t	          |t                      t                      d          d         |           t          j        t          t           z  df         }d|fd}	|                     t	          |	t                      t                                dt          t           z  i           |                     t	          |	t                      t                      d          dt          j        t          t           z  df         i           d S )Nrl  r`  c                     d S re   rm   rS  s    r_   r  z>GetTypeHintTests.test_get_type_hints_annotated.<locals>.foobarv  r   ra   rp   r  Tinclude_extrasc                     d S re   rm   rS  s    r_   r  z>GetTypeHintTests.test_get_type_hints_annotated.<locals>.foobar  r   ra   )rp   r   .c                     d S re   rm   rS  s    r_   r  z>GetTypeHintTests.test_get_type_hints_annotated.<locals>.barfoo  r   ra   c                     d S re   rm   rS  s    r_   r  z>GetTypeHintTests.test_get_type_hints_annotated.<locals>.barfoo  r   ra   r	  r  mutablec                     d S re   rm   r  s     r_   r  z?GetTypeHintTests.test_get_type_hints_annotated.<locals>.barfoo2  s    DGCra   r  c                     d S re   rm   rS  s    r_   barfoo3z?GetTypeHintTests.test_get_type_hints_annotated.<locals>.barfoo3  r   ra   c                     d S re   rm   rS  s    r_   barfoo4z?GetTypeHintTests.test_get_type_hints_annotated.<locals>.barfoo4  r   ra   )r   r?   r   r   r+   r  r  r  r@   r   r   r  rN   r"   r   r   r  )
rZ   r  r`  BAr  r  BA2r7  BA3r9  s
             r_   test_get_type_hints_annotatedz.GetTypeHintTests.test_get_type_hints_annotatedu  sk   %d3i%%%%c7l#6799fhh77$s)	
 	
 	
 	6799fhhtLLL$yg./0	
 	
 	

 	2d:c??+1111c7l#6799fhh77$s)	
 	
 	
 	6799fhhtLLL$yg./0	
 	
 	

 9QY',-b		688DDSI5QRTWQW=YYY6799fhhtLLLSQ	
 	
 	

 9QY',-b		688DDSI5QRTWQW=YYY6799fhhtLLLSQ	
 	
 	

	HvsId1gw6F,G'GH 	H|C1i<)@$@A	H 	H 	H 	H7GIIvxx88/#tAw,/fl366JKK	
 	
 	

 oc47l+ s    7GIIvxxMMMcR	
 	
 	
 sU{G34 s    7GIIvxx88#+	
 	
 	
 	7GIIvxxMMM&"3;#789	
 	
 	
 	
 	
ra   c           	      n   dt           t          t          t          df                  z  fd}|                     t          |          dt           t          t                   z  i           |                     t          |d          dt           t          t          t          df                  z  i           d S )Nrl  metac                     d S re   rm   rS  s    r_   
with_unionzKGetTypeHintTests.test_get_type_hints_annotated_in_union.<locals>.with_union  r   ra   Tr/  )r   r  r?   rX  r   r+   )rZ   rA  s     r_   &test_get_type_hints_annotated_in_unionz7GetTypeHintTests.test_get_type_hints_annotated_in_union  s    B#YsF{%; <<BBBB
33c3c?5KLLL:d;;;#YsF{3445	
 	
 	
 	
 	
ra   c                    t           t          df          G fddt          t                             }|                     t	          |j        t                      t                                |t                   |t                   d           |                     t	          |j        t                      t                      d          |t                            |t                   d           |                     t	          |j        t                      t                                |t                   |t                   d           d S )NConstc                   4    e Zd ZddZd d         ddfdZdS )	BGetTypeHintTests.test_get_type_hints_annotated_refs.<locals>.MySetr8  Const[MySet[T]]r   MySet[T]c                     d S re   rm   r
  s     r_   __ior__zJGetTypeHintTests.test_get_type_hints_annotated_refs.<locals>.MySet.__ior__      ra   c                     d S re   rm   r
  s     r_   __iand__zKGetTypeHintTests.test_get_type_hints_annotated_refs.<locals>.MySet.__iand__  rK  ra   N)r8  rG  r   rH  )rj   rk   rl   rJ  rM  )rD  s   r_   MySetrF    sP           eJ&7 J      ra   rN  )r8  r   Tr/  )	r?   r   r#   r   r+   rM  r  r  rJ  )rZ   rN  rD  s     @r_   "test_get_type_hints_annotated_refsz3GetTypeHintTests.test_get_type_hints_annotated_refs  s.   !W*%	 	 	 	 	 	 	GAJ 	 	 	 	5>799fhh??Ah%(33	
 	
 	

 	5>799fhhtTTTE!Hoq::	
 	
 	

 	5='))VXX>>Ah%(33	
 	
 	
 	
 	
ra   c                     ddt           t          df         fd}|                     t          |          dt          i           |                     t          |d          dt           t          df         i           d S )Nrl  r
  c                     d S re   rm   rS  s    r_   annotated_with_none_defaultzeGetTypeHintTests.test_get_type_hints_annotated_with_none_default.<locals>.annotated_with_none_default  r   ra   Tr/  re   )r?   r   r   r+   )rZ   rR  s     r_   /test_get_type_hints_annotated_with_none_defaultz@GetTypeHintTests.test_get_type_hints_annotated_with_none_default  s    NN9S&[+ANNNN677#J	
 	
 	
 	6tLLL)CK()	
 	
 	
 	
 	
ra   c                 t     G d d          }|                      t          |          dt          i           d S )Nc                       e Zd ZU eZded<   dS )IGetTypeHintTests.test_get_type_hints_classes_str_annotations.<locals>.Foor  rl  N)rj   rk   rl   rX  r  r   rm   ra   r_   r  rV    s         AFFFFFra   r  rl  )r   r+   rX  r3  s     r_   +test_get_type_hints_classes_str_annotationsz<GetTypeHintTests.test_get_type_hints_classes_str_annotations  sT    	 	 	 	 	 	 	 	 	,,sCj99999ra   c                      G d d          }d|_         |                     dt          j                   |                     t          |          i            d S )Nc                       e Zd ZdS )BGetTypeHintTests.test_get_type_hints_bad_module.<locals>.BadModuleNr}   rm   ra   r_   	BadModulerZ    rv  ra   r[  bad)rk   ra	  sysmodulesr   r+   )rZ   r[  s     r_   test_get_type_hints_bad_modulez/GetTypeHintTests.test_get_type_hints_bad_module  sn    	 	 	 	 	 	 	 	$	,,,	22B77777ra   c                      G d d          } G d d|          }dx|_         |_         |                     dt          j                   |                     t          |          t          t          d           d S )Nc                       e Zd ZU eed<   dS )JGetTypeHintTests.test_get_type_hints_annotated_bad_module.<locals>.BadBaser  N)rj   rk   rl   r  r   rm   ra   r_   BadBaserb    s         JJJJJra   rc  c                       e Zd ZU eed<   dS )JGetTypeHintTests.test_get_type_hints_annotated_bad_module.<locals>.BadTyper  Nr  rm   ra   r_   BadTypere    s         IIIIIra   rf  r\  r  )rk   ra	  r]  r^  r   r+   r  r  )rZ   rc  rf  s      r_   (test_get_type_hints_annotated_bad_modulez9GetTypeHintTests.test_get_type_hints_annotated_bad_module  s    	 	 	 	 	 	 	 		 	 	 	 	g 	 	 	277W/,,,00%2M2MNNNNNra   c                     t          t                    }|                     |dt          t                   i           t          t          j                  }|                     |dt          i           d S )Nr
  r   )r+   rx
  r   r%   rX  MyClass)rZ   r=
  s     r_   test_forward_ref_and_finalz+GetTypeHintTests.test_forward_ref_and_final  s_    {++s 4555{233% 011111ra   c                     |                      t          d          5  t          t                     d d d            d S # 1 swxY w Y   d S )Nz4typing.ClassVar\[int\] is not valid as type argument)r   r   r+   ry
  r   s    r_   test_top_level_class_varz)GetTypeHintTests.test_top_level_class_var  s    ##C
 
 	( 	( ;'''		( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   >AAc           	         |                      t          t                    t          t          d           |                      t          t          d          t          t
          t                   d           |                      t          t                    t          t          d           |                      t          t          d          t          t          t                   df         t
          t          t          df                  d           |                      t          t                    t          t          d           |                      t          t          d          t          t          t                   ddf         t
          t          t          df                  d           |                      t          t                    t          t          d           |                      t          t          d          t          t          t                   ddf         t
          t          t          df                  d           |                      t          t          j                  dt          i           |                      t          t          j        d          dt          t          t                   ddd	f         i           |                      t          t                    t          t          d           |                      t          t          d          t          t                   t
          t                   d           |                      t          t                    t          t          d           |                      t          t          d          t          t          t                   ddf         t
          t          t          df                  d           d S )
N)r
  r
  Tr/  r  r
  r
  r   r  r  )r   r+   r
  rX  r   r6   r
  r?   r7   r
  r
  rM   VeryAnnotatedr
  r
  r   s    r_   test_get_type_hints_typeddictz.GetTypeHintTests.test_get_type_hints_typeddict  sQ   
33sC5P5PQQQ
4HHH$K
 K
 	 	 	
 	773PS9T9TUUUtLLLx}h67	#t) 45O
 O
 	 	 	
 	(<==VY?Z?Z[[[(<TRRRx}hGH	#t) 45U
 U
 	 	 	
 	(:;;sTW=X=XYYY(:4PPPx}hGH	#t) 45S
 S
 	 	 	
 	(:(HIICQT:VVV(:(HY]^^^8C=#sC78a
 	 	 	 	88CQT:U:UVVVMMMc]K,<P
 P
 	 	 	 	(ABBc[^D_D_```(ARVWWWx}hGH	#t) 45Z
 Z
 	 	 	 	 	ra   c                    t          d          }dt          j        j        t          gt          f         fd}dt          j        j        dt          f         fd}dt          j        j        |t          f         fd}|                     t          |          dt          j        j        t          gt          f         i           |                     t          |          dt          j        j        dt          f         i           |                     t          |          dt          j        j        |t          f         i           d S )Nr  rl  c                     d S re   rm   rS  s    r_   rh   zHGetTypeHintTests.test_get_type_hints_collections_abc_callable.<locals>.f9  r   ra   .c                     d S re   rm   rS  s    r_   r  zHGetTypeHintTests.test_get_type_hints_collections_abc_callable.<locals>.g:  r   ra   c                     d S re   rm   rS  s    r_   r  zHGetTypeHintTests.test_get_type_hints_collections_abc_callable.<locals>.h;  r   ra   )rD   r  r  r"   r   r   r+   )rZ   r  rh   r  r  s        r_   ,test_get_type_hints_collections_abc_callablez=GetTypeHintTests.test_get_type_hints_collections_abc_callable6  s	   cNN;)3%*5;;;;9)#s(399997)!S&17777**S+/2JC5RU:2V,WXXX**S+/2J3PS82T,UVVV**S+/2J1c62R,STTTTTra   N)rj   rk   rl   r
  r
  r	   r
  r
  r  r  r  r  r$  r(  r+  r=  rB  rO  rS  rW  r_  rg  rj  rl  ro  rt  rm   ra   r_   r
  r
  	  s         / / / 
T+= = =? ? ?0? ? ?6 6 6, , ,8 8 85 5 5= = == = =
=
 =
 =
~
 
 

 
 
6

 

 

: : :8 8 8O O O2 2 2( ( (' ' 'R	U 	U 	U 	U 	Ura   r
  c                       e Zd Zd Zd ZdS )GetUtilitiesTestCasec                 
   t          d          }t          d          }t          d          } G d dt          |                   }|                     t          |t                             |           |                     t          ||                   |           |                     t          t                    d            |                     t          t          t                             t                     |                     t          t          t          t          f                   t                     |                     t          t          d                   t                     |                     t          t          t          t                                      t                     |                     t          t                    t                     |                     t          t          |                   t                     |                     t          t          t          ||f                  t                             t                     |                     t          t          |df                   t                     |                     t          t                    t                     |                     t          t                    t                      |                     t          t"                    t$          j        j                   |                     t          t          t                             t                     |                     t          t                    d            |                     t          t          t          z            t(          j                   |                     t          |j                  |           |                     t          |j                  |           |                     t          t0          t                             t0                     |                     t          t2          t                             t2                     |                     t          g |R d                   t4                     |                     t          t4          |                   t4                     |                     t          g t           g |R          R d                   t                      |                     t          t4          t          t4          |                                     t4                     d S )	Nr   r  r  c                       e Zd ZdS )/GetUtilitiesTestCase.test_get_origin.<locals>.CNr}   rm   ra   r_   r  ry  G  r   ra   r  r   +   rj  r   )r   r   rD   r#   r   r,   r   r$   r   rX  r   r%   r   r   r  r?   r  r"   r  r  r  r  r   rP  r7   r6   r   )rZ   r   r  r  r  s        r_   r   z$GetUtilitiesTestCase.test_get_originC  s   CLL$cNN!!!!!
!!!j3((!,,,j1&&***joot,,,j#//:::jsCx115999j117;;;jtCy!122E:::j))7333j,,g666jeAqDk!23!788$???j1g:!677CCCj&&---j''///j**KO,DEEEjc++T222j&&---j,,eo>>>j((!,,,j**A...j#//:::jS!122K@@@j2++V444j,,f555j5":!233U;;;jfRj(9!:;;VDDDDDra   c           
         t          d          } G d dt          |                   }|                     t          |t                             t          f           |                     t          ||                   |f           |                     t          t                    d           |                     t          t
          t                             t          f           |                     t          t          t          t          f                   t          t          f           |                     t          t          d                   d           |                     t          t          t          t                                      t          t                   f           |                     t          t          t          t          |t          f         f         t                             t          t          t          t          f         f           |                     t          t          j        t          t          ||f         f         t          t                                      t          t          t          t                   t          t                   f         f           |                     t          t          g |f         t                             g t          f           |                     t          t          dt          f                   dt          f           |                     t          t          t          t          t          |df         gt          f         f                   t          t          t          |df         gt          f         f           |                     t          t          t          df                   t          df           |                     t          t          d                   d           |                     t          t           |ddd	gf                   |ddd	gf           |                     t          t                    d           |                     t          t                    d           |                     t          t                    d           |                     t          t"          t                             t          f           |                     t          t"                    d           |                     t          t$          j        j        t          gt          f                   t          gt          f           |                     t          t$          j        j        dt          f                   dt          f           |                     t          t$          j        j        g t          f                   g t          f           |                     t          t$          j        j        t          gt          f                   t          t          t          gt          f                              t)          d
          }|                     t          t          |t          f                   |t          f           |                     t          t          t*          t          |f         t          f                   t*          t          |f         t          f           |                     t          t"          t          z            t"          t          f           |                     t          t,          t                             t          f           |                     t          t.          t                             t          f           |                     t          t0                    d           |                     t          t2          t                             t          f           t5          d          }|                     t          |          d           |                     t          g |R d                   |f           |                     t          t6          |                   |f           |                     t          t8          g |R                    g |R            |                     t          t8          t6          |                            t6          |         f           |                     t          g t8          g |R          R d                   g |R            |                     t          t6          t8          t6          |                                     t8          t6          |                  f           d S )Nr   c                       e Zd ZdS )-GetUtilitiesTestCase.test_get_args.<locals>.CNr}   rm   ra   r_   r  r~  d  r   ra   r  rm   rz  .oner   threer  r  r   )r   r#   r   r-   r   r$   r   rX  r   r%   r   r   rN   r    r   r"   r?   r  r  r  rD   rE   r7   r6   rC   rH   r   r   r  )rZ   r   r  r  r  s        r_   test_get_argsz"GetUtilitiesTestCase.test_get_argsb  s   CLL!!!!!
!!!!C&))C6222!A$!...#+++(3-003&999%S/22S#J???'&/22H===%S	"233d3i\BBB%U1c6](:";C"@AAuS#X/	1 	1 	1&+c5A;.>"?"NOOuXc]HSM%ABC	E 	E 	E(2q5/#"677"cCCC(38"455SzBBB%XuQV}os6J-K(K"LMMxq#v(<=>	@ 	@ 	@%S/22S#J???%),,b111)Aua',B"CDDq%QRU\T]F^___$,,,%"---(++R000$s),,sf555$,,,+/":C5#:"FGG3%QTVVV+/":38"DEESzRRR+/":2s7"CDDr3iPPP+/":C5#:"FGG!(C5#:"677	9 	9 	9cNN(1c6"233aX>>>(;sAv+>+C"DEE%c1f-s3	5 	5 	5$*--c{;;;(3-003&999+c"233cV<<<),,b111)C.11C6:::$"r***&B&&),,re444&*--u555%*--vvv666%r
"344vbzmDDD.E#2##J.."344fff===&vbz):";<<uVBZ?P>RSSSSSra   N)rj   rk   rl   r   r  rm   ra   r_   rv  rv  B  s:        E E E>/T /T /T /T /Tra   rv  c                   F   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d 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d 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'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5S )6CollectionsAbcTestsc                     |                      dt          j                   |                     g t          j                   d S r   )r   rN   Hashabler   r   s    r_   test_hashablez!CollectionsAbcTests.test_hashable  8    b&/222  V_55555ra   c                    |                      g t          j                   |                      g t          j                   |                      g t          j                   |                     dt          j                   |                     t
          t          j                   |                     t
          t          j                   d S r   )r   rN   rF  r   r`   r  r   s    r_   test_iterablez!CollectionsAbcTests.test_iterable  s    b&/222 	b&/222b&/222  V_555dFO444dFO44444ra   c                     t          g           }|                     |t          j                   |                     dt          j                   d S r   )r  r   rN   r
  r   )rZ   its     r_   test_iteratorz!CollectionsAbcTests.test_iterator  sC    "XXb&/222  V_55555ra   c                    i }t          dt                      |           |d         } |            }|                     |t          j                   |                     |t          j                   |                    d            d S )NzPasync def foo() -> typing.Awaitable[int]:
    return await AwaitableWrapper(42)
r  )r  r  r   rN   	Awaitabler   sendrZ   r<
  r  r  s       r_   test_awaitablez"CollectionsAbcTests.test_awaitable  s    6IIr	 	 	 iCEEa!1222  f&6777	tra   c                    i }t          dt                      |           |d         } |            }|                     |t          j                   |                     t                    5  t          |t          j        t                              d d d            n# 1 swxY w Y   | 	                    |t          j                   	 |
                    d            d S # t          $ r Y d S w xY w)Nzasync def foo():
    return
r  )r  r  r   rN   	Coroutiner   r   r   r   r   r  StopIterationr  s       r_   test_coroutinez"CollectionsAbcTests.test_coroutine  s*   IIr	 	 	 iCEEa!1222y)) 	1 	1q&*3/000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1  f&6777	FF4LLLLL 	 	 	DD	s$   ,&BB"%B"
C! !
C/.C/c                    t          d          }t          |          }|                     |t          j                   |                     |t          j                   |                     dt          j                   d S Nr  r   )rt   r
  r   rN   AsyncIterabler   rZ   base_itr  s      r_   test_async_iterablez'CollectionsAbcTests.test_async_iterable  sk    ))!'**b&"6777b&"6777  V%9:::::ra   c                     t          d          }t          |          }|                     |t          j                   |                     dt          j                   d S r  )rt   r
  r   rN   r
  r   r  s      r_   test_async_iteratorz'CollectionsAbcTests.test_async_iterator  sR    ))!'**b&"6777  V%9:::::ra   c                     |                      g t          j                   |                     dt          j                   d S r   )r   rN   Sizedr   r   s    r_   
test_sizedzCollectionsAbcTests.test_sized  s8    b&,///  V\22222ra   c                     |                      g t          j                   |                     dt          j                   d S r   )r   rN   r  r   r   s    r_   test_containerz"CollectionsAbcTests.test_container  s:    b&"2333  V%566666ra   c                 @   |                      t                      t          j                   |                      t	                      t          j                   |                     t          t          j                   |                     dt          j                   d S r   )r   r  rN   
Collectionr  r`   r  r   r   s    r_   test_collectionz#CollectionsAbcTests.test_collection  st    eggv'8999ikk6+<===dF$5666  V%677777ra   c                     |                      t                      t          j                   |                     dt          j                   d S r   )r   r  rN   r2  r   r   s    r_   test_abstractsetz$CollectionsAbcTests.test_abstractset  s>    ceeV%7888  V%788888ra   c                     |                      t                      t          j                   |                     t                      t          j                   d S re   )r   r  rN   
MutableSetr   r  r   s    r_   test_mutablesetz#CollectionsAbcTests.test_mutableset  sB    ceeV%6777  f.?@@@@@ra   c                     |                      i t          j                   |                     dt          j                   d S r   )r   rN   rI  r   r   s    r_   test_mappingz CollectionsAbcTests.test_mapping  s8    b&.111  V^44444ra   c                     |                      i t          j                   |                     dt          j                   d S r   )r   rN   r!   r   r   s    r_   test_mutablemappingz'CollectionsAbcTests.test_mutablemapping  s:    b&"7888  V%:;;;;;ra   c                     |                      g t          j                   |                     dt          j                   d S r   )r   rN   r  r   r   s    r_   test_sequencez!CollectionsAbcTests.test_sequence  r  ra   c                     |                      g t          j                   |                     dt          j                   d S rN  )r   rN   MutableSequencer   r   s    r_   test_mutablesequencez(CollectionsAbcTests.test_mutablesequence  s:    b&"8999  V%;<<<<<ra   c                     |                      dt          j                   |                      t          d          t          j                   d S r  )r   rN   
ByteString	bytearrayr   s    r_   test_bytestringz#CollectionsAbcTests.test_bytestring  s@    c6#4555innf.?@@@@@ra   c                 P    |                      t          t          j                   d S re   )r`   r  rN   r   r   s    r_   	test_listzCollectionsAbcTests.test_list       dFK00000ra   c                     |                      t          j        t          j                    G d dt          j        t
                             }|                      |            t          j                   d S )Nc                       e Zd ZdS )/CollectionsAbcTests.test_deque.<locals>.MyDequeNr}   rm   ra   r_   MyDequer    r   ra   r  )r`   r  dequerN   Dequer   r   )rZ   r  s     r_   
test_dequezCollectionsAbcTests.test_deque  sc    k/>>>-----fl3'---ggii):;;;;;ra   c                 Z    |                      t          j        t          j                   d S re   )r`   r  CounterrN   r   s    r_   test_counterz CollectionsAbcTests.test_counter  s#    k16>BBBBBra   c                     |                      t          t          j                   |                     t
          t          j                   d S re   )r`   r  rN   Setrc   r  r   s    r_   test_setzCollectionsAbcTests.test_set	  s8    c6:...  FJ77777ra   c                     |                      t          t          j                   |                     t
          t          j                   d S re   )r`   r  rN   r  rc   r  r   s    r_   test_frozensetz"CollectionsAbcTests.test_frozenset  s:    i)9:::  f&677777ra   c                 P    |                      t          t          j                   d S re   )r`   r  rN   r    r   s    r_   rv  zCollectionsAbcTests.test_dict  r  ra   c                 
   t          d          }t          d          }|                     t          ||f         t          t          f         t          t          t          f                    |                     t          |t          f         t                   t          t          t          f                    |                     t          t          |f         t                   t          t          t          f                    |                     t          |t
          |         f         t          t          f         t          t          t
          t                   f                    |                     t          |t
          t                   f         t                   t          t          t
          t                   f                    |                     t          |t          |         f         t          t          f         t          t          t          t                   f                    |                     t          |t          t                   f         t                   t          t          t          t                   f                    d S )Nrs  rx  )r   r   r    rX  r   r   r  )rZ   rs  rx  s      r_   test_dict_subscribez'CollectionsAbcTests.test_dict_subscribe  s   CLLCLLadCH-tCH~>>>afc*DcN;;;c1fc*DcN;;;aaj)#s(3T#tCy.5IJJJacl+C0$sDI~2FGGGaaj)#s(3T#tCy.5IJJJacl+C0$sDI~2FGGGGGra   c                    |                      t                    5  t          j                     d d d            n# 1 swxY w Y   |                      t                    5  t          j        t                                d d d            n# 1 swxY w Y   |                      t                    5  t          j        t
                                d d d            d S # 1 swxY w Y   d S re   )r   r   rN   r   r   r   r   s    r_   test_no_list_instantiationz.CollectionsAbcTests.test_no_list_instantiation  s|   y)) 	 	KMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	KN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	K	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	1   ;?? BBB0CC #C c                 8    G d dt           j        t                             } |            }|                     ||           |                     |t           j                   |                     |t                     |                     t          |           d S )Nc                       e Zd ZdS )6CollectionsAbcTests.test_list_subclass.<locals>.MyListNr}   rm   ra   r_   MyListr  )  rv  ra   r  )rN   r   r   r   r  r`   r  rc   )rZ   r  r   s      r_   test_list_subclassz&CollectionsAbcTests.test_list_subclass'  s    	 	 	 	 	V[% 	 	 	 FHHa(((a111fd+++  v.....ra   c                    |                      t                    5  t          j                     d d d            n# 1 swxY w Y   |                      t                    5  t          j        t          t
          f                      d d d            n# 1 swxY w Y   |                      t                    5  t          j        t          t          f                      d d d            d S # 1 swxY w Y   d S re   )r   r   rN   r    r   r   rX  r   r   s    r_   test_no_dict_instantiationz.CollectionsAbcTests.test_no_dict_instantiation3  s   y)) 	 	KMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	" 	"KB!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"y)) 	$ 	$KS!###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$1   ;?? &BBB7&C**C.1C.c                 F    G d dt           j        t          t          f                   } |            }|                     ||           |                     |t           j                   |                     |t                     |                     t          |           d S )Nc                       e Zd ZdS )6CollectionsAbcTests.test_dict_subclass.<locals>.MyDictNr}   rm   ra   r_   r  r  =  rv  ra   r  )	rN   r    rX  r   r   r!   r`   r  rc   )rZ   r  r  s      r_   test_dict_subclassz&CollectionsAbcTests.test_dict_subclass;  s    	 	 	 	 	V[c* 	 	 	 FHHa(((a!6777fd+++  v.....ra   c                    |                      t          t          j                              t          j                   |                      t          t          j        t          t          f                               t          j                   |                      t          t          j        t          t          f                               t          j                   d S re   )
r   r   rN   r#  r  r   r   r   rX  r   r   s    r_   test_defaultdict_instantiationz2CollectionsAbcTests.test_defaultdict_instantiationG      d6-//00+2IJJJd6-b"f57788+:QRRRd6-c3h799::K<STTTTTra   c                     G d dt           j        t          t          f                   } |            }|                     ||           |                     |t          j                   |                     t          j        |           d S )Nc                       e Zd ZdS )@CollectionsAbcTests.test_defaultdict_subclass.<locals>.MyDefDictNr}   rm   ra   r_   	MyDefDictr  N  rv  ra   r  )	rN   r#  rX  r   r   r`   r  r   rc   )rZ   r  dds      r_   test_defaultdict_subclassz-CollectionsAbcTests.test_defaultdict_subclassL      	 	 	 	 	*384 	 	 	 Y[[b),,,i)@AAA  !8)DDDDDra   c                    |                      t          t          j                              t          j                   |                      t          t          j        t
          t          f                               t          j                   |                      t          t          j        t          t          f                               t          j                   d S re   )	r   r   rN   OrderedDictr  r   r   rX  r   r   s    r_   test_ordereddict_instantiationz2CollectionsAbcTests.test_ordereddict_instantiationW  r  ra   c                     G d dt           j        t          t          f                   } |            }|                     ||           |                     |t          j                   |                     t          j        |           d S )Nc                       e Zd ZdS )@CollectionsAbcTests.test_ordereddict_subclass.<locals>.MyOrdDictNr}   rm   ra   r_   	MyOrdDictr  ^  rv  ra   r  )rN   r  rX  r   r   r`   r  rc   )rZ   r  ods      r_   test_ordereddict_subclassz-CollectionsAbcTests.test_ordereddict_subclass\  r  ra   c                    |                      t          t          j                              t          j                   |                      t          t          j        t
          t          f                               t          j                   |                      t          t          j        t          t          f                               t          j                    G d dt          j        t
          t          f                   }|                      t           |t          t          f                               |           d S )Nc                       e Zd ZdS );CollectionsAbcTests.test_chainmap_instantiation.<locals>.CMNr}   rm   ra   r_   CMr  k  r   ra   r  )	r   r   rN   r$  r  r   r   rX  r   )rZ   r  s     r_   test_chainmap_instantiationz/CollectionsAbcTests.test_chainmap_instantiationg  s    d6?,,--{/CDDDd6?2r624455{7KLLLd6?38466779MNNN.....R(...d<2c3h<>>**B/////ra   c                     G d dt           j        t          t          f                   } |            }|                     ||           |                     |t          j                   |                     t          j        |           d S )Nc                       e Zd ZdS )>CollectionsAbcTests.test_chainmap_subclass.<locals>.MyChainMapNr}   rm   ra   r_   
MyChainMapr  p  rv  ra   r  )rN   r$  rX  r   r   r`   r  rc   )rZ   r  r   s      r_   test_chainmap_subclassz*CollectionsAbcTests.test_chainmap_subclassn  s    	 	 	 	 	c2 	 	 	 Z\\b*---j+*>???  !5zBBBBBra   c                 X   |                      t          t          j                              t          j                   |                      t          t          j        t                                         t          j                   |                      t          t          j        t                                         t          j                    G d dt          j        t                             }|                      t           |t                                         |           d S )Nc                       e Zd ZdS )7CollectionsAbcTests.test_deque_instantiation.<locals>.DNr}   rm   ra   r_   rT  r  }  r   ra   rT  )r   r   rN   r  r  r  r   r   rZ   rT  s     r_   test_deque_instantiationz,CollectionsAbcTests.test_deque_instantiationy  s    d6<>>**K,=>>>d6<?,,--{/@AAAd6<,..//1BCCC%%%%%Q%%%d61S688nna(((((ra   c                 X   |                      t          t          j                              t          j                   |                      t          t          j        t
                                         t          j                   |                      t          t          j        t                                         t          j                    G d dt          j        t
                             }|                      t           |t                                         |           d S )Nc                       e Zd ZdS )9CollectionsAbcTests.test_counter_instantiation.<locals>.CNr}   rm   ra   r_   r  r     r   ra   r  )r   r   rN   r  r  r   r   r  s     r_   test_counter_instantiationz.CollectionsAbcTests.test_counter_instantiation  s    d6>++,,k.ABBBd6>!,..//1DEEEd6>#.0011;3FGGG'''''q!'''d61S688nna(((((ra   c                     G d dt           j        t                             } |            }|                     ||           |                     |t           j                   |                     |t          j                   d S )Nc                       e Zd ZdS )JCollectionsAbcTests.test_counter_subclass_instantiation.<locals>.MyCounterNr}   rm   ra   r_   	MyCounterr    rv  ra   r  )rN   r  r   r   r  )rZ   r  r  s      r_   #test_counter_subclass_instantiationz7CollectionsAbcTests.test_counter_subclass_instantiation  s    	 	 	 	 	s+ 	 	 	 IKKa+++a000a!455555ra   c                    |                      t                    5  t          j                     d d d            n# 1 swxY w Y   |                      t                    5  t          j        t                                d d d            n# 1 swxY w Y   |                      t                    5  t          j        t
                                d d d            d S # 1 swxY w Y   d S re   )r   r   rN   r  r   r   r   s    r_   test_no_set_instantiationz-CollectionsAbcTests.test_no_set_instantiation  sx   y)) 	 	JLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	JqMOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	JsO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  c                      G d dt           j        t                             } |            }|                     ||           d S )Nc                       e Zd ZdS )BCollectionsAbcTests.test_set_subclass_instantiation.<locals>.MySetNr}   rm   ra   r_   rN  r    rv  ra   rN  )rN   r  r   r   )rZ   rN  r  s      r_   test_set_subclass_instantiationz3CollectionsAbcTests.test_set_subclass_instantiation  s[    	 	 	 	 	FJsO 	 	 	 EGGa'''''ra   c                    |                      t                    5  t          j                     d d d            n# 1 swxY w Y   |                      t                    5  t          j        t                                d d d            n# 1 swxY w Y   |                      t                    5  t          j        t
                                d d d            d S # 1 swxY w Y   d S re   )r   r   rN   r  r   r   r   s    r_   test_no_frozenset_instantiationz3CollectionsAbcTests.test_no_frozenset_instantiation  s   y)) 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	" 	"Q!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"y)) 	$ 	$S!###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$r  c                      G d dt           j        t                             } |            }|                     ||           d S )Nc                       e Zd ZdS )NCollectionsAbcTests.test_frozenset_subclass_instantiation.<locals>.MyFrozenSetNr}   rm   ra   r_   MyFrozenSetr    rv  ra   r  )rN   r  r   r   )rZ   r  r  s      r_   %test_frozenset_subclass_instantiationz9CollectionsAbcTests.test_frozenset_subclass_instantiation  s]    	 	 	 	 	&*3/ 	 	 	 KMMa-----ra   c                    |                      t                    5  t                       d d d            n# 1 swxY w Y   |                      t                    5  t          t                                d d d            n# 1 swxY w Y   |                      t                    5  t          t                                d d d            d S # 1 swxY w Y   d S re   )r   r   r   r   r   r   s    r_   test_no_tuple_instantiationz/CollectionsAbcTests.test_no_tuple_instantiation  so   y)) 	 	GGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	!HJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	#JLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s0   6::BBB&CCCc                 z    d } |            }|                      t          |          t          j                   d S )Nc               3      K   dV  d S r   rm   rm   ra   r_   r  z/CollectionsAbcTests.test_generator.<locals>.foo  s      HHHHHra   )r`   r   rN   	Generator)rZ   r  r  s      r_   test_generatorz"CollectionsAbcTests.test_generator  sA    	 	 	CEEd1ggv'788888ra   c                    |                      t                    5  t          j                     d d d            n# 1 swxY w Y   |                      t                    5  t          j        t          t          t          f                      d d d            n# 1 swxY w Y   |                      t                    5  t          j        t
          t
          t
          f                      d d d            d S # 1 swxY w Y   d S re   )r   r   rN   r  r   r   r   s    r_   test_no_generator_instantiationz3CollectionsAbcTests.test_no_generator_instantiation  s   y)) 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	( 	(Q1W%'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(y)) 	. 	.S#s]+---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s1   ;?? ,BBB=,C66C:=C:c                     i }t          dt                      |            |d                     }|                     t          |          t          j                   d S )Nzasync def f():
    yield 42
rh   )r  r  r`   r   rN   AsyncGenerator)rZ   r<
  r  s      r_   test_async_generatorz(CollectionsAbcTests.test_async_generator  s[     &yy"	. 	. 	.BsGIId1ggv'<=====ra   c                    |                      t                    5  t          j                     d d d            n# 1 swxY w Y   |                      t                    5  t          j        t          t          f                      d d d            n# 1 swxY w Y   |                      t                    5  t          j        t
          t
          f                      d d d            d S # 1 swxY w Y   d S re   )r   r   rN   r  r   r   r   s    r_   %test_no_async_generator_instantiationz9CollectionsAbcTests.test_no_async_generator_instantiation  s   y)) 	$ 	$!###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$y)) 	* 	*!!Q$')))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*y)) 	. 	.!#s(+---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.r  c                 f	    G d dt           j                  }|                     t                    5   |             d d d            n# 1 swxY w Y    G d d|          }|                     t           |                      d           |                     t          |j                             | 	                     |            t           j
                    G d dt           j        t          t          f                   }|                     t           |                      d           |                     t           |t          t          f                               d           |                     t           |t          t          f                               d           |                     t          |           |                     t          |           |                     |t           j
                   |                     |t           j
                   |                     |t           j
                   | 	                     |t          t          f                     t           j
                   | 	                     |t          t          f                     t"          j        j
                   |                     |t"          j        j
                   |                     |t"          j        j
                   |                     |t"          j        j
                   |                     t                    5  t'          |t          t          f         t           j
                   d d d            n# 1 swxY w Y   |                     ||            G d d	t           j                  }|                     t*          |            G d
 dt           j        t.          t.          t.          f                   }d }|                     |t           j                   |                     |t           j                   |                     |t"          j        j                   |                     |t"          j        j                   |                     t1          |          |           d S )Nc                       e Zd ZdS )1CollectionsAbcTests.test_subclassing.<locals>.MMANr}   rm   ra   r_   MMAr#    rv  ra   r$  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )1CollectionsAbcTests.test_subclassing.<locals>.MMCc                     d S re   rm   r  s     r_   r  z=CollectionsAbcTests.test_subclassing.<locals>.MMC.__getitem__  r  ra   c                     d S re   rm   r  s      r_   r   z=CollectionsAbcTests.test_subclassing.<locals>.MMC.__setitem__  rW  ra   c                     d S re   rm   r  s     r_   r  z=CollectionsAbcTests.test_subclassing.<locals>.MMC.__delitem__  rW  ra   c                      t          d          S rN  r  r   s    r_   r  z:CollectionsAbcTests.test_subclassing.<locals>.MMC.__iter__  r  ra   c                     dS r(  rm   r   s    r_   r  z9CollectionsAbcTests.test_subclassing.<locals>.MMC.__len__  r  ra   Nr  rm   ra   r_   MMCr&    r  ra   r,  r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )1CollectionsAbcTests.test_subclassing.<locals>.MMBc                     d S re   rm   r  s     r_   r  z=CollectionsAbcTests.test_subclassing.<locals>.MMB.__getitem__  r  ra   c                     d S re   rm   r  s      r_   r   z=CollectionsAbcTests.test_subclassing.<locals>.MMB.__setitem__  rW  ra   c                     d S re   rm   r  s     r_   r  z=CollectionsAbcTests.test_subclassing.<locals>.MMB.__delitem__  rW  ra   c                      t          d          S rN  r  r   s    r_   r  z:CollectionsAbcTests.test_subclassing.<locals>.MMB.__iter__  r  ra   c                     dS r(  rm   r   s    r_   r  z9CollectionsAbcTests.test_subclassing.<locals>.MMB.__len__  r  ra   Nr  rm   ra   r_   MMBr.    r  ra   r4  c                       e Zd ZdS )/CollectionsAbcTests.test_subclassing.<locals>.INr}   rm   ra   r_   rY  r6    r   ra   rY  c                       e Zd ZdS )/CollectionsAbcTests.test_subclassing.<locals>.GNr}   rm   ra   r_   rW  r8    r   ra   rW  c               3      K   dV  d S r(  rm   rm   ra   r_   r  z/CollectionsAbcTests.test_subclassing.<locals>.g  s      qra   )rN   r!   r   r   r   r   r   r  r  r   rI  r   r   rX  rc   r  r`   r  r  rW   rF  r  r  r   r   )rZ   r$  r,  r4  rY  rW  r  s          r_   test_subclassingz$CollectionsAbcTests.test_subclassing  sx   	 	 	 	 	&' 	 	 	 y)) 	 	CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
	 
	 
	 
	 
	# 
	 
	 
	 	SSUUQ''',,---cceeV^444
	 
	 
	 
	 
	&'B/ 
	 
	 
	 	SSUUQ''']Sc]__--q111[SR[]]++Q///  s+++  s+++c6>222c6>222c6>222kc"b&kmmV^<<<kc"b&kmm[_-DEEEc;?#:;;;c;?#:;;;c;?#:;;;y)) 	6 	6s38}fn555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6c3'''%%%%%%%%  q)))55555 c3/555a!1222a111a!:;;;a!9:::  a!,,,,,s#   A

AA-M==NNc                     G d dt           j        t          t          f                   }i }t          dt	                      |           |d         }|                     |t           j                   |                     |t           j                   |                     |t          j        j                   |                     |t          j        j                   | 	                    t          |          |            |            }|                     |t           j                   |                     |t           j                   |                     |t          j        j                   |                     |t          j        j                   |                     t          |          |           |                     ||           d S )Nc                       e Zd Zd ZddZdS )?CollectionsAbcTests.test_subclassing_async_generator.<locals>.Gc                     d S re   rm   r
  s     r_   asendzECollectionsAbcTests.test_subclassing_async_generator.<locals>.G.asend  rW  ra   Nc                     d S re   rm   )rZ   typvalr
  s       r_   athrowzFCollectionsAbcTests.test_subclassing_async_generator.<locals>.G.athrow  rW  ra   r  )rj   rk   rl   r?  rC  rm   ra   r_   rW  r=    s7               ra   rW  zasync def g(): yield 0r  )rN   r  r   r  r  r`   r  r  r  rc   r   r   r   )rZ   rW  r<
  r  instances        r_    test_subclassing_async_generatorz4CollectionsAbcTests.test_subclassing_async_generator  s   	 	 	 	 	%c3h/ 	 	 	 %wyy"555sGa!6777a!5666a!?@@@a!>???  a!,,,133h(=>>>h(<===h(FGGGh(EFFF  a!,,,  A&&&&&ra   c                 
    G d dt           j                  } G d d|          } G d d          } G d d          }|                     ||           |                     ||           |                     ||           d S )	Nc                   $    e Zd Zed             ZdS )?CollectionsAbcTests.test_subclassing_subclasshook.<locals>.Basec                      |j         dk    rdS dS )Nr  TF)rj   r7  s     r_   r9  zPCollectionsAbcTests.test_subclassing_subclasshook.<locals>.Base.__subclasshook__6  s    >U**4 5ra   Nr:  rm   ra   r_   r  rH  5  s-        ! ! [! ! !ra   r  c                       e Zd ZdS )<CollectionsAbcTests.test_subclassing_subclasshook.<locals>.CNr}   rm   ra   r_   r  rK  =  r   ra   r  c                       e Zd ZdS )>CollectionsAbcTests.test_subclassing_subclasshook.<locals>.FooNr}   rm   ra   r_   r  rM  >  r   ra   r  c                       e Zd ZdS )>CollectionsAbcTests.test_subclassing_subclasshook.<locals>.BarNr}   rm   ra   r_   r  rO  ?  r   ra   r  )rN   rF  r`   rc   )rZ   r  r  r  r  s        r_   test_subclassing_subclasshookz1CollectionsAbcTests.test_subclassing_subclasshook3  s    	! 	! 	! 	! 	!6? 	! 	! 	! 	c4(((c1%%%  a(((((ra   c                 ,    G d dt           j                  } G d d|          } G d d          }|                    |           |                     ||           |                     ||            G d d          }|                    |           |                     ||           |                     ||            G d	 d
          }t
          j        j                            |           |                     |t           j                   d S )Nc                       e Zd ZdS )8CollectionsAbcTests.test_subclassing_register.<locals>.ANr}   rm   ra   r_   r   rS  F  r   ra   r   c                       e Zd ZdS )8CollectionsAbcTests.test_subclassing_register.<locals>.BNr}   rm   ra   r_   rS  rU  G  r   ra   rS  c                       e Zd ZdS )8CollectionsAbcTests.test_subclassing_register.<locals>.CNr}   rm   ra   r_   r  rW  I  r   ra   r  c                       e Zd ZdS )8CollectionsAbcTests.test_subclassing_register.<locals>.DNr}   rm   ra   r_   rT  rY  N  r   ra   rT  c                       e Zd ZdS )8CollectionsAbcTests.test_subclassing_register.<locals>.MNr}   rm   ra   r_   r  r[  S  r   ra   r  )	rN   r  r?  r`   rc   r  r  r!   rI  )rZ   r   rS  r  rT  r  s         r_   test_subclassing_registerz-CollectionsAbcTests.test_subclassing_registerD  s   &&&&& &&&	

1a###  A&&&	

1a###a###&//222a00000ra   c                     G d dt           j        j                  }|                     |t          j                   |                     |t          j                    G d dt           j        j                  }|                     |t          j                   |                     |t          j                    G d dt           j        j                  }|                     |t          j                    G d dt           j        j        t          j        	          } G d
 d          }|                    |           |                     |t          j                   d S )Nc                       e Zd ZdS )7CollectionsAbcTests.test_collections_as_base.<locals>.MNr}   rm   ra   r_   r  r_  Y  r   ra   r  c                       e Zd ZdS )7CollectionsAbcTests.test_collections_as_base.<locals>.SNr}   rm   ra   r_   rE  ra  ]  r   ra   rE  c                       e Zd ZdS )7CollectionsAbcTests.test_collections_as_base.<locals>.INr}   rm   ra   r_   rY  rc  a  r   ra   rY  c                       e Zd ZdS )7CollectionsAbcTests.test_collections_as_base.<locals>.ANr}   rm   ra   r_   r   re  d  r   ra   r   r)	  c                       e Zd ZdS )7CollectionsAbcTests.test_collections_as_base.<locals>.BNr}   rm   ra   r_   rS  rg  e  r   ra   rS  )	r  r  rI  r`   rN   rF  r  ABCMetar?  )rZ   r  rE  rY  r   rS  s         r_   test_collections_as_basez,CollectionsAbcTests.test_collections_as_baseW  s<   -----'---a000a11155555/555a!7888a111.....(...a111DDDDD'3;DDDD	

1a00000ra   c                 >   |                      t          j        t          j        z  t          t          j        t          j        f                    |                      t          j        t          j        z  t          t          j        t          j        f                    d S re   )r   rN   r  r  r   r  r  r   s    r_   r  z#CollectionsAbcTests.test_or_and_rori  sh    (88%fN^@^:_```)FO;U6CSU[UdCd=efffffra   N)7rj   rk   rl   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rv  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r:  rE  rP  r\  ri  r  rm   ra   r_   r  r    sD       6 6 6	5 	5 	56 6 6

 
 
  "; ; ;; ; ;3 3 37 7 78 8 89 9 9A A A5 5 5< < <6 6 6= = =A A A1 1 1< < <
C C C8 8 88 8 81 1 1	H 	H 	H  
/ 
/ 
/$ $ $
/ 
/ 
/U U U
	E 	E 	EU U U
	E 	E 	E0 0 0	C 	C 	C) ) )) ) )6 6 6  ( ( ($ $ $. . .  9 9 9. . .> > >. . .C- C- C-J' ' '0) ) )"1 1 1&1 1 1$g g g g gra   r  c                       e Zd Zd Zd ZdS )OtherABCTestsc                     t           j        d             } |            }|                     |t          j                   |                     dt          j                   d S )Nc               3      K   dV  d S r   rm   rm   ra   r_   managerz2OtherABCTests.test_contextmanager.<locals>.managerq        HHHHHra   r   )
contextlibcontextmanagerr   rN   r  r   )rZ   ro  r   s      r_   test_contextmanagerz!OtherABCTests.test_contextmanagerp  sd    		"	 	 
#	"	 WYYb&"7888  V%:;;;;;ra   c                     G d d          }|                      t                      t          j                   |                      |            t          j                   t
          j        d             } |            }|                     |t          j                   |                     t          j        t                   j	        t          f           | 
                    t                    5  t          dt          j        t                              d d d            n# 1 swxY w Y   | 
                    t                    5  t          j        t          t          f          d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS )7OtherABCTests.test_async_contextmanager.<locals>.NotACMNr}   rm   ra   r_   NotACMrv  z  rv  ra   rw  c               3      K   dV  d S r   rm   rm   ra   r_   ro  z8OtherABCTests.test_async_contextmanager.<locals>.manager~  rp  ra   r   )r   r
  rN   AsyncContextManagerr   rq  rr  r   r   rf  r   r   r   rX  )rZ   rw  ro  r   s       r_   test_async_contextmanagerz'OtherABCTests.test_async_contextmanagery  s   	 	 	 	 	 	 	 	ceeV%?@@@  6+EFFF		"	 	 
#	"	 WYY  V%?@@@3C8AC6JJJy)) 	< 	<r65c:;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<y)) 	1 	1&sCx00	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s$   1&D##D'*D'E44E8;E8N)rj   rk   rl   rs  rz  rm   ra   r_   rl  rl  n  s2        < < <1 1 1 1 1ra   rl  c                        e Zd Zd Zd Zd ZdS )	TypeTestsc                      G d d          } G d d|          } G d d|          }dt           |         d|fd	} ||           d S )
Nc                       e Zd ZdS )'TypeTests.test_type_basic.<locals>.UserNr}   rm   ra   r_   Userr    r   ra   r  c                       e Zd ZdS ),TypeTests.test_type_basic.<locals>.BasicUserNr}   rm   ra   r_   	BasicUserr    r   ra   r  c                       e Zd ZdS )*TypeTests.test_type_basic.<locals>.ProUserNr}   rm   ra   r_   ProUserr    r   ra   r  
user_classr   c                      |             S re   rm   r  s    r_   new_userz+TypeTests.test_type_basic.<locals>.new_user      :<<ra   r3   )rZ   r  r  r  r  s        r_   test_type_basiczTypeTests.test_type_basic  s    ########!!!!!d!!!	 d 	  	  	  	  	  	ra   c                      G d d          } G d d|          } G d d|          }t          d|          }d	t          |         d
|fd} ||           d S )Nc                       e Zd ZdS ))TypeTests.test_type_typevar.<locals>.UserNr}   rm   ra   r_   r  r    r   ra   r  c                       e Zd ZdS ).TypeTests.test_type_typevar.<locals>.BasicUserNr}   rm   ra   r_   r  r    r   ra   r  c                       e Zd ZdS ),TypeTests.test_type_typevar.<locals>.ProUserNr}   rm   ra   r_   r  r    r   ra   r  rf  rO  r  r   c                      |             S re   rm   r  s    r_   r  z-TypeTests.test_type_typevar.<locals>.new_user  r  ra   )r   r4   )rZ   r  r  r  rf  r  s         r_   test_type_typevarzTypeTests.test_type_typevar  s    ########!!!!!d!!!Ct$$$	 a 	 Q 	  	  	  	  	ra   c                     t           t          t                            }d|dt           t                   fd}|                      |t                    t                     |                      |d                      d S )Nr   r   c                     | d S  |             S re   rm   r  s    r_   r  z)TypeTests.test_type_optional.<locals>.foo  s    ytqss
ra   )r   r4   BaseExceptionr   KeyboardInterruptassertIsNone)rZ   r   r  s      r_   test_type_optionalzTypeTests.test_type_optional  s~    T-()	1 	-0 	 	 	 	 	cc"3446GHHH##d))$$$$$ra   N)rj   rk   rl   r  r  r  rm   ra   r_   r|  r|    sA        	 	 	  
% 
% 
% 
% 
%ra   r|  c                   D    e Zd ZdgZd Z eed          d             ZdS )TestModules_idfuncc                 v    | j         D ]0}|                     t          t          |          j        d           1d S NrN   )
func_namesr   r(  	py_typingrk   rZ   fnames     r_   test_py_functionszTestModules.test_py_functions  sG    _ 	M 	MEWY66A8LLLL	M 	Mra   requires _typingc                 v    | j         D ]0}|                     t          t          |          j        d           1d S )NrO   )r  r   r(  c_typingrk   r  s     r_   test_c_functionszTestModules.test_c_functions  sG    _ 	M 	MEWXu55@)LLLL	M 	Mra   N)rj   rk   rl   r  r  r   r  r  rm   ra   r_   r  r    s[        JM M M Z,--M M .-M M Mra   r  c                   v    e Zd Zd Zed             Zed             Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd ZdS )NewTypeTestsc                 8    | j         j        D ]} |             d S re   )ro	  rf   rg   s     r_   cleanupzNewTypeTests.cleanup  s-    & 	 	AACCCC	 	ra   c                     | j         t          j        d<   | j                             dt                    a| j                             | j        dz   t                    | _        d S )NrN   UserId	.UserName)	ro	  r]  r^  NewTyper   r  rl   rX  UserNamer.	  s    r_   
setUpClasszNewTypeTests.setUpClass  sL     #
H##Hc22z))#*:[*H#NNra   c                 4    b | `t          t          j        d<   d S r  )r  r  rN   r]  r^  r.	  s    r_   tearDownClasszNewTypeTests.tearDownClass  s     L &Hra   c                 .    |                                   d S re   )r  r   s    r_   tearDownzNewTypeTests.tearDown  s    ra   c                     |                      t          d          t                     |                      |                     d          t                     |                     t          d          dz   d           d S )Nr  Joerp      )r   r  r   r  rX  r   r   s    r_   r  zNewTypeTests.test_basic  sf    fQii---dmmE22C888Q*****ra   c                 *   |                      t                    5  t          t          t                     d d d            n# 1 swxY w Y   |                      t                    5   G d dt                    }d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS )#NewTypeTests.test_errors.<locals>.DNr}   rm   ra   r_   rT  r    r   ra   rT  )r   r   rW   r  r   r  s     r_   r   zNewTypeTests.test_errors  s   y)) 	$ 	$vs###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$y)) 	 	    F   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   AA	A'BBBc                 P   t           | j        fD ]}|                     |          5  |                     t          |z  | j        j        t          |f                    |                     |t          z  | j        j        |t          f                    |                     | j                            t          |z            t          |f           |                     | j                            |t          z            |t          f           d d d            n# 1 swxY w Y   d S )Nr.	  )r   r  rw   r   r  ro	  r   r-   )rZ   r[   s     r_   rm  zNewTypeTests.test_or  sM   ' 	T 	TC#&& T T  #t{/@/MNNN  vt{/@f/MNNN  !5!5fsl!C!Cfc]SSS  !5!5cFl!C!Cc6]SSST T T T T T T T T T T T T T T	T 	Ts   C%DD	 D	c                 .   |                      t          j        d           |                      t          j        d           |                      t          j        t                     |                      t          j        t                     | j        }|                      |j        d           |                      |j        | j        j        dz              |                      |j        t                     |                      |j        t                     d S )Nr  r  r  )
r   r  rj   rl   rk   __supertype__r   r  r  rX  )rZ   r  s     r_   test_special_attrszNewTypeTests.test_special_attrs  s    (333,h777*H555-s333=*J777.4{B	D 	D 	D,h777/55555ra   c                     |                      t          t                    t           d           |                      t          | j                  t           d| j        j         d           d S )Nz.UserIdr  r  )r   r   r  rj   r  r  rl   r   s    r_   r   zNewTypeTests.test_repr  ss    f(';';';<<<dm,,$MMt~'BMMM	O 	O 	O 	O 	Ora   c                    | j                             dt                    }t          t          j        dz             D ]}|                     |          5  t	          j        t          |          }t	          j	        |          }| 
                    |t                     t	          j        | j        |          }t	          j	        |          }| 
                    || j                   |                     t          j                  5  t	          j        ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )NUserAgerp   rr   )ro	  r  r  rt   ru   rv   rw   r  r  r  r   r  r   PicklingError)rZ   r  rs   pickledr  s        r_   r  zNewTypeTests.test_pickle  s   +%%i7762Q677 	1 	1EE** 
1 
1 ,vu55g..ff--- ,t}e<<g..fdm444&&v';<< 1 1L%0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 
1 
1 
1 
1 
1 
1 
1 
1 
1 
1 
1 
1 
1 
1	1 	1s7   B2ED*E*D..E1D.2EE	E	c                 *    d}t          |i            d S )Nz-import typing
NT = typing.NewType('NT', int)
r  r  s     r_   r  z!NewTypeTests.test_missing__name__  s    3 	T2ra   c                     |                      t          t          j        d                    5   G d dt                    }d d d            d S # 1 swxY w Y   d S )NzpCannot subclass an instance of NewType. Perhaps you were looking for: `ProUserId = NewType('ProUserId', UserId)`c                       e Zd ZdS )CNewTypeTests.test_error_message_when_subclassing.<locals>.ProUserIdNr}   rm   ra   r_   	ProUserIdr    r  ra   r  )r   r   r  r  r  )rZ   r  s     r_   #test_error_message_when_subclassingz0NewTypeTests.test_error_message_when_subclassing  s    ##I= 
 
 	 	    F   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAN)rj   rk   rl   r  r;  r  r  r  r  r   rm  r  r   r  r  r  rm   ra   r_   r  r    s           O O [O ' ' ['  + + +
  T T T6 6 6O O O
1 1 1  	 	 	 	 	ra   r  c                       e Zd ZeZdS )NewTypePythonTestsN)rj   rk   rl   r  ro	  rm   ra   r_   r  r    s        FFFra   r  r  c                       e Zd ZeZdS )NewTypeCTestsN)rj   rk   rl   r  ro	  rm   ra   r_   r  r  !  s        FFFra   r  c                   r    e Zd Z G d 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dS )NamedTupleTestsc                   $    e Zd ZU eed<   eed<   dS )NamedTupleTests.NestedEmployeer
  r
  Nr
  rm   ra   r_   NestedEmployeer  '  s"         								ra   r  c                    t          ddt          fdt          fg          }|                     |t                      |dd          } |dd          }|                     ||           |                     |t                     |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j	        d           |                     |j
        d           |                     |j        t          j        dt          fdt          fg                     d S )	NEmpr
  idr  r   Jimrp   r
  r  )r5   rX  r   r`   r  r   r   r
  r  rj   _fieldsr   r  r  )rZ   r  joejims       r_   r  zNamedTupleTests.test_basics+  sZ   &#s <==c5)))c%nncu###c3'''c5)))5)))$$$5)))###u---n555,$063-$1MNN	P 	P 	P 	P 	Pra   c                    t          dd          }|                     |t                      |                     |t                     |                     |j        d           |                     |j        d           |                     t           j        d           |                     t           j        d           |                     t           j        t          j
        t          t                               d S )NTimi(#  r
  r
  r
  )r
  r   r  r   r
  r
  rj   r  r   r  r  rX  r   )rZ   tims     r_   test_annotation_usagez%NamedTupleTests.test_annotation_usage;  s    5$''c<000c5)))5)))4(((.???-/?@@@5$0cDDD	F 	F 	F 	F 	Fra   c                 ,   t          d          }|                     |t                      |                     |t                     |                     |j        d           |                     |j        d           t          dd          }|                     |j        d           |                     t           j        d           |                     t           j        d           |                     t           j        t          t          t                               |                     t           j        t          d                     |                     t                    5   G d d	t                    }d d d            d S # 1 swxY w Y   d S )
NJeller   Sjoerdrp   r
  r  )r
  c                   (    e Zd ZU dZeed<   eed<   dS )RNamedTupleTests.test_annotation_usage_with_default.<locals>.NonDefaultAfterDefaultr  rl  r  N)rj   rk   rl   rl  r   r   rm   ra   r_   NonDefaultAfterDefaultr  V  s&         3


ra   r  )r
  r   r  r   r
  r
  rj   r  r   r  rX  r   _field_defaultsr   r   r5   )rZ   jellecooler_employeer  s       r_   "test_annotation_usage_with_defaultz2NamedTupleTests.test_annotation_usage_with_defaultF  s   '00e%<===eU+++W---Q'''1(A>>-q11109;TUUU08:JKKK0@3S111	3 	3 	30@$A,,,OOOy)) 	 	       	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   (F		FFc                    |                      t          d                                          d           |                      t          d          j        t          d          d                    |                      t	          t          d                    d           |                      t          dd          t          d          z   d           |                     t                    5   G d dt                    }d d d            n# 1 swxY w Y   |                     t                    5   G d	 d
t                    }d d d            d S # 1 swxY w Y   d S )Nrp   r   r   r   z42 -> 1r  c                        e Zd ZU eed<   d ZdS )DNamedTupleTests.test_annotation_usage_with_methods.<locals>.XMethBadrl  c                     dS )Nzno chance for thisrm   r   s    r_   r  zLNamedTupleTests.test_annotation_usage_with_methods.<locals>.XMethBad._fieldsc  s    //ra   N)rj   rk   rl   r   r   r  rm   ra   r_   XMethBadr  a  s.         0 0 0 0 0ra   r  c                        e Zd ZU eed<   d ZdS )ENamedTupleTests.test_annotation_usage_with_methods.<locals>.XMethBad2rl  c                     dS )Nzno chance for this as wellrm   r   s    r_   _sourcezMNamedTupleTests.test_annotation_usage_with_methods.<locals>.XMethBad2._sourcei  s    77ra   N)rj   rk   rl   r   r   r  rm   ra   r_   	XMethBad2r  g  s.         8 8 8 8 8ra   r  )	r   r
  r
  rl  rX  r
  r   r^  r5   )rZ   r  r  s      r_   "test_annotation_usage_with_methodsz2NamedTupleTests.test_annotation_usage_with_methodsZ  s   q**A...reBiil333U2YY333q!uQxx/333~.. 	0 	00 0 0 0 0: 0 0 0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 ~.. 	8 	88 8 8 8 8J 8 8 8	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s$   /DDD4EEEc                     G d d          }|                      t                    5   G d dt          |          }d d d            n# 1 swxY w Y   |                      t                    5   G d dt          t                    }d d d            n# 1 swxY w Y   |                      t                    5   G d dt          t                    }d d d            n# 1 swxY w Y    G d dt                    }|                      t                    5   G d dt          |          }d d d            d S # 1 swxY w Y   d S )	Nc                       e Zd ZdS )4NamedTupleTests.test_multiple_inheritance.<locals>.ANr}   rm   ra   r_   r   r  m  rv  ra   r   c                       e Zd ZU eed<   dS 4NamedTupleTests.test_multiple_inheritance.<locals>.Xrl  Nr1  rm   ra   r_   r`  r  p  r
  ra   r`  c                       e Zd ZU eed<   dS r  r1  rm   ra   r_   r`  z4NamedTupleTests.test_multiple_inheritance.<locals>.Xs  r
  ra   c                       e Zd ZU eed<   dS r  r1  rm   ra   r_   r`  z4NamedTupleTests.test_multiple_inheritance.<locals>.Xv  r
  ra   c                       e Zd ZU eed<   dS )r  rl  Nr1  rm   ra   r_   r   z4NamedTupleTests.test_multiple_inheritance.<locals>.Ax  r  ra   c                       e Zd ZU eed<   dS )r  r  Nr6  rm   ra   r_   r`  z4NamedTupleTests.test_multiple_inheritance.<locals>.X{  r
  ra   )r   r   r5   r  )rZ   r   r`  s      r_   rv  z)NamedTupleTests.test_multiple_inheritancel  s   	 	 	 	 	 	 	 	y)) 	 	    J   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	    J   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	    J
   	 	 	 	 	 	 	 	 	 	 	 	 	 	 		 	 	 	 	
 	 	 	y)) 	 	    J   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sG   A		AA.BBB9CC#&C#D99D= D=c                 H    G d dt           t          t                             }|                     |j        t
          t          f           |                     |j        t           t          t                   f           |                     |j        |t
          t          t          f            G d dt          t                   t                     }|                     |j        t          t
          f           |                     |j        t          t                   t           f           |                     |j        |t          t
          t          f           ||fD ]E}| 	                    |          5  |                     |j
        t          f           |t                   }|                     |j        |           |                     |j        t          f           |                     |j
        d            |d          }|                     t          |          |           |                     |j        d           |                     t$                    5  |t          t&          f          d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   Gd S )Nc                       e Zd ZU eed<   dS )'NamedTupleTests.test_generic.<locals>.Xrl  Nr
  rm   ra   r_   r`  r             DDDDDra   r`  c                       e Zd ZU eed<   dS )'NamedTupleTests.test_generic.<locals>.Yrl  Nr
  rm   ra   r_   re  r    r  ra   re  r   rm   r  )r5   r#   r   r   r  r  r  rn  r,  rw   rg  r   r   rh  rf  r   rl  r   r   rX  )rZ   r`  re  rW  r   r   s         r_   test_genericzNamedTupleTests.test_generic~  s   	 	 	 	 	
GAJ 	 	 	ug&6777)J
+CDDDQw$?@@@	 	 	 	 	
J 	 	 	w&6777)GAJ
+CDDDQ$?@@@A 	  	 A1%%      !1A4888cFalA...  cV444  !12666AaDDd1ggq)))  a(((&&y11    c3hKK                                                          	  	 s7   4C)JI>2J>JJJJJ	J	c                     G d dt                     }|t                   }|                     |j        |           |                     |j        d           |                     |j        t          f            |ddg          }|                     t          |          |           |                     |ddgf           d S )Nc                   0    e Zd ZU eed<   ee         ed<   dS )9NamedTupleTests.test_non_generic_subscript.<locals>.Groupr  groupN)rj   rk   rl   r   r   r  rm   ra   r_   Groupr    s&         FFF7NNNNNra   r  rm   rp   r   )r5   r   r   rh  rg  rf  r   r   )rZ   r  r   r   s       r_   r  z*NamedTupleTests.test_non_generic_subscript  s    	 	 	 	 	J 	 	 	 #Ju---)2...cV,,,Aa!IId1ggu%%%QH%%%%%ra   c                 :   t          dt          t                    } |dd          }|                     |t                     |                     |j        d           |                     |j        d           |                     |j        d           |                     |j	        t          t          t                               |                     t                    5  t          ddt          fgt                     d d d            d S # 1 swxY w Y   d S )NLocalEmployee)r
  ageNick   Namerl  r  )r5   rX  r   r   r  r   r
  rj   r  r   r  r   r   )rZ   r  nicks      r_   test_namedtuple_keyword_usagez-NamedTupleTests.test_namedtuple_keyword_usage  s@   "?#FFF}VR((dE***F+++/AAA.@@@6#38O8O8OPPPy)) 	4 	4vc
|s3333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   # DDDc                    t          dt          t          t          t                    }|                     |j        d           |                     |j        d            |t          dddt          fg          }|                     |j	        t                     |                     |j
        d           |                     |j        d           |                     |j        dt          fg           d S )NrN  )r[   rZ   typenamefieldsr   r  r  )r5   r   r,  rX  r  r   rj   r  r  r[   rZ   r  r  )rZ   rN  r   s      r_   %test_namedtuple_special_keyword_namesz5NamedTupleTests.test_namedtuple_special_keyword_names  s    $Vc$OOOd+++%JKKKB3R%%8HIII$$$$$$U+++UEN#344444ra   c                    t          d          } G d dt                     }||fD ]}|                     |          5  |                     |j        d           |                     |j        i            |                     |j        i            |                      |            |           d d d            n# 1 swxY w Y   d S )NrN  c                       e Zd ZdS )2NamedTupleTests.test_empty_namedtuple.<locals>.CNTNr}   rm   ra   r_   CNTr    rv  ra   r  )structrm   )r5   rw   r   r  r  r   r   )rZ   rN  r  r   s       r_   test_empty_namedtuplez%NamedTupleTests.test_empty_namedtuple  s(   	 	 	 	 	* 	 	 	 3i 	8 	8FV,, 8 8  444  !7<<<  !7<<<%%ffhh777	8 8 8 8 8 8 8 8 8 8 8 8 8 8 8	8 	8s   A0B;;B?	B?	c                    |                      t                    5  t          j                     d d d            n# 1 swxY w Y   |                      t                    5  t                       d d d            n# 1 swxY w Y   |                      t                    5  t          ddt          fgd            d d d            n# 1 swxY w Y   |                      t
                    5  t          ddt          fg           d d d            n# 1 swxY w Y   |                      t                    5  t          dt          t                     d d d            d S # 1 swxY w Y   d S )Nr  r
  _name)r  r
  r  )r   r   r5   r}  rX  r  r   r   s    r_   test_namedtuple_errorsz&NamedTupleTests.test_namedtuple_errors  sz   y)) 	! 	!   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!y)) 	 	LLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	5 	5u}ot444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5z** 	0 	0u~.///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0y)) 	9 	9CC8888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9sU   ;?? A;;A?A? CC
C
+DDD5EE#&E#c                    t          ddt          fdt          fg          at          t          | j        fD ]'}|                     |          5   |dd          }t          t          j	        dz             D ]W}t          j
        ||          }t          j        |          }|                     ||           |                     ||           Xt          |          }|                     ||           |                     ||           t          |          }|                     ||           |                     ||           d d d            n# 1 swxY w Y   )d S )Nr  r
  r
  r.	  jane%   rp   )r5   rX  r   r  r
  r  rw   rt   ru   rv   r  r  r   r   r   r   )rZ   r[   r&  rs   r  jane2s         r_   test_copy_and_picklez$NamedTupleTests.test_copy_and_pickle  s   &# >??d&99 	2 	2C#&& 2 2s62"6#:Q#>?? 6 6ET511A"LOOE$$UD111))%5555T

  ---%%eS111   ---%%eS1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2	2 	2s   C7EE	E	N)rj   rk   rl   r5   r  r  r  r  r  rv  r	  r  r  r  r!  r$  r)  rm   ra   r_   r  r  &  s               P P P 	F 	F 	F  (8 8 8$  $     8& & &	4 	4 	45 5 58 8 8
9 
9 
92 2 2 2 2ra   r  c                       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d Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TypedDictTestsc                     t          dt          t          d          }|                     |t                     |                     |t
          j                   |                     |t          j	        j
                    |dd          }|                     t          |          t                     |                     |d         d           |                     |d         d           |                     |j        d           |                     |j        t                     |                     |j        t          f           |                     |j        t          t          d           |                     |j        d           |                     |j        ddh           |                     |j        t*                     |                     |j        t/                                 |                     |j        t*                     d S Nr  r  r  rp   r
  r  T)r8   rX  r   r`   r  rN   r!   rc   r  r  r  r   r   r   rj   rk   r  r   	__total____required_keys__r   r  __optional_keys__r  rZ   r  r  s      r_   test_basics_functional_syntaxz,TypedDictTests.test_basics_functional_syntax  s   37788c4(((c6#8999  ko&>???cu###d3ii&&&Ve,,,TA&&&u---222000,s#.F.FGGG---.???c3Y???.666c3Y?????ra   c                 z   |                      t                    5  t          dt          t                    }d d d            n# 1 swxY w Y   |                     |t                     |                     |t          j                   | 	                    |t          j        j                    |dd          }|                     t          |          t                     |                     |d         d           |                     |d         d           |                     |j        d           |                     |j        t                      |                     |j        t          f           |                     |j        t          t          d           |                     |j        d           d S r-  )assertWarnsDeprecationWarningr8   rX  r   r`   r  rN   r!   rc   r  r  r  r   r   r   rj   rk   r  r   r.  r1  s      r_   test_basics_keywords_syntaxz*TypedDictTests.test_basics_keywords_syntax  s   011 	5 	5E444C	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5c4(((c6#8999  ko&>???cu###d3ii&&&Ve,,,TA&&&u---222000,s#.F.FGGG-----s   AAAc           
      J   |                      t                    5  t          dt          t          t
          t          t          t                    }d d d            n# 1 swxY w Y   | 	                    |j
        d           | 	                    |j        t          t          t
          t          t          t          d            |t
          ddddt          fgdt          h          }| 	                    |d         t
                     | 	                    |d	         d           | 	                    |d
         d           | 	                    |d         d           | 	                    |d         dt          fg           | 	                    |d         dt          h           d S )NTD)r[   rZ   r  	_typenamer  r  r   r  5   r  r  r[   rZ   r  r9  r  r  )r4  r5  r8   r   r,  rX  r   r  r  r   rj   r   r  r  )rZ   r8  r   s      r_   $test_typeddict_special_keyword_namesz3TypedDictTests.test_typeddict_special_keyword_names  s   011 	p 	p4TPS\`jnoooB	p 	p 	p 	p 	p 	p 	p 	p 	p 	p 	p 	p 	p 	p 	pd++++T6WZilx|  JN  .O  .O  	P  	P  	PB3R%2u~FVafhk`lmmm53'''6B''':...;,,,8u~&67779s|44444s   5AA #A c                 D   |                      t                    5  t          j                     d d d            n# 1 swxY w Y   |                      t                    5  t                       d d d            n# 1 swxY w Y   |                      t                    5  t          ddt          fgd            d d d            n# 1 swxY w Y   |                      t                    5  t          dt          t
                     d d d            d S # 1 swxY w Y   d S )Nr  r
  )r9  r
  r  )r   r   r8   r}  rX  r   r   s    r_   test_typeddict_create_errorsz+TypedDictTests.test_typeddict_create_errors  s   y)) 	  	 	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 y)) 	 	KKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	4 	4evsm_d333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4y)) 	9 	9CC8888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9sC   ;?? A;;A?A? CC
C
+DDDc                    t          dt          t          d          }|                     t           j        d            |dd          }|                     t                    5  t          i |           d d d            n# 1 swxY w Y   |                     t                    5  t          ||           d d d            n# 1 swxY w Y   |                     t                    5  t          t          |           d d d            n# 1 swxY w Y   |                     t                    5  t          ddt          fgt                     d d d            d S # 1 swxY w Y   d S )	Nr  r  rN   r  rp   Hirl  r  )
r8   rX  r   r   rk   r   r   r   rW   r  r1  s      r_   test_typeddict_errorsz$TypedDictTests.test_typeddict_errors&  sD   37788-x888cu###y)) 	  	 r3	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 y)) 	! 	!sC   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!y)) 	" 	"tS!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"y)) 	1 	1dc3ZLC0000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1sH   %BB	B'CCC)DDD0 EE!$E!c                    |                      t          j        d           |                      t          j        t                     |                      t          j        t
          t
          t          d           |                      t          j        t          f           |                      t          j	        d           | 
                    t          t          j                   t          dd          }|                      |d         d           |                      |d         d           t          ddd	          }|                      |d
         d	           d S )Nr
  r  Tr   rp   r  rl  r  hir5  )r   r
  rj   rk   r   r   rX  r  r  r.  rc   rN   r  r
  )rZ   
not_originr8  s      r_   test_py36_class_syntax_usagez+TypedDictTests.test_py36_class_syntax_usage3  s   .???0(;;;5SsUX7Y7YZZZ/$999/666  v???qA&&&
C!,,,C!,,,qAT222w.....ra   c                    t          dt          t          d          at          ddd          }t	          t
          j        dz             D ]}t          j        ||          }t          j        |          }| 	                    ||           | 	                    |ddd           t          j        t          |          }t          j        |          }| 	                     |ddd          |           d S )NEmpDr  r&  r'  rp   )
r8   rX  r   rF  rt   ru   rv   r  r  r   )rZ   r&  rs   r  r(  ZZEmpDnews          r_   r  zTypedDictTests.test_pickle@  s    #S!9!9::V2..//62Q677 	H 	HET5))ALOOEUD)))UV2$>$>???dE**Bl2&&GWWfB%?%?@@$GGGG	H 	Hra   c                    t          dd          }t          t          j        dz             D ]}t          j        ||          }t          j        |          }|                     ||           |                     |ddd           t          j        t           |          }t          j        |          }|                      |ddd          |           d S )Ng      @g      @rw	  rp   )r
  rt   ru   rv   r  r  r   )rZ   pointrs   r  point2rG  Point2DGenericNews          r_   test_pickle_genericz"TypedDictTests.test_pickle_genericM  s    ,,,62Q677 	M 	MEUE**A\!__FVU+++V3S%9%9:::ne44B &R 0 0..Ss/C/CDDeLLLL	M 	Mra   c                    t          dt          t          d          }|                     t          j        |         t          j        d |f                    |                     t          j        |         t          j	        |                    d S )NrF  r  )
r8   rX  r   r   rN   r   r   r   r   r   )rZ   rF  s     r_   rL  zTypedDictTests.test_optionalX  sk    #S!9!9::.T4Z0HIIIFK-v|D/ABBBBBra   c                 `   t          ddt          id          }|                      |            i            |                      |d          ddi           |                     |j        d           |                     |j        t                                 |                     |j        t
                     |                     |j        dh           |                     |j        t
                     |                     t                      i            |                     t          d          d	di           |                     t          j        d           |                     t          j        t                                 |                     t          j        d	d
h           d S )NrT  rl  Fr
  rp   rS  r   )r
  r
  r
  )	r8   r   r   r.  r/  r  r   r0  r
  r  s     r_   
test_totalzTypedDictTests.test_total^  sv   cC:U333b!!!Q#q***e,,,,ikk:::a19===,se444a19===B'''1---Q/?@@@*E2222IKK@@@2[*4MNNNNNra   c                 V    G d dt           d          }|                     |j        t          ddg                     |                     |j        t                     |                     |j        t          dg                     |                     |j        t                     d S )Nc                       e Zd ZU eed<   dS )6TypedDictTests.test_optional_keys.<locals>.Point2Dor3Dr  Nr1  rm   ra   r_   Point2Dor3DrS  o  r  ra   rT  Fr
  rl  r  r  )r
  r   r/  r  r   r0  )rZ   rT  s     r_   test_optional_keysz!TypedDictTests.test_optional_keysn  s    	 	 	 	 	' 	 	 	 	 	6	3*8M8MNNNk;YGGG6	3%8H8HIIIk;YGGGGGra   c                 `    G d dt                     } G d d|d          } G d d|          }|                     |j        t          d	g                     |                     |j        t          g                      |                     |j        d	t          i           |                     |j        t          d	g                     |                     |j        t          d
dg                     |                     |j        t          t          t          d           |                     |j        t          d	dg                     |                     |j        t          d
dg                     |                     |j        t          t          t          t          d           d S )Nc                       e Zd ZU eed<   dS )8TypedDictTests.test_keys_inheritance.<locals>.BaseAnimalr
  Nr6  rm   ra   r_   
BaseAnimalrX  x  r  ra   rY  c                   $    e Zd ZU eed<   eed<   dS )4TypedDictTests.test_keys_inheritance.<locals>.Animalvoicer3  N)rj   rk   rl   rX  r   r  rm   ra   r_   Animalr[  {  s"         JJJJJJJJra   r]  Fr
  c                       e Zd ZU eed<   dS )1TypedDictTests.test_keys_inheritance.<locals>.Cat	fur_colorNr6  rm   ra   r_   Catr_    s         NNNNNra   ra  r
  r3  r\  )r
  r3  r\  r`  )r`  r
  r3  r\  )r8   r   r/  r  r0  r   rX  r  )rZ   rY  r]  ra  s       r_   test_keys_inheritancez$TypedDictTests.test_keys_inheritancew  s   	 	 	 	 	 	 	 		 	 	 	 	Zu 	 	 	 		 	 	 	 	& 	 	 	 	5y&7J7JKKK5y}}EEE3fc]CCC19fX3F3FGGG19fg=N3O3OPPP/2
 2
 	 	 	 	.	6;:O0P0PQQQ.	67:K0L0LMMM,	/
 /
 	 	 	 	 	ra   c                    |                      t          j        t          dh                     |                      t          j        t          dh                     |                      t
          j        t          dh                     |                      t
          j        t          dh                     |                      t          j        j        t                                 |                      t          j        j        t          dh                     |                      t          j        t          dh                     |                      t          j        t          dh                     |                      t          j        t          dh                     |                      t          j        t          dh                     |                      t          j        t          dh                     |                      t          j        t          dh                     |                      t          j        t          dh                     |                      t          j        t          dh                     d S )Nr
  r
  r   )r   r
  r/  r  r0  r
  rM   rn  r
  r
  r
  r
  r   s    r_   test_required_notrequired_keysz-TypedDictTests.test_required_notrequired_keys  sj   8"G9--	/ 	/ 	/8"F8,,	. 	. 	. 	5"G9--	/ 	/ 	/5"F8,,	. 	. 	. 	+9K"	& 	& 	&+9K"C5))	+ 	+ 	+ 	9"G9--	/ 	/ 	/9"F8,,	. 	. 	. 	+="G9--	/ 	/ 	/+="F8,,	. 	. 	. 	:"G9--	/ 	/ 	/:"F8,,	. 	. 	. 	2D"G9--	/ 	/ 	/2D"F8,,	. 	. 	. 	. 	.ra   c                 L    G d dt                     } G d dt                     } G d dt           d          }t          d	d
t          i          } G d d          } G d d||          }|                     |j        t	          g d                     |                     |j        t	          g                      |                     |j        t          t          t          d            G d d||          }|                     |j        t	          ddg                     |                     |j        t	          dg                     |                     |j        t          t          t          d            G d d||d          }|                     |j        t	          dg                     |                     |j        t	          ddg                     |                     |j        t          t          t          d            G d d||          }	|                     |	j        t	          d
dg                     |                     |	j        t	          dg                     |                     |	j        t          t          t          d           ||f||f|||f||f||fg}
|
D ]n}| 	                    |          5  | 
                    t          d          5   G d dg|R  }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   od S )Nc                       e Zd ZU eed<   dS )5TypedDictTests.test_multiple_inheritance.<locals>.Oner  Nr1  rm   ra   r_   Onerg             HHHHHra   rh  c                       e Zd ZU eed<   dS )5TypedDictTests.test_multiple_inheritance.<locals>.TwotwoNr6  rm   ra   r_   Twork    ri  ra   rm  c                       e Zd ZU eed<   dS )9TypedDictTests.test_multiple_inheritance.<locals>.UntotaluntotalNr6  rm   ra   r_   Untotalro    s         LLLLLra   rq  Fr
  Inlineinlinec                       e Zd ZdS )9TypedDictTests.test_multiple_inheritance.<locals>.RegularNr}   rm   ra   r_   Regularru    rv  ra   rv  c                       e Zd ZU eed<   dS )7TypedDictTests.test_multiple_inheritance.<locals>.ChildchildNrj   rk   rl   r  r   rm   ra   r_   r	  rx             KKKKKra   r	  )r  rl  ry  c                       e Zd ZU eed<   dS )CTypedDictTests.test_multiple_inheritance.<locals>.ChildWithOptionalry  Nrz  rm   ra   r_   ChildWithOptionalr}    r{  ra   r~  r  ry  rp  )r  rp  ry  c                       e Zd ZU eed<   dS )ETypedDictTests.test_multiple_inheritance.<locals>.ChildWithTotalFalsery  Nrz  rm   ra   r_   ChildWithTotalFalser    r{  ra   r  c                       e Zd ZU eed<   dS )LTypedDictTests.test_multiple_inheritance.<locals>.ChildWithInlineAndOptionalry  Nrz  rm   ra   r_   ChildWithInlineAndOptionalr    r{  ra   r  )rs  rp  ry  )basesz=cannot inherit from both a TypedDict type and a non-TypedDictc                       e Zd ZdS )7TypedDictTests.test_multiple_inheritance.<locals>.WrongNr}   rm   ra   r_   Wrongr    r  ra   r  )r8   r  r   r/  r  r0  r   r   rX  rw   r   r   )rZ   rh  rm  rq  rr  rv  r	  r~  r  r  wrong_basesr  r  s                r_   rv  z(TypedDictTests.test_multiple_inheritance  s   	 	 	 	 	) 	 	 		 	 	 	 	) 	 	 		 	 	 	 	iu 	 	 	 	8h%566	 	 	 	 	 	 	 		 	 	 	 	C 	 	 	#---..	
 	
 	
 	#bMM	
 	
 	
 	!d33	
 	
 	

	 	 	 	 	W 	 	 	/ug&''	
 	
 	
 	/yk""	
 	
 	
 	-C$77	
 	
 	

	 	 	 	 	#we 	 	 	 	1ug	
 	
 	
 	1y'*++	
 	
 	
 	/C$77	
 	
 	

	 	 	 	 	& 	 	 	&8x)**	
 	
 	
 	&8yk""	
 	
 	
 	&6d;;	
 	
 	
 'NcN#wWg
 ! 	 	EE**  ++S            	                            	 	s6   L)L5LLLL	LL	L	c                    |                      t          t                    d           |                      t          t          t          t
          f                   d           |                      t          t                                d           t          ddt
          i          }|                      t          |          d           |                      t           |                      d           t          d           G fddt          t                             }|                      t          |          d           |                      t          |t
                             d           |                      t           |                      d           |                      t          t                    d           d S )NTF
call_basedr   r   c                       e Zd ZU  ed<   dS )4TypedDictTests.test_is_typeddict.<locals>.BarGenericr   Nr  r  s   r_   r
  r    s         DDDDDra   r
  )	r   r.   r
  r   rX  r   r8   r   r#   )rZ   r  r
  r   s      @r_   test_is_typeddictz TypedDictTests.test_is_typeddict  s{   l7++T222l5c?33U;;;l799--u555|c3Z88
l:..555l::<<00%888CLL	 	 	 	 	 	 	GAJ 	 	 	l:..555l:c?33U;;;l::<<00%888 	l9--u55555ra   c                     |                      t          t                    t          j        t
                   t
          d           d S )Nrw	  )r   r+   r  rN   r   r   r   s    r_   r   z"TypedDictTests.test_get_type_hints%  sA    3/#&S11	
 	
 	
 	
 	
ra   c                 X   |                      t          t                    t          j        t
                   t          d            G d dt          t                             }|                      t          |          t          j        t
                   t          t          d           d S )Nrw	  c                       e Zd ZU eed<   dS )ATypedDictTests.test_get_type_hints_generic.<locals>.FooBarGenericr  Nr6  rm   ra   r_   FooBarGenericr  1  r  ra   r  r   r  r  )r   r+   r
  rN   r   r   r   rX  )rZ   r  s     r_   test_get_type_hints_genericz*TypedDictTests.test_get_type_hints_generic+  s    :&&/!$3//	
 	
 	

	 	 	 	 	JsO 	 	 	 	=))/!$3S99	
 	
 	
 	
 	
ra   c                     G d dt           t          t                             }|                     |j        t          t
          f           |                     |j        t           t          t                   f           |                     |j        |t          t
          t          f           |                     |j	        t          f           |                     |t                   j	        d           |                     |t                   j        t          f            G d dt          t                   t                     }|                     |j        t          t
          f           |                     |j        t          t                   t           f           |                     |j        |t          t
          t          f           |                     |j	        t          f           |                     |t                   j	        d           |                     |t                   j        t          f            G d d|t                   d	          }|                     |j        t          t
          f           |                     |j        |t                   f           |                     |j        |t          t
          t          f           |                     |j	        t          f           |                     |j        d           |                     |j        t          d
g                     |                     |j        t          dg                     |                     |t                   j	        d           |                     |t                   j        t          f           |                     |t                   j        |            G d d|t$                             }|                     |j        t          t
          f           |                     |j        |t$                   f           |                     |j        |t          t
          t          f           |                     |j	        d           |                     |j        d           |                     |j        t          d
g                     |                     |j        t          ddg                     |                     |j        t          t          t$          d           |                     t*                    5  |t                    d d d            n# 1 swxY w Y    G d dt,          t                   t          t          t          f                   }|                     |j        t          t
          f           |                     |j        t,          t                   t          t          t          f         f           |                     |j        |t          t
          t          f           |                     |j	        t          t          f           |                     |j        d           |                     |j        t                                 |                     |j        t          g d                     |                     |j        t          t          t          d           |                     |t$          t          f         j        |           |                     t*                    5  |t$                    d d d            n# 1 swxY w Y   |                     t*                    5   G d dt,          t                   t          t                             }d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZU eed<   dS )2TypedDictTests.test_generic_inheritance.<locals>.Ar   Nr
  rm   ra   r_   r   r  :  r  ra   r   rm   c                       e Zd ZU eed<   dS )3TypedDictTests.test_generic_inheritance.<locals>.A2r   Nr
  rm   ra   r_   A2r  D  r  ra   r  c                       e Zd ZU eed<   dS )2TypedDictTests.test_generic_inheritance.<locals>.Br  Nrj   rk   rl   r   r   rm   ra   r_   rS  r  N           EEEEEra   rS  Fr
  r  r   c                       e Zd ZU eed<   dS )2TypedDictTests.test_generic_inheritance.<locals>.Cr  Nr1  rm   ra   r_   r  r  ]  r  ra   r  Tr  r  c                       e Zd ZU eed<   dS 8TypedDictTests.test_generic_inheritance.<locals>.Point3Dr  Nr  rm   ra   r_   Point3Dr  p  r  ra   r  c                       e Zd ZU eed<   dS r  r  rm   ra   r_   r  z8TypedDictTests.test_generic_inheritance.<locals>.Point3D  s         ra   )r8   r#   r   r   r  r  r  rn  r,  rg  rX  rf  r   r.  r0  r  r/  rh  r   r   r   r   r
  )rZ   r   r  rS  r  r  s         r_   test_generic_inheritancez'TypedDictTests.test_generic_inheritance9  sp   	 	 	 	 		71: 	 	 	 	wo666)Iwqz+BCCCQv$>???)A40003.33333&111	 	 	 	 	Y 	 	 	 	777*WQZ,CDDDb'4%@AAA*QD111C/444C)C6222	 	 	 	 	"U 	 	 	 	 	wo666)AbE8444Qv$>???)B5111e,,,,i.>.>???,i.>.>???3.33333&1113*A...	 	 	 	 	# 	 	 	 	wo666)AcF9555Qv$>???)2...d+++,i.>.>???,ic
.C.CDDD*-
 -
 	 	 	
 y)) 	 	cFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 		 	 	 	 	nQ'B 	 	 	 	*WdO<<</.2CWQPRU^1TUUU7GT6*JKKK/!R999*D1112IKK@@@2Iooo4N4NOOO03
 3
 	 	 	
 	c*5w???y)) 	 	CLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	    .+WR[   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s6    UU!U<]]];0^88^<?^<c                 8    G d dt           t          t                             } G d d|t                   d          } G d d|          }|                     |j        t          t          f           |                     |j        |t          t          t          f           |                     |j	        d	           |                     |j
        d
           |                     |j        t          dg                     |                     |j        t          ddg                     |                     |j        t          t          t          d           |                     t"                    5  |t$                    d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZU eed<   dS )7TypedDictTests.test_implicit_any_inheritance.<locals>.Ar   Nr
  rm   ra   r_   r   r    r  ra   r   c                       e Zd ZU eed<   dS )7TypedDictTests.test_implicit_any_inheritance.<locals>.Br  Nr  rm   ra   r_   rS  r    r  ra   rS  Fr
  c                       e Zd ZU eed<   dS )ETypedDictTests.test_implicit_any_inheritance.<locals>.WithImplicitAnyr  Nr1  rm   ra   r_   WithImplicitAnyr    r  ra   r  rm   Tr  r   r  r  )r8   r#   r   r   r   r  r  rn  r,  rg  r.  r0  r  r/  r   r   r   r   rX  )rZ   r   rS  r  s       r_   test_implicit_any_inheritancez,TypedDictTests.test_implicit_any_inheritance  s   	 	 	 	 		71: 	 	 		 	 	 	 	"U 	 	 	 		 	 	 	 	a 	 	 	 	2Wd4DEEE0?GTSY2Z[[[7<<<2D999:Ise<L<LMMM:IsCj<Q<QRRR8;
 ;
 	 	 	
 y)) 	! 	!C  	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   4FFFc                     G d dt                     }|t                   }|                     |j        |           |                     |j        d           |                     |j        t          f            |d          }|                     t          |          t                     |                     |ddi           d S )Nc                       e Zd ZU eed<   dS )5TypedDictTests.test_non_generic_subscript.<locals>.TDr   Nr
  rm   ra   r_   r8  r    r  ra   r8  rm   rp   r  r   )	r8   r   r   rh  rg  rf  r   r   r  )rZ   r8  r   r   s       r_   r  z)TypedDictTests.test_non_generic_subscript  s    	 	 	 	 	 	 	 	sGr***)2...cV,,,A!HHHd1ggt$$$S!H%%%%%ra   N)rj   rk   rl   r2  r6  r;  r=  r@  rD  r  rM  rL  rP  rU  rb  rd  rv  r  r   r  r  r  r  rm   ra   r_   r+  r+    s\       @ @ @&. . . 5 5 59 9 91 1 1/ / /H H H	M 	M 	MC C CO O O H H H  @". ". ".HU U Un6 6 6&
 
 

 
 
M M M^! ! !2& & & & &ra   r+  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )RequiredTestsc                    |                      t                    5  t          t                    d d d            n# 1 swxY w Y   |                      t                    5  t          t          t
          f          d d d            n# 1 swxY w Y   |                      t                    5  t          t                   t
                    d d d            d S # 1 swxY w Y   d S re   )r   r   r7   r6   r   rX  r   s    r_   r  zRequiredTests.test_basics  su   y)) 	" 	"[!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"y)) 	 	S#X	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	SM#	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	1   :>>BB	B	*CCCc                 <   |                      t          t                    d           t          t                   }|                      t          |          d           t          t                   }|                      t          |          dt
           d           d S )Nztyping.Requiredztyping.Required[int]ztyping.Required[
.Employee])r   r   r7   r   r|   rj   r  s     r_   r   zRequiredTests.test_repr  s}    h):;;;c]b#9:::hb#Jh#J#J#JKKKKKra   c           	         |                      t                    5   G d dt          t                              }d d d            n# 1 swxY w Y   |                      t                    5   G d dt          t          t                                       }d d d            n# 1 swxY w Y   |                      t                    5   G d dt                    }d d d            n# 1 swxY w Y   |                      t                    5   G d dt          t                             }d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS -RequiredTests.test_cannot_subclass.<locals>.CNr}   rm   ra   r_   r  r    r   ra   r  c                       e Zd ZdS r  r}   rm   ra   r_   r  z-RequiredTests.test_cannot_subclass.<locals>.C  r   ra   c                       e Zd ZdS r  r}   rm   ra   r_   r  z-RequiredTests.test_cannot_subclass.<locals>.C  r   ra   c                       e Zd ZdS r  r}   rm   ra   r_   r  z-RequiredTests.test_cannot_subclass.<locals>.C  r   ra   )r   r   r   r7   r   r  s     r_   r   z"RequiredTests.test_cannot_subclass  sy   y)) 	 	    DNN   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	    D#''   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	    H   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	    HSM   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	G   !AAA-,B%%B),B)
C**C.1C.D;;D?D?c                    |                      t                    5  t                       d d d            n# 1 swxY w Y   |                      t                    5   t          t                                 d d d            n# 1 swxY w Y   |                      t                    5   t          t          t          t
                                                   d d d            d S # 1 swxY w Y   d S re   )r   r   r7   r   r   r   r   s    r_   r   zRequiredTests.test_cannot_init  r  r  c                 D   |                      t                    5  t          dt          t                              d d d            n# 1 swxY w Y   |                      t                    5  t          t          t                     d d d            d S # 1 swxY w Y   d S r"  )r   r   r   r7   r   rW   r   s    r_   r#  z RequiredTests.test_no_isinstance  r  r  Nr 	  rm   ra   r_   r  r    sb          L L L  , , ,& & & & &ra   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )NotRequiredTestsc                    |                      t                    5  t          t                    d d d            n# 1 swxY w Y   |                      t                    5  t          t          t
          f          d d d            n# 1 swxY w Y   |                      t                    5  t          t                   t
                    d d d            d S # 1 swxY w Y   d S re   )r   r   r6   r7   r   rX  r   s    r_   r  zNotRequiredTests.test_basics  sv   y)) 	" 	"!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"y)) 	" 	"S!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"y)) 	" 	"S!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"r  c                 <   |                      t          t                    d           t          t                   }|                      t          |          d           t          t                   }|                      t          |          dt
           d           d S )Nztyping.NotRequiredztyping.NotRequired[int]ztyping.NotRequired[r  )r   r   r6   r   r|   rj   r  s     r_   r   zNotRequiredTests.test_repr  s    k**,@AAAb#<==="b#M#M#M#MNNNNNra   c           	         |                      t                    5   G d dt          t                              }d d d            n# 1 swxY w Y   |                      t                    5   G d dt          t          t                                       }d d d            n# 1 swxY w Y   |                      t                    5   G d dt                    }d d d            n# 1 swxY w Y   |                      t                    5   G d dt          t                             }d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS 0NotRequiredTests.test_cannot_subclass.<locals>.CNr}   rm   ra   r_   r  r    r   ra   r  c                       e Zd ZdS r  r}   rm   ra   r_   r  z0NotRequiredTests.test_cannot_subclass.<locals>.C  r   ra   c                       e Zd ZdS r  r}   rm   ra   r_   r  z0NotRequiredTests.test_cannot_subclass.<locals>.C  r   ra   c                       e Zd ZdS r  r}   rm   ra   r_   r  z0NotRequiredTests.test_cannot_subclass.<locals>.C  r   ra   )r   r   r   r6   r   r  s     r_   r   z%NotRequiredTests.test_cannot_subclass  s}   y)) 	 	    D%%   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	    DS)**   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	    K   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	    K$   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  c                    |                      t                    5  t                       d d d            n# 1 swxY w Y   |                      t                    5   t          t                                 d d d            n# 1 swxY w Y   |                      t                    5   t          t          t          t
                                                   d d d            d S # 1 swxY w Y   d S re   )r   r   r6   r   r   r   r   s    r_   r   z!NotRequiredTests.test_cannot_init  s   y)) 	 	MMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	  	 D	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 y)) 	/ 	/,DXc]+,,...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/r  c                 D   |                      t                    5  t          dt          t                              d d d            n# 1 swxY w Y   |                      t                    5  t          t          t                     d d d            d S # 1 swxY w Y   d S r"  )r   r   r   r6   r   rW   r   s    r_   r#  z#NotRequiredTests.test_no_isinstance  s   y)) 	, 	,q+c*+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,y)) 	) 	)sK(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)r  Nr 	  rm   ra   r_   r  r    sb        " " "O O O  / / /) ) ) ) )ra   r  c                   &    e Zd Zd Zd Zd Zd ZdS )IOTestsc                     dt           dt          fd}|j        d         }|                     |j        t          f           d S )Nr   r   c                 *    |                                  S re   readliner  s    r_   rU	  zIOTests.test_io.<locals>.stuff      ::<<ra   )r:   r   r   r   rg  rZ   rU	  r   s      r_   test_iozIOTests.test_io  sT    	 R 	 F 	  	  	  	  !#&)F955555ra   c                 z    dt           dt          fd}|j        d         }|                     |j        d           d S )Nr   r   c                 *    |                                  S re   r  r  s    r_   rU	  z"IOTests.test_textio.<locals>.stuff  r  ra   rm   )r;   rX  r   r   rg  r  s      r_   test_textiozIOTests.test_textio  sR    	 V 	  	  	  	  	  !#&)2.....ra   c                 z    dt           dt          fd}|j        d         }|                     |j        d           d S )Nr   r   c                 *    |                                  S re   r  r  s    r_   rU	  z$IOTests.test_binaryio.<locals>.stuff  r  ra   rm   )r<   rp  r   r   rg  r  s      r_   test_binaryiozIOTests.test_binaryio  sR    	 X 	 % 	  	  	  	  !#&)2.....ra   c                 J   t          j        d          5 }t          j        dt                     ddlm}m}m}m}m	} | 
                    |t          j                   | 
                    |t          j                   | 
                    |t          j                   |                     t          |          t          g d                     |                     |d           |                     t          |          d	           d d d            d S # 1 swxY w Y   d S )
NTrecordr!  categoryr   )r:   r;   r<   r*  rj   r9   z	typing.iorp   )warningscatch_warningsfilterwarningsr5  	typing.ior:   r;   r<   r*  rj   r   rN   r   r  r   )rZ   wr:   r;   r<   r*  rj   s          r_   test_io_submodulezIOTests.test_io_submodule%  sW   $D111 	(Q#I8JKKKKIIIIIIIIIIIIIIMM"fi(((MM&&-000MM(FO444S\\3/K/K/K+L+LMMMX{333SVVQ'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   C5DDDN)rj   rk   rl   r  r  r  r  rm   ra   r_   r  r    sP        6 6 6/ / // / /	( 	( 	( 	( 	(ra   r  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )RETestsc                    t          j        dt           j                  }|                     |j        t
                     |                     t          |          t
                     |                     |t
                     |                    d          }|                     |j        t                     |                     t          |          t                     |                     |t                     t
          t          t          t          f                   t          t          t          t          f                   d S )Nz[a-z]+z12345abcde.....)r  compilerY  r`   r  r=   r   r   searchr>   r   rX  rp  )rZ   r  mats      r_   r  zRETests.test_basics4  s    j24((cmW555d3ii111c7+++jj*++cmU333d3ii///c5))) 	c5j!""eE3J    ra   c                    |                      t          t                   t          t                              |                     t          t                   t          t                              |                     t          t                   t
          t                              |                     t          t                   t                     d S re   )r   r=   rX  r   rp  r>   r   s    r_   test_alias_equalityzRETests.test_alias_equalityC  s|    ws|444GCL'%.999GCL%*555GCL#.....ra   c                 6   t           t          t          t          f                  }|                     t
                    5  |t                    d d d            n# 1 swxY w Y   |                     t
                    5  t          dt          t                              d d d            n# 1 swxY w Y   |                     t
                    5  t          t          t                   t          t                              d d d            d S # 1 swxY w Y   d S r   )	r>   r   rX  rp  r   r   r   r=   rW   )rZ   r  s     r_   r   zRETests.test_errorsI  s   %U
#$y)) 	 	cFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	) 	)r73<(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) y)) 	5 	5wu~ws|444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s5   AA A>!B++B/2B/1DDDc                 >   |                      t          t                    d           |                      t          t          t                             d           |                      t          t          t                             d           |                      t          t
                    d           |                      t          t
          t                             d           |                      t          t
          t                             d           d S )Nztyping.Patternztyping.Pattern[str]ztyping.Pattern[bytes]ztyping.Matchztyping.Match[str]ztyping.Match[bytes])r   r   r=   rX  rp  r>   r   s    r_   r   zRETests.test_reprT  s    g(8999gcl++-BCCCgen--/FGGGen555eCj))+>???eEl++-BCCCCCra   c                    t          j        d          5 }t          j        dt                     ddlm}m}m}m} | 	                    |t          j                   | 	                    |t          j                   |                     t          |          t          ddg                     |                     |d	           |                     t          |          d
           d d d            d S # 1 swxY w Y   d S )NTr  r!  r  r   )r>   r=   r*  rj   r>   r=   z	typing.rerp   )r  r  r  r5  	typing.rer>   r=   r*  rj   r   rN   r   r  r   )rZ   r  r>   r=   r*  rj   s         r_   test_re_submodulezRETests.test_re_submodule\  s9   $D111 	(Q#I8JKKKKCCCCCCCCCCCCMM%...MM'6>222S\\3/C+D+DEEEX{333SVVQ'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   CC66C:=C:c                     |                      t                    5 } G d dt          j                  }d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nc                       e Zd ZdS )'RETests.test_cannot_subclass.<locals>.ANr}   rm   ra   r_   r   r  i  r   ra   r   z.type 're.Match' is not an acceptable base type)r   r   rN   r>   r   rX  r   )rZ   exr   s      r_   r   zRETests.test_cannot_subclassf  s    y)) 	R    FL   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 	R\**I	K 	K 	K 	K 	Ks   A  AAN)	rj   rk   rl   r  r  r   r   r  r   rm   ra   r_   r  r  1  sv        ! ! !/ / /	5 	5 	5D D D( ( (K K K K Kra   r  c                       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d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )AnnotatedTestsc                     |                      t          d          5  t                       d d d            d S # 1 swxY w Y   d S )Nz%Type Annotated cannot be instantiatedr   r   r?   r   s    r_   test_newzAnnotatedTests.test_newr  s    ##3
 
 	 	 KKK		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   8<<c                     |                      t          t          t          ddf                   d           |                      t          t          t          t                   ddf                   d           d S )Nr  r  ztyping.Annotated[int, 4, 5]z(typing.Annotated[typing.List[int], 4, 5])r   r   r?   r   r   r   s    r_   r   zAnnotatedTests.test_repry  st    319%&&)	
 	
 	
 	49a?+,,6	
 	
 	
 	
 	
ra   c                     t          t          t          t          df                             }dD ]F}|                     |          5  |                     ||           d d d            n# 1 swxY w Y   Gd S )Nr  )rf  rg  rh  __metadata__r  )r  r   r?   r   rw   r!  r"  s      r_   r$  zAnnotatedTests.test_dir  s    Ic1f-..//	
 	8 	8M M:: 8 8mY7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8		8 	8s   	A,,A0	3A0	c                    t           t           t          df         df         }|                     |t           t          ddf                    |                     |j        d           |                     |j        t                     d S )Nr  r  r  )r?   r   r   r  rh  r   s     r_   r  zAnnotatedTests.test_flatten  sq    iQ'*+Ic1ai0111000s+++++ra   c                    t           t          t                   df         }t           t          t                   df         }|                     |t                   t           t          t                   df                    |                     |t                   j        d           |                     |t                   j        t          t                              |                     t                    5  |t                    d d d            n# 1 swxY w Y   |                     t                    5  |t          t          f          d d d            d S # 1 swxY w Y   d S )Nmy decoration)r  )
r?   r   r   r   r   r  rh  r   r   r  )rZ   r  LIs      r_   test_specializezAnnotatedTests.test_specialize  s   d1g./tCy/12349o+E!FGGG3,.@AAA3*DI666y)) 	 	sGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	c5jMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   3DDD2EEEc           	         |                      t          t          t          ddf         t          t          ddf         h          d           |                     t          t          ddf         t          t          ddf                    |                     t          t          ddf         t          t
          ddf                    |                     t          t          df         t          t          ddf                    |                      t          t          ddf         t          t          ddf         t          t          ddf         ht          t          ddf         t          t          ddf         h           d S )Nr  r  rp   )r   r   r?   r   r   rX  r   r   s    r_   test_hash_eqzAnnotatedTests.test_hash_eq  s(   iQ	2Ic1ai4HIJJANNNIc1ai0)CAI2FGGGIc1ai0)CAI2FGGGIc1f-ya/CDDDsAqy!9S!QY#71a79KLsAqy!9Q1W#56	
 	
 	
 	
 	
ra   c                     G fdd          t           df         } |d          } d          }|                     ||           |                     |j        |j                   |                     |j        |j                   d S )Nc                   $    e Zd ZdZd Z fdZdS )*AnnotatedTests.test_instantiate.<locals>.Cr  c                     || _         d S re   rS  r  s     r_   r*  z3AnnotatedTests.test_instantiate.<locals>.C.__init__  r  ra   c                 R    t          |          st          S |j        | j        k    S re   )r   NotImplementedrl  )rZ   r8  r  s     r_   __eq__z1AnnotatedTests.test_instantiate.<locals>.C.__eq__  s*    !%++ *))w$&((ra   N)rj   rk   rl   classvarr*  r  r	  s   r_   r  r    sB        H  ) ) ) ) ) ) )ra   r  a decorationr  )r?   r   rl  r  )rZ   r   r   r  r  s       @r_   test_instantiatezAnnotatedTests.test_instantiate  s    		) 		) 		) 		) 		) 		) 		) 		) 		) 		) a'(AaDDAaDDAac"""QZ00000ra   c                     t           t          j        t                   df         }|                      |g d          ddd           |                      |t
                   g d          ddd           d S )Nr  )r  r  r  r   rp   r  )r?   rN   r  r   r   r   )rZ   MyCounts     r_   test_instantiate_genericz'AnnotatedTests.test_instantiate_generic  sv    FN1->?++q\\:::iii00aA,,?????ra   c                     t           d         }|                     t                    5   |d           d d d            d S # 1 swxY w Y   d S )N)r   r  r  r  )r?   r   r   r   s     r_   test_cannot_instantiate_forwardz.AnnotatedTests.test_cannot_instantiate_forward  s    m$y)) 	 	AaDDD	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc                     t           t          df         }|                     t                    5   |d           d d d            d S # 1 swxY w Y   d S )Nr  r  )r?   r   r   r   r   s     r_    test_cannot_instantiate_type_varz/AnnotatedTests.test_cannot_instantiate_type_var  s    ai y)) 	 	AaDDD	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc                     |                      t                    5  t          t          df         j         d d d            d S # 1 swxY w Y   d S )N)r  r"
  )r   r^  r?   r   rl  r   s    r_   test_cannot_getattr_typevarz*AnnotatedTests.test_cannot_getattr_typevar  s    ~.. 	# 	#ai ""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   AA	Ac                      G d d          }t           |df         }|                     |j        d           d|_        |                     |j        d           d S )Nc                       e Zd ZdZdS )/AnnotatedTests.test_attr_passthrough.<locals>.Cr  N)rj   rk   rl   r  rm   ra   r_   r  r!    s        HHHra   r  r  r  r  )r?   r   r  rl  )rZ   r  r   s      r_   test_attr_passthroughz$AnnotatedTests.test_attr_passthrough  sx    	 	 	 	 	 	 	 	 a'(Q'''a     ra   c                 8    G d d          }|                      t          |t                                d         t          t                              |                      t          |t                                d         t
          t                              d S )Nc                   d    e Zd ZU dZeee         df         ed<   dZee	e         df         ed<   dS )7AnnotatedTests.test_special_form_containment.<locals>.Cr  r  r  rD  r	  N)
rj   rk   rl   r  r?   r$   r   r   r	  r%   rm   ra   r_   r  r%    sN         ABHi~ =>BBB45E9U3Z0155555ra   r  r  r	  )r   r+   r  r$   r   r%   r  s     r_   test_special_form_containmentz,AnnotatedTests.test_special_form_containment  s    	6 	6 	6 	6 	6 	6 	6 	6 	79955jA8C=QQQ79955g>c
KKKKKra   c                     |                      t          d          5   G d dt                    }d d d            d S # 1 swxY w Y   d S )NzCannot subclass .*Annotatedc                       e Zd ZdS ).AnnotatedTests.test_cannot_subclass.<locals>.CNr}   rm   ra   r_   r  r)    r   ra   r  r  r  s     r_   r   z#AnnotatedTests.test_cannot_subclass  s    ##I/LMM 	 	    I   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   =AAc                     |                      t                    5  t          dt          t          df                    d d d            d S # 1 swxY w Y   d S )Nr  positive)r   r   r   r?   r   r   s    r_   test_cannot_check_instancez)AnnotatedTests.test_cannot_check_instance  s    y)) 	6 	6q)CO4555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s   #AAAc                     |                      t                    5  t          t          t          t          df                    d d d            d S # 1 swxY w Y   d S )Nr+  )r   r   rW   r   r?   r   s    r_   test_cannot_check_subclassz)AnnotatedTests.test_cannot_check_subclass  s    y)) 	8 	8sIc:o6777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   (AAAc                     |                      t          d          5  t          t                    d d d            d S # 1 swxY w Y   d S )Nzat least two arguments)r   r   r?   r   r   s    r_   test_too_few_type_argsz%AnnotatedTests.test_too_few_type_args  s    ##I/GHH 	 	cNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   <A A c                    t           j        t           j        t          t          f         t           j        t                   t          t          df         t           j        t          gt          f         g}|D ]}t          |df         }t          t          j        dz             D ]p}|                     ||          5  t          j        ||          }t          j        |          }|                     ||           d d d            n# 1 swxY w Y   q G d dt"          t$                             at          t&          t                   df         }d|_        d	|_        t          t          j        dz             D ]|}t          j        ||          }	t          j        |	          }|                     |j        d           |                     |j        d	           |                     |j        d           }d S )
N.r   rp   )protocolr   c                       e Zd ZdZdS )_Annotated_test_Grp   Nr  rm   ra   r_   r4  r4    r8  ra   r4  zA decorationr   r  )rN   r   r   r   rX  r   r   r"   rp  r?   rt   ru   rv   rw   r  r  r   r#   r   r4  r  r  rl  )
rZ   r  r#  rl  protr  restoredrW  rs   r  s
             r_   r  zAnnotatedTests.test_pickle  s	   :v|CH5?3'sCx?C5%<02  	2 	2A!S&!Af59:: 2 2\\4a\88 2 2$l1d33G%|G44H$$Q1112 2 2 2 2 2 2 2 2 2 2 2 2 2 22	 	 	 	 	
 	 	 	 ',n<=62Q677 	% 	%EQ&&AQAQUB'''QUE***QS!$$$$	% 	%s   :A DD
D
c                    d}d}t           t          |f         }|                     |t                   t           t          |f                    |                     |t           t          |f                  t           t          ||f                    t           t          t                   |f         }|                     |t                   t           t          t                   |f                    |                     t                    5  |t          t          f          d d d            n# 1 swxY w Y   |                     ||t                            t           t          t                   ||f                    t           t          j        t          t          f         |f         }|                     |t          t          f         t           t          j        t          t          f         |f                    |                     t                    5  |t                    d d d            n# 1 swxY w Y   t           t          |f         }|                     t                    5  |d           d d d            n# 1 swxY w Y   |t                   }|                     t                    5  |d           d d d            d S # 1 swxY w Y   d S )Nr  zanother decoration)r?   r   r   r   r   r   r   rN   r    r   r   rX  )rZ   r
  dec2rE  r  rT  Itr  s           r_   
test_substzAnnotatedTests.test_subst  s   #ag339!56669S#X./3T>1JKKKd1gsl#349c>!:;;;y)) 	 	c3hKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	1S6Id3id.B$CDDDfk"b&)3./38iCH0Es0J&KLLLy)) 	 	cFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 sCx y)) 	 	tHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 sVy)) 	 	tHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sH   D%%D),D)H%%H),H)	I33I7:I7%	J;;J?J?c                    d}t          d          }t          d          }t          d          }t          d          }t          t          g |R          |f         }|                     |t
                   t          t          t
                   |f                    |                     |t          t
          f         t          t          t          t
          f         |f                    |                     t                    5  t          g ||R           d d d            n# 1 swxY w Y   t          t          t          |                  |f         }|                     |t
                   t          t          t
                   |f                    |                     |t          t
          f         t          t          t          t
          f         |f                    |                     t                    5  t          t          |         |f          d d d            n# 1 swxY w Y   t          t          |g|R          |f         }|                     |t
                   t          t          t
                   |f                    |                     |t
          t          f         t          t          t
          t          f         |f                    |                     |t
          t          t          f         t          t          t
          t          t          f         |f                    |                     t                    5  |d          d d d            n# 1 swxY w Y   t          t          |t          |         f         |f         }	|                     |	t
                   t          t          t
                   |f                    |                     |	t
          t          f         t          t          t
          t          f         |f                    |                     |	t
          t          t          f         t          t          t
          t          t          f         |f                    |                     t                    5  |	d          d d d            n# 1 swxY w Y   t          t          g ||R          |f         }
|                     |
t
                   t          t          t
                   |f                    |                     |
t
          t          f         t          t          t
          t          f         |f                    |                     |
t
          t          t          f         t          t          t
          t          t          f         |f                    |                     t                    5  |
d          d d d            n# 1 swxY w Y   t          t          t          |         |f         |f         }|                     |t
                   t          t          t
                   |f                    |                     |t
          t          f         t          t          t
          t          f         |f                    |                     |t
          t          t          f         t          t          t
          t          t          f         |f                    |                     t                    5  |d          d d d            n# 1 swxY w Y   t          t          |g||R          |f         }|                     |t
          t          f         t          t          t
          t          f         |f                    |                     |t
          t          t          f         t          t          t
          t          t          f         |f                    |                     |t
          t          t          t          f         t          t          t
          t          t          t          f         |f                    |                     t                    5  |t
                    d d d            n# 1 swxY w Y   t          t          |t          |         |f         |f         }|                     |t
          t          f         t          t          t
          t          f         |f                    |                     |t
          t          t          f         t          t          t
          t          t          f         |f                    |                     |t
          t          t          t          f         t          t          t
          t          t          t          f         |f                    |                     t                    5  |t
                    d d d            n# 1 swxY w Y   t          d          }t          d          }t          d	          }||g||R          }||t          |         |f         }|t          t          |g||R          |f         f|t          t          |t          |         |f         |f         f|t
          t          f         t          t          t
          t          f         |f         f|t
          t          f         t          t          t
          t          f         |f         f|t
          t          t          f         t          t          t
          t          t          f         |f         f|t
          t          t          f         t          t          t
          t          t          f         |f         f|t
          t          t          t          f         t          t          t
          t          t          t          f         |f         f|t
          t          t          t          f         t          t          t
          t          t          t          f         |f         ffD ]\  }}|                     ||           |                     t                    5  |t
                    d d d            n# 1 swxY w Y   |                     t                    5  |t
                    d d d            d S # 1 swxY w Y   d S )
Nr  r  r   r  r  rm   r  r  T4)r   r   r?   r  r   r   rX  r   r   r   r   r  r  )rZ   r
  r  r   r  r  r   rS  r  rT  rU  rV  rW  rX  r  r  r<  rY  rr  rl  r  s                        r_   test_typevar_substz!AnnotatedTests.test_typevar_subst*  s   $CLLT]]T]]eCRCCj#o&35:s?!;<<<38ic3h0D&EFFFy)) 	  	 hrh3hh	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  eF2J',-35:s?!;<<<38ic3h0D&EFFFy)) 	' 	'fRj#o&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' eAFFFmS()35:s?!;<<<38ic3h0D&EFFFc3oeCeO,c12	
 	
 	
 y)) 	 	bEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 eAvbzM*C/035:s?!;<<<38ic3h0D&EFFFc3oeCeO,c12	
 	
 	
 y)) 	 	bEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 eFRFFFmS()35:s?!;<<<38ic3h0D&EFFFc3oeCeO,c12	
 	
 	
 y)) 	 	bEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 eF2JM*C/035:s?!;<<<38ic3h0D&EFFFc3oeCeO,c12	
 	
 	
 y)) 	 	bEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 eBKKRKK(#-.38ic3h0D&EFFFc3oeCeO,c12	
 	
 	
 	c3e#$eCdE12C78	
 	
 	
 y)) 	 	cFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 eBr
B./4538ic3h0D&EFFFc3oeCeO,c12	
 	
 	
 	c3e#$eCdE12C78	
 	
 	
 y)) 	 	cFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 5!!T]]T]] bl3lllOb&+r!" 5c2+>+C!DE5VC["1D+Es+J!KLsCx[5c?C+?!@AsCx[5c?C+?!@AsC5c5+A3+F!GHsC5c5+A3+F!GHsCu$%!*5c41F+G+L!MOsCu$%!*5c41F+G+L!MO
 	# 	#DAq Q""""y)) 	 	cFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	cFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s    DD#&D#3HH!H?	MMM	RRR=	WWW 	\\\"a<<b b g++g/2g/'rrr&sssc                     t           t          t          df                  }|                     |t                   t           t          t          df                             d S )Nr  )r   r?   r   r   r   ra  s     r_   test_annotated_in_other_typesz,AnnotatedTests.test_annotated_in_other_types  sB    1a4!3iQ&7!899999ra   c                      G d dt           t          df                   }|                     |j        |t          t          fd           d S )Nc                       e Zd ZdS ),AnnotatedTests.test_annotated_mro.<locals>.XNr}   rm   ra   r_   r`  rB    r   ra   r`  r.  z Annotated should be transparent.)r?   r   r   rn  r,  ra  s     r_   test_annotated_mroz!AnnotatedTests.test_annotated_mro  sW    -----	#w,'---QV$4;	= 	= 	= 	= 	=ra   N)rj   rk   rl   r   r   r$  r  r  r
  r  r  r  r  r  r"  r&  r   r,  r.  r0  r  r:  r=  r?  rC  rm   ra   r_   r  r  p  sh         
 
 
8 8 8, , ,	 	 	
 
 
1 1 1&@ @ @
  
  
# # #! ! !L L L  
6 6 68 8 8  % % %<  :p p pd: : := = = = =ra   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
S )TypeAliasTestsc                     t           }d S re   r|   rZ   r  s     r_   -test_canonical_usage_with_variable_annotationz<TypeAliasTests.test_canonical_usage_with_variable_annotation  s    #ra   c                     t           }d S re   rG  rH  s     r_   &test_canonical_usage_with_type_commentz5TypeAliasTests.test_canonical_usage_with_type_comment  s    ra   c                     |                      t                    5  t                       d d d            d S # 1 swxY w Y   d S re   )r   r   rC   r   s    r_   r   z&TypeAliasTests.test_cannot_instantiate  s    y)) 	 	KKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r,  c                     |                      t                    5  t          dt                     d d d            d S # 1 swxY w Y   d S r   )r   r   r   rC   r   s    r_   r#  z!TypeAliasTests.test_no_isinstance  s    y)) 	& 	&r9%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&r   c                 t     G d d          }|                      t          |          dt          i           d S )Nc                       e Zd ZU ded<   dS )/TypeAliasTests.test_stringized_usage.<locals>.ArC   r   Nr  rm   ra   r_   r   rP    s         NNNNNra   r   r   )r   r+   rC   r   s     r_   test_stringized_usagez$TypeAliasTests.test_stringized_usage  sS    	 	 	 	 	 	 	 	**S),<=====ra   c                 8   |                      t                    5  t          t          t                     d d d            n# 1 swxY w Y   |                      t                    5  t          t          t                     d d d            d S # 1 swxY w Y   d S re   )r   r   rW   r|   rC   r   s    r_   test_no_issubclassz!TypeAliasTests.test_no_issubclass  s   y)) 	, 	,x+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, y)) 	, 	,y(+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,r   c                 6   |                      t                    5   G d dt                    }d d d            n# 1 swxY w Y   |                      t                    5   G d dt          t                              }d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS .TypeAliasTests.test_cannot_subclass.<locals>.CNr}   rm   ra   r_   r  rW    r   ra   r  c                       e Zd ZdS rV  r}   rm   ra   r_   r  z.TypeAliasTests.test_cannot_subclass.<locals>.C  r   ra   )r   r   rC   r   r  s     r_   r   z#TypeAliasTests.test_cannot_subclass  s?   y)) 	 	    I   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	    DOO   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r   c                 V    |                      t          t                    d           d S )Nztyping.TypeAlias)r   r   rC   r   s    r_   r   zTypeAliasTests.test_repr  s%    i*<=====ra   c                     |                      t                    5  t          t                    d d d            d S # 1 swxY w Y   d S re   )r   r   rC   r   r   s    r_   r  z$TypeAliasTests.test_cannot_subscript  s    y)) 	 	cNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r   N)rj   rk   rl   rI  rK  r   r#  rQ  rS  r   r   r  rm   ra   r_   rE  rE    s        $ $ $    & & &> > >
, , ,  > > >    ra   rE  c                   \    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d Zd ZdS )ParamSpecTestsc                     t          d          }|                     ||           |                     |t                      |                     |j        d           d S )Nr  )rD   r   r   rj   r  s     r_   rL  zParamSpecTests.test_basic_plain  sW    cNNAa+++S)))))ra   c                    t          d          }t          d          }t          |t          f         }|                     |j        |t          f           |                     |j        |f           t          ||f         }|                     |j        ||f           |                     |j        ||f           t          j        j        |t          f         }|                     |j        |t          f           |                     |j        |f           t          j        j        ||f         }|                     |j        ||f           |                     |j        ||f           d S Nr  r   )	rD   r   r"   r   r   rf  rg  r  r  rZ   r  r   r  r  r  r  s          r_   test_valid_useszParamSpecTests.test_valid_uses  s?   cNNCLLafq#h///*QD111ad^q!f---*QF333_%af-q#h///*QD111_%ad+q!f---*QF33333ra   c                 .   t          d          }t          d          }|                     dt          |                     |                     dt          |                     |                     |j        t
                     |                     |j        t                     |                     |j        j	        |           |                     |j        j	        |           | 
                    |j        |j                   | 
                    |j        |j                   |                     |j        |j                   |                     |j        |j                   |                     |j        |j                   |                     |j        |j                   |                     |j        |j                   | 
                    t          |j                  d           | 
                    t          |j                  d           d S )Nr  P_2r   rP  P.argsP.kwargs)rD   r!  r   r   r   rF   rP  rG   r   rh  r   r   r   )rZ   r  rc  s      r_   test_args_kwargszParamSpecTests.test_args_kwargs  s   cNNfc!ff%%%hA'''afm444ah888af'+++ah)1---(((18,,,AFCH---AHcj111AFAH---AHaf---AFCJ///afx000ah44444ra   c                    t          d          } G d dt          |                   }|                     t          |t	                      t                                dt          |t          f         i           |                     t          |j        t	                      t                                |j	        |j
        d           d S )Nr  c                   2    e Zd ZU edef         ed<   d	dZdS )
)ParamSpecTests.test_stringized.<locals>.Cr  r	  r   rd  rP  re  c                     d S re   rm   rV  s      r_   r  z-ParamSpecTests.test_stringized.<locals>.C.foo  rW  ra   N)r   rd  rP  re  )rj   rk   rl   r"   r   r   r  rm   ra   r_   r  ri     s?         38$$$$     ra   r  r	  rO  )rD   r#   r   r   r  r  r"   r   r  r   rP  rB  s      r_   test_stringizedzParamSpecTests.test_stringized  s    cNN	 	 	 	 	
 	 	 	
 	Q		68844vx3?O6PQQQwyy&((++af-Q-Q	
 	
 	
 	
 	
ra   c                    t          d          t          d          t          d          } G fddt          f                   }|t          |f         }|                     |j        t          |f           |                     |j        |f           |                     t          d          5  |t                    d d d            n# 1 swxY w Y   |                     t          d          5  |t          |t          f          d d d            n# 1 swxY w Y   |t          t          t          |f         f         }|                     |j        t          t          t          |f         f           |                     |j        |f           |t          t          t          gf         }|                     |j        t          t          t          ff           |                     |j        d           |t          d	f         }|                     |j        t          t          f           |                     |j        d            G fd
dt                             }|t          t          t          g         }|                     |j        t          t          t          ff           |                     |j        d           |t          t          t          f         }	|                     |	j        t          t          t          ff           |                     |	j        d           |                     |j        |	j                   |                     |j        |	j                   |                     |j        |	j                   |                     ||	           |t                   }
|                     |
j        t          ff           |                     |
j        d           |                     t          d          5  |t          t          gt          f          d d d            n# 1 swxY w Y   |                     t          d          5  ||t          f          d d d            d S # 1 swxY w Y   d S )Nr   r  rc  c                   6    e Zd ZU e ef         ed<   ed<   dS ),ParamSpecTests.test_user_generics.<locals>.Xrh   rl  Nrj   rk   rl   r"   r   r   )r  r   s   r_   r`  rn    s/         3DDDDDra   r`  r  r  rm   .c                   ,    e Zd ZU e ef         ed<   dS ),ParamSpecTests.test_user_generics.<locals>.Zrh   Nro  )r  s   r_   rZ  rq  &  s(         3ra   rZ  )r   rD   r#   r   r   rf  rg  r   r   rX  rE   r  r  rh  )rZ   rc  r`  rO  rR  G3G4rZ  G5G6G7r  r   s              @@r_   test_user_genericsz!ParamSpecTests.test_user_generics
  s	   CLLcNN	 	 	 	 	 	 	 	1 	 	 	 sCx[sCj111*SF333##I/BCC 	 	cFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	##I/CDD 	 	c3m	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 sKS))*sKS,A&BCCC*SF333sS$K sS$K&8999*B///sCx[sHo666*B///	  	  	  	  	  	  	 
 	  	  	  S$ S$'7&9:::*B///sC~S$'7&9:::*B/// 	bk222666*B,=>>>R   sVvi000*B///##I/CDD 	  	 sCj$	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 ##I/CDD 	 	c4iLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sH   6CCC6DDDP--P14P1Q00Q47Q4c                    t          d          t          d           G fddt          f                   }|t          t          gt          gf         }|t          gt          t          gf         }|                     ||           |                     |j        t          t          ft          ff           |                     |j        t          ft          t          ff           d S )Nr  r  c                   F    e Zd ZU e ef         ed<   eef         ed<   dS )CParamSpecTests.test_multiple_paramspecs_in_user_generics.<locals>.Xrh   r  N)rj   rk   rl   r"   r   r   rX  )r  r  s   r_   r`  rz  D  s=         3C      ra   r`  )rD   r#   r   rX  rp  r   r   rf  )rZ   r`  rO  rR  r  r  s       @@r_   )test_multiple_paramspecs_in_user_genericsz8ParamSpecTests.test_multiple_paramspecs_in_user_generics@  s    cNNt__	! 	! 	! 	! 	! 	! 	! 	!2 	! 	! 	! SzE7"#usEl"#B###SzE8&<===vU|&<=====ra   c                    t          d          t          d           G fddt          g R                    }|t          t          gf         }|                     |j        t          t          ff           |t          t          t          gf         }|                     |j        t          t          t          ff           |t          g         }|                     |j        t          ff           |g          }|                     |j        d           |                     t                    5  |d          d d d            n# 1 swxY w Y    G fddt          gR                    }|t          gt          f         }|                     |j        t          ft          f           |t          gt          t          f         }|                     |j        t          ft          t          f           |t          g         }|                     |j        t          ff           |g          }|                     |j        d           |                     t                    5  |d          d d d            d S # 1 swxY w Y   d S )	Nr  r  c                   H    e Zd ZU e ef         ed<   eg R          ed<   dS )KParamSpecTests.test_typevartuple_and_paramspecs_in_user_generics.<locals>.Xrh   r  Nrj   rk   rl   r"   r   r   r   r  r  s   r_   r`  r~  R  9         3SbSSzMMMMMra   r`  )rm   rm   c                   H    e Zd ZU e ef         ed<   eg R          ed<   dS )KParamSpecTests.test_typevartuple_and_paramspecs_in_user_generics.<locals>.Yrh   r  Nr  r  s   r_   re  r  a  r  ra   re  )
r   rD   r#   r   rp  r   rf  rX  r   r   )	rZ   r`  rO  rR  rr  rs  re  r  r  s	          @@r_   1test_typevartuple_and_paramspecs_in_user_genericsz@ParamSpecTests.test_typevartuple_and_paramspecs_in_user_genericsN  s   $cNN	 	 	 	 	 	 	 	Q 	 	 	 sUG|_sUHo666sC% !sC%&:;;;wZxk222rUe,,,y)) 	 	bEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 		 	 	 	 	 	 	 	B 	 	 	 w|_xo666wS !xc&:;;;wZxk222rUe,,,y)) 	 	bEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   5	E

EE(	I>>JJc           
      2   t          d          }t          d          }t          d          }t          t          j        j        fD ]}|                     |          5  ||t          g |R          f         }|t          t          gt          t          f         }|                     |j        t          t          t          t          t          f         f           d d d            n# 1 swxY w Y    G d dt          ||f                   }|t          g |R          |f         }|t          t          t          t          gf         }|                     |j        t          t          t          f         t          t          ff            G d dt          ||f                   }||t          g |R          f         }|t          t          gt          t          f         }|                     |j        t          t          ft          t          t          f         f           d S )	Nr  r   r  )r  c                       e Zd ZdS )MParamSpecTests.test_typevartuple_and_paramspecs_in_generic_aliases.<locals>.XNr}   rm   ra   r_   r`  r  {  rv  ra   r`  c                       e Zd ZdS )MParamSpecTests.test_typevartuple_and_paramspecs_in_generic_aliases.<locals>.YNr}   rm   ra   r_   re  r    rv  ra   re  )rD   r   r   r"   r  r  rw   r   r   rX  rp  r  r   rf  r#   )	rZ   r  r   r  r  r   rS  r`  re  s	            r_   3test_typevartuple_and_paramspecs_in_generic_aliaseszBParamSpecTests.test_typevartuple_and_paramspecs_in_generic_aliasesp  s,   cNNCLL$;?33 	N 	NAa(( N Nasssm$sCj%./  c3eUl8K-LMMMN N N N N N N N N N N N N N N
	 	 	 	 	1 	 	 	 eCRCCj!meUS#J&'eE5L&9C;%GHHH	 	 	 	 	1 	 	 	 asssmsCj%&'sCk53F%GHHHHHs   A9C##C'	*C'	c                 l   t          d          }|j        }|                      |t          t          f          t          t          f           |                      |t          t          g          t          t          f           |                      |d g          t          d           f           |                      |d          d           |                      ||          |           |                      |t          t          |f                   t          t          |f                    d S )Nr  .)rD   r  r   r   rX  r   r   rE   )rZ   r  r  s      r_   r  z$ParamSpecTests.test_var_substitution  s    cNN"Sz**S#J777Sz**S#J777vd666eeCjj#&&&eeAhh"""{36233[a5HIIIIIra   c                    t          d          }t          d          }dt          d |t          t          z  t          t          t          f         f}|D ]#}|                     |          5  |                     t                    5  |                    |           d d d            n# 1 swxY w Y   |                     t                    5  t          j
        ||f         |t          f          d d d            n# 1 swxY w Y   |                     t                    5  t          j        j
        ||f         |t          f          d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   %d S )Nr   r  r   r   )r   rD   r   rX  r   rw   r   r   r  rN   r"   r  r  )rZ   r   r  r  r   s        r_   r  z(ParamSpecTests.test_bad_var_substitution  s?   CLLcNNT1c#guS#X? 	= 	=C#&& = =&&y11 , ,&&s+++, , , , , , , , , , , , , , ,&&y11 4 4OAqD)#s(334 4 4 4 4 4 4 4 4 4 4 4 4 4 4&&y11 = =O,QT238<<= = = = = = = = = = = = = = == = = = = = = = = = = = = = =	= 	=s~   +E*B(E*(B,,E*/B,0E*"C;/E*;C??E*C?E* 'EE*EE*EE**E.	1E.	c                 J   t          d          }t          d          }t          d          }t          d          }t          d          } G d dt          |                   }||         }|                     |j        |f           |                     |j        |ff           |                     |t                   |t                              ||g         }|                     |j        |f           |                     |j        |ff           |                     |t                   |t                              |t          |g         }	|                     |	j        |f           |                     |	j        t          |ff           |                     |	t                   |t          t          g                    ||t          |g         }
|                     |
j        ||f           |                     |
j        |t          |ff           |                     |
t          t          f         |t          t          t          g                    |g |t                   }|                     |j        |f           |                     |j        g |t          R f           |                     |t          t          f         |t          t          t          g                    |t          g|         }|                     |j        |f           |                     |j        t          g|R f           |                     |t          t          f         |t          t          t          g                    ||g|         }|                     |j        ||f           |                     |j        |g|R f           |                     |t          t          t          f         |t          t          t          g                    |||g         }|                     |j        |f           |                     |j        ||ff           |                     |t                   |t          t          g                    ||t          |         g         }|                     |j        |f           |                     |j        |t          |         ff           |                     |t                   |t          t          t                   g                    |t          g |R          g|         }|                     |j        |f           |                     |j        t          g |R          g|R f           |                     |t          t          f         |t          t          t          f         t          t          f                    ||         }|                     |j        |f           |                     |j        |f           |                     |t          t          g         |t          t          g                     G d d	t          ||f                   }|||f         }|                     |j        ||f           |                     |j        ||f           |                     |t          t          gt          gf         |t          t          gt          gf                    |                     |g g f         |g g f                    |t          t          g|f         }|                     |j        |f           |                     |j        t          t          f|f           |                     |t          t          g         |t          t          gt          t          gf                    |                     |g          |t          t          gg f                    ||t          t          gf         }|                     |j        |f           |                     |j        |t          t          ff           |                     |t          t          g         |t          t          gt          t          gf                    |                     |g          |g t          t          gf                    ||t          gt          |gf         }|                     |j        ||f           |                     |j        |t          ft          |ff           |                     |t          t          f         |t          t          gt          t          gf                    |g |t          t          |gf         }|                     |j        ||f           |                     |j        g |t          R t          |ff           |                     |t          t          t          f         |t          t          t          gt          t          gf                    ||t          gt          g|f         }|                     |j        ||f           |                     |j        |t          ft          g|R f           |                     |t          t          t          f         |t          t          gt          t          t          gf                     G d
 dt          ||f                   }|||f         }|                     |j        ||f           |                     |j        ||f           |                     |t          t          gt          f         |t          t          gt          f                    |t          |g|f         }|                     |j        |f           |                     |j        t          |f|f           |                     |t                   |t          t          gt          f                    |t          g||f         }|                     |j        ||f           |                     |j        t          g|R |f           |                     |t          t          t          f         |t          t          t          gt          f                    d S )Nr   r  r  r  r  c                       e Zd ZdS )DParamSpecTests.test_type_var_subst_for_other_type_vars.<locals>.BaseNr}   rm   ra   r_   r  r    rv  ra   r  c                       e Zd ZdS )GParamSpecTests.test_type_var_subst_for_other_type_vars.<locals>.DoublePNr}   rm   ra   r_   DoublePr    rv  ra   r  c                       e Zd ZdS )EParamSpecTests.test_type_var_subst_for_other_type_vars.<locals>.PandTNr}   rm   ra   r_   PandTr    rv  ra   r  )r   rD   r   r#   r   rg  rf  r   rX  r  r  r   r  rp  )rZ   r   r  r  r  r  r  A1r  A3A4A5A5_2A6A7A8A9A10r  B1B2B3B4B5B6r  r  r  r  s                                r_   'test_type_var_subst_for_other_type_varsz6ParamSpecTests.test_type_var_subst_for_other_type_vars  s
   CLLT]]cNNt__$	 	 	 	 	71: 	 	 	 !W*QD111tg...C$s),,,1#Y*QD111tg...C$s),,,3(^*QD111Qxk222C$Sz"23331c2,*QG4443|o666CIc3-=(>???*B***RE222zzSzzm444CIc4-=(>???SJ2J,re444#666c4i$S$/?*@AAA1(r(^*QG444xBxxk222CdN+T3T2B-CDDD1a&\*QD1111vi000C$Sz"23331d1g,*QD11147|o666C$T#Y'7"89995":##$*RE222crcc
'8R'8'8&:;;;CHtE#s(OS#,E'FGGG2h+bU333u---c3Z$Sz*:;;;	 	 	 	 	gaen 	 	 	 QU^*QG444q"g...S#J./#tf9L1MNNNBFWRV_555c3Z^$*RE222Sz2&6777T4L)7C#;t3L+MNNNB#b!9:::Qt_%*QD111q4,&7888S#J#tTl1J)KLLLBdD\)9!:;;;aXbz)**QG4443x$&<===CJ#sdE]1J)KLLLZrZ3Z$+,*RH555zzSzzD":&>???C-. #uc!2T5M!AB	D 	D 	D aX{r{*+*QG4443x$&=>>>C-. #sdE5-A!AB	D 	D 	D	 	 	 	 	GAqDM 	 	 	 1a4[*QF333q!f---S#J,-uc3Z5E/FGGGC8Q;*QD111Qxm444C%c
C"8999C:":q=!*RG444zbzz1o666Cu,-uc35Eu5L/MNNNNNra   c                    t          d          }t          d          }t          ||f         }t          |         }t          |         }t          |         t
          z  }|                     |j        ||f           |                     |j        ||f           |                     |j        ||f           t          t
          t          gt          f         }|                     |t
          t          gt          f         t          |                    |                     |t
          t          gt          f         t          |                    |                     |t
          t          gt          f         t          |         t
          z             d S )Nr   r  )
r   rD   r"   r   r  r   r   rg  rX  r  )rZ   r   r  r  rO  rR  rr  r  s           r_   !test_paramspec_in_nested_genericsz0ParamSpecTests.test_paramspec_in_nested_generics  s2    CLLcNNad^"X"X"X^*QF333*QF333*QF333c3Z&'S#J-.Q888S#J-.Q888S#J-.Q#>>>>>ra   c                    t          d          }t          d          }t          |t          f         }|                     |j        |f           |                     ||         j        |f           |                     |t
                   j        d           |                     |t
          t          f         j        t          f           |                     |t          t
          |f                  j        |f           |                     |t          t          |f                  j        t          |f           |                     |d         j        d           t          t          t
          |f         t          f         }|                     |j        |f           |                     ||         j        |f           |                     |t
                   j        d           |                     |t
          t          f         j        t          f           |                     |t          t
          |f                  j        |f           |                     |t          t          |f                  j        t          |f           d S )Nr  r  rm   .)rD   r"   r   r   rg  rX  r   rE   )rZ   r  r  r  r  s        r_   test_paramspec_gets_copiedz)ParamSpecTests.test_paramspec_gets_copied+  s   cNNt__af*QD111B.666C/444CF2QD999KR01@2%HHHK2./>BHHHC/444k#q&)3./*QD111B.666C/444CF2QD999KR01@2%HHHK2./>BHHHHHra   N)rj   rk   rl   rL  ra  rf  rk  rw  r{  r  r  r  r  r  r  r  rm   ra   r_   r\  r\    s        * * *4 4 4"5 5 5&

 

 

4 4 4l> > >     DI I I2J J J= = =wO wO wOr? ? ?$I I I I Ira   r\  c                   &    e Zd Zd Zd Zd Zd ZdS )ConcatenateTestsc                     t          d          } G d d          }t          ||f         }|                     |t                     d S )Nr  c                       e Zd ZdS )-ConcatenateTests.test_basics.<locals>.MyClassNr}   rm   ra   r_   ri  r  D  r   ra   ri  )rD   rE   r   )rZ   r  ri  r  s       r_   r  zConcatenateTests.test_basicsB  sO    cNN
#A{+++++ra   c                    t          d          }t          t          t          t          |f                             }dD ]F}|                     |          5  |                     ||           d d d            n# 1 swxY w Y   Gd S )Nr  r  r  )rD   r  r   rE   r   rw   r!  )rZ   r  r#  r  s       r_   r$  zConcatenateTests.test_dirH  s    cNNKQ/0011	
 	8 	8M M:: 8 8mY7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8	8 	8s   A;;A?	A?	c                    t          d          }t          d          }t          t          t          |f         t          f         }|                     |j        t          t          |f         t          f           |                     |j        |f           t          t          t          ||f         |f         }|                     |j        t          t          ||f         |f           |                     |j        ||f           t          j	        j        t          t          |f         t          f         }|                     |j        t          t          |f         t          f           |                     |j        |f           t          j	        j        t          t          ||f         |f         }|                     |j        t          t          ||f         |f           |                     |j        ||f           d S r_  )
rD   r   r"   rE   r   r   rf  rg  r  r  r`  s          r_   ra  z ConcatenateTests.test_valid_usesQ  s   cNNCLLk#q&)3./{36':C&@AAA*QD111k#q!),a/0{319'=q&ABBB*QF333 _%k#q&&93&>?{36':C&@AAA*QD111_%k#q!)&<a&?@{319'=q&ABBB*QF33333ra   c                 X   t          d          }t          d          }t          d          }t          ||f         }|                     |t          |f         t          t          |f                    |                     |t          t
          t          gf         t          t
          t          f           |                     |t          g f         t          f           |                     |t          t          t
          |f         f         t          t          t
          |f                    |                     |t          df         t          t          df                    t          t          |f         }|                     ||         t          t          |f                    |                     |t
          t          g         t          t
          t          f           |                     |t
          t          f         t          t
          t          f           |                     |g          t          f           |                     |t          t
          |f                  t          t          t
          |f                    |                     |d         t          t          df                    d S )Nr   r  r  .)r   rD   rE   r   r   rX  r  )rZ   r   r  r  r  s        r_   r  z&ConcatenateTests.test_var_substitutionc  s   CLLcNNt__137[b%9:::3e,-S%/@AAA37cV,,,3CG 445$S#r\2	4 	4 	438k#s(&;<<<Q2CG 4555C<3U*;<<<3:c5(9:::2''';sBw/0+c3l2KLLL3S#X!677777ra   N)rj   rk   rl   r  r$  ra  r  rm   ra   r_   r  r  A  sP        , , ,8 8 84 4 4$8 8 8 8 8ra   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TypeGuardTestsc                 X   t           t                    dt           t                   fd}|                     t          |          dt           t                   i           |                     t
                    5  t           t          t          f          d d d            d S # 1 swxY w Y   d S )Nr   c                     d S re   rm   r   s    r_   r  z'TypeGuardTests.test_basics.<locals>.foo{  r   ra   )rH   r   r   r   r   r   rX  r	  s     r_   r  zTypeGuardTests.test_basicsx  s    #+	#++++SHin#=>>>y)) 	  	 c3h	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   8BB#&B#c                    |                      t          t                    d           t          t                   }|                      t          |          d           t          t                   }|                      t          |          dt
          z             t          t          t                            }|                      t          |          d           d S )Nztyping.TypeGuardztyping.TypeGuard[int]ztyping.TypeGuard[%s.Employee]ztyping.TypeGuard[tuple[int]])r   r   rH   r   r|   rj   r  r  s     r_   r   zTypeGuardTests.test_repr  s    i*<===s^b#:;;;x b#BX#MNNNuSz"b#ABBBBBra   c           	      f   |                      t                    5   G d dt          t                              }d d d            n# 1 swxY w Y   |                      t                    5   G d dt          t          t                                       }d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS .TypeGuardTests.test_cannot_subclass.<locals>.CNr}   rm   ra   r_   r  r    r   ra   r  c                       e Zd ZdS r  r}   rm   ra   r_   r  z.TypeGuardTests.test_cannot_subclass.<locals>.C  r   ra   )r   r   r   rH   r   r  s     r_   r   z#TypeGuardTests.test_cannot_subclass  sK   y)) 	 	    DOO   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	 	    D3((   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  c                    |                      t                    5  t                       d d d            n# 1 swxY w Y   |                      t                    5   t          t                                 d d d            n# 1 swxY w Y   |                      t                    5   t          t          t          t
                                                   d d d            d S # 1 swxY w Y   d S re   )r   r   rH   r   r   r   r   s    r_   r   zTypeGuardTests.test_cannot_init  s   y)) 	 	KKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	DOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	- 	-*D8C=)**,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-r  c                 D   |                      t                    5  t          dt          t                              d d d            n# 1 swxY w Y   |                      t                    5  t          t          t                     d d d            d S # 1 swxY w Y   d S r"  )r   r   r   rH   r   rW   r   s    r_   r#  z!TypeGuardTests.test_no_isinstance  s   y)) 	* 	*q)C.)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*y)) 	' 	'sI&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'r  Nr 	  rm   ra   r_   r  r  w  sb             C C C  - - -' ' ' ' 'ra   r  SpecialAttrsPSpecialAttrsTc                   B    e Zd Zd Z ej        de          Zd Zd Z	dS )SpecialAttrsTestsc           	         i t           j        dt           j        dt           j        dt           j        dt           j        dt           j        dt           j        dt           j        dt           j	        d	t           j
        d
t           j        dt           j        dt           j        dt           j        dt           j        dt           j        dt           j        di t           j        dt           j        dt           j        dt           j        dt           j        dt           j        dt           j        dt           j        dt           j        dt           j        dt           j        dt           j        dt           j        dt           j        dt           j         d t           j!        d!t           j"        d"i t           j#        d#t           j$        d$t           j%        d%t           j&        d&t           j        tN                   dt           j        tN                   dt           j        tN          tN          f         dt           j        tN                   dt           j        tN                   dt           j        tN                   dt           j        g tN          f         dt           j        d'tN          f         dt           j	        tN          tN          f         d	t           j
        tN                   d
t           j        tN                   dt           j        tN                   dt           j        tN          tN          tN          f         di t           j        tN                   dt           j        tN          tN          f         dt           j        tN                   dt           j        tN          tN          f         dt           j        tN                   dt           j        tN          tN          tN          f         dt           j        tN          tN          f         dt           j        tN                   dt           j        tN                   dt           j        tN                   dt           j        tN                   dt           j        tN          tN          f         dt           j        tN                   dt           j        tN          tN          f         dt           j        tN                   dt           j        tN                   dt           j        tN          tN          f         di t           j         tN                   d t           j!        tN                   d!t           j"        tN                   d"t           j$        tN                   d$t           j$        tN          d'f         d$t           j%        tN                   d%t           j&        tN                   d&t           j(        d(t           j'        d)t           j)        d*t           j*        d+t           j+        d,t           j,        d-t           j-        d.t           j.        d/t           j/        d0t           j0        d1i t           j1        d2t           j2        d3t           j3        d4t           j4        d5t           j5        d6t           j6        d7t           j(        tN          d8f         d(t           j)        tN                   d*t           j*        tN          tn          f         d+t           j+        tN                   d,t           j-        tN                   d.t           j-        d9         d.t           j-        d:         d.t           j1        tN                   d2t           j3        tN                   d4t           j5        tN                   d)t           j5        tp          tr          f         d6}|:                                D ]\  }}| ;                    |;          5  | <                    |j=        |t}          |                     | <                    |j?        |t}          |                     | <                    |j@        d<t}          |                     t          t          jC        d=z             D ]A}t          jD        ||          }t          jE        |          }| F                    ||           B	 d d d            n# 1 swxY w Y   d S )>Nr2  ry  r  r  r
  r  r  r"   r$  r  r  r  r  r  r#  r  r    r  r  r  	ItemsViewrF  r
  KeysViewr   rI  MappingViewr!   r  r  r  r  r  r  r  r   r4   
ValuesView.r?   r   r$   rE   r%   r@   r   r  r   r   r   rC   rH   r   r   rA   
Annotationr  r  r.	  rN   rp   )GrN   r2  ry  r  r  r
  r  r  r"   r$  r  r  r  r  r  r#  r  r    r  r  r  r  rF  r
  r  r   rI  r  r!   r  r  r  r  r  r  r  r   r4   r  r   r?   r$   rE   r%   r@   r   r  r   r   r   rC   rH   r   r   rA   r  r   r  r  rw   r   rj   rX  rl   rk   rt   ru   rv   r  r  r   )rZ   cls_to_checkr[   r
  rs   r  r  s          r_   r  z$SpecialAttrsTests.test_special_attrs  s	   p
p
 &(=p
 !#3	p

  /p
  /p
 kp
 |p
 OZp
 OZp
 |p
 kp
 !#3p
 kp
 NIp
  !p
" L'#p
$ K%p
 p
& k'p
( k)p
* OZ+p
, k-p
. OZ/p
0 OZ1p
2 OZ3p
4 K5p
6 NI7p
8 9p
: !#3;p
< "$5=p
> |?p
@ Ap
B |Cp
D OZEp
F JGp
 p
 p
H L'Ip
J L'Kp
L KMp
N |Op
R s#]Sp
T &s+-BUp
V !#s(+-=Wp
X  %Yp
Z  %[p
\ S!;]p
^ OBG$j_p
` OCH%zap
b OCH%zcp
d c"Lep
f S!;gp
h !#&(8ip
j S#s]+[kp
 p
 p
l N3mp
n sCx(-op
p Lwqp
r KS!6sp
t S!;up
v S#s]+[wp
x S#X&yp
z OC *{p
| OC *}p
~ OC *p
@ KfAp
B N38$iCp
D s#]Ep
F !#s(+-=Gp
H "3'):Ip
J c"LKp
L sCx(-Mp
 p
 p
N c"LOp
P OC *Qp
R JsOUSp
T LwUp
V Lc"GWp
X KfYp
Z c"L[p
^ k_p
` Jap
b OZcp
d ep
f L'gp
h |ip
j NIkp
l NImp
n OZop
p L'qp
 p
 p
r OZsp
t kup
v kwp
x NIyp
z L'{p
| K}p
@ S,./Ap
B OC *Cp
D sM12MEp
F LwGp
H N3Ip
J N4 )Kp
L N7#YMp
N OC *Op
P S!;Qp
R LuSp
T Le$gUp
 p
d &++-- 	/ 	/IC#&& / /  tSXX>>>  !14SBBB  3s88DDD"6#:Q#>?? / /ES%00A#\!__FMM#v..../	/ / / / / / / / / / / / / / /	/ 	/s   Cc  c	c	SpecialAttrsTests.TypeNamec                    t          j        d          }|                     t          |d                     |                     t          |d                     |                     |j        d           t          t          j        dz             D ]I}| 	                    t                    5  t          j        ||           d d d            n# 1 swxY w Y   J|                     t          j        j        d           |                     t          j        j        d           |                     t          j        j        t                     t          t          j        dz             D ]U}t          j        t          j        |          }t          j        |          }|                     t          j        |           V|                     t$          j        d           |                     t          t$          d                     |                     t$          j        t                     t          t          j        dz             D ]K}t          j        t$          |          }t          j        |          }|                     t$          |           L|                     t&          j        d	           |                     t          t&          d                     |                     t&          j        t                     t          t          j        dz             D ]K}t          j        t&          |          }t          j        |          }|                     t&          |           Ld S )
Nzset[Any]rj   rl   rN   rp   TypeNamer  r  r  )rN   r@   r   r  r   rk   rt   ru   rv   r   r   r  r  r  rj   rl   r  r   r  r  )rZ   rg	  rs   r  r  s        r_   test_special_attrs2z%SpecialAttrsTests.test_special_attrs2&   s    z**Z00111^4455511162Q677 	( 	(E""9-- ( (R'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 	*3<jIII&3(	
 	
 	
 	&1	
 	
 	

 62Q677 	> 	>E.7??A\!__FMM+4f==== 	/AAA??@@@18<<<62Q677 	1 	1E]E22A\!__FMM-0000/AAA??@@@18<<<62Q677 	1 	1E]E22A\!__FMM-0000	1 	1s   .CC	C	c                 N    G d dt           t                             }t          t          |t                                       }dD ]F}|                     |          5  |                     ||           d d d            n# 1 swxY w Y   G|                     d|           d S )Nc                       e Zd Zd ZdZdZdS )4SpecialAttrsTests.test_genericalias_dir.<locals>.Fooc                     d S re   rm   r   s    r_   r  z8SpecialAttrsTests.test_genericalias_dir.<locals>.Foo.barZ   rW  ra   r  r  N)rj   rk   rl   r  r  	__magic__rm   ra   r_   r  r  Y   s'          CIIIra   r  )r  r  rf  rg  rh  r  r  )r#   r   r  r   r   rw   r!  ra	  )rZ   r  r#  r  s       r_   test_genericalias_dirz'SpecialAttrsTests.test_genericalias_dirX   s    	 	 	 	 	'!* 	 	 	 CH&&	
 	8 	8M M:: 8 8mY7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8i00000s    BB	
B	N)
rj   rk   rl   r  rN   r  r   r  r  r  rm   ra   r_   r  r    s\        {/ {/ {/z v~:C@@H01 01 01d1 1 1 1 1ra   r  c                       e Zd Zd ZdS )RevealTypeTestsc                    t                      }t                      5 }|                     |t          |                     d d d            n# 1 swxY w Y   |                     |                                d           d S )NzRuntime type is 'object'
)r,  rJ   r   r/   r   getvalue)rZ   rt  stderrs      r_   test_reveal_typez RevealTypeTests.test_reveal_typel   s    hh 	1&MM#{3//000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1**,HIIIIIs   $AAAN)rj   rk   rl   r  rm   ra   r_   r  r  k   s(        J J J J Jra   r  c                        e Zd Zd Zd Zd ZdS )DataclassTransformTestsc           	      B   ddddt           dt           fd} t          dd          |          } G d d	          }|                     ||           |                     |j        dddd
i d           |                       |dd          |          |           d S )NFTfrozenkw_onlyr  r  c                     d S )Nc                     | S re   rm   r.	  s    r_   rQ  zNDataclassTransformTests.test_decorator.<locals>.create_model.<locals>.<lambda>v   s    s ra   rm   r  s     r_   create_modelz<DataclassTransformTests.test_decorator.<locals>.create_modelu   s
    "?"ra   )kw_only_defaultorder_defaultc                       e Zd ZU eed<   dS )=DataclassTransformTests.test_decorator.<locals>.CustomerModelr  Nr1  rm   ra   r_   CustomerModelr  z            GGGGGra   r  rm   
eq_defaultr  r  field_specifiersrP  )r  r0   r   r   __dataclass_transform__)rZ   r  	decoratedr  s       r_   test_decoratorz&DataclassTransformTests.test_decoratort   s
   +0$ 	# 	# 	#D 	#4 	# 	# 	# 	# S'ERRRS_``		 	 	 	 	 	 	 	 	i...-"!&#'$& 		
 		
 		
 	1IIT5111-@@	
 	
 	
 	
 	
ra   c           	          G d d          } t          ddd          |          } G d d|d          }|                     ||           |                     |j        dddd	d
did           |                     ||           d S )Nc                        e Zd ZdddefdZdS ):DataclassTransformTests.test_base_class.<locals>.ModelBaseFr  r  c                    d S re   rm   )r[   r  s     r_   rT  zLDataclassTransformTests.test_base_class.<locals>.ModelBase.__init_subclass__   r   ra   N)rj   rk   rl   r  rT  rm   ra   r_   	ModelBaser     s*        9>DDD$DDDDDDra   r  T)r  r  make_everything_awesomec                       e Zd ZU eed<   dS )>DataclassTransformTests.test_base_class.<locals>.CustomerModelr  Nr1  rm   ra   r_   r  r     r  ra   r  r  Frm   r  r  )r0   r   r   r  r`   )rZ   r  	Decoratedr  s       r_   test_base_classz'DataclassTransformTests.test_base_class   s   	E 	E 	E 	E 	E 	E 	E 	E
'$(	
 
 

  		 	 	 	 	Id 	 	 	 	 	i+++-"!%#($&4d; 		
 		
 		
 	mY77777ra   c           	      V    G d d          } G d dt                     } t          d|f          |          } G d d|	          } G d
 d|d          }|                     ||           |                     |j        ddd|fi d           |                     ||           d S )Nc                       e Zd ZdS )5DataclassTransformTests.test_metaclass.<locals>.FieldNr}   rm   ra   r_   Fieldr     r   ra   r  c                   *     e Zd Zdddef fdZ xZS )9DataclassTransformTests.test_metaclass.<locals>.ModelMetaTinitr  c                L    t                                          | |||          S re   )r|  r}  )r[   r
  r  	namespacer  r  s        r_   r}  zADataclassTransformTests.test_metaclass.<locals>.ModelMeta.__new__   s!     wwsD%CCCra   )rj   rk   rl   r  r}  r  r  s   @r_   	ModelMetar     s_        =AD D D6:D D D D D D D D D Dra   r  T)r  r  c                       e Zd ZdS )9DataclassTransformTests.test_metaclass.<locals>.ModelBaseNr}   rm   ra   r_   r  r     r   ra   r  r)	  c                       e Zd ZU eed<   dS )=DataclassTransformTests.test_metaclass.<locals>.CustomerModelr  Nr1  rm   ra   r_   r  r     r  ra   r  Fr   r  )r   r0   r   r   r  r   )rZ   r  r  r  r  r  s         r_   test_metaclassz&DataclassTransformTests.test_metaclass   s6   	D 	D 	D 	D 	D 	D 	D 	D
'%
 
 

 	 	21111)1111	 	 	 	 	IE 	 	 	 	 	i+++-"!%#(%*H 		
 		
 		
 	mY77777ra   N)rj   rk   rl   r  r  r	  rm   ra   r_   r  r  s   sA        
 
 
28 8 868 8 8 8 8ra   r  c                       e Zd ZdZd Zd ZdS )AllTestszTests for __all__.c                 N   ddl m} |                     d|           |                     d|           |                     d|           |                     d|           |                     d|           |                     d|           |                     d	|           |                     d
|           |                     d|           |                     d|           |                     d|           |                     d|           |                     d|           d S )Nr   )r*  r2  r  r)   r   r  ry  ior  osr]  Textr  r  )rN   r*  r!  ra	  r  s     r_   test_allzAllTests.test_all   s)   ''''''mQ'''lA&&&fa   j!$$$&***+Q///q!!!q!!!q!!!"""fa   oq)))'+++++ra   c                     t          t          j                  fdt          t                                                    D             }|                     |           d S )Nc                     h | ]p\  }}|v se|                     d           sR|dvrN|                    d          s9|                                |k    s!t          |dd          t          j        k    n|qS )rs
  >   r  r  )r  _contra_cork   N)r6  r0  upperr(  rN   rj   )r  r  r:  
actual_alls      r_   	<setcomp>z3AllTests.test_all_exported_names.<locals>.<setcomp>   s     
 
 
!QJLL%%  %%JJ9:: & GGIINN<..&/AA  BAAra   )r  rN   r*  varsr  assertSetEqual)rZ   computed_allr  s     @r_   test_all_exported_namesz AllTests.test_all_exported_names   sj    ((

 
 
 
v,,,,..
 
 
 	L*55555ra   N)rj   rk   rl   r  r  r  rm   ra   r_   r  r     s8        , , ,,6 6 6 6 6ra   r  c                       e Zd Zeeeeef         eeef         ee	e
e
def         e
egef         eeedf         fZd Zd ZdS )TypeIterationTests.r  c                    d}| j         D ]}|                     |          5  |                     t          |          5  t	          |           d d d            n# 1 swxY w Y   |                     t          |          5  t          |           d d d            n# 1 swxY w Y   |                     t          |          5  |D ]}	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )Nzobject is not iterabler  )_UNITERABLE_TYPESrw   r   r   r  r  )rZ   expected_error_regex	test_typers
  s       r_   test_cannot_iteratez&TypeIterationTests.test_cannot_iterate!  s   7/ 	 	I9--  ++I7KLL $ $OOO$ $ $ $ $ $ $ $ $ $ $ $ $ $ $++I7KLL $ $OOO$ $ $ $ $ $ $ $ $ $ $ $ $ $ $++I7KLL  &                              	 	s|   C,AC,AC,!A"C, BC,B  C,#B $C,C	C,CC,CC,,C0	3C0	c                 d    | j         D ]'}|                     |t          j        j                   (d S re   )r  r   r  r  rF  )rZ   type_to_tests     r_    test_is_not_instance_of_iterablez3TypeIterationTests.test_is_not_instance_of_iterable!  s@     2 	M 	ML$$\;?3KLLLL	M 	Mra   N)rj   rk   rl   r   r   rX  r   r   r   r   r"   r?   r  r"  r%  rm   ra   r_   r  r     s        c3hc1fa!c!R%
 
 
M M M M Mra   r  __main__)rq  r  r   	functoolsr   r   r9	  r  r0  ru   r  r]  r  unittestr   r   r   r	   unittest.mockr
   r   r   rN   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r4   r5   r6   r7   r8   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   r  r  r  r  test.supportrI   rJ   rK   rl  rL   rM   import_fresh_moduler  r  r  rS   rz   r|   r   r   r   r   r   r   r   r   r   r-  rE  r  rX  r  r  r  r  r  r  r.  r  r&  rk  r}  r  r  r  rp  r  r  r  r&  r0  r4  r8  r;  r>  r@  rB  rH  rJ  rN  rP  rR  r=  r  r	  r	  r>	  rE	  rH	  rJ	  rM	  rP	  rD
  rF
  rK
  ru
  rv
  rw
  rx
  ry
  rz
  r  r|
  r
  r
  r
  r   rS  r
  rW  r@
  r
  r
  r
  r
  r
  r
  r
  r
  r  r  
FooGenericr
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  ry  r   r
  r  r  r  r   r   r
  r
  rv  r  rl  r|  r  r  r  r  r  r+  r  r  r  r  r  rE  r\  r  r  r  r  r  r  r  r  r  r  r  rj   rm   ra   r_   <module>r-     s           # # # # # # & & & & & & & &      				  				 



  5 5 5 5 5 5 5 5 5 5 5 5               5 5 5 5 5 5 5 5 5 5 5 5 ; ; ; ; ; ; ; ; ; ; 8 8 8 8 8 8 8 8 8 8 8 8           + + + + + + + + + + 4 4 4 4 4 4 4 4 4 4 4 4       < < < < < < < < < < < < < < 7 7 7 7 7 7 7 7 7 7 ! ! ! ! ! ! ' ' ' ' ' ' ' '             & & & & & & 9 9 9 9 9 9 9 9       ? ? ? ? ? ? ? ? ? ? ? ? ' ' ' ' ' ' ' ' ' ' ! ! ! ! ! ! ! ! ( ( ( ( ( ( ( ( & & & & & & & &       I I I I I I I I I I I I       



     E E E E E E E E E E # # # # # # # # # # # # .M-hLLL	,=,Xi[III?     8   *	 	 		 	 	 	 	 	 	 		 	 	 	 	h 	 	 		 	 	 	 	h 	 	 		 	 	 	 	gw 	 	 	/ / / / /| / / /d%% %% %% %% %% %% %% %%P- - - - -(, - - -(8 8 8 8 8%| 8 8 8 
 
 
 
 
| 
 
 
&55 55 55 55 55 55 55 55p4> 4> 4> 4> 4> 4> 4> 4>lV! V! V! V! V!< V! V! V!rA,S	 A,c49n9M A,RVW\]`WaRb A, A, A, A,H+ + + + +| + + +B@ @ @ @ @L @ @ @H    ,   @x
< x
< x
< x
< x
< x
< x
< x
<v.$ .$ .$ .$ .$ .$ .$ .$bzG zG zG zG zG zG zG zGz)' )' )' )' )' )' )' )'Xd d d d d d d dL		? 	? 	? 	? 	?+\ 	? 	? 	?( ( ( ( (0, ( ( (x= x= x= x= x=< x= x= x=v WT3WT]]	 	 	 	 	GBFO 	 	 	    mBF+   $            J          
    H       H    	 	 	 	 	ueX 	 	 	     H   
	 	 	 	 	u 	 	 	                   h   W? W? W? W? W?L W? W? W?t"g g g g g< g g gT#& #& #& #& #&L #& #& #&J(# (# (# (# (# (# (# (#VG6 G6 G6 G6 G6, G6 G6 G6T       $6 6 6 6 6l 6 6 6"      0 0 0 0 0 0 0 0 < < < < < < < <R1 R1 R1 R1 R1l R1 R1 R1j          YC YC YC YC YCL YC YC YC| P O O O O O O O O O O O O Ogenn    v',   % % % % %6/4 % % %                         1            
                        :       j       J   
    J    		'WcN+,,    i   	 	 	 	 	WQZ 	 	 	    

         #.q1     ( ' ' ' '7E ' ' '    iu               IU        )5        )   J J J J J J J J, , , , , : , , ,, , , , ,Y , , ,, , , , ,9 , , ,. . . . . . . .$ $ $ $ $,. $ $ $V/4    

F3355MMt   6!9?????????        vU vU vU vU vU| vU vU vUr	OT OT OT OT OT8 OT OT OTdWg Wg Wg Wg Wg, Wg Wg Wgt1 1 1 1 1L 1 1 1:$% $% $% $% $% $% $% $%N
M 
M 
M 
M 
M( 
M 
M 
M[ [ [ [ [ [ [ [|    |    H())    L,   *)B2 B2 B2 B2 B2l B2 B2 B2JA& A& A& A& A&\ A& A& A&H+& +& +& +& +&L +& +& +&\+) +) +) +) +)| +) +) +)\#( #( #( #( #(l #( #( #(L<K <K <K <K <Kl <K <K <K~s= s= s= s= s=\ s= s= s=l	) ) ) ) )\ ) ) )XlI lI lI lI lI\ lI lI lI^48 48 48 48 48| 48 48 48l'' '' '' '' ''\ '' '' ''T ! 11UGDDC1 C1 C1 C1 C1 C1 C1 C1LJ J J J Jl J J JR8 R8 R8 R8 R8l R8 R8 R8j)6 )6 )6 )6 )6| )6 )6 )6XM M M M M M M M@ zDFFFFF s   &[5 5\:\\