
    dafC                       d dl mZmZmZ d dlZd dlmZ d dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlZ ej$                  d      Z G d d      Z G d d      Zd	 Z G d
 dej.                        Z G d dej.                        Z G d dej.                        Z G d dej.                        Z G d dej.                        Z G d dej.                        Zedk(  r ej>                          yy)    )run_with_localecpython_onlyMISSING_C_DOCSTRINGSN)
namedtupleTc                       e Zd Zy)ExampleN__name__
__module____qualname__     */root/Python-3.12.4/Lib/test/test_types.pyr	   r	      s    r   r	   c                       e Zd Zy)ForwardNr
   r   r   r   r   r          r   r   c                  <    t         j                  D ]	  }  |          y N)typing	_cleanups)fs    r   clear_typing_cachesr      s     	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 edd      d        Z edd      d        Zd Zd Zd Zd Z ej.                  ed      d        Zd Zd Zd Zd Zd Zd Zy)
TypesTestsc                    	 	 	 	 	 	 	 ddis| j                  d       d } G d d      } |       }|s| j                  d       |s| j                  d       t        s| j                  d	       |s| j                  d
       y y )Nx   z!{'x': 1} is false instead of truec                       y r   r   r   r   r   r   z'TypesTests.test_truth_values.<locals>.f)   s    r   c                       e Zd Zy)'TypesTests.test_truth_values.<locals>.CNr
   r   r   r   Cr!   *   r   r   r"   zf is false instead of truezC is false instead of truezsys is false instead of truezx is false instead of true)failsys)selfr   r"   r   s       r   test_truth_valueszTypesTests.test_truth_values    sw    Qx#HIC$))89$))89DII<=$))89qr   c                      	 	 y r   r#   r%   s    r   test_boolean_opszTypesTests.test_boolean_ops1   s    r   c                 |   ddcxk  rdcxk  rdcxk(  rdcxk\  rdcxkD  rdk7  rn nn| j                  d       ddcxk  rdcxk  rdcxk(  rdcxk\  rdcxkD  rdk7  rn nn| j                  d       ddcxk  rdcxk  rdcxk(  rd	cxk  rd
cxk  rdk  rn nn| j                  d       d y | j                  d       y )Nr   r   zint comparisons failed              ?zfloat comparisons failed aabcabdbzstring comparisons failedzidentity test failedr(   r)   s    r   test_comparisonszTypesTests.test_comparisons7   s    q(A((a(!(q($ii0166s6c6C636ii237s7c7E7E7C7ii34<ii./r   c                     | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       y )Nr.   z5 z5_5 )assertRaises
ValueErrorfloatr)   s    r   test_float_constructorz!TypesTests.test_float_constructorA   s8    *eR0*eU3*eW5r   c                    ddz   | j                  d       ddz   | j                  d       ddz   | j                  d       ddz   | j                  d       ddz   | j                  d	       ddz   | j                  d
       y # t        $ r Y zw xY w# t        $ r Y sw xY w# t        $ r Y lw xY w# t        $ r Y ew xY w# t        $ r Y ^w xY w# t        $ r Y y w xY w)Ng      @r,   z(5.0 / 0.0 didn't raise ZeroDivisionErrorz)5.0 // 0.0 didn't raise ZeroDivisionErrorz(5.0 % 0.0 didn't raise ZeroDivisionError   r   z$5 / 0 didn't raise ZeroDivisionErrorz%5 // 0 didn't raise ZeroDivisionErrorz$5 % 0 didn't raise ZeroDivisionError)r#   ZeroDivisionErrorr)   s    r   test_zero_divisionzTypesTests.test_zero_divisionF   s    3YiiBCCZiiCD3YiiBCUii>?!Vii?@Uii>?+ !&$& !&$& !&$& !&$& !&$& !&$&si   B B B$ B3 C /C 	BB	B! B!$	B0/B03	B?>B?	CC	CCc                    ddk7  s
ddk7  sddk7  r| j                  d       t               dk7  r| j                  d       t               dk7  r| j                  d	       t        d
      dcxk(  rt        d      k(  r$n n!t        d      dcxk(  rt        d      k(  rn nn| j                  d       t        d      dk(  rt        d      dk(  rt        d      dk(  ry | j                  d       y )Nr   r,   r   r-         zint/float value not equalzint() does not return 0zfloat() does not return 0.0gffffff?皙?ggffffffzint() does not round properlyzfloat() does not work properly)r#   intr7   r)   s    r   test_numeric_typeszTypesTests.test_numeric_types_   s    8qCx2:II125A:tyy!:;7c>499%BCs8q$CH$Tb)ECI)Etii788s?uRyD0U1X_dii89r   c           	           fd}t        dd      D ]/  } |t        dt        |      z         dj                  |             1  j	                  dj                  d      d        j	                  d	dz  d        j	                  d
j                  d      d        j	                  d	d
z  d        j	                  dj                  d      d        j	                  d	dz  d        j	                  dj                  d      d        j	                  d	dz  d        j	                  ddz  d        j	                  ddz  d       y )Nc                 r    j                  | j                  d      |       j                  d| z  |       y )Ne%e)assertEqual
__format__)r   resultr%   s     r   testz-TypesTests.test_float_to_string.<locals>.testk   s0    Q\\#.7TAXv.r   id   z1.5ez1.500000e{0:+03d}g;%_nTrE   z1.500000e+100rF   gEw;S%Tz1.500000e+101gj+c4+z1.500000e-100gUO +z1.500000e-101%gr-   1z%#gz1.00000)ranger7   strformatrG   rH   )r%   rJ   is   `  r   test_float_to_stringzTypesTests.test_float_to_stringj   s*   	/ sC 	FAvc!f}%':'A'A!'DE	F 	++C0/B9++C0/B9,,S1?C/:,,S1?C/:S)i0r   c           
         d}d}||ur| j                  d       ddk7  r| j                  d       ddk7  r| j                  d       ddk7  r| j                  d       ddk7  r| j                  d       ddk  s| j                  d       d	dk  s| j                  d       d
\  }}}||z  |z  ||z  |z  cxk(  rdk(  sn | j                  d       t        j                   dz
  }dD ]\  }||z  }||z  }	|	|k7  r| j                  |d|d|	d|       t        |	      t        us@| j                  dt        |	      z         ^ dD ]A  }||z  dz
  }||z  }	t        |	      t        us"| j                  d|	dt        |	             C t        j                  }dD ]A  }||z  dz   }||z  }	t        |	      t        us"| j                  d|	dt        |	             C t        j                  }
| j                  |
dz   t        d       | j                  |
 dz
  t        d       | j                  |
 dz
  t        d       ddz   | j                  d       ddz	   | j                  d       y # t        $ r Y "w xY w# t        $ r Y y w xY w)N   z256 is not shared$   zint opi   i   i)   id     i+ zint mul commutativityr   )r      rY             z * z == z != z%expected type(prod) to be int, not %rzexpected type(z) to be int, not z*(sys.maxsize + 1) should have returned intz+(-sys.maxsize - 1) should have returned intrZ   z+(-sys.maxsize - 2) should have returned intr:   zint negative shift <<zint negative shift >>)r#   r$   maxsizetyperA   assertIsInstancer6   )r%   r/   r2   xsizeysizezsizemdivisorjprodr   s              r   test_normal_integerszTypesTests.test_normal_integers   s   A:tyy!45b=$))H-dii1TYYx0C8!4Bw		(+Sy$))H-)ueeE!U5[%6@&@II-.[[L1) 	/GWAQ;Dqy		7AtQGHDz$		A#':. /	/ * 	7GWq AQ;DDz$		$($t*6 7		7 KK) 	7GWq AQ;DDz$		$($t*6 7		7 KKa!eSJ	Lqb1fcK	Mqb1fcK	M "Wii/0"Wii/0 4 4s$   ?I, I; ,	I87I8;	JJc                    ddk7  r| j                  d       ddk7  r| j                  d       ddk7  r| j                  d       ddk7  r| j                  d       ddk  s| j                  d       ddk  s| j                  d       y y )Ng      B@zfloat opg      (g      (@g      Bg      8@g      8r(   r)   s    r   test_floatszTypesTests.test_floats   st    $		* 5U"DIIj$9T!499Z#8%tyy'<d{DIIj1u}dii
3}r   c                    t        d      dk7  r| j                  d       t        d      dk7  r| j                  d       t        d      dk7  r| j                  d	       d
d
k7  r| j                  d       ddk7  r| j                  d       ddk7  r| j                  d       t        d      dk7  st        d      dk7  r| j                  d       ddv rddv r	ddv rddvrn| j                  d       d}d|z  |dz   k7  r| j                  d       d}| j	                  |d d  |       | j	                  |d d d   d       | j	                  |dd d   d       | j	                  |d d d   d       | j	                  |d d d   d        | j	                  |d!d d   d"       | j	                  |d#d$ |       | j	                  |d$d#d   |d d d          | j	                  |d#d$d   d       y )%Nr.   r   zlen('')r/   r   zlen('a')abcdef   zlen('abcdef')xyzabcdezstring concatenation	xyzxyzxyzzstring repetition *3zstring repetition 0*r0   czmin/max stringr2   dzin/not in stringgxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz%s!!znasty string formatting bug
0123456789rZ   0246813579r>   
987654321097531   31rK   )lenr#   minmaxrG   )r%   r   r/   s      r   test_stringszTypesTests.test_strings   s   r7a<;/s8q=$))L1x=Atyy):;j($))4J*Kk!499-C#D?DII&<=u:E
c 1499=M3N%<C5LSE\c>NPTii*+7aeTYY'DE 2"3Q3)14a4'*4R4.4R4'*15b54(4q)3tB;4R414A:0r   c                 x    | j                  t        t        dd       | j                  t        t        dddd       y )Nr   rZ   r{   rY   )r5   	TypeErrorr`   r)   s    r   test_type_functionzTypesTests.test_type_function   s.    )T1a0)T1aA6r   c                 &     fd} |ddd        |ddd        |ddd        |ddd	        |d
dd        |ddd        |d
dd        |ddd        |d
dd        |ddd        |d
dd        |ddd        |d
dd        |ddd        |ddd        |ddd        |ddd        |ddd        |ddd        |ddd        |ddd        |ddd        |ddd        |t        d d!      dd         |t        d d!      dd"        |t        d d!       dd#        |t        d d!       dd$        |dd%d        |dd%d        |d&d%d'        |d(d%d)        |dd%d*        |dd%d+        |dd,d*        |dd,d+        |dd-d.        |dd-d+        |dd/d0        |dd/d+        |dd1d2        |dd1d3        |dd1d4        |dd1d5        |dd6d4        |dd6d5        |dd7d8        |dd7d5        |dd9d:        |dd9d5        |d;d<d=        |d;d>d=        |dd>d?        |d
d>d@        |d
dAdB        |ddCdD        |dEdFdG        |dEdHdI        |dJdHdK        |d;dLdM        |d;dNdM        |ddNdO        |d
dNdP        |d
dQdR        |ddSdT        |dEdUdV        |dEdWdX        |dJdWdY        |d;dZd[        |d;d\d[        |dd\d]        |d
d\d^        |d
d_d`        |ddadb        |dEdcdd        |dEdedf        |dJdedg        |dhdedi        |djdedk        |d;dldm        |d;dndm        |ddndo        |d
dndp        |d
dqdr        |ddsdt        |dEdudv        |dEdwdx        |dJdwdy        |dhdwdz        |djdwd{        |d|d}d~        |dd}d        |dd}d        |dd}d        |dhd}d        |djd}d        |dd}d        |dd}d        |ddd        |ddEz  dd        |ddEz  dEz   dd        j                  t        dj                  d        j                  t        dj                  d        j                  t        dj                  d         j                  t        dj                  d;        j                  t        dj                  d        j                  t        dj                  d        j                  t        dj                  d       t        t        d      t        d      dz         D cg c]  }t        |       c}t        t        d      t        d      dz         D cg c]  }t        |       c}z   D ]j  }|dvs j                  t        d;j                  |        j                  t        dj                  |        j                  t        d
j                  |       l dD ]B  }dD ];  } j                  |j                  |      t        |      j                  |             = D  |dhdd        |dhdd        |dhdd        |dhdd        |dhdd        |dhdd        |dhdd        |dhdd        |dhdd       y c c}w c c}w )Nc                     j                  t        |       t               j                  t        |      t               j	                  | j                  |      |       y r   )assertIsr`   rA   rO   rG   rH   )rQ   format_specrI   r%   s      r   rJ   z+TypesTests.test_int__format__.<locals>.test   sA    MM$q'3'MM${+S1Q\\+6?r   [rr   	123456789r   rq   -rM   r>   -1z-3z  1z -1z+3z +1z 3  1r{   r   3X  4d2i.z-4d28xz     4d2z    -4d2ber\   BEz-bez-BEoA   101iz-1012322z-2322z-oz oz 2322z+oz+2322r2   11z-1110011010010z-10011010010z-bz bz 10011010010z+bz+10011010010r   z#b0b0z-#b0b1z-0b1z-#5bz -0b1z+#5bz +0b1rK   z+#bz
+0b1100100z#012b0b0001100100r}   z-0b001100100z#o0o0z-#o0o1z-0o1z-#5oz -0o1z+#5oz +0o1z+#oz+0o144z#012o0o0000000144z-0o000000144z#x0x0z-#x0x1z-0x1z-#5xz -0x1z+#5xz +0x1z+#xz+0x64z#012x0x0000000064z-0x000000064@ 0x000001e240iz-0x00001e240z#X0X0z-#X0X1z-0X1z-#5Xz -0X1z+#5Xz +0X1z+#Xz+0X64z#012X0X0000000064z-0X0000000640X000001E240z-0X00001E240{   ,123iz-123z1,234z-1,234z123,456z-123,456 z	1,234,567iy)z
-1,234,567z010,z
00,001,234
   e10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100z1.3z+cz,nz,cz#cr/   zAZzbcdoxXeEfFgGn%zeEfFgG%)r   r   r>   rK   r}   Ii.i0<20123456000000000000001<2012345611111111111111*<20z123456**************0>20000000000000001234561>2011111111111111123456*>20z**************1234560=201=20*=20)
rA   r5   r6   rH   r   rN   ordchrrG   r7   )r%   rJ   r   r   values   `    r   test_int__format__zTypesTests.test_int__format__   s   	@ 	Y[)Y[)QU 	QSRdQeRuQeRuQeRuQTRd 	QSQST3UC T4$UD*%T3UC RdRdSr]C&Sr]C&c$m^S%(c$m^S%( 	QSRdReS#vT3UC!T4 UD'"T4!UD'"T4!UD'" 	QTReT3&UC(T4'UD.)T4(UD.)T4(UD.) 	QeQuQuRR!Q S%&S'>*T7N+QeQuQuRR!Q S%"S'>*T7N+QeQuQuRR!Q S%!S'>*T7N+VWn-Wg~.QeQuQuRR!Q S%!S'>*T7N+VWn-Wg~.S#uT3T3 UC"VS)$Wc:&Wc;'XsL) 	T6<( 	RWc?+RWS[#56
 	*ammU;*ammT:)Q]]D9)Q]]A6*ammT:*ammT:*ammT: .33s8SXaZ-HISVI-23s8SXaZ-HISVIJ 	MK"22!!*amm[I!!*amm[I!!*r.>.>L	M % 	GKG G  !1!1+!>!&u!8!8!EGG	G 	VV34VV34VV34VV34VV34VV34VV34VV34VV34/ JIs   ,Z	#Z
LC_NUMERICz
en_US.UTF8c                     t        dd      D ]n  }dd|z  z  }| j                  t        j                  d|d      t	        |d             | j                  t        j                  d	|d      t	        |d
             p y )Nir   g  eAg      $@rL   Tgroupingnz%.10gz.10n)rN   rG   localeformat_stringrP   )r%   rQ   r   s      r   test_float__format__localez%TypesTests.test_float__format__locale  sx     sB 	aA	*AV11$DI6RSUX>ZV11'1tLfUVX^N_`	ar   c           
         d}t        dd      D ]9  }| j                  t        j                  d|d      t	        |d             |dz  }; d	}d
}d}dD ]  }| j                  t        t	        d|            t        t	        ||                   | j                  t        t	        d|            t        t	        ||                   | j                  t        t	        d|            t        t	        ||                    y )Nl   
~l!]c r      z%dTr   r   r   z>20nz<20nz^20n)r   i90  r   r   iNa r   r   l   4? )rN   rG   r   r   rP   r~   )r%   r   rQ   rfmtlfmtcfmts         r   test_int__format__localez#TypesTests.test_int__format__locale  s     +q" 	AV11$DI6RSUX>Z RA		 ] 	IAS413va3GHS413va3GHS413va3GH	Ir   c                 	     fd} |ddd        |ddd        |ddd        |dd	d        |d
dd        |ddd        |d
dd        |ddd        |ddd        |ddd        |ddd        |ddd        |dd	d        |ddd        |ddd        |ddd        |ddd        |ddd        |ddd         |ddd       d!}d"D ]X  }|j                  |      } j                  t        |      d#        j                  |d$   d%        j                  |d d& d'       Z d}d"D ]X  }|j                  |      } j                  t        |      d(        j                  |d$   d%        j                  |d d& d'       Z  |dd)d*        |dd)d+        |dd,d-        |dd,d.        |d/d)d0        |d/d,d1        |d2dd3        |d2d4d3        |d5dd6        |d5d4d6        |d7d8d9        |d7d:d9        |d7d;d<        |d=d:d>        |d=d;d>        |d=d?d@        |dAd?dB        |dCdDdE        |dFdGdH        |d7dIdJ        |d7dKdJ        |d7dLdM        |d=dKdN        |d=dLdN        |d=dOdP        |dQdRdS        |dTdUdV        |dTdWdV        |dCdWdX        |dCdYdZ        |dd[d\        j	                  t
        d]j                   d         j	                  t
        d]j                   d^       d_D ]  } j	                  t        t        d|        j	                  t        t        d|        j	                  t        t        d|        j	                  t        t        d`|        j	                  t        t        da|        j	                  t        t        db|        j	                  t        t        dc|         |dddde        |ddfdg        |ddhd        |ddidj        |dkd	dl        |dkdmdn        |ddodp        |ddqdr        |ddsd*        |ddtd*        |ddud        |ddvd        |ddwdx        |ddydx        |ddzd{        |dd|d{        |dd}d~        |ddd~        |ddd        |ddd        |ddd        |ddd        |ddd        |ddd        |ddd        |ddd        |ddd       y )Nc                     j                  | j                  |      |       j                  t        | |      |       y r   )rG   rH   rP   )r   r   rI   r%   s      r   rJ   z-TypesTests.test_float__format__.<locals>.test  s3    Q\\+6?VA{3V<r   r,   r   z0.000000r.   z0.0g{Gz?z0.01ggGz?rM   z1.23gGzz-1.231gr-   z gr   r?   r   z+gz+1gϠ#l{wiz1.1234e+200Gz1.1234E+200z1.000000z	-1.000000z fz	 1.000000z+fz	+1.000000g3R<=ɥR)r   Fb   i.rV   )112340000000112339999999   rE   z1.000000e+00z-1.000000e+00Ez1.000000E+00z-1.000000E+00gM0k\Dz1.123400e+20z1.123400E+20gZbtiz+1e+200+g0l4viz	+1.1e+200g     H@010fz1234.000000011f012fz01234.000000g     Hz-1234.000000013fz-01234.000000g_~Hz-01234.123412g7$z011.2fz-0123456.12g333333?z010,.2z0,000,001.2z011,fz1,234.000000z012,fz013,fz01,234.000000z-1,234.000000z014,fz-01,234.000000g    z015,fz-012,345.000000g     $z016,fz-0,123,456.000000z017,fz-0,123,456.123412z013,.2fz-0,123,456.12%z-100.000000%g      @r   sbcdoxXg}Ô%ITg}Ô%Ig0.++g0.+z.0ez1e+00z#.0ez1.e+00z.0fz#.0fz1.r@   z1.1z#gz1.10000z.0%z100%z#.0%z100.%0ez#0e0fz#0fz.1ez1.0e+00z#.1ez.1fz1.0z#.1fz.1%z100.0%z#.1%g@r   z12345.60000000000000r   z12345.61111111111111r   z12345.6*************r   z000000000000012345.6r   z111111111111112345.6r   z*************12345.6r   r   r   )rH   rG   r~   assertInr5   r   r6   rP   )r%   rJ   r   fmtrI   r   s   `     r   test_float__format__zTypesTests.test_float__format__  sp   	= 	S#z" 	S"eT2vT3 	T3UC!T4 UD'"c4T4c4T4Zm,Zm, 	S#z"T3$c4%T4%c4%T4%  	IC \\#&FS["-VBZ-MM&"+'GH	I  	IC\\#&FS[#.VBZ-MM&"+'GH		I 	c3'T3(c3'T3(Y^,Y^, 	UD)$UC#WdK(Wc;' 	UFM*UFM*UFN+VV^,VV^,VV_-^V_5x7 	S(M* 	UG^,UG^,UG_-VWo.VWo.VW./Wg01Xw 34Xw 34w(;<y/: 	T3' 	)S^^T:)S^^Q7 % 	HKj&#{Cj&#{Cj&$Dj&%Ej&&+Fj&&+Fj&';G	H 	S%!S&(#S%S&$S#uS$	"S% S&'" 	S$(S%(S$%S%$S%)$S&)$S%% S&% S%(#S&(# 	Wf45Wf45Wf45Wf45Wf45Wf45Wf45Wf45Wf45r   c                 (   | j                  t        t        dddz  dz          | j                  t        t        ddddz  z   dz          | j                  t        t        ddddz  z   dz          dD ]!  }| j                  t        t        dd|z          # y )	Nr   rM   i'  rr   r   a  1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111.xXobnsr   )r5   r6   rP   )r%   codes     r   test_format_spec_errorsz"TypesTests.test_format_spec_errors;  s     	*faUSA 	*fas5y31FG 	*fa#e)1Kc1QR  	ADj&!S4Z@	Ar   c                     | j                  t        j                  d       | j                  t        j                  d       y Nr   )assertGreaterobject__basicsize__tuple__itemsize__r)   s    r   test_internal_sizeszTypesTests.test_internal_sizesN  s.    6//35--q1r   c                 t   | j                  t        j                  t        j                         | j                  t        j
                  t        j                         | j                  t        j                  t        j                         | j                  t        j                  t        j                         y r   )ra   r   __init__typesWrapperDescriptorType__str____lt__rA   r)   s    r   test_slot_wrapper_typesz"TypesTests.test_slot_wrapper_typesR  sj    foou/J/JKfnne.I.IJfmmU-H-HIcjj%*E*EFr   z6Signature information for builtins requires docstringsc                     t        j                  t        j                  j                        }| j                  t        |j                        ddg       | j                  |j                  d   j                  d        y )Ninstanceowner)
inspect	signaturer   r   __get__rG   list
parametersr   default)r%   sigs     r   test_dunder_get_signaturez$TypesTests.test_dunder_get_signatureX  sY      7 78cnn-
G/DEcnnW-55t<r   c                    | j                  t               j                  t        j                         | j                  t               j
                  t        j                         | j                  t               j                  t        j                         | j                  dj                  t        j                         y )N*   )ra   r   r   r   MethodWrapperTyper   r   r)   s    r   test_method_wrapper_typesz$TypesTests.test_method_wrapper_types`  st    fh//1H1HIfh..0G0GHfhoou/F/FGrkk5+B+BCr   c                 ~   | j                  t        j                  t        j                         | j                  t
        j                  t        j                         | j                  dj                  t        j                         | j                  g j                  t        j                         | j                  t        j                  d   t        j                         | j                  t        j                  t        j                         | j                  t        j                  t        j                         y )Nr.   
from_bytes)ra   rO   joinr   MethodDescriptorTyper  appendBuiltinMethodTyperA   __dict__ClassMethodDescriptorTyper  __new__r)   s    r   test_method_descriptor_typesz'TypesTests.test_method_descriptor_typesf  s    chh(B(BCdkk5+E+EFbggu'>'>?bii)@)@Acll<8%:Y:YZcnne.E.EFckk5+B+BCr   c                 L    | j                  t        t        j                         y r   )ra   Ellipsisr   EllipsisTyper)   s    r   test_ellipsis_typezTypesTests.test_ellipsis_typep  s    h(:(:;r   c                 L    | j                  t        t        j                         y r   )ra   NotImplementedr   NotImplementedTyper)   s    r   test_notimplemented_typez#TypesTests.test_notimplemented_types  s    ne.F.FGr   c                 D    | j                  d t        j                         y r   )ra   r   NoneTyper)   s    r   test_none_typezTypesTests.test_none_typev  s    dENN3r   c                     	 t         # t         $ r}|}Y d }~nd }~ww xY w| j                  |j                  t        j                         | j                  |j                  j
                  t        j                         y r   )OSErrorra   __traceback__r   TracebackTypetb_frame	FrameType)r%   rE   excs      r   test_traceback_and_frame_typesz)TypesTests.test_traceback_and_frame_typesy  s]    	M 	C	c//1D1DEc//88%//Js    	N) r   r   r   r&   r*   r3   r8   r<   rB   rR   ri   rk   r   r   r   r   r   r   r   r   r   r  unittestskipIfr   r  r  r  r  r"  r%  r-  r   r   r   r   r      s    :">06
@2	:1471r4127g5R \<0a 1a \<0I 1I$R6hA&2G X__)MO=O=DD<H4Kr   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ed        Zy)
UnionTestsc                 T   | j                  t        t        z  t        j                  t        t        f          | j                  t        t        z  t        j                  t        t        f          | j                  t        t        z  t        j                  t        t        f          | j                  t        d z  t        j                  t        d f          | j                  d t        z  t        j                  t        d f          | j                  t        t        d       z  t        d z         | j                  t        d       t        z  d t        z         | j                  t        t        z  t        z  t        j                  t        t        t        f          | j                  t        t        t        z  z  t        j                  t        t        t        f          | j                  t        t        t        z  z  t        j                  t        t        t        f          | j                  t        j                  t        j                  z  t        j                  t        j                  t        j                  f          | j                  t        j                  t           t        j                  t           z  t        j                  t        j                  t           t        j                  t           f          | j                  t        j                  t           d z  t        j                  t        j                  t           d f          | j                  d t        j                  t           z  t        j                  d t        j                  t           f          | j                  t        t        z  t        z  t        z  t        z  t        t        z  t        t        z  z         | j                  t        j                  t        t        t        j                  t           f   t        t        z  t        j                  t           z         | j                  t        t        z  t               | j                  t        t        z  t        z  t        z  t        z  t        z  t        z  t         z  t"        z  t        j                  t        t        t        t        t        t        t        t         t"        f	          | j%                  t&              5  t        dz   d d d        | j%                  t&              5  dt        z   d d d        | j%                  t&              5  t)               t        z   d d d        t        t        z  }| j                  |t        t        z         | j                  |t        t        z         | j                  |i        | j%                  t&              5  ||k   d d d        | j%                  t&              5  ||k   d d d        t        j                  t        t        f   }| j%                  t&              5  ||k   d d d        t        t        z  }| j%                  t&              5  ||k   d d d        t        j                  t        t        f   }t        t        g|_        | j                  ||       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   txY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nr{   )rG   rA   rO   r   UnionassertNotEqualr  r`   ListTupler7   complexr   BaseExceptionboolbytesmapsetr5   r   r	   __args__)r%   r   ys      r   test_or_types_operatorz!UnionTests.test_or_types_operator  s   sFLLc$:;C$JS#X(>?sFLLc$:;tV\\#t)%<=V\\#t)%<=tDz)3:6dc)4#:6sT)6<<S$+GHd
+V\\#sD.-IJd
+V\\#sD.-IJv||3V\\&++v||B[5\]S)FLL,==v||FKKX[L\^d^j^jkn^oLo?pqS)D0&,,v{{3?OQU?U2VWC 00&,,tV[[QTEU?U2VWus*W4s:S3Y5SZ?<[\c3C0@&@A39v{{[^O_C_`cCi%  	
     LL
	* y) 	!G	y) 	G	y) 	IO	#IC#I&C#I&Ar"y) 	E	y) 	F	LLc"y) 	E	$Jy) 	E	 LLc"3Z
A/	 		 		 		 		 		 		 	sT   
[
[([,0[9\\\[[),[69\\\\'c                    | j                  t        t        t        z        t        t        t        z               | j                  t        t        t        z        t        t        j
                  t        t        f                y r   )rG   hashrA   rO   r   r3  r)   s    r   	test_hashzUnionTests.test_hash  sL    cCi$sSy/:cCi$v||CH/E*FGr   c                      G d dt               } G d d|      } G d d|      }| j                  ||z  j                  ||f       ||z  }| j                  t              5  t        |       d d d        t        |z  }| j                  t              5  t        |       d d d        |t        z  }| j                  t              5  t        |       d d d        y # 1 sw Y   nxY w# 1 sw Y   HxY w# 1 sw Y   y xY w)Nc                       e Zd ZdZy);UnionTests.test_union_of_unhashable.<locals>.UnhashableMetaNr   r   r   __hash__r   r   r   UnhashableMetarE    s    Hr   rH  c                       e Zd Zy).UnionTests.test_union_of_unhashable.<locals>.ANr
   r   r   r   r   rJ    r   r   r   	metaclassc                       e Zd Zy).UnionTests.test_union_of_unhashable.<locals>.BNr
   r   r   r   BrN    r   r   rO  )r`   rG   r=  r5   r   rA  rA   )r%   rH  r   rO  union1union2union3s          r   test_union_of_unhashablez#UnionTests.test_union_of_unhashable  s    	T 	 	/.....!a%))Aq62Qy) 	L	 qy) 	L	 Sy) 	L	 		 		 		 	s$   #CC(C4C%(C14C=c           	         t         t        z  t        j                  t         t        f   fD ]  }| j	                  |      5  | j                  d|       | j                  d|       | j                  d|       | j                  d |       | j                  t        t         |             | j                  t        t        |             | j                  t        t        |             | j                  t        t        d       |             d d d         t         d z  t        j                  t         d f   fD ]S  }| j	                  |      5  | j                  d |       | j                  t        t        d       |             d d d        U t         t        j                  j                  z  t        j                  t         t        j                  j                  f   fD ]  }| j	                  |      5  | j                  i |       | j                  d|       | j                  t        t        |             | j                  t        t         |             d d d         y # 1 sw Y   @xY w# 1 sw Y   BxY w# 1 sw Y   xY w)Nr   r   Tr/   r   )rA   rO   r   r3  subTestra   assertNotIsInstance
assertTrue
issubclassr9  assertFalser`   collectionsr0   Mappingdictr  )r%   r   s     r   $test_instancecheck_and_subclasscheckz/UnionTests.test_instancecheck_and_subclasscheck  s	   )V\\#s(34 		<A" <%%a+%%dA.%%c1-((q1
3 23
4 34
3 23  DJ!:;< <		< *fll3956 	;A" ;%%dA.
4:q 9:; ;	; +//)))LLkoo5556
 	6A " 6%%b!,((Q/
4 34  D!!45	6 6		6< <; ;6 6s&    C
I!7I.3A#I;!I+	.I8	;J	c                 
   t        j                  d      }t        |z  t         j                  t        |f   f}|D ]N  }| j	                  |      5  | j                  d|       | j                  t        t        |             d d d        P |t        z  t         j                  |t        f   f}|D ]u  }| j	                  |      5  | j                  t              5  t        t        |       d d d        | j                  t              5  t        d|       d d d        d d d        w g ||D ]}  }| j	                  |      5  | j                  t              5  t        t        |       d d d        | j                  t              5  t        t               |       d d d        d d d         y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   /xY w# 1 sw Y   xxY w# 1 sw Y   RxY w# 1 sw Y   xY w)Nr   rU  r   )r   TypeVarrA   r3  rV  ra   rX  rY  r5   r   
isinstancer   )r%   r   will_resolver   wont_resolves        r   *test_instancecheck_and_subclasscheck_orderz5UnionTests.test_instancecheck_and_subclasscheck_order  s   NN3 !GLLa 
  	4A" 4%%a+
3 234 4	4 GLLC 
  	%A" %&&y1 'sA&'&&y1 %q!$%% %	% 0</,/ 	,A" ,&&y1 *vq)*&&y1 ,vx+,, ,	,4 4' '% %% %* *, ,, ,s   2F/GF<+GGGG9G!*G9G-G9/F9	<GGGGG	!G*&G9-G62G99H	c                      G d dt               }t         |ddi       z  }| j                  t        d|             | j	                  t
        t        g |       y )Nc                       e Zd Zd Zy)2UnionTests.test_bad_instancecheck.<locals>.BadMetac                     ddz   y Nr   r   r   )clsinsts     r   __instancecheck__zDUnionTests.test_bad_instancecheck.<locals>.BadMeta.__instancecheck__  	    !r   N)r   r   r   rl  r   r   r   BadMetarg        r   rn  r   r   r   )r`   rA   rX  ra  r5   r;   r%   rn  r   s      r   test_bad_instancecheckz!UnionTests.test_bad_instancecheck  sK    	d 	 '#r2&&
1a()+ZQ?r   c                      G d dt               }t         |ddi       z  }| j                  t        t        |             | j	                  t
        t        t        |       y )Nc                       e Zd Zd Zy)2UnionTests.test_bad_subclasscheck.<locals>.BadMetac                     ddz   y ri  r   )rj  subs     r   __subclasscheck__zDUnionTests.test_bad_subclasscheck.<locals>.BadMeta.__subclasscheck__  rm  r   N)r   r   r   rw  r   r   r   rn  rt    ro  r   rn  r   r   )r`   rA   rX  rY  r5   r;   r  rp  s      r   test_bad_subclasscheckz!UnionTests.test_bad_subclasscheck  sK    	d 	 '#r2&&
3*++ZqAr   c                 ~   t        j                  d      }| j                  |t        z  t         j                  |t        f          | j                  t        |z  t         j                  t        |f          | j                  t        |z  t           t               | j                  |t        z  t           t               y Nr   )r   r`  rG   rO   r3  r   rA   )r%   TVs     r   "test_or_type_operator_with_TypeVarz-UnionTests.test_or_type_operator_with_TypeVar%  s~    ^^C c6<<C#89r6<<R#89sRxos+rCxos+r   c           	           fd} |t         t        z  t         t        f        |t         t        z  t        z  t         t        t        f        |t         t        t        z  z  t         t        t        f        |t         t        z  t         z  t         t        f        |t         t        t         z  z  t         t        f        |t         t        z  t        t         z  z  t         t        f        |t        j                  t         t        f   t        z  t         t        t        f        |t         t        j                  t        t        f   z  t         t        t        f        |t         t        z  t        t         z  z  t         t        t        f        |t         t        z  t        j                  t        t         f   z  t         t        t        f        |t        j                  t         t        f   t        t         z  z  t         t        t        f        |t        t         z  t         t        z  z  t        t         t        f        |t        t         z  t        j                  t         t        f   z  t        t         t        f        |t        j                  t        t         f   t         t        z  z  t        t         t        f        |t         t        d       z  t         t        d       f        |t        d       t         z  t        d       t         f       t         t        t            t        j                  t            t        j                  t         t         f   t        j                  t         gt         f   t        j                  t        j                  d      f}|D ]J  } j                  |      5   ||d z  |t        d       f        |d |z  t        d       |f       d d d        L y # 1 sw Y   WxY w)Nc                 R    t                j                  | j                  |       y r   )r   rG   r=  )argexpectedr%   s     r   checkz)UnionTests.test_union_args.<locals>.check-  s    !S\\84r   r   )rA   rO   r  r   r3  r`   r5  r6  CallableHashabler`  rV  )r%   r  argsr   s   `   r   test_union_argszUnionTests.test_union_args,  s   	5 	cCi#s$sSyD 3T"23cS4Z 3T"23sSyC#s,cS3Y#s,sSyS3Y'#s4fll38$t+c3-=>cFLLd++c3-=>sSyTCZ(3T*:;sSyFLLs33c35EFfll38$s
3c35EFsSyS4Z(3T*:;sSyFLLd33c35EFfll38$d
3c35EFcDJd4j 12d4j3dS 12T#YC 0S#X&s
(C!46  	1Aa 1a$hDJ0dQhdQ01 1	11 1s   4/O..O7	c                    t        j                  d      }t        j                  d      }| j                  t        t        |   z  t
           t        t        t
           z         | j                  t        t
        t        |   z     j                  |f       | j                  t        t
        t        |   z     t           t        t
        t        t           z            | j                  t        |   t        |   z  j                  ||f       | j                  t        |   t        |   z  t
        |f   t        t
           t        |   z         | j                  t        |   t        |   z  t
        t
        f   t        t
                  y )Nr   S)r   r`  rG   r7   r  rA   __parameters__rO   )r%   r   r  s      r   test_union_parameter_chainingz(UnionTests.test_union_parameter_chainingJ  s   NN3NN3%$q'/3/c1BCcDGm,;;aTBcDGm,S14d3i3HI$q'DG+;;aVD$q'DG+S!V4d3i$q'6IJ$q'DG+S#X6S	Br   c                 2    d fd	}t        j                  d      }t        j                  d      }t        j                  dt              }t        |z  t
        z  } ||t           t        t        z  t
        z  d        ||t        t              t        t        t           z  t
        z  d        ||t         j                     t        t         j                  z  t
        z          ||t         j                  t              t        t         j                  t           z  t
        z          ||t         j                     t        t         j                  z  t
        z          ||t        j                  j                     t        t        j                  j                  z  t
        z  d        ||t         j                  t        gt        f      t        t         j                  t        gt        f   z  t
        z          ||t        j                  j                  t        gt        f      t        t        j                  j                  t        gt        f   z  t
        z  d        ||t         j                  t        t        f      t        t         j                  t        t        f   z  t
        z          ||t         j                  d      t        t         j                  d   z  t
        z          ||t        t        z     t        t        z  t        z  t
        z  d        ||t         j                  t        t        f      t         j                  t        t        t        t
        f           ||t        t        z     t        t        z  t
        z  d        ||t         j                  t        t        f      t         j                  t        t        t
        f           |||   t        |z  t
        z          |||   t        |z  t
        z         y )	Nc                 x    j                  | |       |r%j                  t        |       t        |             y y r   )rG   r   r`   )actualr  typedr%   s      r   eqz8UnionTests.test_union_parameter_substitution.<locals>.eqV  s1    VX.d6lDN; r   r   r  NTF)r  none)T)r   r`  NewTyperO   rA   r:  r  r5  r  r[  r0   r  r6  Literalr3  )r%   r  r   r  r  r   s   `     r   !test_union_parameter_substitutionz,UnionTests.test_union_parameter_substitutionU  s   	<
 NN3NN3^^D#&!GeO
1S639u$E2
1T#Y<tCy50>
1V[[>3,u45
1V[[fkk#&6 6 >?
1V__sV__4u<=
1[__%%&)))E1	@
1V__cUCZ()#,,u4	6
1[__%%seSj12))3%*55=U	L
1V\\#s(#$cFLLc,B&BU&JK
1V^^F#$cFNN6,B&BU&JK
1S4Z=#)d*U2%@
1V\\#t)$%v||CdE4I'JK
1S3Y<sU*%8
1V\\#s(#$fll3U?&CD
1R5#(U"#
1Q4q5!r   c                    t         t           t        z  }t        t        j
                  dz         D ]  }t	        j                  ||      }t	        j                  |      }| j                  ||       | j                  |j                  |j                         | j                  |j                  |j                          y )Nr   )r  r   rA   rN   pickleHIGHEST_PROTOCOLdumpsloadsrG   r=  r  )r%   origprotosloadeds        r   test_union_picklezUnionTests.test_union_picklet  s    Aw}622Q67 	IET5)A\\!_FVT*V__dmm<V22D4G4GH	Ir   c                 F   t         t           t        z  }t        j                  |      t        j                  |      fD ]`  }| j                  ||       | j                  |j                  |j                         | j                  |j                  |j                         b y r   )r  r   rA   copydeepcopyrG   r=  r  )r%   r  copieds      r   test_union_copyzUnionTests.test_union_copy}  sz    Aw}yyd(;< 	IFVT*V__dmm<V22D4G4GH	Ir   c                     t        j                  d      }t        |z  }| j                  t              5  |t        t
        f    d d d        y # 1 sw Y   y xY wrz  )r   r`  rA   r5   r   rO   )r%   r   r   s      r   (test_union_parameter_substitution_errorsz3UnionTests.test_union_parameter_substitution_errors  sG    NN3!Gy) 	c3hK	 	 	s   AAc                    t        j                  d      }|dz  }d|z  }d|t           dd fd}d|t           dd fd}| j                  t        j                  t        j
                  |      d         t        t        f       | j                  t        j                  t        j
                  |      d         t        t        f       y )Nr   r   r   returnc                      y r   r   rU  s    r   forward_afterzDUnionTests.test_or_type_operator_with_forward.<locals>.forward_after  s    r   c                      y r   r   rU  s    r   forward_beforezEUnionTests.test_or_type_operator_with_forward.<locals>.forward_before  s    3r   )r   r`  rA   rG   get_argsget_type_hintsr   )r%   r   ForwardAfterForwardBeforer  r  s         r   "test_or_type_operator_with_forwardz-UnionTests.test_or_type_operator_with_forward  s    NN39}!A<\#.<4<>mC0>T>)>)>})Mc)RSw	))>)>~)Ns)STw	)r   c                      G d dt         j                        }| j                  |t        z  t         j                  |t        f          y )Nc                       e Zd ZdefdZy)=UnionTests.test_or_type_operator_with_Protocol.<locals>.Protor  c                      y r   r   r)   s    r   methzBUnionTests.test_or_type_operator_with_Protocol.<locals>.Proto.meth  s    r   N)r   r   r   rA   r  r   r   r   Protor    s    c r   r  )r   ProtocolrG   rO   r3  )r%   r  s     r   #test_or_type_operator_with_Protocolz.UnionTests.test_or_type_operator_with_Protocol  s5    	FOO 	 	fll5#:&>?r   c                    | j                  t        t        z  t        j                  t        t        f          | j                  t        j
                  t        z  t        j                  t        j
                  t        f          y r   )rG   r  rO   r   r3  r5  r)   s    r    test_or_type_operator_with_Aliasz+UnionTests.test_or_type_operator_with_Alias  sN    V\\$)%<=s*FLLc9I,JKr   c                     t        dg d      }| j                  |t        z  t        j                  |t        f          y )Nr   )rO  r"   D)r   rG   rO   r   r3  )r%   r  s     r   %test_or_type_operator_with_NamedTuplez0UnionTests.test_or_type_operator_with_NamedTuple  s/    _-c6<<C#89r   c                      G d dt         j                        }| j                  |t        z  t         j                  |t        f          y )Nc                   ,    e Zd ZU eed<   eed<   eed<   y)@UnionTests.test_or_type_operator_with_TypedDict.<locals>.Point2Dr   r>  labelN)r   r   r   rA   __annotations__rO   r   r   r   Point2Dr    s    FFJr   r  )r   	TypedDictrG   rO   r3  )r%   r  s     r   $test_or_type_operator_with_TypedDictz/UnionTests.test_or_type_operator_with_TypedDict  s7    	f&& 	 	3Wc\(BCr   c                     t        j                  dt              }| j                  |t        z  t         j
                  |t        f          y )NUserId)r   r  rA   rG   rO   r3  )r%   r  s     r   "test_or_type_operator_with_NewTypez-UnionTests.test_or_type_operator_with_NewType  s3    #.#v||FCK'@Ar   c                     | j                  t        j                  t        z  t        j                  t        j                  t        f          y r   )rG   r   IOrO   r3  r)   s    r   test_or_type_operator_with_IOz(UnionTests.test_or_type_operator_with_IO  s+    S&,,vyy#~*FGr   c                 $   | j                  t        j                  t        z  t        j                  t        j                  t        f          | j                  t        j
                  t        z  t        j                  t        j
                  t        f          | j                  t        j                  t           t        z  t        j                  t        j                  t           t        f          | j                  t        j                  t           t        z  t        j                  t        t        d f          | j                  t        j                  t        t        f   t        z  t        j                  t        t        t        f          y r   )	rG   r   AnyrO   r3  NoReturnOptionalrA   r9  r)   s    r   &test_or_type_operator_with_SpecialFormz1UnionTests.test_or_type_operator_with_SpecialForm  s    c)6<<

C+HI3.V__c=Q0RS-3V\\&//RUBVX[B[5\]-3V\\#sD.5QRc4i036S$PS^8TUr   c                 z   t         j                  }| j                  |d   |d   z  j                  |d   |d   f       | j                  |d   |d   z  j                  |d   |d   f       | j                  |d   |d   z  j                  |d   |d   f       | j                  |d   |d   z  |d          | j                  |d   |d   z  |d          dd l} G d d|j
                        }| j                  ||j                     ||j                     z  ||j                            | j                  ||j                     ||j                     z  ||j                            | j                  ||j                     ||j                     z  j                  ||j                     ||j                     f       | j                  |d   ||j                     z  j                  |d   ||j                     f       | j                  |d   ||j                     z  j                  |d   ||j                     f       y )	Nr   rZ   r   FTr/   c                       e Zd ZdZdZy);UnionTests.test_or_type_operator_with_Literal.<locals>.Intsr   r   N)r   r   r   r   rO  r   r   r   Intsr    s    AAr   r  )r   r  rG   r=  enumIntEnumr   rO  )r%   r  r  r  s       r   "test_or_type_operator_with_Literalz-UnionTests.test_or_type_operator_with_Literal  s   ..'!*wqz1;;!!*gaj1	3 	'!*wu~5??!!*gen5	7'!*wt}4>>!!*gdm4	6 	gaj0'!*=4gclC	4<< 	 	7466?:GDFFOL7466?:GDFFOL'$&&/GDFFO;EE!$&&/7466?;	= 	'!*wtvv6@@!!*gdffo6	8'!*wtvv6@@!!*gdffo6	8r   c           	         | j                  t        t        t        z        d       | j                  t        t        t        z  t        z        d       | j                  t        t        t        t        z  z        d       | j                  t        t        d z        d       | j                  t        t        t        d       z        d       | j                  t        t        t        j                  t        t              z        d       y )Nz	int | strzint | str | listz
int | Nonezint | list[int])rG   reprrA   rO   r  r`   r   GenericAliasr)   s    r   test_or_type_reprzUnionTests.test_or_type_repr  s    cCi+6sSyD013EFcS4Z013EFcDj)<8cDJ./>cF$7$7c$BBCEVWr   c                 v   t         t           }t         t           }t        t        t        f   } G d dt
        j                        } |t         t              }| j                  ||z  |z  |z  t        j                  ||||f          | j                  ||z  |z  |z  |z  |z  |z  |z  ||z  |z  |z         | j                  ||z  |z  ||z  |z         | j                  t        ||z  |z  |z        d        G d dt              } |ddi       }| j                  t              5  t         t           t         |   z   d d d        t         t           t        z  t        j                  j                   dt        f   t        z  |t        z  f}|D ]w  }	| j#                  d	|	       5  | j                  t$              5  t'        d
|	       d d d        | j                  t$              5  t)        t        |	       d d d        d d d        y y # 1 sw Y   xY w# 1 sw Y   NxY w# 1 sw Y   ,xY w# 1 sw Y   xY w)Nc                       e Zd Zy)DUnionTests.test_or_type_operator_with_genericalias.<locals>.SubClassNr
   r   r   r   SubClassr    r   r   r  z6list[int] | list[str] | dict[float, str] | list[float]c                       e Zd Zd Zy)CUnionTests.test_or_type_operator_with_genericalias.<locals>.BadTypec                     ddz  S ri  r   )r%   others     r   __eq__zJUnionTests.test_or_type_operator_with_genericalias.<locals>.BadType.__eq__  s    1ur   N)r   r   r   r  r   r   r   BadTyper    s    r   r  btr   .z+check isinstance/issubclass is invalid for r   )r  rA   rO   r]  r7   r   r  rG   r   r3  r  r`   r5   r;   r[  r0   r  rV  r   ra  rY  )
r%   r/   r2   rq   r  rr   r  r  union_gatype_s
             r   'test_or_type_operator_with_genericaliasz2UnionTests.test_or_type_operator_with_genericalias  s   II/u))/T5!QQQ1aZ(@AQQ*Q.2Q6A	AFQAEAI.a!eai!m,Q	S	d 	 T2r"01 	!IR 	! IO[__%=%=c3h%G#%MG  	+E KE7ST +&&y1 )q%()&&y1 +sE*++ +	+	! 	!) )+ ++ +sH   (H'H/=H
H/'H#8H/HH H/#H,(H//H8	c                 B    G d dt               } |ddi       } |ddi       }| j                  t        t        f      5  t         |       z   d d d        | j                  t        t        f      5  t         |       z   d d d        y # 1 sw Y   <xY w# 1 sw Y   y xY w)Nc                        e Zd ZdZed        Zy)AUnionTests.test_or_type_operator_with_bad_module.<locals>.BadMetar`  c                     ddz   y ri  r   r)   s    r   r   zLUnionTests.test_or_type_operator_with_bad_module.<locals>.BadMeta.__module__  s	    Ar   N)r   r   r   propertyr   r   r   rn  r     s    $L r   rn  r`  r   _SpecialForm)r`   r5   r   r;   rO   )r%   rn  r`  r  s       r   %test_or_type_operator_with_bad_modulez0UnionTests.test_or_type_operator_with_bad_module  s    	d 	
 )R,~r26	+<=> 	')O		+<=> 	!,. 	! 	!	 		! 	!s   B	1B	BBc                    t        t        d      s| j                  d       t        j                          t        j
                         }t        d      D ]0  }t        j                  d      }t        t        |   z  }||_        ~~2 t        j                          d}| j                  t        j
                         |z
  |d       y )Ngettotalrefcountz!Cannot get total reference count.r   r      zCheck for union reference leak.)msg)hasattrr$   skipTestgccollectr  rN   r   r`  rA   r  blahassertLessEqual)r%   before_r   Uleeways         r   %test_or_type_operator_reference_cyclez0UnionTests.test_or_type_operator_reference_cycle  s    s./MM=>


%%'r 	As#Ad1gAAF	 	

S113f<f!B 	 	Dr   N)r   r   r   r?  rB  rS  r^  rd  rq  rx  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r   r   r   r1  r1    s    >@H(66,<@B,1<	C">II	)@L:DBHV8:X +D! D Dr   r1  c                   x    e Zd Zej                  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y)MappingProxyTestsc                     G d dt               }ddd}| j                  | j                  |      |        |dd      }| j                  | j                  |      |       t        j                  ddiddi      }| j                  | j                  |      |       | j                  t        | j                  d       | j                  t        | j                  d	       | j                  t        | j                  d
dg       y )Nc                       e Zd Zy)4MappingProxyTests.test_constructor.<locals>.userdictNr
   r   r   r   userdictr  #      r   r  r   rZ   r   r>  r   r>  r   )r/   r   r/   r  )r]  rG   mappingproxyr[  ChainMapr5   r   )r%   r  mappings      r   test_constructorz"MappingProxyTests.test_constructor"  s    	t 	 "**73W=Q!$**73W=&&Qx#q:**73W=)T%6%6;)T%6%6G)T%6%6fFr   c                     t        t        | j                  i                   t        t        t                           z
  }| j	                  |h d       y )N>   getr  keysitems__or__values__ior____len____ror____iter____getitem____contains____reversed____class_getitem__)r<  dirr  r   rG   )r%   attrss     r   test_methodszMappingProxyTests.test_methods1  sA    C))"-./#c&(m2DD !
 	r   c                    | j                  ddd      }| j                  |d   d       | j                  |d   d       | j                  t        |j                  d       | j                  |j                  d      d       | j                  |j                  d             | j                  |j                  dd      d       y )Nr   rO  r/   r2   r/   r2   xxxr  )r  rG   r5   KeyErrorr  r  assertIsNoner%   views     r   test_getzMappingProxyTests.test_getD  s      s!56cC(cC((D$4$4e<#,$((5/*%,b1r   c                     G d dt               }| j                   |d            }| j                  |d   d       | j                  |d   d       | j                  |j                  d      d       | j                  |j                  d      d        | j                  |j                  dd      d       | j	                  d|v        | j                  d|v        y )	Nc                       e Zd Zd Zy)3MappingProxyTests.test_missing.<locals>.dictmissingc                     d|z  S )Nz
missing=%sr   r%   keys     r   __missing__z?MappingProxyTests.test_missing.<locals>.dictmissing.__missing__O  s    #c))r   N)r   r   r   r*  r   r   r   dictmissingr&  N  s    *r   r+  r   rU  r   r>  z	missing=yr  )r]  r  rG   r  rX  rZ  )r%   r+  r"  s      r   test_missingzMappingProxyTests.test_missingM  s    	*$ 	*   q!12cA&cK0#*#-#r*B/t$%r   c                 &    G d dt               } |ddi      }| j                  |      }| j                  d|v        | j                  d|v        | j                  d|v        | j	                  |d   d       | j                  t        |j                  d       | j	                  t        |      d       | j	                  t        |      d	       | j	                  |j                         d
       | j	                  |j                  d      d       | j	                  |j                  d      d       | j	                  |j                         d       | j	                  |j                         d       | j	                  |j                         d       y )Nc                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
dd
Zy	)5MappingProxyTests.test_customdict.<locals>.customdictc                 :    |dk(  ryt         j                  | |      S )NmagicT)r]  r  r(  s     r   r  zBMappingProxyTests.test_customdict.<locals>.customdict.__contains__]  s    '>,,T377r   c                     t        d      S )Niterr3  r)   s    r   r  z>MappingProxyTests.test_customdict.<locals>.customdict.__iter__c  s    I&r   c                      y)N  r   r)   s    r   r  z=MappingProxyTests.test_customdict.<locals>.customdict.__len__f  s    r   c                      y)Nr  r   r)   s    r   r  z:MappingProxyTests.test_customdict.<locals>.customdict.copyi      r   c                      y)Nr  r   r)   s    r   r  z:MappingProxyTests.test_customdict.<locals>.customdict.keysl  r8  r   c                      y)Nr  r   r)   s    r   r  z;MappingProxyTests.test_customdict.<locals>.customdict.itemso  s    r   c                      y)Nr  r   r)   s    r   r  z<MappingProxyTests.test_customdict.<locals>.customdict.valuesr  s    r   c                 4    dt         j                  | |      z  S )Nz
getitem=%s)r]  r  r(  s     r   r  zAMappingProxyTests.test_customdict.<locals>.customdict.__getitem__u  s    #d&6&6tS&AAAr   Nc                 <    dt         j                  | |d|z        z  S )Nzget=%sz
default=%r)r]  r  )r%   r)  r
  s      r   r  z9MappingProxyTests.test_customdict.<locals>.customdict.getx  s    $((4lW6L"MMMr   r   )r   r   r   r  r  r  r  r  r  r  r  r  r   r   r   
customdictr/  \  s1    8' BNr   r>  r)  r   r1  r  zgetitem=valuer3  r6  r  z	get=valuezget=default=Noner  r  r  )r]  r  rX  rZ  rG   r5   r  r  r   r~   r  r  r  r  r  )r%   r>  customr"  s       r   test_customdictz!MappingProxyTests.test_customdict[  s@   	N 	N> UG,-  (&4($'eo6(D$4$4e<ti0TC(f-%+6%*<=w/f-1r   c                    ddi}ddi}t        j                  ||      }| j                  |      }| j                  d|v        | j                  d|v        | j	                  d|v        | j                  |d   d       | j                  |d   d       | j                  t        |j                  d       | j                  t        t        |            d       | j                  t        |      d       |j                         }| j                  ||       | j                  |t         j                         | j                  ||       | j                  |j                  d      d       | j                  |j                  d      d       | j!                  |j                  d             | j                  t        t        |j#                                     d       | j                  t        t        |j%                                     d       | j                  t        t        |j'                                     d       y )	Nr   r   r>  rZ   r   r  ))r   r   )r>  rZ   r   rZ   )r[  r  r  rX  rZ  rG   r5   r  r  r   sortedr~   r  assertIsNotra   r  r   r  r  r  )r%   d1d2r	  r"  r  s         r   test_chainmapzMappingProxyTests.test_chainmap  s   1X1X&&r2.  )t$t$%cA&cA&(D$4$4c:vd|,j9TA&yy{w'dK$8$89w'#*#*$((3-(vdjjl346JKvdiik23Z@vdkkm45v>r   c                     | j                  t        j                  d            }| j                  d|v        | j                  d|v        | j                  d|v        | j	                  d|v        y )Nr0   r/   r2   rq   r  )r  r]  fromkeysrX  rZ  r!  s     r   test_containszMappingProxyTests.test_contains  s]      u!56t$t$t$$'r   c                    i }| j                  |      }|j                         }|j                         }|j                         }| j	                  t        |      g        | j	                  t        |      g        | j	                  t        |      g        d|d<   | j	                  t        |      dg       | j	                  t        |      dg       | j	                  t        |      dg       y )Nr   r)  )r)  r   )r  r  r  r  rG   r  )r%   r	  r"  r  r  r  s         r   
test_viewszMappingProxyTests.test_views  s      )yy{

dR(fr*eb) deW-fy1e'7&89r   c                     t        d      D ]a  }t        j                  dd |       }| j                  t	        |      |       | j                  |      }| j                  t	        |      |       c y )Nrn   abcde)rN   r]  rI  rG   r~   r  )r%   r  datar"  s       r   test_lenzMappingProxyTests.test_len  sb    a 	2H==(!34DSY1$$T*DSY1		2r   c                    d}d}t        t        ||            }| j                  t        |            }| j	                  t        |      t        |             | j	                  t        |j                               t        |             | j	                  t        |j                               t        |             | j	                  t        |j                               t        |             y )Nr  rB  )	r   zipr  r]  rG   r<  r  r  r  )r%   r  r  r  r"  s        r   test_iteratorsz MappingProxyTests.test_iterators  s    c$'(  e-TCI.TYY[)3t95T[[]+S[9TZZ\*CJ7r   c                     dddddd}| j                  |      }|d= t        |      }| j                  t        |      t        d             | j	                  t
        t        |       y )	Nr   rZ   r   r{   rY   )r/   r2   foorq   rr   rU  dcba)r  reversedrG   r  r5   StopIterationnext)r%   rr   mprs       r   test_reversedzMappingProxyTests.test_reversed  s\    !AAA6q!eHRLa$v,/-q1r   c                    dddd}| j                  |      }|j                         }| j                  t        |      t               | j                  ||       d|d<   | j                  |d   d       | j                  |d   d       y )N   3   ]   )key1key2key3F   ra  )r  r  rG   r`   r]  )r%   originalr"  r  s       r   	test_copyzMappingProxyTests.test_copy  s    B7  *yy{dT*x(fr*fr*r   c                 L   dddd}| j                  |      }| j                  t              5  |ddgz   d d d        | j                  t              5  ddg|z   d d d        | j                  t              5  |ddgz  }d d d        ddd}| j                  ||z  ddddd	       | j                  ||z  ddddd
       | j	                  |dddd       | j                  |dddd       | j                  |ddd       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nr   r   rZ   )r/   r2   rq   )r[  rZ   )rr   rZ   r{   )rq   p)r/   r2   rq   rh  )rq   rh  r/   r2   )r  r5   r   assertDictEqualrG   )r%   r	  r"  r  s       r   
test_unionzMappingProxyTests.test_union  s7   *  )y) 	(Hh''	(y) 	(x 4'	(y) 	)Xx((D	)a TE\+KLUT\+KLQQQ78WAAA&>?U!!$45	( 	(	( 	(	) 	)s#   DD7DDDD#c                      G d dt               }| j                  ddd      }| j                  t        t        |        |ddd      }| j                  |      }| j                  t	        |      t	        |             y )Nc                       e Zd Zd Zy)1MappingProxyTests.test_hash.<locals>.HashableDictc                      y)Nl   AVJ r   r)   s    r   rG  z:MappingProxyTests.test_hash.<locals>.HashableDict.__hash__  s    !r   NrF  r   r   r   HashableDictrm    s    "r   ro  r   rZ   r  )r]  r  r5   r   rA  rG   )r%   ro  r"  r	  s       r   rB  zMappingProxyTests.test_hash  sn    	"4 	"   qq!12)T40QQ/0  )dT']3r   N)r   r   r   r   MappingProxyTyper  r
  r  r#  r,  r@  rG  rJ  rL  rP  rS  r\  rf  rj  rB  r   r   r   r   r     sU    ))LG&2&.2`?0(:282+6 4r   r   c                       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 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)ClassCreationTestsc                   F     e Zd Z fdZe fd       Ze fd       Z xZS )ClassCreationTests.Metac                 (    t         |   |||       y r   )superr   )rj  namebasesnskw	__class__s        r   r   z ClassCreationTests.Meta.__init__  s    GT5"-r   c                 (    t         |   | |||      S r   )rv  r  )mclsrw  rx  ry  rz  r{  s        r   r  zClassCreationTests.Meta.__new__  s    7?4ub99r   c                 T    t         |   ||      }d|d<   |j                  |       |S )Nr   r>  )rv  __prepare__update)r}  rw  rx  rz  ry  r{  s        r   r  z#ClassCreationTests.Meta.__prepare__  s-    $T51BBsGIIbMIr   )	r   r   r   r   staticmethodr  classmethodr  __classcell__r{  s   @r   Metart    s,    	.		: 
	:		 
	r   r  c                     t        j                  d      }| j                  |j                  d       | j                  |j                  t
        f       y Nr"   r   	new_classrG   r   	__bases__r   r%   r"   s     r   test_new_class_basicsz(ClassCreationTests.test_new_class_basics  s:    OOC S)vi0r   c                 x    t        j                  dt        f      }| j                  t	        |t                     y r  )r   r  rA   rX  rY  r  s     r   test_new_class_subclassz*ClassCreationTests.test_new_class_subclass
  s'    OOC#(
1c*+r   c                     | j                   }|dd}t        d      D ]o  }t        j                  dt	        |      z   d|      }| j                  ||       | j                  |j                  d       | j                  |j                  d       q y )NrZ   rL  r   r"   r   r   )	r  rN   r   r  rO   ra   rG   r>  r   )r%   r  settingsrQ   r"   s        r   test_new_class_metaz&ClassCreationTests.test_new_class_meta  sz    yy!%A.q 	%Ac!fb(;A!!!T*QSS!$QSS!$		%r   c                 $   | j                   }d }t        j                  dd|dd|      }| j                  ||       | j	                  |j
                  d       | j	                  |j                  d       | j	                  |j                  d       y )Nc                     d| d<   y Nr   r   r   ry  s    r   funcz9ClassCreationTests.test_new_class_exec_body.<locals>.func      BsGr   r"   r   rZ   r  r   r   )r  r   r  ra   rG   r   r>  r   r%   r  r  r"   s       r   test_new_class_exec_bodyz+ClassCreationTests.test_new_class_exec_body  su    yy	OOC4a%@$Ga&a a a r   c                     d }t        j                  dt        t        ft	        |d            }| j                  |dt        t        fi ddif       y )Nc                     | |||fS r   r   )rw  rx  ry  rz  s       r   	meta_funczGClassCreationTests.test_new_class_metaclass_keywords.<locals>.meta_func$  s    B&&r   r   r   )rL  r   r   )r   r  rA   r   r]  rG   )r%   r  ress      r   !test_new_class_metaclass_keywordsz4ClassCreationTests.test_new_class_metaclass_keywords"  sK    	'ooc"Fm"Y!<> 	sS&M2Qx@Ar   c                     t        j                  ddi d       }| j                  |j                  d       | j                  |j                  t
        f       y )Nr"   r   r  r  s     r   test_new_class_defaultsz*ClassCreationTests.test_new_class_defaults+  s@    OOCR.S)vi0r   c                 ~   | j                   }d }t        j                  dt        ft	        |d      |      }| j                  t        |t                     | j                  ||       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       y )Nc                     d| d<   y r  r   r  s    r   r  z>ClassCreationTests.test_new_class_meta_with_base.<locals>.func3  r  r   r"   rZ   r  )rw  rx  kwds	exec_bodyr   r   )r  r   r  rA   r]  rX  rY  ra   rG   r   r>  r   r  s       r   test_new_class_meta_with_basez0ClassCreationTests.test_new_class_meta_with_base1  s    yy	OO#&&!%!:&*, 	
1c*+a&a a a r   c                 *    G d d       G fdd      } |       }t        j                  d|fi       }| j                  |j                  f       | j                  |j                  |f       | j                  |j
                  |t        f       y )Nc                       e Zd Zy);ClassCreationTests.test_new_class_with_mro_entry.<locals>.ANr
   r   r   r   r   r  @  r   r   r   c                       e Zd Z fdZy);ClassCreationTests.test_new_class_with_mro_entry.<locals>.Cc                 
    fS r   r   r%   rx  r   s     r   __mro_entries__zKClassCreationTests.test_new_class_with_mro_entry.<locals>.C.__mro_entries__B  s
    tr   Nr   r   r   r  r   s   r   r"   r  A  s    r   r"   r  r   r  rG   r  __orig_bases____mro__r   )r%   r"   rq   r  r   s       @r   test_new_class_with_mro_entryz0ClassCreationTests.test_new_class_with_mro_entry?  sw    	 	 COOC!r*qd+))A40Q6N3r   c                    t        j                  dt        j                  t           fi       }| j                  |j                  t        t        j                  f       | j                  |j                  t        j                  t           f       | j                  |j                  |t        t        j                  t        f       t        j                  dt        t           fi       }| j                  |j                  t        f       | j                  |j                  t        t           f       | j                  |j                  |t        t        f       y )NL1L2)r   r  r   r5  rA   rG   r  r  Genericr  r  r   )r%   r  r  s      r   *test_new_class_with_mro_entry_genericaliasz=ClassCreationTests.test_new_class_with_mro_entry_genericaliasJ  s    __TFKK$4#6;fnn'=>**V[[-=,?@b$%GH__TDI<4w/**T#YL9b$%78r   c                 D    G d d      } G d d      } G d d      } |       }t        j                  d|||fi       }| j                  |j                  ||f       | j                  |j                  |||f       | j                  |j
                  |||t        f       y )Nc                       e Zd Zy)@ClassCreationTests.test_new_class_with_mro_entry_none.<locals>.ANr
   r   r   r   r   r  V  r   r   r   c                       e Zd Zy)@ClassCreationTests.test_new_class_with_mro_entry_none.<locals>.BNr
   r   r   r   rO  r  W  r   r   rO  c                       e Zd Zd Zy)@ClassCreationTests.test_new_class_with_mro_entry_none.<locals>.Cc                      yNr   r   )r%   rx  s     r   r  zPClassCreationTests.test_new_class_with_mro_entry_none.<locals>.C.__mro_entries__Y      r   Nr  r   r   r   r"   r  X      r   r"   r  r  )r%   r   rO  r"   rq   r  s         r   "test_new_class_with_mro_entry_nonez5ClassCreationTests.test_new_class_with_mro_entry_noneU  s    	 	 COOC!QB/q!f-))Aq!95Q1f$56r   c                      G d d       G fdd      } |       }| j                  t              5  t        j                  d|fi        d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zy)AClassCreationTests.test_new_class_with_mro_entry_error.<locals>.ANr
   r   r   r   r   r  b  r   r   r   c                       e Zd Z fdZy)AClassCreationTests.test_new_class_with_mro_entry_error.<locals>.Cc                     S r   r   r  s     r   r  zQClassCreationTests.test_new_class_with_mro_entry_error.<locals>.C.__mro_entries__d  s    r   Nr  r  s   r   r"   r  c  s    r   r"   r  )r5   r   r   r  )r%   r"   rq   r   s      @r   #test_new_class_with_mro_entry_errorz6ClassCreationTests.test_new_class_with_mro_entry_errora  sP    	 	 Cy) 	+OOC!r*	+ 	+ 	+s   AAc                     G d d       G d d       G d d       G d d       G fd	d
      } G fdd      }t        j                  d |        |       fi       }| j                  |j                  f       y )Nc                       e Zd Zy)EClassCreationTests.test_new_class_with_mro_entry_multiple.<locals>.A1Nr
   r   r   r   A1r  k  r   r   r  c                       e Zd Zy)EClassCreationTests.test_new_class_with_mro_entry_multiple.<locals>.A2Nr
   r   r   r   A2r  l  r   r   r  c                       e Zd Zy)EClassCreationTests.test_new_class_with_mro_entry_multiple.<locals>.B1Nr
   r   r   r   B1r  m  r   r   r  c                       e Zd Zy)EClassCreationTests.test_new_class_with_mro_entry_multiple.<locals>.B2Nr
   r   r   r   B2r  n  r   r   r  c                       e Zd Z fdZy)DClassCreationTests.test_new_class_with_mro_entry_multiple.<locals>.Ac                     fS r   r   )r%   rx  r  r  s     r   r  zTClassCreationTests.test_new_class_with_mro_entry_multiple.<locals>.A.__mro_entries__p      Bxr   Nr  )r  r  s   r   r   r  o       r   r   c                       e Zd Z fdZy)DClassCreationTests.test_new_class_with_mro_entry_multiple.<locals>.Bc                     fS r   r   r%   rx  r  r  s     r   r  zTClassCreationTests.test_new_class_with_mro_entry_multiple.<locals>.B.__mro_entries__s  r  r   Nr  r  r  s   r   rO  r  r  r  r   rO  r  r   r  rG   r  )r%   r   rO  r  r  r  r  r  s       @@@@r   &test_new_class_with_mro_entry_multiplez9ClassCreationTests.test_new_class_with_mro_entry_multiplej  sd    	  	 	  	  OOC!#qsR0r2r2&67r   c           	      H  	  G d d       G d d       G d d       G d d       G d	 d
      	 G fdd      } G 	fdd      } G d d      }t        j                  d |       | |       fi       }| j                  |j                  |	f       y )Nc                       e Zd Zy)GClassCreationTests.test_new_class_with_mro_entry_multiple_2.<locals>.A1Nr
   r   r   r   r  r  y  r   r   r  c                       e Zd Zy)GClassCreationTests.test_new_class_with_mro_entry_multiple_2.<locals>.A2Nr
   r   r   r   r  r  z  r   r   r  c                       e Zd Zy)GClassCreationTests.test_new_class_with_mro_entry_multiple_2.<locals>.A3Nr
   r   r   r   A3r  {  r   r   r  c                       e Zd Zy)GClassCreationTests.test_new_class_with_mro_entry_multiple_2.<locals>.B1Nr
   r   r   r   r  r  |  r   r   r  c                       e Zd Zy)GClassCreationTests.test_new_class_with_mro_entry_multiple_2.<locals>.B2Nr
   r   r   r   r  r  }  r   r   r  c                       e Zd Z fdZy)FClassCreationTests.test_new_class_with_mro_entry_multiple_2.<locals>.Ac                     fS r   r   )r%   rx  r  r  r  s     r   r  zVClassCreationTests.test_new_class_with_mro_entry_multiple_2.<locals>.A.__mro_entries__  s    B|#r   Nr  )r  r  r  s   r   r   r  ~  s    $r   r   c                       e Zd Z fdZy)FClassCreationTests.test_new_class_with_mro_entry_multiple_2.<locals>.Bc                     fS r   r   r  s     r   r  zVClassCreationTests.test_new_class_with_mro_entry_multiple_2.<locals>.B.__mro_entries__  r  r   Nr  r  s   r   rO  r    r  r   rO  c                       e Zd Zy)FClassCreationTests.test_new_class_with_mro_entry_multiple_2.<locals>.CNr
   r   r   r   r"   r    r   r   r"   r  r  )
r%   r   rO  r"   r  r  r  r  r  r  s
        @@@@@r   (test_new_class_with_mro_entry_multiple_2z;ClassCreationTests.test_new_class_with_mro_entry_multiple_2x  st    	$ 	$	  	  	OOC!#q!#3r2r1b"&=>r   c                 
   t        j                  d       G d d      } G d dt         j                           } G d d|t                 } G d d	|t           t
              }| j                  t        j                  |      t        f       | j                  t        j                  |      t         j                     f       | j                  t        j                  |      |t           f       | j                  t        j                  t              t        f       | j                  t        j                  |      |t           t
        f        G d
 dt                 } G d dt        t                 }| j                  t        j                  |      t           f       | j                  t        j                  |      t        t           f        G d dt         j                           } G d dt         j                           } G d d|t                 }	 G d d|t                 }
 G d d|	|
      }| j                  t        j                  |      |	|
f        G d dt         j                           } G d dt         j                           } G d d||      }| j                  t        j                  |      ||f        G d dt         j                        } G fd d!t         j                  t         j                           }t        j                  d"d#t        fg      }| j                  t        j                  |      d$   t         j                         | j                  t        j                  |      t         j                  t         j                     f       | j                  t        j                  |      d$   t         j                          G d% d&t         j                        } G fd'd(t         j                  t         j                           }t        j                  d)d#t        i      }| j                  t        j                  |      d$   t         j                         | j                  t        j                  |      t         j                  t         j                     f       | j                  t        j                  |      d$   t         j                         | j                  t        d*      5  t        j                  t                      d d d        y # 1 sw Y   y xY w)+Nr   c                       e Zd Zy)5ClassCreationTests.test_get_original_bases.<locals>.ANr
   r   r   r   r   r    r   r   r   c                       e Zd Zy)5ClassCreationTests.test_get_original_bases.<locals>.BNr
   r   r   r   rO  r    r   r   rO  c                       e Zd Zy)5ClassCreationTests.test_get_original_bases.<locals>.CNr
   r   r   r   r"   r    r   r   r"   c                       e Zd Zy)5ClassCreationTests.test_get_original_bases.<locals>.DNr
   r   r   r   r  r    r   r   r  c                       e Zd Zy)5ClassCreationTests.test_get_original_bases.<locals>.ENr
   r   r   r   r   r    r   r   r   c                       e Zd Zy)5ClassCreationTests.test_get_original_bases.<locals>.FNr
   r   r   r   r   r    r   r   r   c                       e Zd Zy)=ClassCreationTests.test_get_original_bases.<locals>.FirstBaseNr
   r   r   r   	FirstBaser	    r   r   r
  c                       e Zd Zy)>ClassCreationTests.test_get_original_bases.<locals>.SecondBaseNr
   r   r   r   
SecondBaser    r   r   r  c                       e Zd Zy)9ClassCreationTests.test_get_original_bases.<locals>.FirstNr
   r   r   r   Firstr    r   r   r  c                       e Zd Zy):ClassCreationTests.test_get_original_bases.<locals>.SecondNr
   r   r   r   Secondr    r   r   r  c                       e Zd Zy)5ClassCreationTests.test_get_original_bases.<locals>.GNr
   r   r   r   r   r    r   r   r   c                       e Zd Zy):ClassCreationTests.test_get_original_bases.<locals>.First_Nr
   r   r   r   First_r    r   r   r  c                       e Zd Zy);ClassCreationTests.test_get_original_bases.<locals>.Second_Nr
   r   r   r   Second_r    r   r   r  c                       e Zd Zy)5ClassCreationTests.test_get_original_bases.<locals>.HNr
   r   r   r   Hr    r   r   r  c                       e Zd ZU eed<   y)HClassCreationTests.test_get_original_bases.<locals>.ClassBasedNamedTupler   Nr   r   r   rA   r  r   r   r   ClassBasedNamedTupler         Fr   r"  c                       e Zd ZU W  ed<   y)EClassCreationTests.test_get_original_bases.<locals>.GenericNamedTupler   Nr   r   r   r  r   s   r   GenericNamedTupler%        Dr   r(  CallBasedNamedTupler   r   c                       e Zd ZU eed<   y)GClassCreationTests.test_get_original_bases.<locals>.ClassBasedTypedDictr   Nr!  r   r   r   ClassBasedTypedDictr,    r#  r   r-  c                       e Zd ZU W  ed<   y)DClassCreationTests.test_get_original_bases.<locals>.GenericTypedDictr   Nr&  r'  s   r   GenericTypedDictr/    r)  r   r0  CallBasedTypedDictzExpected an instance of type)r   r`  r  rA   rO   r7   rG   r   get_original_basesr   r  
NamedTupler   r  assertRaisesRegexr   )r%   r   rO  r"   r  r   r   r
  r  r  r  r   r  r  r  r"  r(  r*  r-  r0  r1  r   s                        @r   test_get_original_basesz*ClassCreationTests.test_get_original_bases  s   NN3(q!(#$#$11!4vi@11!4v~~a7H6JK11!4qvi@11#6	B11!4qvuoFQ S	 11!4tAwjA11!4tCylC0q)01*1)IcN)+Z_+$v$11!4ufoF-V^^A&-.fnnQ'.&&11!4vw6GH	6#4#4 		 1 16>>!3D 	 %//0Ec
|T$$%9:1=v?P?P	
 	$$%67q 12	
 	$$%89!<f>O>O	
	&"2"2 		v//1B 	 $--.BS#JO$$%89!<	
 	$$%56v~~a01	
 	$$%78;	

 ##I/MN 	/$$VX.	/ 	/ 	/s   T::Uc                 b   i  G fddt               }t        j                  dt        f      }t        j                  dt        fd|i      }t        j                  d||fdt         i      \  }}}| j                  ||       | j                  |       | j                  t        |      d       y )Nc                       e Zd Zd Z fdZy)0ClassCreationTests.test_prepare_class.<locals>.Ac                  ,    t        j                  | i |S r   )r`   r  )r  kwargss     r   r  z8ClassCreationTests.test_prepare_class.<locals>.A.__new__  s    ||T4V44r   c                      S r   r   )r  expected_nss    r   r  z<ClassCreationTests.test_prepare_class.<locals>.A.__prepare__  s	    ""r   N)r   r   r   r  r  )r<  s   r   r   r8    s    5#r   r   rO  r"   rL  r  r   )r`   r   r  r   prepare_classr   rG   r~   )r%   r   rO  r"   metary  r  r<  s          @r   test_prepare_classz%ClassCreationTests.test_prepare_class  s    	# 	# OOC&+OOC&[!,<= ,,S1a&;:MNb$dAb+&TA&r   c                     G d dt               }| j                  t        d      5   G d d|      }d d d         G d d      }| j                  t        d      5   G d	 d
 |             }d d d        y # 1 sw Y   DxY w# 1 sw Y   y xY w)Nc                       e Zd Zed        Zy)8ClassCreationTests.test_bad___prepare__.<locals>.BadMetac                       y r   r   r  s    r   r  zDClassCreationTests.test_bad___prepare__.<locals>.BadMeta.__prepare__      r   Nr   r   r   r  r  r   r   r   rn  rB         r   rn  z>^BadMeta\.__prepare__\(\) must return a mapping, not NoneType$c                       e Zd Zy)4ClassCreationTests.test_bad___prepare__.<locals>.FooNr
   r   r   r   FoorI        r   rJ  rK  c                       e Zd Zed        Zy)rB  c                       y r   r   rD  s    r   r  zDClassCreationTests.test_bad___prepare__.<locals>.BadMeta.__prepare__  rE  r   NrF  r   r   r   rn  z8ClassCreationTests.test_bad___prepare__.<locals>.BadMeta  rG  r   zB^<metaclass>\.__prepare__\(\) must return a mapping, not NoneType$c                       e Zd Zy)4ClassCreationTests.test_bad___prepare__.<locals>.BarNr
   r   r   r   BarrO    rK  r   rP  )r`   r4  r   )r%   rn  rJ  rP  s       r   test_bad___prepare__z'ClassCreationTests.test_bad___prepare__  s    	d 	 ##I%GH 	 		 	 ##I%GH 		 	 		 		 	s   A6B6A?Bc                   	  G d d      	 G d d      } G 	fdd      } |       }| j                  t        j                  d      d       | j                  t        j                  |f      	f       | j                  t        j                  |f      |f       | j                  t        j                  	|f      	|f       | j                  t        j                  |	f      	f       | j                  t        j                  	|f      	f       	f}|f}	|f}	||f}||||fD ]'  }| j                  t        j                  |      |       ) y )Nc                       e Zd Zy)0ClassCreationTests.test_resolve_bases.<locals>.ANr
   r   r   r   r   rT    r   r   r   c                       e Zd Zy)0ClassCreationTests.test_resolve_bases.<locals>.BNr
   r   r   r   rO  rV    r   r   rO  c                       e Zd Z fdZy)0ClassCreationTests.test_resolve_bases.<locals>.Cc                     |v ryfS r  r   r  s     r   r  z@ClassCreationTests.test_resolve_bases.<locals>.C.__mro_entries__   s    :tr   Nr  r  s   r   r"   rX    s    r   r"   r   )rG   r   resolve_basesr   )
r%   rO  r"   rq   r   r>  r   trx  r   s
            @r   test_resolve_basesz%ClassCreationTests.test_resolve_bases  s0   	 	
 C,,R0"5,,aT2QD9,,aT2QD9,,aV4q!f=,,aV4qd;,,aV4qd;DDF1IAq\ 	=EMM%--e4e<	=r   c                    | j                  t        j                  t        j                  t
           f      t        t        j                  f       | j                  t        j                  t        t
           f      t        f       y r   )rG   r   rZ  r   r5  rA   r  r  r)   s    r   !test_resolve_bases_with_mro_entryz4ClassCreationTests.test_resolve_bases_with_mro_entry  sX    ,,fkk#.>-@A/	1,,d3i\:TGDr   c                   	 g 	 G 	fddt               } G 	fdd|      }t        j                  ddd|i      }| j                  	dg       	j	                          t        j                  ddd|i      }| j                  	ddg       	j	                          t        j                  d	||f      }| j                  	ddg       	j	                          | j                  d
|j                         t        j                  d||f      }| j                  	ddg       	j	                          | j                  d
|j                         t        j                  d|fdt         i      }| j                  	ddg       	j	                          | j                  d
|j                         t        j                  d|fd|i      }| j                  	ddg       	j	                          | j                  d
|j                         y )Nc                   2     e Zd Z fdZed        Z xZS );ClassCreationTests.test_metaclass_derivation.<locals>.AMetac                 J    j                  d       t        | 	  | |||      S )NAMetar  rv  r  r}  rw  rx  ry  r{  	new_callss       r   r  zCClassCreationTests.test_metaclass_derivation.<locals>.AMeta.__new__  &      )wtT5"==r   c                     i S r   r   )r}  rw  rx  s      r   r  zGClassCreationTests.test_metaclass_derivation.<locals>.AMeta.__prepare__  s    	r   r   r   r   r  r  r  r  r{  rf  s   @r   rc  ra    s    >  r   rc  c                   6     e Zd Z fdZe fd       Z xZS );ClassCreationTests.test_metaclass_derivation.<locals>.BMetac                 J    j                  d       t        | 	  | |||      S )NBMetard  re  s       r   r  zCClassCreationTests.test_metaclass_derivation.<locals>.BMeta.__new__#  rg  r   c                 2    t         |   ||      }d|d<   |S )NTBMeta_was_here)rv  r  )r}  rw  rx  ry  r{  s       r   r  zGClassCreationTests.test_metaclass_derivation.<locals>.BMeta.__prepare__&  s$    W(u5'+#$	r   ri  rj  s   @r   rn  rl  "  s    >  r   rn  r   r   rL  rO  r"   rp  C2r  r   )r`   r   r  rG   clearr   r  )
r%   rc  rn  r   rO  r"   rq  r  r   rf  s
            @r   test_metaclass_derivationz,ClassCreationTests.test_metaclass_derivation  s   		D 		E 	 OOCk5%9:WI.OOCk5%9:Wg$67OOC!Q(Wg$67&

3 __TAq6*Wg$67&4 OOC!T':;Wg$67&

3OOC!U';<Wg$67&

3r   c                 ^    G d d| j                         }t               fd}t        j                  ddd|i      }t        j                  dt        fd|i      }t        j                  d	|fd|i      }| j	                  |       | j	                  |       | j	                  |       y )
Nc                       e Zd Zy)>ClassCreationTests.test_metaclass_override_function.<locals>.ANr
   r   r   r   r   rv  P  r  r   r   rK  c                      S r   r   )r  r:  markers     r   r  zAClassCreationTests.test_metaclass_override_function.<locals>.funcT  s    Mr   r   r   rL  Yr   )r  r   r   r  r   )r%   r   r  r   ry  r   rx  s         @r    test_metaclass_override_functionz3ClassCreationTests.test_metaclass_override_functionM  s    	$)) 	 	 OOCk4%89OOC&[$,?@OOC!T':;fa fa fa r   c                    g g  G fdd      } G fdd|      }t        j                  ddd|i      }| j                  |t        |             | j	                  dg       j                          | j	                  dg       j                          t        j                  ddd|i      }| j                  |t        |             | j	                  ddg       j                          | j	                  ddg       j                          t        j                  d	||f      }| j                  |t        |             | j	                  ddg       j                          | j	                  ddg       j                          t        j                  d
||f      }| j                  |t        |             | j	                  ddg       j                          | j	                  ddg       j                          | j                  t              5  t        j                  d|fdt        i      }d d d        t        j                  d|fd|i      }| j                  |t        |             | j	                  ddg       j                          | j	                  ddg       j                          t        j                  dt               |f      }	| j                  |t        |	             | j	                  ddg       j                          | j	                  ddg       j                          t        j                  d|t               f      }
| j                  |t        |
             | j	                  ddg       j                          | j	                  ddg       j                          | j                  t              5  t        j                  d|t               f      }d d d        | j                  t              5  t        j                  dt               |f      }d d d        y # 1 sw Y   
xY w# 1 sw Y   UxY w# 1 sw Y   y xY w)Nc                   6     e Zd Z fdZefd       Z xZS )EClassCreationTests.test_metaclass_override_callable.<locals>.ANotMetac                 D    j                  d       t        | 	  |       S NANotMetard  r}  r  r:  r{  rf  s      r   r  zMClassCreationTests.test_metaclass_override_callable.<locals>.ANotMeta.__new__d         ,wt,,r   c                 *    j                  d       i S r  )r  )r}  rw  rx  prepare_callss      r   r  zQClassCreationTests.test_metaclass_override_callable.<locals>.ANotMeta.__prepare__g  s    $$Z0	r   ri  r{  rf  r  s   @r   r  r}  c  s    -  r   r  c                   8     e Zd Z fdZe fd       Z xZS )EClassCreationTests.test_metaclass_override_callable.<locals>.BNotMetac                 D    j                  d       t        | 	  |       S NBNotMetard  r  s      r   r  zMClassCreationTests.test_metaclass_override_callable.<locals>.BNotMeta.__new__m  r  r   c                 F    j                  d       t        | 	  ||      S r  )r  rv  r  )r}  rw  rx  r{  r  s      r   r  zQClassCreationTests.test_metaclass_override_callable.<locals>.BNotMeta.__prepare__p  s#    $$Z0w*477r   ri  r  s   @r   r  r  l  s    - 8 8r   r  r   r   rL  rO  r"   rq  r  r   r   F2r   )
r   r  r   r`   rG   rr  r5   r   r   rA   )r%   r  r  r   rO  r"   rq  r  r   r   r  r   rf  r  s               @@r    test_metaclass_override_callablez3ClassCreationTests.test_metaclass_override_callable^  s    		 		8x 	8 OOCk8%<=hQ(5ZL1OOCk8%<=hQ(Z(@AZ$<=OOC!Q(hQ(Z(@AZ$<=__TAq6*hR)Z(@AZ$<= y) 	@aTK+>?A	@ OOC!X'>?hQ(Z(@AZ$<=OOC&(A/hQ(Z(@AZ$<=__TAvx=1hR)Z(@AZ$<= y) 	1aZ0A	1y) 	1ceQZ0A	1 	19	@ 	@4	1 	1	1 	1s$   #Q
"!Q !Q#
QQ #Q,c                    d}| j                  t        d      t                G d dt              }| j                  t              5 } |d       d d d        | j                  t        j                        |        G d dt        |      }| j                  t              5 } |d       d d d        | j                  t        |j                        |       y # 1 sw Y   xY w# 1 sw Y   ;xY w)Nz2type.__new__() takes exactly 3 arguments (1 given)r:   c                       e Zd Zy)4ClassCreationTests.test_one_argument_type.<locals>.MNr
   r   r   r   Mr    r  r   r  c                       e Zd Zy)4ClassCreationTests.test_one_argument_type.<locals>.NNr
   r   r   r   Nr    r  r   r  rK  )r   r`   rA   r5   r   rG   rO   	exception)r%   expected_messager  cmr  s        r   test_one_argument_typez)ClassCreationTests.test_one_argument_type  s    O 	d1gs#	 	y) 	RaD	R\\*,<=	 	y) 	RaD	R\\*,<=	 		 	s   	C"	C%C"%C.c                      G d dt               } G d d|      }| j                  t              5  t        d|fi        d d d        y # 1 sw Y   y xY w)Nc                        e Zd Z fdZ xZS )>ClassCreationTests.test_metaclass_new_error.<locals>.ModelBasec                 X    t         |   } || ||i       }|dk7  rt        d|      |S )NModelzname=)rv  r  RuntimeWarning)rj  rw  rx  r  	super_newr  r{  s         r   r  zFClassCreationTests.test_metaclass_new_error.<locals>.ModelBase.__new__  s:    !GO	%c4;	7?(ED744  r   )r   r   r   r  r  r  s   @r   	ModelBaser    s    ! !r   r  c                       e Zd Zy):ClassCreationTests.test_metaclass_new_error.<locals>.ModelNr
   r   r   r   r  r    r  r   r  rK  SouthPonies)r`   r5   r  )r%   r  r  s      r   test_metaclass_new_errorz+ClassCreationTests.test_metaclass_new_error  sM    	! 	!	i 	 ~. 	."-	. 	. 	.s   A		AN)r   r   r   r`   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r5  r?  rQ  r\  r^  rs  rz  r  r  r  r   r   r   rr  rr    s    t 1
,%!B1!	4	9
7+8? H/V'&,=,E
44l!"R1h>$.r   rr  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y)SimpleNamespaceTestsc                 ,   t        j                         }t        j                  dd      }t        j                  di t        dd      }| j                  t              5  t        j                  ddd       d d d        | j                  t              5  t        j                  di ddi d d d        | j                  t        |j                        d       | j                  t        |      i        | j                  t        |j                        d       | j                  t        |      ddd       | j                  t        |j                        d       | j                  t        |      ddd       y # 1 sw Y   xY w# 1 sw Y   xY w)Nr   rZ   r  r{   r   r>  r   r   )	r   SimpleNamespacer]  r5   r   rG   r~   r  varsr%   ns1ns2ns3s       r   r
  z%SimpleNamespaceTests.test_constructor  s;   ##%##a1-##5dQ!n5y) 	+!!!Q*	+y) 	,!!+QF+	, 	S\\*A.cB'S\\*A.c!!$45S\\*A.c!!$45	+ 	+	, 	,s   !E=F
=F
Fc                     t        t        j                               }t        t        j                  dd            }| j                  |i        | j                  |ddd       y )Nr   rZ   r  r  )r  r   r  rG   r%   r  r  s      r   test_unboundz!SimpleNamespaceTests.test_unbound  sQ    5((*+5((123b!AA./r   c                 R   t        j                         }t        j                  dd      }t        j                  dd      }|j                  }~| j                  |j                  i        | j                  |j                  ddd       | j                  |t	        dd             y )Nr   rZ   r  TFr  r  )r   r  r  rG   r]  )r%   r  r  r  r	  s        r   test_underlying_dictz)SimpleNamespaceTests.test_underlying_dict  s    ##%##a1-##de4,,r*QQ'78$"78r   c                 H   t        j                  ddd      }| j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       | j                  t              5  |j                   d d d        y # 1 sw Y   y xY w)Nr   rZ   r{   r   r>  w)	r   r  rG   r   r>  r  r5   AttributeErrorr   r%   ry  s     r   test_attrgetz!SimpleNamespaceTests.test_attrget  s|    ""Q!q1q!q!q!~. 	DD	 	 	s   BB!c           
      6   t        j                         }t        j                  ddd      }d|_        d|_        d|_        d |_        | j                  |j                  t        dd             | j                  |j                  t        ddddd 	             y )
Nr   rZ   r{   r  spamhamrY   r  )r   r>  r  r   theta)	r   r  r/   r2   r   r  rG   r  r]  r  s      r   test_attrsetz!SimpleNamespaceTests.test_attrset  s|    ##%##a12	tf'>?ta1Qd'KLr   c                    t        j                         }t        j                  ddd      }| j                  t              5  |`d d d        | j                  t              5  |`d d d        |`| j                  t        |      t        dd             d|_        | j                  t        |      t        ddd             |`| j                  t        |      t        dd             d|_        | j                  t        |      t        d	             |`| j                  t        |      i        y # 1 sw Y   xY w# 1 sw Y   xY w)
Nr   rZ   r{   r  )r  r   r  )r  r   r>  r:   r  )	r   r  r5   r  r  r>  rG   r  r]  r  s      r   test_attrdelz!SimpleNamespaceTests.test_attrdel  s   ##%##a12~. 		~. 		 EcD1N3cD1V$<=EcD1N3cDaL1HcB'	 		 	s   D5"E5D>E
c                 (   t        j                  ddd      }t        j                         }d|_        d|_        d}| j	                  t        |      dj                  |	             | j	                  t        |      d
j                  |	             y )Nr   rZ   r{   r  r  r:   	namespacez{name}(x=1, y=2, w=3)rw  z{name}(x='spam', _y=5))r   r  r   _yrG   r  rP   )r%   r  r  rw  s       r   	test_reprzSimpleNamespaceTests.test_repr%  s}    ##a12##%c$;$B$B$B$MNc$<$C$C$C$NOr   c                 >   t        j                  d      }t        j                         }d|_        | j                  t        j                         t        j                                | j                  ||       | j	                  |t        j                                y )Nr   rU  )r   r  r   rG   r4  r  s      r   
test_equalzSimpleNamespaceTests.test_equal/  sr    ##a(##%..0%2G2G2IJc"C!6!6!89r   c                    t        j                  dd      }t        j                         }t        j                  |      }||_        d|_        ||_        | j	                  t        |      t        dd             | j	                  t        |      t        |d             | j	                  |j                  |       | j	                  t        |      t        |             | j	                  |j                  j                  d       y )Nr   rZ   r  rU  ?)r  r  )	r   r  r  r  rG   r  r]  r   r/   r  s       r   test_nestedz SimpleNamespaceTests.test_nested8  s    ##a1-##%##c*cD1N3cDcs$;<3'cD3K0!$r   c                 N   t        j                  d      }t        j                         }t        j                  d      }||_        ||_        ||_        | j                  |j                  |       | j                  |j                  j                  |       | j                  |j                  j                  |j                         | j                  |j                  |       | j                  |j                  |       | j                  |j                  j                  |       y )Ncookierq   r   rU  )r   r  r  rG   r  s       r   test_recursivez#SimpleNamespaceTests.test_recursiveF  s    ##h/##%##a(3',13'3',r   c                 f   t        j                  d      }t        j                         }t        j                  d      }||_        ||_        ||_        d}dj                  |      }dj                  |      }| j	                  t        |      |       | j	                  t        |      |       y )	Nr  r  r   rU  r  z${name}(c='cookie', spam={name}(...))r  z*{name}(spam={name}(x=1, spam={name}(...))))r   r  r  rP   rG   r  )r%   r  r  r  rw  repr1repr2s          r   test_recursive_reprz(SimpleNamespaceTests.test_recursive_reprU  s    ##h/##%##a(6==4=H<CCCNcE*cE*r   c                    t        j                  d      }| j                  t              5  t	        |       d d d        | j                  t              5  t        |       d d d        | j                  t              5  d|v  d d d        | j                  t              5  |d    d d d        y # 1 sw Y   xxY w# 1 sw Y   [xY w# 1 sw Y   ExY w# 1 sw Y   y xY w)Nspamspamspamr  r  )r   r  r5   r   r~   r4  r  s     r   test_as_dictz!SimpleNamespaceTests.test_as_dictc  s    ""7y) 	G	y) 	H	y) 	bL	y) 	vJ	 		 		 		 		 	s/   B/B;>C C/B8;CCCc                      G d dt         j                        } |dd      }| j                  t        |      |       | j	                  t        |      ddd       y )Nc                       e Zd Zy)0SimpleNamespaceTests.test_subclass.<locals>.SpamNr
   r   r   r   Spamr  p  r  r   r  r[   	   )r  eggs)r   r  r   r`   rG   r  )r%   r  r  s      r   test_subclassz"SimpleNamespaceTests.test_subclasso  sM    	5(( 	 "d4j$'dQ%:;r   c                 N   t        j                  dd      }t        t        j                  dz         D ]R  }dj                  |      }	 t        j                  ||      }t        j                  |      }| j                  |||       T y # t        $ r}t        |      |d }~ww xY w)Nr  )	breakfastlunchr   zprotocol {})
r   r  rN   r  r  rP   r  r   r  rG   )r%   ry  protocolpname
ns_pickledrE   ns_roundtrips          r   test_picklez SimpleNamespaceTests.test_picklex  s    ""V6Bf559: 	6H!((2E.#\\"h7
 "<<
3LRu5	6  .&A-.s   	B

	B$BB$c                     G d dt               }| j                  t        j                          |       k(         | j	                  t        j                          |       k7         | j                  t              5  t        j                          |       k   d d d        | j                  t              5  t        j                          |       k   d d d        | j                  t              5  t        j                          |       kD   d d d        | j                  t              5  t        j                          |       k\   d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   \xY w# 1 sw Y   y xY w)Nc                   $    e Zd Zej                  Zy)MSimpleNamespaceTests.test_fake_namespace_compare.<locals>.FakeSimpleNamespaceN)r   r   r   r   r  r{  r   r   r   FakeSimpleNamespacer    s    --Ir   r  )rO   rZ  r   r  rX  r5   r   )r%   r  s     r   test_fake_namespace_comparez0SimpleNamespaceTests.test_fake_namespace_compare  s1   	.# 	...04G4IIJ--/3F3HHIy) 	<!!#&9&;;	<y) 	=!!#':'<<	=y) 	<!!#&9&;;	<y) 	=!!#':'<<	= 	=	< 	<	= 	=	< 	<	= 	=s0   ;E5E/E')E3EE$'E03E<N)r   r   r   r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r  r    sO    6"0	9	M(*P:%-+
<6=r   r  c                   N    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y)CoroutineTestsc                     d dt               g}|D ]6  }| j                  t        d      5  t        j                  |       d d d        8 y # 1 sw Y   CxY w)Nr   z#types.coroutine.*expects a callable)r   r4  r   r   	coroutine)r%   samplessamples      r   test_wrong_argszCoroutineTests.test_wrong_args  sY    FH% 	(F''	(MO ('( (	(( (s   A

A	c                 8   t         j                  d        }| j                   |       d        G d d      } |       t         j                  fd       }| j                   |              t        j                  |      }| j                   |              y )Nc                       yNr  r   r   r   r   rU  z/CoroutineTests.test_non_gen_values.<locals>.foo  s    r   r  c                       e Zd Zd Zy)5CoroutineTests.test_non_gen_values.<locals>.Awaitablec                      yr  r   r)   s    r   	__await__z?CoroutineTests.test_non_gen_values.<locals>.Awaitable.__await__  r  r   N)r   r   r   r  r   r   r   	Awaitabler    r  r   r  c                       S r   r   )aws   r   rU  z/CoroutineTests.test_non_gen_values.<locals>.foo  s    Ir   )r   r  rG   r   )r%   rU  r  r  s      @r   test_non_gen_valuesz"CoroutineTests.test_non_gen_values  s    		 
	'	 	 [		 
	b#%  ooc"b#% r   c                 "   d }|j                   }|j                   j                  }t        j                  |      }| j	                  ||       | j                  |j                   j                  |       | j	                  |j                   |        |       fd}t        d      D ]f  }t        j                  |      } |       }| j	                  |       | j                  |j                  j                  |       |j                          h y )Nc                     K   y wr   r   r   r   r   rU  z*CoroutineTests.test_async_def.<locals>.foo  s     s   c                       S r   r   )foo_coros   r   barz*CoroutineTests.test_async_def.<locals>.bar  s    (?r   rZ   )	__code__co_flagsr   r  r   rG   rN   cr_codeclose)	r%   rU  foo_code	foo_flagsdecorated_foor  r  coror   s	           @r   test_async_defzCoroutineTests.test_async_def  s     	<<LL))	,c=)..	:m,,h75"q 	A//#&C5DMM(D)T\\22I>JJL	r   c                      G d d      } |       t         j                  fd       }| j                   |              | j                   |       j                                y )Nc                   $    e Zd Zd Zd Zd Zd Zy)/CoroutineTests.test_duck_coro.<locals>.CoroLikec                      y r   r   r)   s    r   sendz4CoroutineTests.test_duck_coro.<locals>.CoroLike.send      Dr   c                      y r   r   r)   s    r   throwz5CoroutineTests.test_duck_coro.<locals>.CoroLike.throw      Tr   c                      y r   r   r)   s    r   r  z5CoroutineTests.test_duck_coro.<locals>.CoroLike.close  r  r   c                     | S r   r   r)   s    r   r  z9CoroutineTests.test_duck_coro.<locals>.CoroLike.__await__      r   N)r   r   r   r  r  r  r  r   r   r   CoroLiker    s     !!,r   r  c                       S r   r   r	  s   r   rU  z*CoroutineTests.test_duck_coro.<locals>.foo      Kr   r   r  r   r  )r%   r  rU  r	  s      @r   test_duck_corozCoroutineTests.test_duck_coro  sS    	- 	- z		 
	ceT"ceoo'.r   c                      G d d      } |       t         j                  fd       }| j                   |              | j                   |       j                                y )Nc                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)5CoroutineTests.test_duck_corogen.<locals>.CoroGenLikec                      y r   r   r)   s    r   r  z:CoroutineTests.test_duck_corogen.<locals>.CoroGenLike.send  r  r   c                      y r   r   r)   s    r   r  z;CoroutineTests.test_duck_corogen.<locals>.CoroGenLike.throw  r  r   c                      y r   r   r)   s    r   r  z;CoroutineTests.test_duck_corogen.<locals>.CoroGenLike.close  r  r   c                     | S r   r   r)   s    r   r  z?CoroutineTests.test_duck_corogen.<locals>.CoroGenLike.__await__  r  r   c                     | S r   r   r)   s    r   r  z>CoroutineTests.test_duck_corogen.<locals>.CoroGenLike.__iter__  s    tr   c                      y r   r   r)   s    r   __next__z>CoroutineTests.test_duck_corogen.<locals>.CoroGenLike.__next__      r   N)	r   r   r   r  r  r  r  r  r&  r   r   r   CoroGenLiker    s     !!,+$r   r(  c                       S r   r   r  s   r   rU  z-CoroutineTests.test_duck_corogen.<locals>.foo  r  r   r  )r%   r(  rU  r	  s      @r   test_duck_corogenz CoroutineTests.test_duck_corogen  sS    	% 	% }		 
	ceT"ceoo'.r   c                 &  	  G d d      }t         j                  j                  |      d _        d_        d_        | j                  t        j                  j                         | j                  t                     t        j                  fd       } |       	| j                  	t        j                         | j                  	j                         	       | j                  t        	      	       | j                  	t        j                  j                          | j                  	t        j                  j"                         | j                  	j
                  j
                         | j                  	j                  j                         dD ],  }| j%                  t&              5  t)        	|       d d d        . t+               _        t+               _        t+               _        t+               _        | j                  	j,                  j,                         | j                  	j.                  j.                         | j                  	j0                  j0                         | j                  	j2                  j2                         | j                  	j4                  j,                         | j                  	j6                  j.                         | j                  	j8                  j0                         | j                  	j:                  j2                         	j=                          j<                  j?                          	jA                  d       j@                  j?                  d       jC                          tE        	       jF                  j?                          jC                          	jI                  dd	d
       jH                  j?                  dd	d
       jC                          	jI                  dd	       jH                  j?                  dd	       jC                          	jI                  d       jH                  j?                  d       jC                          tK               }|jH                  _&        	 	jI                  d       | jO                  d       jC                          | j%                  tP              5  	jI                          d d d        | jS                  jH                  jT                         | j%                  tP              5  	j=                  d       d d d        | jS                  j<                  jT                         | j%                  tP              5  	jA                          d d d        | jS                  j@                  jT                         t        j                  	fd       }| j                  	 |              tW        jX                  	      }| j                   |       	       y # 1 sw Y   xY w# tJ        $ r}| j                  ||       Y d }~d }~ww xY w# 1 sw Y   hxY w# 1 sw Y   !xY w# 1 sw Y   xY w)Nc                   *    e Zd Zd Zd Zd Zd Zd Zy)-CoroutineTests.test_duck_gen.<locals>.GenLikec                      y r   r   r)   s    r   r  z2CoroutineTests.test_duck_gen.<locals>.GenLike.send  r  r   c                      y r   r   r)   s    r   r  z3CoroutineTests.test_duck_gen.<locals>.GenLike.throw  r  r   c                      y r   r   r)   s    r   r  z3CoroutineTests.test_duck_gen.<locals>.GenLike.close  r  r   c                      y r   r   r)   s    r   r  z6CoroutineTests.test_duck_gen.<locals>.GenLike.__iter__  r'  r   c                      y r   r   r)   s    r   r&  z6CoroutineTests.test_duck_gen.<locals>.GenLike.__next__  r'  r   N)r   r   r   r  r  r  r  r&  r   r   r   GenLiker-    s     !!$$r   r3  c                     | S r   r   gens    r   <lambda>z.CoroutineTests.test_duck_gen.<locals>.<lambda>  s    3 r   r6  ztest.genc                       S r   r   r5  s   r   rU  z)CoroutineTests.test_duck_gen.<locals>.foo      :r   >   r  gi_codecr_awaitcr_framegi_frame
cr_running
gi_runninggi_yieldfromr   rZ   r{   z&wrapper did not propagate an exceptionc                       S r   r   )wrappers   r   r  z)CoroutineTests.test_duck_gen.<locals>.barE  s    !>r   )-r.  mock	MagicMockr  r   r   ra   r[  r0   	Generatorr   r4  r   r  _GeneratorWrapperr  	Coroutiner  r5   r  getattrr   r?  r=  r:  r@  r>  r<  r  r;  r  assert_called_once_withr  
reset_mockrY  r&  r  	Exceptionside_effectr#   r   rZ  calledweakrefref)
r%   r3  rU  rw  errorexr  rO  r6  rB  s
           @@r   test_duck_genzCoroutineTests.test_duck_gen  s   	% 	% mm%%g.&%c;??#<#<=c49%	 
%gu'>'>?g'')73d7mW-g{'@'@Ag{'@'@Ag**C,<,<=g&&5F 	'D"">2 '&' '	'  xh!8g((#..9g&&5goos{{3g**C,<,<=g((#..9g&&5goos{{3g&&(8(89		))+Q((+W,,.aA		))!Q2a		))!Q/a		))!,  %			@MM! II>? 	y) 	MMO	))*y) 	MM!	))*y) 	LLN	) 
! 
!gsu% kk'"ceW%K' 'Z  	%MM"e$$	%	 		 		 	sH   ;X7/Y 6Y-	Y:Z7Y		Y*Y%%Y*-Y7:ZZc                     G d d      t         j                  fd               }| j                  |t         j                         fd} |       }| j	                  |j                  d       d       	 |j                  d       | j                  d       y # t        $ r)}| j	                  |j                  d   d	       Y d }~y d }~ww xY w)
Nc                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)	:CoroutineTests.test_duck_functional_gen.<locals>.GeneratorzEmulates the following generator (very clumsy):

              def gen(fut):
                  result = yield fut
                  return result * 2
            c                      d| _         || _        y r   )_i_fut)r%   futs     r   r   zCCoroutineTests.test_duck_functional_gen.<locals>.Generator.__init__U  s    	r   c                     | S r   r   r)   s    r   r  zCCoroutineTests.test_duck_functional_gen.<locals>.Generator.__iter__X  s    r   c                 $    | j                  d       S r   )r  r)   s    r   r&  zCCoroutineTests.test_duck_functional_gen.<locals>.Generator.__next__Z  s    yy&r   c                 2   	 | j                   dk(  r%|J | j                  | xj                   dz  c_         S | j                   dk(  rt        |dz        | j                   dkD  rt        	 | xj                   dz  c_         y # | xj                   dz  c_         w xY w)Nr   r   rZ   )rW  rX  rX  )r%   vs     r   r  z?CoroutineTests.test_duck_functional_gen.<locals>.Generator.send\  s    	!ww!| y(y#yy GGqLG ww!|+AE22ww{++ # GGqLGDGGqLGs   A? 2A? ?Bc                 &    d| _         |t        ur|y NrK   )rW  GeneratorExit)r%   tpr,  s      r   r  z@CoroutineTests.test_duck_functional_gen.<locals>.Generator.throwg  s    ]*H +r   c                 .    | j                  t               y r   )r  r`  r)   s    r   r  z@CoroutineTests.test_duck_functional_gen.<locals>.Generator.closek  s    

=)r   N)
r   r   r   __doc__r   r  r&  r  r  r  r   r   r   rE  rU  N  s%     '
!*r   rE  c                        d      S r  r   )rE  s   r   rU  z4CoroutineTests.test_duck_functional_gen.<locals>.foon  s    #F++r   c                  4   K             d {   dz   S 7 wr_  r   )rU  s   r   corofuncz9CoroutineTests.test_duck_functional_gen.<locals>.corofunct  s     ;$$;s   r     zStopIteration was expectedr      )	r   r  ra   rF  rG   r  r#   rX  r  )r%   rB  rf  r	  rQ  rE  rU  s        @@r   test_duck_functional_genz'CoroutineTests.test_duck_functional_genM  s    	* 	*@ 
+ 
+%gu'>'>?	%z4&1	4IIbM II23  	.RWWQZ--	.s   :B 	C&C

Cc                    d } |       t         j                  fd       } |       }| j                  |t         j                         | j	                  |j                                dD ]-  }| j	                  t         |       |      t        |             / | j	                   |       j                  j                         | j                  t        |      d       | j                  |j                  d       d       | j                  t        d      5  |j                  d       d d d         |        |       }|j                  d        | j                  t        d      5  |j                  t        d             d d d        t        j                  |      }| j	                   |       j                                y # 1 sw Y   xY w# 1 sw Y   PxY w)Nc               3      K   d dS w)Nr   rZ   r   r   r   r   gen_funcz)CoroutineTests.test_gen.<locals>.gen_func  s     GGs   	c                       S r   r   r5  s   r   rU  z$CoroutineTests.test_gen.<locals>.foo  r9  r   )r   r   r:  r?  r=  r   rZ   r  r  )r   r  ra   rF  r   r  rH  r  r:  rG   rY  r  r4  rX  rK  r  )r%   rl  rU  rB  rw  r6  s        @r   test_genzCoroutineTests.test_gen  sz   	 j	 
%gu'>'>?g'')3// 	.DMM'#%.!#t,.	. 	cemmS[[1g*d+Q/##M6: 	!LL 	! j%T##Iu5 	,MM)E*+	, ooc"ceoo'-	! 	!	, 	,s   G)GGGc                     t         j                  d        } |       t         j                  fd       }| j                   |              t        j                  |      }| j                   |              y )Nc               3      K   d  y wr   r   r   r   r   r6  z3CoroutineTests.test_returning_itercoro.<locals>.gen  s	        c                       S r   r   )gencoros   r   rU  z3CoroutineTests.test_returning_itercoro.<locals>.foo  s    Nr   )r   r  r   )r%   r6  rU  rs  s      @r   test_returning_itercoroz&CoroutineTests.test_returning_itercoro  sj    		 
	 %		 
	 	ceW% ooc"ceW%r   c                    d }| j                  t        j                  |      |       | j                  t        j                  t        j                  |            |       | j                  |j                  j
                  t        j                  z         | j                  |j                  j
                  t        j                  z          |       }| j                  |j                  j
                  t        j                  z         | j                  |j                  j
                  t        j                  z         | j                  t        j                  |      |       y )Nc               3      K   d  y wr   r   r   r   r   r6  z(CoroutineTests.test_genfunc.<locals>.gen  s     5rq  )r   r   r  rX  r  r  r  CO_ITERABLE_COROUTINErZ  CO_COROUTINEr:  )r%   r6  r   s      r   test_genfunczCoroutineTests.test_genfunc  s    eooc*C0eooeooc&:;SA--0M0MMN..1E1EEFE		**W-J-JJK++g.B.BBCeooc*C0r   c                 0   d t         j                  fd       } |       }| j                  dt        |             | j	                  t        |      t        |             | j                  t        t        |            j                  h d             y )Nc               3      K   d  y wr   r   r   r   r   r6  z/CoroutineTests.test_wrapper_object.<locals>.gen  s	     rq  c                               S r   r   r5  s   r   r	  z0CoroutineTests.test_wrapper_object.<locals>.coro  s
    5Lr   GeneratorWrapper>   r  r  r  r  r:  r  r&  r<  r=  r  r>  r?  )
r   r  r   r  rG   rO   rX  r<  r  
issuperset)r%   r	  rB  r6  s      @r   test_wrapper_objectz"CoroutineTests.test_wrapper_object  sy    			 
	 &($w-8gG5CL)44 6  	 r   N)r   r   r   r  r  r
  r  r*  rR  ri  rn  rt  ry  r  r   r   r   r  r    s=    (!&*// g&R14f.@&"1 r   r  __main__) test.supportr   r   r   collections.abcr[  r   r  r  r  r  r   r$   r   unittest.mockr.  rN  r   r`  r   r	   r   r   TestCaser   r1  r   rr  r  r  r   mainr   r   r   <module>r     s    M L  "  	    
     FNN3	 	  
a	K"" a	KHZD"" ZDzT4)) T4n^.** ^.B|=8,, |=~v X&& v r	 zHMMO r   