
    5\h                    0   U d dl mZ d dl m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T d dl	m
c mZ d dlZd dlmZ d dlZg dZg dZ G d	 d
ej                  Zeed<    G d d          Z G d dej                  Zedk    r ej                     dS dS )    check_syntax_error)import_helpercheck_syntax_warningN)*)ann_module2)0_0_04_21_0000_00000b1001_01000xffff_ffff0o5_7_7z	1_00_00.5z1_00_00.5e51_00_00e5_11e1_0z.1_4z.1_4e10b_00x_f0o_51_00_00jz
1_00_00.5j1_00_00e5_1jz.1_4jz(1_2.5+3_3j)z(.5_6j))(0_42_z1.4j_0x_0b1_0xf_0o5_z0 if 1_Else 10_b00_xf0_o50_709_99	4_______2z0.1__4z0.1__4j0b1001__01000xffff__ffff0x___0o5__771e1__01e1__0jz1_.4z1_.4jz1._4z1._4jz._5z._5jz1.0e+_1z1.0e+_1jz1.4_jz1.4e5_j1_e1z1.4_e1z1.4_e1j1e_1z1.4e_1z1.4e_1jz
(1+1.5_j_)z	(1+1.5_j)c                   h    e Zd ZddlmZ ddlmZ d Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd ZdS )
TokenTestsr   r   r   c                 j    d}|                      |dd           d}|                      |dd           d S )N   zbackslash for line continuationr   zbackslash ending commentassertEqualselfxs     ;/opt/python-3.11.14/usr/lib/python3.11/test/test_grammar.pytest_backslashzTokenTests.test_backslashl   sH    A@AAA A9:::::    c                 ,   |                      t          d          t          d                     |                      dd           |                      dd           |                      dd           |                      dd           |                     t          t          d           ddlm} |dk    r|                      dd           |                     ddk               |                     ddk               |                     ddk               d	D ]:}	 t	          |          }# t          $ r | 	                    d
|z             Y 7w xY wd S |dk    r|                      dd           |                     ddk               |                     ddk               |                     ddk               dD ]:}	 t	          |          }# t          $ r | 	                    d
|z             Y 7w xY wd S | 	                    d|z             d S )Nr      i	   0x)maxsizei   l    )
21474836480o400000000000x100000000"0b10000000000000000000000000000000z(OverflowError on huge integer literal %rl    l             l    )92233720368547758080o20000000000000000000000x10000000000000000A0b100000000000000000000000000000000000000000000000000000000000000zWeird maxsize value %r)
r0   typeassertRaisesSyntaxErrorevalsysr;   
assertTrueOverflowErrorfail)r2   r;   sr3   s       r4   test_plain_integerszTokenTests.test_plain_integersv   sz   cDGG,,,s###$$$]333###+tT222j  ]N;;;OOMA-...OOJN+++OO=ABBB< N NNQAA$ N N NIIH1LMMMMMN	N N +++35NOOOOO4q8999OO.2333OO\_``aaaY N NNQAA$ N N NIIH1LMMMMMNN N II.899999s$   D,,"EEG"G76G7c                 &    d}d}d}d}d}d}d}d}d S )Nr   r@   l   ? l   
~l!]c l            l    r1   s     r4   test_long_integerszTokenTests.test_long_integers   s.    *SSr6   c                 2    d}d}d}d}d}d}d}d}d}d}d}d S )NgQ	@g     s@gjt?g  Bgt =g  WHBg     F@rP   r1   s     r4   test_floatszTokenTests.test_floats   s=    r6   c                 ^   t          j                    5  t          j        dt                     |                     t          d          d           |                     t          d          d           d d d            n# 1 swxY w Y   |                     t          t
          d           d S )Nignorez1 if 1else 0   z1 if 0else 0r   z0 if 1Else 0)warningscatch_warningssimplefilterSyntaxWarningr0   rH   rF   rG   r2   s    r4    test_float_exponent_tokenizationz+TokenTests.test_float_exponent_tokenization   s    $&& 	6 	6!(M:::T.111555T.111555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	+t^<<<<<s   A!BBBc           
      :   t           D ]F}|                     t          |          t          |                    dd                               Gt          D ]#}|                     t          t          |           $|                     t          t          d           d S )N_ _0)VALID_UNDERSCORE_LITERALSr0   rH   replaceINVALID_UNDERSCORE_LITERALSrF   rG   	NameError)r2   lits     r4   test_underscore_literalsz#TokenTests.test_underscore_literals   s    , 	D 	DCT#YYS[[b-A-A(B(BCCCC. 	6 	6Ck45555)T400000r6   c                    | j         } |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 S )N0b12z#invalid digit '2' in binary literal0b1_20b2r   zinvalid binary literal0b0o18z"invalid digit '8' in octal literal0o1_80o80o1_zinvalid octal literal0o0x1_zinvalid hexadecimal literalr:   1_zinvalid decimal literal012z`leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integersz1.2_1e2_z1e+r   r2   checks     r4   test_bad_numerical_literalsz&TokenTests.test_bad_numerical_literals   s]   'f;<<<g<===e:;;;f.///d,---f:;;;g;<<<e9:::f-...d+,,,f3444d1222d-...e4	5 	5 	5 	f/000f/000e./////r6   c                     d fd	}dD ]}t          |dd            || d|dk                || d	|d
k                || d            || d            || d            |d| d|dk                |d| d            || dd                                t          d          5  t          | ddd           d d d            n# 1 swxY w Y   t          j                    5  t          j        ddt                                          t          d          5  t          | ddd           d d d            n# 1 swxY w Y   t          j        dt                                          t          d          5  t          | ddd           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y    |d            |d            |d           d S )NFc                                         |           5  |rt          j        d          5 }                    t          d          5  t          | dd           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y                       |g            n                    | d           d d d            d S # 1 swxY w Y   d S )N)exprT)recordinvalid \w+ literal
<testcase>rH   )errtext)subTestrW   rX   assertRaisesRegexrG   compiler0   r   )testerrorwr2   s      r4   rv   z8TokenTests.test_end_of_numerical_literals.<locals>.check   s   4(( 	< 	< <!0=== @!33K$:< < @ @#D,???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ $$Q,,,,--d$: . < < <	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<sX   CBA*B*A..B1A.2B5CB	CB		1CCC)0xf0o70b190z1.1e31jr}   rH   zand xr   )r   zor xr   zin xznot in xzif x else yzx if zelse y[zfor x in ()]spamTu#   invalid character '⁄' \(U\+2044\)u   ⁄7rU   "is" with a literalr|   zis xr   z[0x1ffor x in ()]z[0x1for x in ()]z[0xfor x in ()]F)	r   r   rG   rW   rX   filterwarningsrZ   assertWarnsRegexrY   )r2   rv   nums   `  r4   test_end_of_numerical_literalsz)TokenTests.test_end_of_numerical_literals   s   
	< 
	< 
	< 
	< 
	< 
	< D 	@ 	@CCv...ES---u6666ES,,,scz3333ES,,,ES"""###ES%%%&&&E%#%%%cUl<<<<E'c'''(((ES,,,d++++ ''5[\\ < <3lF;;;< < < < < < < < < < < < < < < (** 	@ 	@'2G(57 7 7**=24 4 @ @sLLL,???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ %g}===++K24 4 @ @sLLL,???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	!""" !!!     sl   ?C  C$	'C$	>7G5E
GEGE8GF7+G7F;;G>F;?GG	G	c                    d}d}|                      t          |          dk    o||k               d}d}|                      t          |          dk    o||k    ot          |          dk               d}d}|                      t          |          dk    o||k    ot          |          dk               d}d}|                      t          |          d	k    o||k               d
}d
}|                      t          |          d	k    o||k               d}d}|                     ||           d}|                     ||           d}|                     ||           d}|                     ||           d S )Nr_   r   'rV   '   ""   zdoesn't "shrink" does it   zdoes "shrink" doesn't itz2
The "quick"
brown fox
jumps over
the 'lazy' dog.
)rJ   lenordr0   r2   r3   ys      r4   test_string_literalszTokenTests.test_string_literals  s   BA!(>Q???c!4??3q66Q;+R16+Rc!ffPRlSSST4??3q66Q;+R16+Rc!ffPRlSSS('A"/a000('A"/a000 HA 	A 	A 	Ar6   c                     d}|                      |t          u            |                     t          t          d           d S )N.z.. .)rJ   EllipsisrF   rG   rH   r1   s     r4   test_ellipsiszTokenTests.test_ellipsis+  s;    X&&&+tV44444r6   c                     d}|D ]m}|                      t                    5 }t          |dd           d d d            n# 1 swxY w Y   |                     dt	          |j                             nd S )N)zdef foo(z	
def foo(z	def foo(
z<test>execzwas never closed)rF   rG   r   assertInstr	exception)r2   samplesrM   cms       r4   test_eof_errorzTokenTests.test_eof_error0  s    : 	A 	AA"";// -28V,,,- - - - - - - - - - - - - - -MM,c",.?.?@@@@	A 	As   ?A	A	N)__name__
__module____qualname__test.supportr   test.support.warnings_helperr   r5   rN   rQ   rS   r\   rf   rw   r   r   r   r   rP   r6   r4   r,   r,   g   s        //////AAAAAA; ; ;": ": ":HT T T  = = =1 1 10 0 0,)! )! )!V& & &P5 5 5
A A A A Ar6   r,   var_annot_globalc                        e Zd Zd Zd Zd ZdS )CNSc                     i | _         d S N_dctr[   s    r4   __init__zCNS.__init__<  s    			r6   c                 >    || j         |                                <   d S r   )r   lower)r2   itemvalues      r4   __setitem__zCNS.__setitem__>  s    "'	$**,,r6   c                     | j         |         S r   r   r2   r   s     r4   __getitem__zCNS.__getitem__@  s    yr6   Nr   r   r   r   r   r   rP   r6   r4   r   r   ;  sA          ( ( (    r6   r   c                      e Zd ZddlmZ ddlmZ ddlmZ d Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z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+j,        d(d)          d*             Z-d+ Z.d, Z/d- Z0d. Z1d/ Z2d0 Z3d1 Z4d2 Z5d3 Z6d4 Z7d5 Z8d6 Z9d7 Z:d8 Z;d9 Z<d: Z=d; Z>d< Z?d= Z@d> ZAd? ZBd@ ZCdA ZDdB ZEdC ZFdD ZGdE ZHdF ZIdG ZJdH ZKdI ZLdJS )KGrammarTestsr   r   r   )check_no_warningsc                 $    t          d          }d S )Nz	1, 0 or 1)rH   r1   s     r4   test_eval_inputzGrammarTests.test_eval_inputS  s    r6   c                     d}dg}d }t            t          g d d| |            dz
  <   |                     |dg           d S )N   *   c                      dS NrV   rP   rP   r6   r4   onez/GrammarTests.test_var_annot_basics.<locals>.one\  s    1r6   r   rV   )intlistr0   )r2   var1my_lstr   s       r4   test_var_annot_basicsz"GrammarTests.test_var_annot_basicsW  s_    	 	 		q ssuuQw!%%%%%r6   c                    t          | d           t          | d           t          | d           t          | d           t          | d           t          | d           t          | d           t          | d           t          | d	           t          | d
           t          | d           t          | d           t          | d           t          | d           t          | d           d S )Nz
def f: intzx: int: strzdef f():
    nonlocal x: int
zdef f():
    global x: int
zx: int = y = 1zz = w: int = 1zx: int = y: int = 1z[x, 0]: int
z	f(): int
z	(x,): intz"def f():
    (x, y): int = (1, 2)
z!def f():
    x: int
    global x
z!def f():
    global x
    x: int
z#def f():
    x: int
    nonlocal x
z#def f():
    nonlocal x
    x: int
r   r[   s    r4   test_var_annot_syntax_errorsz)GrammarTests.test_var_annot_syntax_errorsc  sF   4...4///4 "9 	: 	: 	:4 "7 	8 	8 	84!12224!12224!677741114...4---4 "> 	? 	? 	? 	4 "2 	3 	3 	3 	4 "0 	1 	1 	1 	4 "4 	5 	5 	5 	4 "0 	1 	1 	1 	1 	1r6   c                    |                      t                    5  ddz  t          t          <   d d d            n# 1 swxY w Y   |                      t                    5  dt          t          <   d d d            n# 1 swxY w Y   d }|                     |j        i            d } |             d }|                      t                    5   |             d d d            n# 1 swxY w Y   d }	  |             n?# t          $ r2}| 	                    t          |          t                     Y d }~nd }~ww xY w G d d          }|                     |j        t          t          d	           |                      t                    5   G d
 d          }d d d            n# 1 swxY w Y   |                      t                    5   G d d|          }d d d            d S # 1 swxY w Y   d S )NrV   r   c                  "    d} dt           _        | S )NHellorV   r.   ab)sts    r4   fz6GrammarTests.test_var_annot_basic_semantics.<locals>.f  s    BACIr6   c                      d S r   rP   rP   r6   r4   f_OKz9GrammarTests.test_var_annot_basic_semantics.<locals>.f_OK        r6   c                  $    t          |            d S r   printr3   s    r4   fbadz9GrammarTests.test_var_annot_basic_semantics.<locals>.fbad  s    !HHHHHr6   c                  .    t          t                     d S r   )r   no_such_globalrP   r6   r4   f2badz:GrammarTests.test_var_annot_basic_semantics.<locals>.f2bad  s    .!!!!!r6   c                   2    e Zd ZU eed<   dZeed<   dZd ZdS )6GrammarTests.test_var_annot_basic_semantics.<locals>.C_C__fooattrrM   r.   c                     || _         d S r   r   r1   s     r4   r   z?GrammarTests.test_var_annot_basic_semantics.<locals>.C.__init__  s    r6   N)	r   r   r   r   __annotations__rM   r   zr   rP   r6   r4   Cr     s@         JJJAsOOOA         r6   r   )r   rM   c                   "    e Zd ZU de_        e dS )9GrammarTests.test_var_annot_basic_semantics.<locals>.CBadr   N)r   r   r   no_such_name_definedr   r   rP   r6   r4   CBadr     s          12$)3222r6   r   c                   ,    e Zd ZU eed<   g e_        e dS ):GrammarTests.test_var_annot_basic_semantics.<locals>.Cbad2r3   N)r   r   r   r   r   r3   r   r   rP   r6   r4   Cbad2r     s$         Tr6   r   )rF   ZeroDivisionErrorno_namedoes_not_existrd   r0   r   UnboundLocalError	ExceptionassertIsrE   r   r   )	r2   r   r   r   r   er   r   r   s	            r4   test_var_annot_basic_semanticsz+GrammarTests.test_var_annot_basic_semantics  s   011 	9 	956qSGN#	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9y)) 	- 	-+,GN#	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-
	 	 	 	*B///	 	 		 	 	 011 	 	DFFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 		" 	" 	"	.EGGGG 	. 	. 	.MM$q''9--------	.	  	  	  	  	  	  	  	  	*#,F,FGGGy)) 	3 	33 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 y)) 	 	       	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sm   :>>A;;A?A?C%%C),C)4
C? ?
D;	(D66D;F''F+.F+G((G,/G,c                     G d d          } G d d|          } G d d|          } G d d          } G d	 d
||          } G d d||          }|                      |j        dt          i           |                      |j        i            |                      |j        dt          i           |                      |j        dt          i           |                      |j        i            |                      |j        i            d S )Nc                       e Zd ZU eed<   dS )4GrammarTests.test_annotations_inheritance.<locals>.Ar   Nr   r   r   r   r   rP   r6   r4   Ar              IIIIIr6   r  c                       e Zd ZdS )4GrammarTests.test_annotations_inheritance.<locals>.BNr   r   r   rP   r6   r4   Br            Dr6   r  c                       e Zd ZU eed<   dS )4GrammarTests.test_annotations_inheritance.<locals>.Cr   N)r   r   r   r   r   rP   r6   r4   r   r	    r  r6   r   c                       e Zd ZU eed<   dS )4GrammarTests.test_annotations_inheritance.<locals>.Dattr2Nr   rP   r6   r4   Dr    s         JJJJJr6   r  c                       e Zd ZdS )4GrammarTests.test_annotations_inheritance.<locals>.ENr  rP   r6   r4   Er    r  r6   r  c                       e Zd ZdS )4GrammarTests.test_annotations_inheritance.<locals>.FNr  rP   r6   r4   Fr    r  r6   r  r   r  )r0   r   r   r   )r2   r  r  r   r  r  r  s          r4   test_annotations_inheritancez)GrammarTests.test_annotations_inheritance  s   	 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	1 	 	 		 	 	 	 	1 	 	 	*VSM:::*B///*VcN;;;*WsO<<<*B///*B/////r6   c                      G d dt                     } G d d|          }|                     |j        d         d           d S )Nc                   $    e Zd Zed             ZdS )>GrammarTests.test_var_annot_metaclass_semantics.<locals>.CMetac                 "    dt                      iS Nr   )r   )metaclsnamebaseskwdss       r4   __prepare__zJGrammarTests.test_var_annot_metaclass_semantics.<locals>.CMeta.__prepare__  s    )35511r6   N)r   r   r   classmethodr  rP   r6   r4   CMetar    s-        2 2 [2 2 2r6   r   c                       e Zd ZU ded<   dS );GrammarTests.test_var_annot_metaclass_semantics.<locals>.CCANNOTXXN)r   r   r   r   rP   r6   r4   CCr"    s         KKKKKr6   r%  )	metaclassxxr#  )rE   r0   r   )r2   r   r%  s      r4   "test_var_annot_metaclass_semanticsz/GrammarTests.test_var_annot_metaclass_semantics  s    	2 	2 	2 	2 	2D 	2 	2 	2	 	 	 	 	5 	 	 	 	+D17;;;;;r6   c           	         |                      t          j        i            |                      t          j        dt          t
          t          j        t          t          f         t          t          z  d           |                      t          j	        j        dt          d           |                      t          j        i            d S )Nr.   )rV   r3   r   r   u{   )123o)r0   r   r   
ann_moduler   r   typingTuplefloatMrE   r	   r[   s    r4   test_var_annot_module_semanticsz,GrammarTests.test_var_annot_module_semantics  s    -r22233V\#s(5KRUX]R]^^	` 	` 	`5&)55	7 	7 	74b99999r6   c                    t          j        d          }|                     t                    5  |                                 d d d            n# 1 swxY w Y   |                     t                    5  |                                 d d d            n# 1 swxY w Y   |                     t                    5  |                    d           d d d            d S # 1 swxY w Y   d S )Nztest.typinganndata.ann_module3r   )r   import_fresh_modulerF   rd   	f_bad_ann	g_bad_ann	D_bad_ann)r2   ann_module3s     r4   test_var_annot_in_modulez%GrammarTests.test_var_annot_in_module  s    $78XYYy)) 	$ 	$!!###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$y)) 	$ 	$!!###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$y)) 	% 	%!!!$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s5   AAA5BBB;CC"%C"c                     i }i }t          d||           |                     |d         dt          d           |                     t                    5  |d          d d d            d S # 1 swxY w Y   d S )Nz.'docstring'
__annotations__[1] = 2
x: int = 5
r   r.   )rV   r3   )r   r0   r   rF   KeyError)r2   gnslnss      r4   test_var_annot_simple_execz'GrammarTests.test_var_annot_simple_exec  s    r#  #	' 	' 	' 	./QS1A1ABBBx(( 	# 	#!""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   	A**A.1A.c                    dt                      i}t          d|           |                     |d         d         t                     |                     |d         d         t                     |                     t                    5  |d         d          d d d            n# 1 swxY w Y   i  G fdd          }t          di  |                       |                     d         d         t                     d S )	Nr   z'X: int; Z: str = "Z"; (w): complex = 1jr3   r   r   c                   &    e Zd Zd Z fdZd ZdS )5GrammarTests.test_var_annot_custom_maps.<locals>.CNS2c                     i | _         d S r   r   r[   s    r4   r   z>GrammarTests.test_var_annot_custom_maps.<locals>.CNS2.__init__  s    			r6   c                 &    || j         |<   ||<   d S r   r   r2   r   r   	nonloc_nss      r4   r   zAGrammarTests.test_var_annot_custom_maps.<locals>.CNS2.__setitem__      "'	$"'	$r6   c                     | j         |         S r   r   r   s     r4   r   zAGrammarTests.test_var_annot_custom_maps.<locals>.CNS2.__getitem__      y&r6   Nr   )rF  s   r4   CNS2rB    sL          ( ( ( ( (' ' ' ' 'r6   rJ  z
x: int = 1)r   r   r0   r   r   rF   r<  )r2   nsrJ  rF  s      @r4   test_var_annot_custom_mapsz'GrammarTests.test_var_annot_custom_maps  sV   '6;;;-.s3S999-.s3S999x(( 	' 	' !#&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'		' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	\2ttvv&&&#45c:C@@@@@s   
B%%B),B)c                     t                      di G fdd          }t          di  |                       |                     d         d         t                     d S )Nr   c                   *    e Zd Z fdZfdZd ZdS )1GrammarTests.test_var_annot_refleak.<locals>.CNS2c                     di| _         d S r  r   )r2   cnss    r4   r   z:GrammarTests.test_var_annot_refleak.<locals>.CNS2.__init__  s    .4			r6   c                 &    || j         |<   ||<   d S r   r   rE  s      r4   r   z=GrammarTests.test_var_annot_refleak.<locals>.CNS2.__setitem__  rG  r6   c                     | j         |         S r   r   r   s     r4   r   z=GrammarTests.test_var_annot_refleak.<locals>.CNS2.__getitem__  rI  r6   Nr   )rQ  rF  s   r4   rJ  rO    sV        5 5 5 5 5( ( ( ( (' ' ' ' 'r6   rJ  zX: strr3   )r   r   r0   r   )r2   rJ  rQ  rF  s     @@r4   test_var_annot_refleakz#GrammarTests.test_var_annot_refleak   s     ee&,		' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	Xr4466"""#45c:C@@@@@r6   c                 d   i }t          d|           |                     |d         d           d}t          ||           |                     t           |d                               d g           dddt          j        d	}t          d
|           |                     |d         d           d S )Nzx: tuple = 1, 2r3   r   zdef f():
    x: int = yieldr   rV   r.         r   )r   r   cr0  zx: Tuple[int, ...] = a,*b,crV   r.   rW  rX  r   )r   r0   r   r/  r0  )r2   rK  stmts      r4   test_var_annot_rhszGrammarTests.test_var_annot_rhs  s    ###C&)))%T2gbgii4&1119!flCC*B///C/22222r6   c                    d } |              |d   |di i  d }d }|                      |j        j        d           |                      |j        j        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   |	g pdg   |	g di odR i i   |	di ddi  |	di ddipi  dd}
 |
d            |
dd            |
di ddi dd} |dd            |ddd            |d   |dgdR    |ddgdR    |d!i ddi d!d } |              |d            |dd            |d!   |dgd"R    |di ddi  |di 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i ddi dd(} |d            |dd            |ddd           dd)} |dd            |ddd            |dddd            |d'   |d!i ddi d!d*} |              |d            |dd            |ddd            |dgd+R    |di ddd# d!d,} |d            |dd            |ddd            |dddd            |d'   |ddgd-R    |dgd"R i ddi d!d.} |dd            |ddd            |dddd            |ddddd            |d'   |ddgd-R    |dgdR i d/di t          j                    5  t          j        d0t                     	 t          di d2di |                     d3           n# t          $ r Y nw xY wd d d            n# 1 swxY w Y   d4 } |d56           d5d7d8} |ddd59            |ddd5d:;            |ddd5d:<           d5d9d=} |ddd5d5d:>            |ddd5d:d5?           | 
                    t          t          d@           | 
                    t          t          dA           | 
                    t          t          dB           dC }|                       |dgddgR dddDdEdddDf           |                       |dgddR  d'i f           | 
                    t          t          dF           |                       |di dGdHdIddGdHdIf           |                       |ddJdHidKdGiddGdHdIf           t          | dL           t          | dM           dNt          fdO}|                      |j        dNt          i           d1t           fdP}|                      |j        d1t           i           d1t           fdQ}|                      |j        d1t           i           dd1t           fdS}|                      |j        d1t           i           d1t          fdT}|                      |j        d1t          i           d1t"          fdU}|                      |j        d1t"          i           ddW}|                      |j        dVdi           ddX}|                      |j        dVdi           ddY}|                      |j        dddZ           dd[}|                      |j        dddZ           ddd^}|                      |j        ddddd_           ddd`da	 	 	 ddg}|                      |j        dddddddedfdh           ddd`daddddd\ddit           d]ddbddcddddedNdffdj}|                      |j        dddt           ddddedfdk	            G dl dm          } G dn do|          }|                      |j        j        dpdi           |                      |j        j        dpdi           dq dNt          fdr            }|                      |j        dNt          i           dt             }x}du             }fdvdw             }dxdxgd         dy             }                      dz             }gd         j        j        d{             }dfd|}dfd}	}dd~fd
}dNt           ffd}d }d }d }d }d }d }d }d }d }d }d }d }d }d }d }d S )Nc                      d S r   rP   rP   r6   r4   f1z%GrammarTests.test_funcdef.<locals>.f1+  r   r6   rP   c                     d S r   rP   one_arguments    r4   f2z%GrammarTests.test_funcdef.<locals>.f2/  r   r6   c                     d S r   rP   two	argumentss     r4   f3z%GrammarTests.test_funcdef.<locals>.f30  r   r6   ra  re  c                     d S r   rP   )one_args    r4   a1z%GrammarTests.test_funcdef.<locals>.a13  r   r6   c                     d S r   rP   )rf  argss     r4   a2z%GrammarTests.test_funcdef.<locals>.a24  r   r6   c                      d S r   rP   rests    r4   v0z%GrammarTests.test_funcdef.<locals>.v05  r   r6   c                     d S r   rP   r   rq  s     r4   v1z%GrammarTests.test_funcdef.<locals>.v16  r   r6   c                     d S r   rP   r   r   rq  s      r4   v2z%GrammarTests.test_funcdef.<locals>.v27  r   r6   rV   r.   rW  rX  r            r9   r   c                     d S r   rP   r   s    r4   d01z&GrammarTests.test_funcdef.<locals>.d01M  r   r6   rV   r   c                     d S r   rP   r   s     r4   d11z&GrammarTests.test_funcdef.<locals>.d11U  r   r6   r   c                     d S r   rP   r   r   rY  s      r4   d21z&GrammarTests.test_funcdef.<locals>.d21Y  r   r6   rV   r.   rW  r.   rW  rW  rY  c                     d S r   rP   r   s     r4   d02z&GrammarTests.test_funcdef.<locals>.d02`  r   r6   r   r.   r   c                     d S r   rP   r  s      r4   d12z&GrammarTests.test_funcdef.<locals>.d12h  r   r6   c                     d S r   rP   r   r   rY  ds       r4   d22z&GrammarTests.test_funcdef.<locals>.d22l  r   r6   c                     d S r   rP   rt  s     r4   d01vz'GrammarTests.test_funcdef.<locals>.d01vp  r   r6   )rV   r.   rW  rX  c                     d S r   rP   rw  s      r4   d11vz'GrammarTests.test_funcdef.<locals>.d11vw  r   r6   c                     d S r   rP   r   r   rY  rq  s       r4   d21vz'GrammarTests.test_funcdef.<locals>.d21v{  r   r6   c                     d S r   rP   rw  s      r4   d02vz'GrammarTests.test_funcdef.<locals>.d02v  r   r6   rV  c                     d S r   rP   r  s       r4   d12vz'GrammarTests.test_funcdef.<locals>.d12v  r   r6   rW  rX  r   c                     d S r   rP   )r   r   rY  r  rq  s        r4   d22vz'GrammarTests.test_funcdef.<locals>.d22v  r   r6   r  rU   r3   s   fooz/Bytes should not work as keyword argument namesc                     | S r   rP   keys    r4   pos0key1z+GrammarTests.test_funcdef.<locals>.pos0key1  s    Sjr6   d   r  )k2c                    | |||fS r   rP   )p1p2k1r  s       r4   pos2key2z+GrammarTests.test_funcdef.<locals>.pos2key2  s    Br"RK-?r6   )r     )r  r  )r  r  c                    | ||||fS r   rP   )r  r  r  r  kwargs        r4   pos2key2dictz/GrammarTests.test_funcdef.<locals>.pos2key2dict  s    Br"UAR:Rr6   )r  tokwarg1tokwarg2)r  r  r  zdef f(*): passzdef f(*,): passzdef f(*, **kwds): passc                  
    | |fS r   rP   )rm  kwargss     r4   r   z$GrammarTests.test_funcdef.<locals>.f  s    <r6   r3   r   )rV   rW  rX  zf(1, x=2, *(3,4), x=5)	scrambledfried)eggsr   r   r  z
f(*g(1=2))zf(**g(1=2))returnc                     d S r   rP   r   s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  r   r6   c                     d S r   rP   r   s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  r   r6   c                    d S r   rP   r   s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  r   r6   r   c                    d S r   rP   r   s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  r   r6   c                      d S r   rP   r   s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  r   r6   c                      d S r   rP   r   s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  r   r6   r   c                     d S r   rP   r  s     r4   r   z$GrammarTests.test_funcdef.<locals>.f  r   r6   c                    d S r   rP   r  s     r4   r   z$GrammarTests.test_funcdef.<locals>.f  r   r6   c                     d S r   rP   r  s       r4   r   z$GrammarTests.test_funcdef.<locals>.f  r   r6   )r   rY  c                    d S r   rP   r  s       r4   r   z$GrammarTests.test_funcdef.<locals>.f  r   r6   r   gc                     d S r   rP   )r   r   rY  r  r   r   r  s          r4   r   z$GrammarTests.test_funcdef.<locals>.f  r   r6   )r   rY  r   r  
   )ijhr  k      c                    d S r   rP   r   r   rY  r  r   r   r  r  r  r  r  s              r4   r   z$GrammarTests.test_funcdef.<locals>.f      "dr6   )r   rY  r   r  r  r  r  r  r   c                   d S r   rP   r  s              r4   r   z$GrammarTests.test_funcdef.<locals>.f  r  r6   )	r   rY  r   r   r  r  r  r  r  c                       e Zd ZddZdS )'GrammarTests.test_funcdef.<locals>.Spam	_Spam__kwrV   c                    d S r   rP   )r2   r  s     r4   r   z)GrammarTests.test_funcdef.<locals>.Spam.f      r6   N)r  rV   )r   r   r   r   rP   r6   r4   Spamr    s(             r6   r  c                       e Zd ZdS )&GrammarTests.test_funcdef.<locals>.HamNr  rP   r6   r4   Hamr              r6   r  r  c                     | S r   rP   r   s    r4   nullz'GrammarTests.test_funcdef.<locals>.null  s    AXr6   c                     d S r   rP   r   s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  s    $r6   Fc                     d S r   rP   r   s    r4   r   z$GrammarTests.test_funcdef.<locals>.f      $r6   c                     d S r   rP   r   s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  r  r6   c                      |           S r   rP   )r   r  s    r4   <lambda>z+GrammarTests.test_funcdef.<locals>.<lambda>  s    4477 r6   c                     d S r   rP   r   s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  r  r6   .c                     d S r   rP   r   s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  r  r6   c                     d S r   rP   r   s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  r  r6   c                     d S r   rP   r   s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  r  r6   c                       S r   rP   closures   r4   r   z$GrammarTests.test_funcdef.<locals>.f   s    r6   c                     S r   rP   )r3   r  s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  s    7Nr6   r  c                     S r   rP   )r  r  s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  s    g~r6   c                       S r   rP   r  s   r4   r   z$GrammarTests.test_funcdef.<locals>.f  s    wr6   c                     d S r   rP   r}  s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  r   r6   c                      d S r   rP   rm  s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  r   r6   c                      d S r   rP   r  s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  r   r6   c                     d S r   rP   r   rm  s     r4   r   z$GrammarTests.test_funcdef.<locals>.f	  r   r6   c                     d S r   rP   r   r  s     r4   r   z$GrammarTests.test_funcdef.<locals>.f
  r   r6   c                     d S r   rP   r   rm  s     r4   r   z$GrammarTests.test_funcdef.<locals>.f  r   r6   c                     d S r   rP   r   s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  r   r6   c                      d S r   rP   rm  r  s     r4   r   z$GrammarTests.test_funcdef.<locals>.f  r   r6   c                    d S r   rP   r   r   rm  s      r4   r   z$GrammarTests.test_funcdef.<locals>.f  r   r6   c                    d S r   rP   r   s     r4   r   z$GrammarTests.test_funcdef.<locals>.f  r   r6   c                     d S r   rP   r   rm  r  s      r4   r   z$GrammarTests.test_funcdef.<locals>.f  r   r6   c                     d S r   rP   r   rm  r  s      r4   r   z$GrammarTests.test_funcdef.<locals>.f  r   r6   c                     d S r   rP   r   r  s     r4   r   z$GrammarTests.test_funcdef.<locals>.f  r   r6   c                    d S r   rP   r   r   rm  r  s       r4   r   z$GrammarTests.test_funcdef.<locals>.f  r   r6   c                    d S r   rP   r   r   r  s      r4   r   z$GrammarTests.test_funcdef.<locals>.f  r   r6   r   )r   )r   rW  )r   rV   rY  r.   )rY  r.   r   rV   )rX  r   )r   rV   rY  r.   r   rW  r  ry  )r   rV   rY  r.   r   rW  r  ry  r  rz  r  r9   r  r  r  r  )r0   __code__co_varnamesrW   rX   rY   BytesWarningr   rL   	TypeErrorrF   rG   rH   r   r   r   r   r1  r   __call__)r2   r_  rc  rh  rk  rn  rr  ru  rx  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  s                               @@r4   test_funcdefzGrammarTests.test_funcdef  s    	

B
B""""$$$02CDDD02FGGG   !!!

1
1
1a
1a			

1
1
1Q
1Qq1Qq1Q
1
1
1Q
1Qq			
1Qq1Qq1Q
1Q
1Qq			
1Qq
1Qq1Qq1QAT

RYA3.2.	r...2...s1gs1gmAAq			#a    Aq			Aq!YAAq4SGAAq			VA#aAA""""AAq			Aq!%%%%Aq			Aq!Aq!Q""""QQ


ldAw%%%%QQ


Q1((((Q


Q1Q1alc1X''''QQ


Q1Q  QQ   ****QQ


Q1Q1alQIQ""""#q"""----Q


Q1Q1aQ1alQIQ$$$$C8$$$ $&& 	M 	M!(L999M''F1;''' 		KLLLL    		M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	)((S'*?????A#A##&&&&A##&&&&'*RRRRRQqCc::::Qq#ss;;;;+t-=>>>+t->???+t-EFFF	  	  	 10QF00a00099:NN3D 	E 	E 	E1ua<*<===+t-EFFFBB[AABBk'BBC	E 	E 	E@@@F;+?@@k'BBC	E 	E 	E 	4...4/// 	D*Xt,<===*S#J777*S#J777######*S#J777#*S#J7775*S%L999*S!H555!!!!*S!H555%%%%*!!,<,<===((((*!!,<,<===;;;;;* qqq99	; 	; 	;	#a 	# 	#	#	# 	# 	# 	#* qqqqq!R1 1	2 	2 	2	#RT 	# 	# 	#A 	#! 	#1 	#S 	#Q 	#1 	#a 	#	#	# 	# 	# 	#* !!!RS "b2 2	3 	3 	3	 	 	 	 	 	 	 	 	$/+q1ABBB.a0@AAA	D 
*Xt,<===  
 
				 
	
tS	!	 
		dD		 
	
		$ 
%	$ """"""%%%%%%%&3&&&&&& 	###!!!&&&&&&""")))%%%%%s6   R,,R:R,
RR,RR,,R03R0c                    d }|                       |            d           d }d }|                       |            g d           d&dfdfd	}|                       |            d           d'd}|                       |dd
          d           |                       |dd
d          d           t          | 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 S )(Nc                      dS Nr   rP   rP   r6   r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>  s    a r6   r   c                  &    t           t                   S r   )r   r  rP   r6   r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>  s
    ad r6   c                      d dD             S )Nc                     g | ]}d |k     	S r  rP   .0r3   s     r4   
<listcomp>z?GrammarTests.test_lambdef.<locals>.<lambda>.<locals>.<listcomp>  s    111q1u111r6   )rW  r   rP   rP   r6   r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>  s    11j111 r6   )r   rV   r   rV   c                     | S r   rP   r   s    r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>  s     r6   c                      |             S r   rP   )r   s    r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>  s    AACC r6   c                      |             S r   rP   r   s    r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>  s    !!## r6   r.   c                     | |z   |z   S r   rP   )r3   r   r   s      r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>  s    q1uqy r6   r   rW  ry  zlambda x: x = 2zlambda (None,): None   r  c                    | |z   |z   S r   rP   )r3   r   r  s      r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>$  s    1Q3q5 r6      r     c                     dS r  rP   r}  s    r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>)  s     r6   c                      dS r  rP   r  s    r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>*  s    Q r6   c                      dS r  rP   r  s    r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>+  s    a r6   c                     dS r  rP   r  s     r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>,       r6   c                     dS r  rP   r  s     r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>-  s     r6   c                     dS r  rP   r  s     r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>.  r$  r6   c                     dS r  rP   r  s    r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>/  s    A r6   c                      dS r  rP   r  s     r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>0  s    Q r6   c                    dS r  rP   r  s      r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>1  s    1 r6   c                    dS r  rP   r   s     r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>2  s    q r6   c                     dS r  rP   r  s      r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>3       r6   c                     dS r  rP   r   s      r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>4  r,  r6   c                     dS r  rP   r  s     r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>5  s    A r6   c                    dS r  rP   r  s       r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>6  s    1 r6   c                    dS r  rP   r  s      r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>7  s    q r6   r  r  r0   r   )r2   l1l2l3l4l5l6l10l11l12l13l14l15l16l17l18l19l20l21l22l23l24s                         r4   test_lambdefzGrammarTests.test_lambdef  s   Zq!!!]11yyy)))#1>>777===q!!!(((Aq1%%%Aq!a(((4!23334!7888!((((Aa&)))Aa"v... l!!""!!o&&$$  ))))%%,,((r6   c                 &    d}~d } |             d S )NrV   c                      d} ~ d S r   rP   r   s    r4   fooz*GrammarTests.test_simple_stmt.<locals>.foo@  s    AQQQr6   rP   )r2   r3   rJ  s      r4   test_simple_stmtzGrammarTests.test_simple_stmt=  s)    	  	  	  	r6   c                     	 	 d}d}dx}x}}d\  }}}dx}x\  }}}x\  }}}}t          | d           t          | d           d S )NrV   r  )rV   r.   )rW  rX  z	x + 1 = 1za + 1 = b + 2r   )	r2   r3   r   r   abcr   r   rY  xyzs	            r4   test_expr_stmtzGrammarTests.test_expr_stmtH  sr    	A1a(444gaA41a#4---411111r6   c           	      n   d}g d}|D ]*}d                     |          }|D ]}|                     |          }|                     |          5  |                     t          |          5  t	          |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                    dd          }|                     |          5  |                     t          d          5  t	          |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   ,d S )N)r   r   )z{} fooz{} {{1:foo}}zif 1: {} foozif 1: {} {{1:foo}}zif 1:
    {} foozif 1:
    {} {{1:foo}}zcall to '{}')sourcerJ  z(foo.)zinvalid syntax)formatr   r   rG   r   rb   )r2   keywordscaseskeyword
custom_msgcaserQ  s          r4   (test_former_statements_refer_to_builtinsz5GrammarTests.test_former_statements_refer_to_builtinsW  s@   "
 
 
   
	% 
	%G'..w77J % %W--\\\00 % %//ZHH % %V% % % % % % % % % % % % % % %% % % % % % % % % % % % % % %  x88\\\00 % %//=MNN % %V% % % % % % % % % % % % % % %% % % % % % % % % % % % % % %%
	% 
	%sl   B -B		=B 	BB BB  B$'B$D&3D	D&DD&DD&&D*-D*c                     g d}|\  }}}|||f}~~~~~d\  }}}~~~d\  }}}}	}
}}~~~~	~
~d\  }}}}	}
}}~~~~	~
~t          d          }|dd= t          ddd	           d S )
Nr  rN  abcdefgabcdrV   r.   z-del a, (b[0].c, (d.e, f.g[1:2])), [h.i.j], ()r}   r   )r   r   )r2   rM  r3   r   r   rN  r   r   rY  r  r   r   r  r[  s                 r4   test_del_stmtzGrammarTests.test_del_stmtn  s    gg1aAgq1c1a (1aAq!1Aq'1aAq!1AqF||1I?vVVVVVr6   c                     d S r   rP   r[   s    r4   test_pass_stmtzGrammarTests.test_pass_stmt  s    r6   c                     d S r   rP   r[   s    r4   test_break_stmtzGrammarTests.test_break_stmt  s    r6   c                     d}|rd}d}|sd}	 #  d}Y nxY w||dk    r|                      |           d}|sd}	 	 d}	# d}w xY w|dk    r|                      |           d S d S )NrV   r   r_   okz&continue failed to continue inside tryz'continue inside try called except blockzfinally block not calledrL   )r2   r  msgs      r4   test_continue_stmtzGrammarTests.test_continue_stmt  s     Q 	@C@@?  	@ $;;IIcNNN 	,Cd



$;;IIcNNNNN ;s
   Ac                 (     d fd	} |             d S )NrV   r   c                     d}|r |dz  }	 | r|dk    r| dz  } n|dz  }#   xY w|dk    s|dk    r                     d           d S d S )Nr.   rV   z1continue then break in try/except in loop broken!rc  )extra_burning_oilcount	big_hippor2   s      r4   
test_innerz9GrammarTests.test_break_continue_loop.<locals>.test_inner  s    I 	
( Y!^^)Q.)NIqyyINN		MNNNNN +Ns       #)rV   r   rP   )r2   rk  s   ` r4   test_break_continue_loopz%GrammarTests.test_break_continue_loop  s8    	O 	O 	O 	O 	O 	O 	
r6   c                     d }d }d } |              |            } |            }|                      |dd           t          | d           d S )Nc                      d S r   rP   rP   r6   r4   g1z$GrammarTests.test_return.<locals>.g1  s    &&r6   c                      dS r   rP   rP   r6   r4   g2z$GrammarTests.test_return.<locals>.g2  s    r6   c                      ddg} dg| R S )Nr.   rW  rV   rP   r  s    r4   g3z$GrammarTests.test_return.<locals>.g3  s    AA5q55Lr6   r  z unparenthesized star expr returnzclass foo:return 1r1  )r2   ro  rq  rs  r3   r   s         r4   test_returnzGrammarTests.test_return  sv    	 	 	 	BDDBDDI'IJJJ4!566666r6   c                    d}|dk     r|dz  }	 	 n#  Y nxY w|                      |d           d}|dk     r|dz  }	 	 n#  Y nxY w|                      |d           d}|dk     r|dz  }	 ddz   n#  Y nxY w|                      |d           dD ]#}|                      |d           	 	  n#  Y  nxY w|                      |d           dD ]#}|                      |d           	 	  n#  Y  nxY w|                      |d           dD ]'}|                      |d           	 ddz    n#  Y  nxY w|                      |d           d S Nr   r.   rV   r   rV   r/   r2   ri  s     r4   test_break_in_finallyz"GrammarTests.test_break_in_finally  s   aiiQJE"""aiiQJE"""aiiQJE!""" 	 	EUA&&&""" 	 	EUA&&&""" 	 	EUA&&&!"""""s-   A)A/ /A3*B/&C+D&&D+c                    d}|dk     r|dz  }	 	 #  Y xY w|                      |d           d}|dk     r|dz  }	 	 #  Y xY w|                      |d           d}|dk     r|dz  }	 ddz   #  Y xY w|                      |d           dD ]}	 	 #  Y 	xY w|                      |d           dD ]}	 	 #  Y 	xY w|                      |d           dD ]}	 ddz   	#  Y xY w|                      |d           d S rv  r/   rx  s     r4   test_continue_in_finallyz%GrammarTests.test_continue_in_finally	  s   aiiQJE"""aiiQJE"""aiiQJE!""" 	 	E""" 	 	E""" 	 	E!"""""s-   A)A/ /A3B7B;CC#c                     d }|                       |            d           d }|                       |            d           d }|                       |            d           d S )Nc                      	 	 dS #  Y dS xY wr   rP   rP   r6   r4   ro  z/GrammarTests.test_return_in_finally.<locals>.g1?  s    qqqqqqqq   
rV   c                      	 	 dS #  Y dS xY w)NrW  rP   rP   r6   r4   rq  z/GrammarTests.test_return_in_finally.<locals>.g2F  s    qqqqqqqqr~  rW  c                  "    	 ddz   dS #  Y dS xY w)NrV   r   rX  rP   rP   r6   r4   rs  z/GrammarTests.test_return_in_finally.<locals>.g3M  s$    !qqqqqqqqs   	 rX  r/   )r2   ro  rq  rs  s       r4   test_return_in_finallyz#GrammarTests.test_return_in_finally>  s    	 	 	
 	q!!!	 	 	
 	q!!!	 	 	
 	q!!!!!r6   c                 
   d }|                       |d          d           |                       |d          d           d }|                       |d          d           |                       |d          d           d S )Nc                 \    dD ]%}d}|dk     r|dz  }	 ||z   | r nc S # | r Y nw xY w&d||fS )Nrw  r   r  r  endrP   r3   ri  count2s      r4   ro  z;GrammarTests.test_break_in_finally_after_return.<locals>.g1V  su     " "rkkbLF"$v~ "!E" " "1 "!EEEEEE%''s   %%Fr  T)r  rV   r  c                 R    dD ] }dD ]}	 ||z   | r  nc c S # | r Y  nw xY w!d||fS )Nrw  )r  r  r  rP   r  s      r4   rq  z;GrammarTests.test_break_in_finally_after_return.<locals>.g2d  s{     " "& " "F"$v~ "!EE" " " " "1 "!EEEEEEE%''s     r/   r2   ro  rq  s      r4   "test_break_in_finally_after_returnz/GrammarTests.test_break_in_finally_after_returnT  s    
	( 
	( 
	( 	EB'''D>222	( 	( 	( 	EB'''D>22222r6   c                 
   d }|                       |d          d           |                       |d          d           d }|                       |d          d           |                       |d          d           d S )	Nc                 F    d}|dk     r|dz  }	 || r S # | r Y w xY wd|fS )Nr   r  rV   r  rP   r3   ri  s     r4   ro  z>GrammarTests.test_continue_in_finally_after_return.<locals>.g1r  sT    E#++
!  ! !q ! %<s    FrV   T)r  r  c                 8    dD ]}	 || r c S # | r Y w xY wd|fS )Nrw  r  rP   r  s     r4   rq  z>GrammarTests.test_continue_in_finally_after_return.<locals>.g2  sV     ! !!  ! ! ! !q ! %<s   r   )r  rV   r/   r  s      r4   %test_continue_in_finally_after_returnz2GrammarTests.test_continue_in_finally_after_returnp  s    		  		  		  	EA&&&D<000	  	  	  	EA&&&D:.....r6   c                 L   d }d }d }d }d }d }t          | d           t          | d           d	 }d
 }t          | d           t          | d           d }d }d }d }d }|                     t           |                      dg           t          | d           t          | d           t          | d           t          | d           t          | d           t          | d           t          | d           t          | d           t          | d           d S )Nc               3      K   dV  d S r   rP   rP   r6   r4   r  z"GrammarTests.test_yield.<locals>.g  s      qr6   c               3      K   dE d {V  d S NrP   rP   rP   r6   r4   r  z"GrammarTests.test_yield.<locals>.g  s      Br6   c               3      K   dV } d S r   rP   r   s    r4   r  z"GrammarTests.test_yield.<locals>.g  s      1WWr6   c               3      K   dE d {V } d S r  rP   r   s    r4   r  z"GrammarTests.test_yield.<locals>.g  s      ]]]]]]r6   c               3      K   dV  d S N)rV   rV   rP   rP   r6   r4   r  z"GrammarTests.test_yield.<locals>.g  s      tr6   c               3      K   dV } d S r  rP   r   s    r4   r  z"GrammarTests.test_yield.<locals>.g  s      4ZZr6   zdef g(): yield from (), 1zdef g(): x = yield from (), 1c               3      K   ddV f d S r   rP   rP   r6   r4   r  z"GrammarTests.test_yield.<locals>.g  s      1WWr6   c               3      K   ddE d {V f d S NrV   rP   rP   rP   r6   r4   r  z"GrammarTests.test_yield.<locals>.g  s"      ]]]]]]####r6   zdef g(): 1, yield 1zdef g(): 1, yield from ()c               3   ,   K   t          dV            d S r   r   rP   r6   r4   r  z"GrammarTests.test_yield.<locals>.g  s      !GGr6   c               3   .   K   t          dV d           d S r   r  rP   r6   r4   r  z"GrammarTests.test_yield.<locals>.g  s      !GGar6   c               3   4   K   t          dE d {V            d S r  r  rP   r6   r4   r  z"GrammarTests.test_yield.<locals>.g  s%      rMMMMMM#####r6   c               3   6   K   t          dE d {V d           d S )NrP   rV   r  rP   r6   r4   r  z"GrammarTests.test_yield.<locals>.g  s'      rMMMMMMA&&&&&r6   c               3   "   K   d} dddg| R V  d S )NrX  r   ry  rV   r.   rW  rP   rp  s    r4   r  z"GrammarTests.test_yield.<locals>.g  s'      q!Q~~~!5!5!5!5!5r6   )rV   r.   rW  rX  r   ry  zdef g(): f(yield 1)zdef g(): f(yield 1, 1)zdef g(): f(yield from ())zdef g(): f(yield from (), 1)yieldz
yield fromzclass foo:yield 1zclass foo:yield from ()zdef g(a:(yield)): pass)r   r0   r   )r2   r  s     r4   
test_yieldzGrammarTests.test_yield  s~   """4!<===4!@AAA###4!67774!<===   ###&&&555aacc%7$89994!67774!9:::4!<===4!?@@@4)))4...4!45554!:;;;4!9:::::r6   c                    d }d }| j         } |dd            |dd            |dd            |dd            |d	d
            |dd
            |dd            |dd            |dd            |dd           d S )Nc               3   (   K   d dV fD              d S )Nc                     g | ]}|S rP   rP   r  s     r4   r  zHGrammarTests.test_yield_in_comprehensions.<locals>.g.<locals>.<listcomp>  s    )))!)))r6   rV   rP   rP   r6   r4   r  z4GrammarTests.test_yield_in_comprehensions.<locals>.g  s&      ))Qww[))))))r6   c               3   0   K   d dE d {V fD              d S )Nc                     g | ]}|S rP   rP   r  s     r4   r  zHGrammarTests.test_yield_in_comprehensions.<locals>.g.<locals>.<listcomp>  s    ///!///r6   rP   rP   rP   r6   r4   r  z4GrammarTests.test_yield_in_comprehensions.<locals>.g  s/      //"}}}}}}.//////r6   z def g(): [(yield x) for x in ()]z!'yield' inside list comprehensionz)def g(): [x for x in () if not (yield x)]z-def g(): [y for x in () for y in [(yield x)]]z def g(): {(yield x) for x in ()}z 'yield' inside set comprehensionz#def g(): {(yield x): x for x in ()}z!'yield' inside dict comprehensionz#def g(): {x: (yield x) for x in ()}z def g(): ((yield x) for x in ())z#'yield' inside generator expressionz%def g(): [(yield from x) for x in ()]z class C: [(yield x) for x in ()]z[(yield x) for x in ()]r   )r2   r  rv   s      r4   test_yield_in_comprehensionsz)GrammarTests.test_yield_in_comprehensions  s*   )))///'01	3 	3 	391	3 	3 	3=1	3 	3 	300	2 	2 	231	3 	3 	331	3 	3 	303	5 	5 	551	3 	3 	301	3 	3 	3'1	3 	3 	3 	3 	3r6   c                 p    t          d          # t           $ r Y nw xY wt          # t          $ r Y d S w xY w)Nzjust testing)RuntimeErrorKeyboardInterruptr[   s    r4   
test_raisezGrammarTests.test_raise  sF    ///!!!TT!$$ &&&$$$&s    
' 
55c                 f    dd l }dd l}dd l }ddlm} ddlm} ddl m}m} ddl m}m} ddl m}m} d S )Nr   )time)pathargv)rI   r  r  r  )r2   rI   r  r  r  s        r4   test_importzGrammarTests.test_import  s    


 	#"""""""$$$$$$$$%%%%%%%%%%r6   c                     d S r   rP   r[   s    r4   test_globalzGrammarTests.test_global  r   r6   c                     ddfd}d S )Nr   c                      d S r   rP   r  s   r4   r   z%GrammarTests.test_nonlocal.<locals>.f  s      r6   rP   )r2   r   r3   r   s     @@r4   test_nonlocalzGrammarTests.test_nonlocal  s6    	 	 	 	 	 	 	 	r6   c                     	 	 d sJ 	 	 n,# t           $ r}|                     d           Y d }~nd }~ww xY w	 d S # t           $ r }|                     d           Y d }~d S d }~ww xY w)NrV   c                     | S r   rP   r   s    r4   r  z*GrammarTests.test_assert.<locals>.<lambda>  s     r6   c                     | dz   S r   rP   r   s    r4   r  z*GrammarTests.test_assert.<locals>.<lambda>  s
    1Q3 r6   Tz6'assert True' should not have raised an AssertionErrorzthis should always passz;'assert True, msg' should not have raised an AssertionError)AssertionErrorrL   r2   r   s     r4   test_assertzGrammarTests.test_assert  s    zz	P 	P 	P 	PIINOOOOOOOO	P	222 	2 	2 	2II 1 2 2 2 2 2 2 2 2 2	2s   
4/4
A$AA$Tz Won't work if __debug__ is Falsec                    	 J d            # t          $ r+}|                     |j        d         d           Y d }~nd }~ww xY w	 J # t          $ r3}|                     t	          |j                  d           Y d }~d S d }~ww xY w)Nr   rd  )rL   r  r0   rm  r   r  s     r4   test_assert_failuresz!GrammarTests.test_assert_failures  s    	?eOO1 	/ 	/ 	/QVAY........	/
	E5 	- 	- 	-S[[!,,,,,,,,,	-s*   
 
A!<AA 
B(A??Bc                 6   |                      dd           |                      dd           |                      dd           |                     t                    5  t          ddd           t          d	dd           d d d            d S # 1 swxY w Y   d S )
Nassert(x, "msg")zassertion is always trueassert(False, "msg")assert(False,))categoryzassert x, "msg"r}   r   zassert False, "msg")r   r   rZ   r   r[   s    r4   test_assert_syntax_warningsz(GrammarTests.test_assert_syntax_warnings  s    	!!"4"<	> 	> 	>!!"8"<	> 	> 	>!!"2"<	> 	> 	> ##]#;; 	A 	A%|V<<<)<@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As   #BBBc                    t          j                    5  t          j        dt                     	 t	          ddd           n%# t
          $ r |                     d           Y nw xY w|                     t
                    5  t	          ddd           d d d            n# 1 swxY w Y   |                     t
                    5  t	          ddd           d d d            n# 1 swxY w Y   |                     t
                    5  t	          ddd           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	Nr   zassert x, "msg" r}   r   z4SyntaxError incorrectly raised for 'assert x, "msg"'r  r  r  )rW   rX   rY   rZ   r   rG   rL   rF   r[   s    r4   ,test_assert_warning_promotes_to_syntax_errorz9GrammarTests.test_assert_warning_promotes_to_syntax_error  s    $&& 	@ 	@!'=999T*L&AAAA T T T		RSSSSST"";// B B*L&AAAB B B B B B B B B B B B B B B"";// F F.fEEEF F F F F F F F F F F F F F F"";// @ @(,???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s   D=AD=A$!D=#A$$D=BD=B#	#D=&B#	'D=C"D="C&	&D=)C&	*D=D%D=%D)	)D=,D)	-D==EEc                     	 	 	 	 	 	 	 	 d S r   rP   r[   s    r4   test_ifzGrammarTests.test_if4  s)    					dr6   c                 B    	 	 	 d}	 d}|                      |d           d S )Nr   rV   r.   r/   r1   s     r4   
test_whilezGrammarTests.test_whileA  s<    	 	 AAr6   c                    dD ]}dD ]\  }}}	  G d d          }d} |d          D ]}||z   }|dk    r|                      d           g }d	D ]\  }|                    |           |                     |g d           g }g dx}x}	}
g ||	|
R D ]}|                    |           |                     |d
|z             d S )Nr  rP   c                        e Zd Zd Zd Zd ZdS )&GrammarTests.test_for.<locals>.Squaresc                 "    || _         g | _        d S r   )maxsofar)r2   r  s     r4   r   z/GrammarTests.test_for.<locals>.Squares.__init__V  s    


r6   c                 *    t          | j                  S r   )r   r  r[   s    r4   __len__z.GrammarTests.test_for.<locals>.Squares.__len__Y  s    c$*oo5r6   c                     d|cxk    r| j         k     s	n t          t          | j                  }||k    r(| j                            ||z             |dz   }||k    (| j        |         S )Nr   rV   )r  
IndexErrorr   r  append)r2   r  ns      r4   r   z2GrammarTests.test_for.<locals>.Squares.__getitem__Z  sz    A((((((((
*:
OO1ffJ%%ac***!A 1ff z!}$r6   N)r   r   r   r   r  r   rP   r6   r4   Squaresr  U  s=              655% % % % %r6   r  r   r  i  zfor over growing sequence)r  r  r  rW  )rL   r  r0   )r2   r  r  r  r  r  r3   resultr   r   rY  s              r4   test_forzGrammarTests.test_forP  s@   AA 	 	GAq!!	% 	% 	% 	% 	% 	% 	% 	% %%A!A#aa88II1222$ 	 	BAMM!+++IIA!a! 	 	AMM!Q'''''r6   c                    	 ddz   n# t           $ r Y nw xY wddz   n$# t          $ r Y nt          $ r
}Y d }~n
d }~w Y nxY wddz   n# t          t          t           f$ r Y nw xY wddz   n$# t          t          t           f$ r
}Y d }~nd }~ww xY w	 n# w xY w|                     t                    5  t          ddd           t          ddd           d d d            d S # 1 swxY w Y   d S )NrV   r   z/try:
    pass
except Exception as a.b:
    pass?r   z0try:
    pass
except Exception as a[b]:
    passr   EOFErrorr
  rF   rG   r   r2   rd  s     r4   test_tryzGrammarTests.test_tryq  s   	aCC  ! 	 	 	D	 qSS  %%%qSSS)%67====qSSS)%67DDDD{++ 	X 	XH#vVVVI3PVWWW	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	XsX    
 
?	??A A"!A"%A+ +BBB0#C  C$'C$c                    	 ddz   n!# xg ct           % x n nn X x Y ncY w xY w	 ddz   n7# xg ct          % x n nn t           % x}d }~nd }~ nn X x Y ncY w xY w	 ddz   n.# xg ct          t          t           f% x n nn X x Y ncY w xY wddz   n4# xg ct          t          t           f% x}d }~nd }~ nn X x Y ncY w xY w	 n# w xY w|                     t                    5  t          ddd           t          ddd           t          ddd           d d d            d S # 1 swxY w Y   d S )NrV   r   z0try:
    pass
except* Exception as a.b:
    passr  r   z1try:
    pass
except* Exception as a[b]:
    passztry:
    pass
except*:
    passr  r  s     r4   test_try_starzGrammarTests.test_try_star  s   	aCCC	 	 	! 	 	 	 	D	 qSSS$$!....$$$$$.qSSS>>>9&78>>>>$$>qSSSEEE9&78EEEEE{++ 	G 	GI3PVWWWJCQWXXX8#vFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	GsA    &0 /A$(A. .&BB" ",CC74D88D<?D<c                     	 	 	 	 	 	 d S r   rP   r[   s    r4   
test_suitezGrammarTests.test_suite  s    		 Dr6   c                     	 	 	 	 	 d S r   rP   r[   s    r4   	test_testzGrammarTests.test_test  s     	"48Dr6   c                    	 ddk    }ddk    r	 ddk    r	 ddk     r	 ddk    r	 ddk    r	 ddk    r	 ||u r	 ||ur	 ddv r	 ddvr	 ddcxk     r6d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cxv r|cxvr	|cxu r|urn d S d S d S r  rP   r1   s     r4   test_comparisonzGrammarTests.test_comparison  s    !V664664q55$q55$664664664A::t77DB;;qDDDD1DDDDDDDDQDDDD!DDDDqDDDDADDDDQDDDD!DDDD1DDDDDDddDDr6   c                     d fd	} |d            |d            |d            |d            |dd           t          j                    5  t          j        d	t                     t	          d
dd           t	          ddd           t	          ddd           t	          ddd           d d d            d S # 1 swxY w Y   d S )Nr   c                 4                         | |           d S r   r   r   rd  r2   s     r4   rv   z6GrammarTests.test_comparison_is_literal.<locals>.check      %%dC00000r6   zx is 1zx is "thing"z1 is xzx is y is 1z
x is not 1z"is not" with a literalr   z	x is Noner}   r   z
x is Falsez	x is Truezx is ...)r   rW   rX   rY   rZ   r   ru   s   ` r4   test_comparison_is_literalz'GrammarTests.test_comparison_is_literal  s>   	1 	1 	1 	1 	1 	1 	hnhml5666$&& 	6 	6!'=999Kv666L,777Kv666Jf555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s   AB??CC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/ |d0            |d1           d2 |d3            |d4           d5 |d6           d7 |d8           d9 |d:            |d;            |d<           d= |d>            |d?            |d@            |dA            |dB           t          j                    5  t          j        dCt                     t	          dDdEdF           t	          dGdEdF           t	          dHdEdF           t	          dIdEdF           t	          dJdEdF           t	          dKdEdF           d d d            d S # 1 swxY w Y   d S )LNc                 4                         |            d S r   r   r  s    r4   rv   z2GrammarTests.test_warn_missed_comma.<locals>.check  r  r6   z-is not callable; perhaps you missed a comma\?z[(1, 2) (3, 4)]z[(x, y) (3, 4)]z[[1, 2] (3, 4)]z[{1, 2} (3, 4)]z[{1: 2} (3, 4)]z[[i for i in range(5)] (3, 4)]z[{i for i in range(5)} (3, 4)]z[(i for i in range(5)) (3, 4)]z![{i: i for i in range(5)} (3, 4)]z[f"{x}" (3, 4)]z[f"x={x}" (3, 4)]z["abc" (3, 4)]z[b"abc" (3, 4)]z[123 (3, 4)]z[12.3 (3, 4)]z[12.3j (3, 4)]z[None (3, 4)]z[True (3, 4)]z[... (3, 4)]z2is not subscriptable; perhaps you missed a comma\?z[{1, 2} [i, j]]z[{i for i in range(5)} [i, j]]z[(i for i in range(5)) [i, j]]z[(lambda x, y: x) [i, j]]z[123 [i, j]]z[12.3 [i, j]]z[12.3j [i, j]]z[None [i, j]]z[True [i, j]]z[... [i, j]]zKindices must be integers or slices, not tuple; perhaps you missed a comma\?z[(1, 2) [i, j]]z[(x, y) [i, j]]z[[1, 2] [i, j]]z[[i for i in range(5)] [i, j]]z[f"{x}" [i, j]]z[f"x={x}" [i, j]]z["abc" [i, j]]z[b"abc" [i, j]]z.indices must be integers or slices, not tuple;z[[1, 2] [3, 4]]z-indices must be integers or slices, not list;z[[1, 2] [[3, 4]]]z [[1, 2] [[i for i in range(5)]]]z,indices must be integers or slices, not set;z[[1, 2] [{3, 4}]]z [[1, 2] [{i for i in range(5)}]]z-indices must be integers or slices, not dict;z[[1, 2] [{3: 4}]]z#[[1, 2] [{i: i for i in range(5)}]]z2indices must be integers or slices, not generator;z [[1, 2] [(i for i in range(5))]]z1indices must be integers or slices, not function;z[[1, 2] [(lambda x, y: x)]]z,indices must be integers or slices, not str;z[[1, 2] [f"{x}"]]z[[1, 2] [f"x={x}"]]z[[1, 2] ["abc"]]z'indices must be integers or slices, notz[[1, 2] [b"abc"]]z[[1, 2] [12.3]]z[[1, 2] [12.3j]]z[[1, 2] [None]]z[[1, 2] [...]]r   z[(lambda x, y: x) (3, 4)]r}   r   z[[1, 2] [i]]z[[1, 2] [0]]z[[1, 2] [True]]z[[1, 2] [1:2]]z[{(1, 2): 3} [i, j]]r  )r2   rv   rd  s   ` @r4   test_warn_missed_commaz#GrammarTests.test_warn_missed_comma  s   	1 	1 	1 	1 	1 	1 =               .///.///.///1222   !"""   nooonA   .///.///)***nooonZ         .///   !"""   =   <!"""0111;!"""0111<!"""3444A0111@+,,,;!"""#$$$ !!!6!"""    !!!   $&& 	B 	B!'=999/vFFFNL&999NL&999%|V<<<$lF;;;*L&AAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs   BLLLc                     d}d}d}d S )NrV   r   rP   r1   s     r4   test_binary_mask_opsz!GrammarTests.test_binary_mask_ops0  s    r6   c                     d}d}d}d S )Nr.   r   rV   rP   r1   s     r4   test_shift_opszGrammarTests.test_shift_ops5  s    r6   c                     d}d}d}d}d S )NrV   r.   r  rP   r1   s     r4   test_additive_opszGrammarTests.test_additive_ops:  s    r6   c                     d}d}d}d}d S )NrV         ?r   g        rP   r1   s     r4   test_multiplicative_opsz$GrammarTests.test_multiplicative_ops@  s    r6   c                     d}d}d}d}d}d S )NrV   r  r  rP   r1   s     r4   test_unary_opszGrammarTests.test_unary_opsF  s    #!r6   c                    dd l }dd l}|j        d         }|                                }|j        d                                         }d}|d         }|d         }|dd         }|d d         }|dd          }|d d          }|dd          }|d d         }|dd         }i }d	|d	<   d
|d<   d|d<   d|d<   t	          |          }|                    d            |                     t          |          d           d S )Nr   r  01234r  r   rV   r.   r  rW  r   rX  r  c                 .    t          |           j        | fS r   )rE   r   r   s    r4   r  z-GrammarTests.test_selectors.<locals>.<lambda>h  s    d1gg.2 r6   r  z[1, (1,), (1, 2), (1, 2, 3)])rI   r  r  modulesr   sortr0   r   )	r2   rI   r  rY  r3   r   rM   r  Ls	            r4   test_selectorszGrammarTests.test_selectorsM  s/    	HQKIIKKK$$&&aDbEacFbqbEabbEaaaDbccFcrcFbeH !"#%GG	22333Q!?@@@@@r6   c                     d}d}dddf}g }dg}dg}dddg}g }i }ddi}ddi}ddi}ddd}ddd}dddddd	d
}dh}ddh}h d}h d}|}d}d}d S )NrV   r.   rW  r   rf  )r   rf  rX  r   ry  )r   rf  threefourfivesix>   r   rf  r	  >   r.   rW  rX  r3   r+  rP   r1   s     r4   
test_atomszGrammarTests.test_atomsk  s     !QCM!QAJAKQ$a  a!!a!Q!LLGAK###JJr6   c                 <    G d d          } G d d          } G d d|          } G d d|          } G d	 d
|||          } G d d          }d  G d d                      } G d d                      }x}	 G d d                      }
fd G d d                      }ddgd          G d d                      }                       G d d                      }gd         j         j          G d d                       }d S )!Nc                       e Zd ZdS )%GrammarTests.test_classdef.<locals>.BNr  rP   r6   r4   r  r    r  r6   r  c                       e Zd ZdS )&GrammarTests.test_classdef.<locals>.B2Nr  rP   r6   r4   B2r    r  r6   r  c                       e Zd ZdS )&GrammarTests.test_classdef.<locals>.C1Nr  rP   r6   r4   C1r    r  r6   r  c                       e Zd ZdS )&GrammarTests.test_classdef.<locals>.C2Nr  rP   r6   r4   C2r    r  r6   r  c                       e Zd ZdS )%GrammarTests.test_classdef.<locals>.DNr  rP   r6   r4   r  r    r  r6   r  c                        e Zd Zd Zd Zd ZdS )%GrammarTests.test_classdef.<locals>.Cc                     d S r   rP   r[   s    r4   meth1z+GrammarTests.test_classdef.<locals>.C.meth1  r   r6   c                     d S r   rP   )r2   args     r4   meth2z+GrammarTests.test_classdef.<locals>.C.meth2  r   r6   c                     d S r   rP   )r2   rk  rn  s      r4   meth3z+GrammarTests.test_classdef.<locals>.C.meth3  r   r6   N)r   r   r   r  r"  r$  rP   r6   r4   r   r    s+        !!!&&&)))))r6   r   c                     | S r   rP   r   s    r4   class_decoratorz3GrammarTests.test_classdef.<locals>.class_decorator  s    qr6   c                       e Zd ZdS )%GrammarTests.test_classdef.<locals>.GNr  rP   r6   r4   Gr(            r6   r)  Fc                       e Zd ZdS )%GrammarTests.test_classdef.<locals>.HNr  rP   r6   r4   Hr,    r*  r6   r-  c                       e Zd ZdS )%GrammarTests.test_classdef.<locals>.INr  rP   r6   r4   Ir/    r*  r6   r0  c                      |           S r   rP   )rY  r&  s    r4   r  z,GrammarTests.test_classdef.<locals>.<lambda>  s    ??1%% r6   c                       e Zd ZdS )%GrammarTests.test_classdef.<locals>.JNr  rP   r6   r4   Jr3    r*  r6   r4  .rV   c                       e Zd ZdS )%GrammarTests.test_classdef.<locals>.KNr  rP   r6   r4   Kr6    r*  r6   r7  c                       e Zd ZdS )%GrammarTests.test_classdef.<locals>.LNr  rP   r6   r4   r  r9    r*  r6   r  r   c                       e Zd ZdS )%GrammarTests.test_classdef.<locals>.MNr  rP   r6   r4   r2  r;    r*  r6   r2  )r  )r2   r  r  r  r  r  r   r)  r-  r  r0  r4  r7  r  r2  r&  s                  @r4   test_classdefzGrammarTests.test_classdef  s        B   	* 	* 	* 	* 	* 	* 	* 	* 	)((	 
 " 
"	!	 
		%	%	%	% 
&	%
	$Q	' 
(	'	)	)	)/	:	: 
;	:
	1		&	/ 
0	/r6   c                 V    g d}|                      d |D             dddd           d S )Nr  c                     i | ]}||d z   	S r  rP   r  r  s     r4   
<dictcomp>z/GrammarTests.test_dictcomps.<locals>.<dictcomp>  s    ...A!AaC...r6   r.   rW  rX  r/   )r2   numss     r4   test_dictcompszGrammarTests.test_dictcomps  sB     yy.....A!0B0BCCCCCr6   c           	         	 g d}g dg d}                      d |D             g d                                 d |D             g d                                 d |D             g d	                                 fd
|D             g d                                 fd|D             g d                                 d t          d          D             dgddgg dg dg dg           d }                       ||          g d            fd} |             t           d           t           d           g d}g dg d		fd|D             }                      |g d           d S )NrZ  )AppleBananaCoconut)z  Applez Banana zCoco  nut  c                 6    g | ]}|                                 S rP   )strip)r  rM   s     r4   r  z/GrammarTests.test_listcomps.<locals>.<listcomp>  s     222!''))222r6   )rD  rE  z	Coco  nutc                     g | ]}d |z  S r  rP   r  s     r4   r  z/GrammarTests.test_listcomps.<locals>.<listcomp>  s    ...A!a%...r6   )rW  ry  r9   r     c                     g | ]
}|d k    |S r  rP   r  s     r4   r  z/GrammarTests.test_listcomps.<locals>.<listcomp>  s    333QUU!UUUr6   r  c                 "    g | ]}D ]}||fS rP   rP   r  r  rM   strss      r4   r  z/GrammarTests.test_listcomps.<locals>.<listcomp>  s*    ===Q==11a&====r6   ))rV   rD  rV   rE  rV   rF  )r.   rD  r.   rE  r.   rF  )rW  rD  rW  rE  rW  rF  )rX  rD  rX  rE  rX  rF  )r   rD  r   rE  r   rF  c                 6    g | ]}d  D             D ]}||fS )c                     g | ]}d |v |	S )r  rP   )r  r   s     r4   r  z:GrammarTests.test_listcomps.<locals>.<listcomp>.<listcomp>  s    8U8U8UqCSTHHHHHr6   rP   rM  s      r4   r  z/GrammarTests.test_listcomps.<locals>.<listcomp>  s9    VVVQ8U8UD8U8U8UVV11a&VVVVr6   )
rO  rP  rQ  rR  rS  rT  rU  rV  rW  rX  c                 &    g | ]} d  |          S )c                 @      fdt           dz             D             S )Nc                     g | ]}|z  S rP   rP   )r  r  r   s     r4   r  zLGrammarTests.test_listcomps.<locals>.<listcomp>.<lambda>.<locals>.<listcomp>  s    $>$>$>aQT$>$>$>r6   rV   ranger}  s   `r4   r  z8GrammarTests.test_listcomps.<locals>.<listcomp>.<lambda>  s&    $>$>$>$>51::$>$>$> r6   rP   )r  r  s     r4   r  z/GrammarTests.test_listcomps.<locals>.<listcomp>  s'    UUUq>>>BBUUUr6   r   rV   )rV   r.   rX  )rV   rW  r9      )rV   rX     @      c                     d | D             S )Nc                 :    g | ]}|d k    d|cxk     odk     nc S )r.   r   rW  rP   r  s     r4   r  zEGrammarTests.test_listcomps.<locals>.test_in_func.<locals>.<listcomp>  s1    222!AEEAIIIIAIIIIEEEr6   rP   )ls    r4   test_in_funcz1GrammarTests.test_listcomps.<locals>.test_in_func  s    22q2222r6   )FFFc                  Z                          d dD             ddgddgddgg           d S )	Nc                 0    g | ]}d  ||dz   fD             S )c                     g | ]}|S rP   rP   r  r   s     r4   r  zUGrammarTests.test_listcomps.<locals>.test_nested_front.<locals>.<listcomp>.<listcomp>  s    555Qq555r6   rV   rP   r  s     r4   r  zJGrammarTests.test_listcomps.<locals>.test_nested_front.<locals>.<listcomp>  s/    GGG!551a!e*555GGGr6   )rV   rW  r   rV   r.   rW  rX  r   ry  r/   r[   s   r4   test_nested_frontz6GrammarTests.test_listcomps.<locals>.test_nested_front  sL    GGwGGG !fq!fq!f57 7 7 7 7r6   z"[i, s for i in nums for s in strs]z[x if y]))rV   Boeing)r.   Ford)rW  
Macdonalds))r  Airliner)r  Engine)   Cheeseburger))rV   r  )rV   r  )r.   r  )rW  rr  c                 V    g | ]%\  }}D ]\  }}D ]\  }}||k    ||k    ||f&S rP   rP   )	r  snosnamepnopnamesp_snosp_pnopartssupparts	          r4   r  z/GrammarTests.test_listcomps.<locals>.<listcomp>  sl     
 
 
e"'
 
 3(/	
 
 %VVF]]sf}}	 %. (5}}}}r6   ))rm  rp  )rm  rq  )rn  rq  )ro  rs  )r0   r_  r   )
r2   rA  spcsrg  rl  	suppliersr3   r{  rN  r|  s
   `      @@@r4   test_listcompszGrammarTests.test_listcomps  s   ---55522T2224T4T4TUUU.....0A0A0ABBB33T333YYY???====$===G G G	H 	H 	H 	VVVV$VVV9 9 9	: 	: 	: 	UUERSHHUUU#1vyyy---ATATATU	W 	W 	W	3 	3 	3 	d++-B-B-BCCC	7 	7 	7 	7 	7 	4!EFFF4,,,
 
 
	
 
 

 
 

 
 
 
 
 )
 
 
 	 = = = 	> 	> 	> 	> 	>r6   c           
      >	   d t          d          D             }|                     t          |          d t          d          D                        	 t          |           |                     d           n# t          $ r Y nw xY wd	 fdD             }t          |           |                     d           n# t
          $ r Y nw xY w|                     t          d d	D                       d
 d	D                        |                     t          d dD                       d dD                        d t          d          D             d d D             D             }|                     t          |          t          d t          d          D                                  |                     t          d t          d          D                       t          d t          d          D                                  |                     t          d t          d          D                       t          d t          d          D                                  |                     t          d d t          d          D             D                       t          d t          d          D                                  |                     t          d d d t          d          D             D             D                       t          d t          d          D                                  |                     t          d d d t          d          D             D             D                       t          d  t          d          D                                  |                     t          d! d" d# t          d          D             D             D                       t          d$ t          d          D                                  |                     t          d% d& d' t          d          D             D             D                       d(           t          | d)           t          | d*           d S )+Nc              3   H   K   | ]}d  t          d          D             V  dS )c                     g | ]}|S rP   rP   r  s     r4   r  z7GrammarTests.test_genexps.<locals>.<genexpr>.<listcomp>  s    ###Aa###r6   r  Nr^  r  s     r4   	<genexpr>z,GrammarTests.test_genexps.<locals>.<genexpr>  s7      66##r###666666r6   rV   c                     g | ]}|S rP   rP   r  s     r4   r  z-GrammarTests.test_genexps.<locals>.<listcomp>  s    "8"8"81"8"8"8r6   r  z&should produce StopIteration exceptionc              3      K   | ]}V  d S r   rP   )r  r  r   s     r4   r  z,GrammarTests.test_genexps.<locals>.<genexpr>  s      qr6   zshould produce TypeErrorc              3   (   K   | ]}d D ]}||fV  	dS )r[  NrP   r  r3   r   s      r4   r  z,GrammarTests.test_genexps.<locals>.<genexpr>  s3      EEfEEq!fEEEEEEEr6   r[  c                      g | ]}d D ]}||fS )r[  rP   r  s      r4   r  z-GrammarTests.test_genexps.<locals>.<listcomp>  s,    GoGoGoSThnGoGocdAGoGoGoGor6   c              3   (   K   | ]}d D ]}||fV  	dS )xyNrP   r  s      r4   r  z,GrammarTests.test_genexps.<locals>.<genexpr>  s3      AADAAqq!fAAAAAAAr6   abc                      g | ]}d D ]}||fS )r  rP   r  s      r4   r  z-GrammarTests.test_genexps.<locals>.<listcomp>  s+    CgCgCgqbfCgCg]^QFCgCgCgCgr6   c                     g | ]}|S rP   rP   r  s     r4   r  z-GrammarTests.test_genexps.<locals>.<listcomp>
  s    """1Q"""r6   c              3      K   | ]}|V  d S r   rP   r  s     r4   r  z,GrammarTests.test_genexps.<locals>.<genexpr>  s"      ''1Q''''''r6   c              3      K   | ]}|V  d S r   rP   rk  s     r4   r  z,GrammarTests.test_genexps.<locals>.<genexpr>  s      qr6   c                     g | ]}|S rP   rP   r  s     r4   r  z-GrammarTests.test_genexps.<locals>.<listcomp>  s    %;%;%;Aa%;%;%;r6   c              3       K   | ]	}|d z  V  
dS r.   NrP   r  s     r4   r  z,GrammarTests.test_genexps.<locals>.<genexpr>  s&      55aQT555555r6   c                     g | ]}|d z  S r  rP   r  s     r4   r  z-GrammarTests.test_genexps.<locals>.<listcomp>  s    ;T;T;TQAqD;T;T;Tr6   c              3   *   K   | ]}|d z  ||z  V  dS r  rP   r  s     r4   r  z,GrammarTests.test_genexps.<locals>.<genexpr>  s/      ;;Qqs;QqS;;;;;;r6   c                 "    g | ]}|d z  ||z  S r  rP   r  s     r4   r  z-GrammarTests.test_genexps.<locals>.<listcomp>  s(    A`A`A`!\]^_\_A`!A#A`A`A`r6   c              3      K   | ]}|V  d S r   rP   r  s     r4   r  z,GrammarTests.test_genexps.<locals>.<genexpr>  s"      ??1Q??????r6   c              3      K   | ]}|V  d S r   rP   rk  s     r4   r  z,GrammarTests.test_genexps.<locals>.<genexpr>  s"      (>(>q(>(>(>(>(>(>r6   c                     g | ]}|S rP   rP   r  s     r4   r  z-GrammarTests.test_genexps.<locals>.<listcomp>  s    E[E[E[AaE[E[E[r6   c              3      K   | ]}|V  d S r   rP   r  s     r4   r  z,GrammarTests.test_genexps.<locals>.<genexpr>  "      LL1QLLLLLLr6   c              3      K   | ]}|V  d S r   rP   rk  s     r4   r  z,GrammarTests.test_genexps.<locals>.<genexpr>  s"      (K(Kq(K(K(K(K(K(Kr6   c              3      K   | ]}|V  d S r   rP   r  r   s     r4   r  z,GrammarTests.test_genexps.<locals>.<genexpr>  "      4J4J1Q4J4J4J4J4J4Jr6   c                     g | ]}|S rP   rP   r  s     r4   r  z-GrammarTests.test_genexps.<locals>.<listcomp>      RhRhRhYZSTRhRhRhr6   c              3      K   | ]}|V  d S r   rP   r  s     r4   r  z,GrammarTests.test_genexps.<locals>.<genexpr>  r  r6   c                     g | ]}|S rP   rP   rk  s     r4   r  z-GrammarTests.test_genexps.<locals>.<listcomp>  s    (K(K(Kq(K(K(Kr6   c              3      K   | ]}|V  d S r   rP   r  s     r4   r  z,GrammarTests.test_genexps.<locals>.<genexpr>  r  r6   c                     g | ]}|S rP   rP   r  s     r4   r  z-GrammarTests.test_genexps.<locals>.<listcomp>  r  r6   c              3      K   | ]}|V  dS TNrP   r  s     r4   r  z,GrammarTests.test_genexps.<locals>.<genexpr>  s"      \\1Q\\\\\\r6   c              3      K   | ]}|V  d S r   rP   rk  s     r4   r  z,GrammarTests.test_genexps.<locals>.<genexpr>  s"      (S(Sq(S(S(S(S(S(Sr6   c              3      K   | ]}|V  dS r  rP   r  s     r4   r  z,GrammarTests.test_genexps.<locals>.<genexpr>  "      4R4R1Q4R4R4R4R4R4Rr6   c                     g | ]}|S rP   rP   r  s     r4   r  z-GrammarTests.test_genexps.<locals>.<listcomp>  s    bxbxbxijcdbxbxbxr6   c              3      K   | ]}|V  dS r  rP   r  s     r4   r  z,GrammarTests.test_genexps.<locals>.<genexpr>  s"      ee1Qeeeeeer6   c              3      K   | ]}dS )FNrP   rk  s     r4   r  z,GrammarTests.test_genexps.<locals>.<genexpr>  s      (\(\q(\(\(\r6   c              3      K   | ]}|V  dS r  rP   r  s     r4   r  z,GrammarTests.test_genexps.<locals>.<genexpr>  r  r6   r   zfoo(x for x in range(10), 100)zfoo(100, x for x in range(10)))	r_  r0   nextrL   StopIterationr
  r   sumr   )r2   r  r   r   s      @r4   test_genexpszGrammarTests.test_genexps  s   66U1XX666a"8"8eBii"8"8"8999	GGGII>???? 	 	 	D	 	AAGGGII01111 	 	 	D	 	EEfEEEEEGoGoX^GoGoGopppAAdAAAAACgCgTXCgCgCghhh""b		"""''A'''Q%;%;r%;%;%;!<!<===5559955555s;T;T%PR));T;T;T7U7UVVV;;%));;;;;SA`A`uUWyyA`A`A`=a=abbb??(>(>E"II(>(>(>?????E[E[QVWYQZQZE[E[E[A\A\]]]LL(K(K4J4Jb		4J4J4J(K(K(KLLLLLcRhRh^cdf^g^gRhRhRhNiNijjjLL(K(K4J4Jb		4J4J4J(K(K(KLLLLLcRhRh^cdf^g^gRhRhRhNiNijjj\\(S(S4R4Rb		4R4R4R(S(S(S\\\\\^abxbxnstvnwnwbxbxbx^y^yzzzee(\(\4R4Rb		4R4R4R(\(\(\eeeeeghiii4!ABBB4!ABBBBBs$   $A; ;
BB2C 
CCc                    dd t                    D             }d|                     t          t          |                    d           ddfdt                    D             }dd|                     d t          d          D             t          |                     |                     d t          d          D             g d	           |                     t          d
 t          d          D                       g d	           |                     d dD             g d           |                     t          d dD                       g d           d S )Nr  c              3      K   | ]}|V  d S r   rP   r?  s     r4   r  z;GrammarTests.test_comprehension_specials.<locals>.<genexpr>  s"      ))1Q))))))r6   r   Fc              3   H   K   | ]}t                    D ]}||fV  	d S r   r^  )r  r  r  tr3   s      r4   r  z;GrammarTests.test_comprehension_specials.<locals>.<genexpr>  s?      OO!1OeAhhOO1OOOOOOOr6   Tc                 :    g | ]}t          d           D ]}||fS r   r^  )r  r  r  s      r4   r  z<GrammarTests.test_comprehension_specials.<locals>.<listcomp>   s/    EEEAE!HHEEq1Q%EEEEr6   c                 &    g | ]}|d z  |dz  |S r  rP   r  s     r4   r  z<GrammarTests.test_comprehension_specials.<locals>.<listcomp>$  s*    CCC1q5CAEC1CCCr6   )rV   r   rz  c              3   .   K   | ]}|d z  |dz  |V  dS )r.   rW  NrP   r  s     r4   r  z;GrammarTests.test_comprehension_specials.<locals>.<genexpr>%  s4      EEAa!eEq1uEaEEEEEEr6   c                     g | ]\  }|S rP   rP   r  s     r4   r  z<GrammarTests.test_comprehension_specials.<locals>.<listcomp>(  s    999!999r6   ))rX  r  )ry  r  c              3      K   | ]\  }|V  	d S r   rP   r  s     r4   r  z;GrammarTests.test_comprehension_specials.<locals>.<genexpr>)  s$      ==BAa======r6   ))rz  )r{  )r9   )rz  r{  r9   )r_  r0   r   r   )r2   r  r  r3   s     @@r4   test_comprehension_specialsz(GrammarTests.test_comprehension_specials  s{   ))a)))q1T!WWr*** EOOOOOuQxxOOO14qEErEEEtAwwOOO 	CCeBiiCCCYYYOOOEErEEEEEyyyQQQ 	99&8999999EEE==*<=====yyyIIIIIr6   c                     G d dt                     } |            5  	 d d d            n# 1 swxY w Y    |            5 }	 d d d            n# 1 swxY w Y    |            5 \  }}	 d d d            n# 1 swxY w Y    |            5   |            5  	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y    |            5 } |            5 }	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y    |            5 } |            5  	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y    |            5  	 d d d            n# 1 swxY w Y    |            5 }	 d d d            n# 1 swxY w Y    |            5 \  }} |            5 }	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y    |            5   |            5  	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y    |            5 } |            5 }	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y    |            5 } |            5  	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y    |            5 } |            5 } |            5 }	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y    |            5 } |            5 } |            5  	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nc                       e Zd Zd Zd ZdS )1GrammarTests.test_with_statement.<locals>.managerc                     dS Nr   rP   r[   s    r4   	__enter__z;GrammarTests.test_with_statement.<locals>.manager.__enter__-  s    vr6   c                     d S r   rP   )r2   rm  s     r4   __exit__z:GrammarTests.test_with_statement.<locals>.manager.__exit__/  r  r6   N)r   r   r   r  r  rP   r6   r4   managerr  ,  s2              r6   r  )object)r2   r  r3   r   r   s        r4   test_with_statementz GrammarTests.test_with_statement+  s	   	 	 	 	 	f 	 	 	 WYY 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	WYY 	!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	WYY 	&1a	 	 	 	 	 	 	 	 	 	 	 	 	 	 	WYY 	 			 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	WYY 	!WWYY 	!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	WYY 	!WWYY 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 GII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 GII		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 GII	!QGII			 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 GII	 	GII	 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 GII	GII			 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 GII	GII	 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 GII	GII	GII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 GII	GII	GII	 	
 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s  ,00AAA$A55A9<A9
B:B#B:#B'	'B:*B'	+B::B>B>C?C(C?(C,	,C?/C,	0C??DDED-!E-D1	1E4D1	5EEEE''E+.E+<F

FFG-F;/G;F?	?GF?	GGG'H2H 4H H	HH	HHH,I7I9II			II		II #I 1J!<J
>J!
J	J!J	J!!J%(J%6LK1KK1KK1!K"K1%L1K5	5L8K5	9LLLM0(M3M5MMMM	MM0M	M0M	 M00M47M4c                 4   d }|                      d d d fD             dg           |                      d d d fD             dg           |                      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 S )Nc                 $    t          |            |S )z@helper to check that evaluation of expressions is done correctlyr   )rd  rets     r4   
_checkevalz2GrammarTests.test_if_else_expr.<locals>._checkevalq  s    #JJJJr6   c                 6    g | ]} |             |            S rP   rP   r  s     r4   r  z2GrammarTests.test_if_else_expr.<locals>.<listcomp>x  s)    NNN1N1133NNNr6   c                      dS )NTrP   rP   r6   r4   r  z0GrammarTests.test_if_else_expr.<locals>.<lambda>x  s     r6   c                      dS NFrP   rP   r6   r4   r  z0GrammarTests.test_if_else_expr.<locals>.<lambda>x  s    u r6   Tc                 :    g | ]} |d            |d           S r   rP   r  s     r4   r  z2GrammarTests.test_if_else_expr.<locals>.<listcomp>y  s2    {{{qrqrsxqyqy{11U88{{{r6   c                     | rdndS )NFTrP   r   s    r4   r  z0GrammarTests.test_if_else_expr.<locals>.<lambda>y  s    8L r6   c                     | rdndS )NTFrP   r   s    r4   r  z0GrammarTests.test_if_else_expr.<locals>.<lambda>y  s    `aXlX\X\gl r6   rV   r   zcheck 1r   zcheck 2ry  zcheck 3r.   rW  zcheck 4zcheck 5zcheck 6Frz  r  rX  g      @r/   )r2   r  s     r4   test_if_else_exprzGrammarTests.test_if_else_expro  s   	 	 	 	NN}}(ENNNQUPVWWW{{.L.LNlNl-m{{{  C  ~D  	E  	E  	E!CCCQCCCA222a!444!444!aHHH!]^___qaHHH%e444!a000%a000%a000%b111%a000!a00000r6   c                 4   |                      dd           |                      dd           |                      dd           d}d}|                     d||u u            |                     d|u |u            |                     d|cxu o|u nc            d S )Nr{  r.   rW  F)r0   rJ   assertFalser   s      r4   test_paren_evaluationz"GrammarTests.test_paren_evaluation  s    ++++++q)))!q&)***%1**+++!q)))))r6   c                      G d d          } |            }|                      ||z  d           |dz  }|                      |j        d           d S )Nc                       e Zd Zd Zd ZdS )'GrammarTests.test_matrix_mul.<locals>.Mc                     dS )NrX  rP   r2   r-  s     r4   
__matmul__z2GrammarTests.test_matrix_mul.<locals>.M.__matmul__  s    qr6   c                     || _         | S r   )otherr  s     r4   __imatmul__z3GrammarTests.test_matrix_mul.<locals>.M.__imatmul__  s    
r6   N)r   r   r   r  r  rP   r6   r4   r2  r    s2              r6   r2  rX  r   )r0   r  )r2   r2  ms      r4   test_matrix_mulzGrammarTests.test_matrix_mul  sx    	 	 	 	 	 	 	 	 ACCQ"""	R"%%%%%r6   c                    d }|                      |j        d           |                     t          |j        j        t          j        z                       d }|d             }|                     |j                   |                      |j        d           |                     t          |j        j        t          j        z                       d S )Nc                  :   K   d } 	 t                       d {V  d S )Nc                      d S r   rP   rP   r6   r4   r  z8GrammarTests.test_async_await.<locals>.test.<locals>.sum  r  r6   )someobj)r  s    r4   r   z+GrammarTests.test_async_await.<locals>.test  s3         iir6   r   c                 (    t          | dd           | S )N_markedT)setattr)funcs    r4   	decoratorz0GrammarTests.test_async_await.<locals>.decorator  s    D)T***Kr6   c                  
   K   dS )N   rP   rP   r6   r4   test2z,GrammarTests.test_async_await.<locals>.test2  s      2r6   r  )	r0   r   rJ   boolr  co_flagsinspectCO_COROUTINEr  )r2   r   r  r  s       r4   test_async_awaitzGrammarTests.test_async_await  s    	  	  	  	///T]3g6JJKKLLL	 	 	 
	 	 
	&&&111U^4w7KKLLMMMMMr6   c                      G d dt                      G d d          fd}|                               5   |                                d            d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS ))GrammarTests.test_async_for.<locals>.DoneNr  rP   r6   r4   Doner    r  r6   r  c                       e Zd Zd Zd ZdS )*GrammarTests.test_async_for.<locals>.AIterc                     | S r   rP   r[   s    r4   	__aiter__z4GrammarTests.test_async_for.<locals>.AIter.__aiter__  s    r6   c                    K   t           r   )StopAsyncIterationr[   s    r4   	__anext__z4GrammarTests.test_async_for.<locals>.AIter.__anext__  s      ((r6   N)r   r   r   r  r  rP   r6   r4   AIterr    s2          ) ) ) ) )r6   r  c                     K                2 3 d {V } 6              2 3 d {V \  } }6              2 3 d {V } 6 	 r   rP   )r  r  r  r  s     r4   rJ  z(GrammarTests.test_async_for.<locals>.foo  s       577       a ##egg       da & 577       a # Js   ,?r   rF   send)r2   rJ  r  r  s     @@r4   test_async_forzGrammarTests.test_async_for  s    #####9###	) 	) 	) 	) 	) 	) 	) 	)		 		 		 		 		 		 t$$ 	 	CEEJJt	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   A))A-0A-c                      G d dt                      G d d          fd}|                               5   |                                d            d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS )*GrammarTests.test_async_with.<locals>.DoneNr  rP   r6   r4   r  r    r  r6   r  c                       e Zd Zd Zd ZdS )-GrammarTests.test_async_with.<locals>.managerc                 
   K   dS r  rP   r[   s    r4   
__aenter__z8GrammarTests.test_async_with.<locals>.manager.__aenter__  s      vr6   c                 
   K   dS r  rP   )r2   excs     r4   	__aexit__z7GrammarTests.test_async_with.<locals>.manager.__aexit__  s      ur6   N)r   r   r   r
  r  rP   r6   r4   r  r    s2              r6   r  c                    K                4 d {V  	 d d d           d {V  n# 1 d {V swxY w Y                4 d {V } 	 d d d           d {V  n# 1 d {V swxY w Y                4 d {V \  } }	 d d d           d {V  n# 1 d {V swxY w Y                4 d {V               4 d {V  	 d d d           d {V  n# 1 d {V swxY w Y   d d d           d {V  n# 1 d {V swxY w Y                4 d {V }              4 d {V }	 d d d           d {V  n# 1 d {V swxY w Y   d d d           d {V  n# 1 d {V swxY w Y                4 d {V }              4 d {V  	 d d d           d {V  n# 1 d {V swxY w Y   d d d           d {V  n# 1 d {V swxY w Y   r   rP   )r3   r   r  r  s     r4   rJ  z)GrammarTests.test_async_with.<locals>.foo  s     wyy                                  wyy       A                          wyy       FQ                          wyy        ''))                                                             wyy       Awwyy       A                                                     wyy       Awwyy                                                             Js   (
22	A
A'*A'>B
B"B6C>C	C>
C%	%C>(C%	)C>>
DDE'0E2E'
E	E'E	E''
E14E1GF-G-
F7	7G:F7	;G
GGr   )r2   rJ  r  r  s     @@r4   test_async_withzGrammarTests.test_async_with  s    #####9###	 	 	 	 	 	 	 		 	 	 	 	 	 t$$ 	 	CEEJJt	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  N)Mr   r   r   r   r   r   r   r   r   r   r   r   r  r(  r3  r:  r?  rL  rT  r\  r  rG  rK  rO  rX  r\  r^  r`  re  rl  rt  ry  r{  r  r  r  r  r  r  r  r  r  r  unittest
skipUnlessr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r<  rB  r  r  r  r  r  r  r  r  r  r  rP   r6   r4   r   r   D  s       //////AAAAAA>>>>>>  
& 
& 
&1 1 1>, , ,\0 0 0,< < <: : :	% 	% 	%# # #A A A*A A A"3 3 3v& v& v&p!) !) !)N  2 2 2% % %.W W W4      4  47 7 72# 2# 2#h3# 3# 3#j" " ",3 3 38/ / /4%; %; %;N3 3 36' ' '& & &I I I  2 2 2& X$FGGE E HGEA A A@ @ @*    ( ( (BX X X2G G G0  	9 	9 	9K K K"6 6 6"PB PB PBd  
  
    " " "A A A<  F  BD D D=> => =>~!C !C !CFJ J J&B B BH1 1 16* * *& & &N N N*  .    r6   r   __main__)r   r   r   r   r   r  r  rI   rW   test.typinganndata.ann_moduletypinganndatar.  r/  test.typinganndatar	   r   ra   rc   TestCaser,   r   r   r   r   r   mainrP   r6   r4   <module>r     s   , + + + + + + & & & & & & = = = = = =   



      3 2 2 2 2 2 2 2 2  * * * * * *    .4 4 4 nNA NA NA NA NA" NA NA NA`           c c c c c8$ c c cL5 zHMOOOOO r6   