
    daf                    &   U 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 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.                          yy)    check_syntax_error)import_helperN)*)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                   f    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y)
TokenTestsr   r   check_syntax_warningc                 X    d}| j                  |dd       d}| j                  |dd       y )N   zbackslash for line continuationr   zbackslash ending commentassertEqualselfxs     ,/root/Python-3.12.4/Lib/test/test_grammar.pytest_backslashzTokenTests.test_backslashk   s6    A@A A9:    c                 n   | j                  t        d      t        d             | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  t        t        d       ddlm} |dk(  rb| j                  dd       | j                  ddkD         | j                  ddkD         | j                  ddkD         d	D ]  }	 t	        |      } y |dk(  rb| j                  dd       | j                  ddkD         | j                  ddkD         | j                  ddkD         dD ]  }	 t	        |      } y | j                  d|z         y # t        $ r | j                  d
|z         Y w xY w# t        $ r | j                  d
|z         Y iw xY w)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_integersu   s   cDG,s#$]3#+tT2j ]N;OOMA-.OOJN+OO=AB< NNQAN ++35NOOO4q89OO.23OO\_``aY NNQA	N II.89 % NIIH1LMN % NIIH1LMNs$   'E1F1FFF43F4c                 $    d}d}d}d}d}d}d}d}y )Nr   r@   l   ? l   
~l!]c l            l    r1   s     r4   test_long_integerszTokenTests.test_long_integers   s*    *SSr6   c                 4    d}d}d}d}d}d}d}d}d}d}d}d}y )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               | j	                  t        d      d       | j	                  t        d      d       d d d        | j                  t        t
        d       y # 1 sw Y   %xY w)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   sq    $$& 	6!!(M:T.115T.115	6 	+t^<		6 	6s   AB

Bc           
         t         D ]6  }| j                  t        |      t        |j                  dd                   8 t        D ]  }| j                  t        t        |        | j                  t        t        d       y )N_ _0)VALID_UNDERSCORE_LITERALSr0   rH   replaceINVALID_UNDERSCORE_LITERALSrF   rG   	NameError)r2   lits     r4   test_underscore_literalsz#TokenTests.test_underscore_literals   sl    , 	DCT#YS[[b-A(BC	D. 	6Ck45	6 	)T40r6   c                 N   | 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       y )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d12d-.e4	5 	f/0f/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        j                  t        d      5  t        | ddd       d d d         j                  t        d      5  t        | ddd       d d d        t        j                         5  t        j                  dt                j                  t        d      5  t        | ddd       d d d        d d d        B  |d        |d        |d       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ExY w# 1 sw Y   xY w)Nc                 j   j                  |       5  |r^t        j                  d      5 }j                  t        d      5  t        | dd       d d d        d d d        j                  g        nj                  | d       d d d        y # 1 sw Y   @xY w# 1 sw Y   DxY w# 1 sw Y   y xY w)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0= @!33K$:< @#D,?@@ $$Q,--d$: . <	< 	<@ @@ @	< 	<s:   B)BBB.B)BBB&	"B))B2)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   ⁄7r|   zis xr   z[0x1ffor x in ()]z[0x1for x in ()]z[0xfor x in ()])F)r   r   rG   assertWarnsRegexrZ   rW   rX   rY   )r2   rv   nums   `  r4   test_end_of_numerical_literalsz)TokenTests.test_end_of_numerical_literals   s   
	< D 	@CCv.SE-u6SE,scz3SE,SE"#SE%&E#f%cUl<AcU,'(SE,d+ ''5[\ <3%tlF;< &&}6LM <3%tlF;<((* @%%g}=++K24 @se4L,?@@ @#	@. 	!" ! < << <@ @@ @s<   E&E281F
)E>:F
&E/	2E;	>FF

F	c                 x   d}d}| j                  t        |      dk(  xr ||k(         d}d}| j                  t        |      dk(  xr ||k(  xr t        |      dk(         d}d}| j                  t        |      dk(  xr ||k(  xr t        |      dk(         d}d}| j                  t        |      d	k(  xr ||k(         d
}d
}| j                  t        |      d	k(  xr ||k(         d}d}| j                  ||       d}| j                  ||       d}| j                  ||       d}| j                  ||       y )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   sE   BA!(>Q?c!4??3q6Q;+R16+Rc!fPRlST4??3q6Q;+R16+Rc!fPRlS('A"/a0('A"/a0 HA 	A 	A 	Ar6   c                 l    d}| j                  |t        u        | j                  t        t        d       y )N.z.. .)rJ   EllipsisrF   rG   rH   r1   s     r4   test_ellipsiszTokenTests.test_ellipsis'  s)    X&+tV4r6   c                     d}|D ]R  }| j                  t              5 }t        |dd       d d d        | j                  dt	        j
                               T y # 1 sw Y   1xY w)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_error,  sa    : 	AA"";/ -28V,-MM,c",,.?@	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*   f   sD    /A;":HT=10,&!P&P5
Ar6   r*   var_annot_globalc                       e Zd Zd Zd Zd Zy)CNSc                     i | _         y N_dctr[   s    r4   __init__zCNS.__init__8  s	    	r6   c                 >    || j                   |j                         <   y 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    yyr6   Nr   r   r   r   r   r   rP   r6   r4   r   r   7  s    (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+jX                  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 ZLyJ)KGrammarTestsr   r   r+   )check_no_warningsc                     t        d      }y )Nz	1, 0 or 1)rH   r1   s     r4   test_eval_inputzGrammarTests.test_eval_inputO  s    r6   c                 n    d}dg}d }t          t        g d| |       dz
  <   | j                  |dg       y )N   *   c                       yNrV   rP   rP   r6   r4   onez/GrammarTests.test_var_annot_basics.<locals>.oneX  s    r6   rV   )intlistr0   )r2   var1my_lstr   s       r4   test_var_annot_basicsz"GrammarTests.test_var_annot_basicsS  s<    		 suQw!%r6   c                 l   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       y )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_errors_  s    4.4/4 "9 	:4 "7 	84!124!124!67414.4-4 "> 	? 	4 "2 	3 	4 "0 	1 	4 "4 	5 	4 "0 	1r6   c                 V   | j                  t              5  ddz  t        t        <   d d d        | j                  t              5  dt        t        <   d d d        d }| j                  |j                  i        d } |        d }| j                  t              5   |        d d d        d }	  |         G d d      }| j                  |j                  t        t        d	       | j                  t              5   G d
 d      }d d d        | j                  t              5   G d d|      }d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# t        $ r)}| j                  t        |      t               Y d }~d }~ww xY w# 1 sw Y   xY w# 1 sw Y   y xY w)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                       y r   rP   rP   r6   r4   f_OKz9GrammarTests.test_var_annot_basic_semantics.<locals>.f_OK      r6   c                      t                y r   printr3   s    r4   fbadz9GrammarTests.test_var_annot_basic_semantics.<locals>.fbad  s	    !Hr6   c                  "    t        t               y r   )r   no_such_globalrP   r6   r4   f2badz:GrammarTests.test_var_annot_basic_semantics.<locals>.f2bad  s
    .!r6   c                   0    e Zd ZU eed<   dZeed<   dZd Zy)6GrammarTests.test_var_annot_basic_semantics.<locals>.C_C__fooattrrM   r.   c                     || _         y 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    JAsOA r6   r   )r   rM   c                        e Zd ZU de_        e y)9GrammarTests.test_var_annot_basic_semantics.<locals>.CBadr   N)r   r   r   no_such_name_definedr   r   rP   r6   r4   CBadr     s    12$)3r6   r   c                   *    e Zd ZU eed<   g e_        e y):GrammarTests.test_var_annot_basic_semantics.<locals>.Cbad2r3   N)r   r   r   r   r   r3   r   r   rP   r6   r4   Cbad2r     s    Tr6   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~  sx   01 	956qSGN#	9y) 	-+,GN#	-
	 	**B/		 01 	F		"	.G
	  	  	**#,FGy) 	33 3	3 y) 	 	 	O	9 	9	- 	- 	 	  	.MM$q'9--	.	3 	3	 	sS   D9EE/E <F$F9EEE	F'FFFF(c                     G d d      } G d d|      } G d d|      } G d d      } G d	 d
||      } G d d||      }| j                  |j                  dt        i       | j                  |j                  i        | j                  |j                  dt        i       | j                  |j                  dt        i       | j                  |j                  i        | j                  |j                  i        y )Nc                       e Zd ZU eed<   y)4GrammarTests.test_annotations_inheritance.<locals>.Ar   Nr   r   r   r   r   rP   r6   r4   Ar         Ir6   r   c                       e Zd Zy)4GrammarTests.test_annotations_inheritance.<locals>.BNr   r   r   rP   r6   r4   Br        r6   r  c                       e Zd ZU eed<   y)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<   y)4GrammarTests.test_annotations_inheritance.<locals>.Dattr2Nr   rP   r6   r4   Dr    s    Jr6   r
  c                       e Zd Zy)4GrammarTests.test_annotations_inheritance.<locals>.ENr  rP   r6   r4   Er    r  r6   r  c                       e Zd Zy)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                 x     G d dt               } G d d|      }| j                  |j                  d   d       y )Nc                       e Zd Zed        Zy)>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    )3511r6   N)r   r   r   classmethodr  rP   r6   r4   CMetar    s    2 2r6   r  c                       e Zd ZU ded<   y);GrammarTests.test_var_annot_metaclass_semantics.<locals>.CCANNOTXXN)r   r   r   r   rP   r6   r4   CCr    s    Kr6   r"  )	metaclassxxr   )rE   r0   r   )r2   r  r"  s      r4   "test_var_annot_metaclass_semanticsz/GrammarTests.test_var_annot_metaclass_semantics  s5    	2D 	2	5 	++D17;r6   c           	         | j                  t        j                  i        | j                  t        j                  dt        t
        t        j                  t        t        f   t        t        z  d       | j                  t        j                  j                  dt        d       | j                  t        j                  i        y )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333V\\#s(5KRUX]R]^	`55&)5	744b9r6   c                    t        j                  d      }| j                  t              5  |j	                          d d d        | j                  t              5  |j                          d d d        | j                  t              5  |j                  d       d d d        y # 1 sw Y   gxY w# 1 sw Y   ExY w# 1 sw Y   y xY w)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     $778XYy) 	$!!#	$y) 	$!!#	$y) 	%!!!$	% 	%		$ 	$	$ 	$	% 	%s#   B"B.B:"B+.B7:Cc                     i }i }t        d||       | j                  |d   dt        d       | j                  t              5  |d    d d d        y # 1 sw Y   y xY w)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  sf    r#  #	' 	./QS1ABx( 	#!"	# 	# 	#s   AAc                    dt               i}t        d|       | j                  |d   d   t               | j                  |d   d   t               | j                  t              5  |d   d    d d d        i  G fdd      }t        di  |              | j                  d   d   t               y # 1 sw Y   FxY w)	Nr   z'X: int; Z: str = "Z"; (w): complex = 1jr3   r   r   c                   $    e Zd Zd Z fdZd Zy)5GrammarTests.test_var_annot_custom_maps.<locals>.CNS2c                     i | _         y r   r   r[   s    r4   r   z>GrammarTests.test_var_annot_custom_maps.<locals>.CNS2.__init__  s	    	r6   c                 .    || j                   |<   ||<   y 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__      yy&r6   Nr   )rC  s   r4   CNS2r?    s    ('r6   rG  z
x: int = 1)r   r   r0   r   r   rF   r9  )r2   nsrG  rC  s      @r4   test_var_annot_custom_mapsz'GrammarTests.test_var_annot_custom_maps  s    '6;-.s3S9-.s3S9x( 	' !#&	'		' 	' 	\2tv&#45c:C@	' 	's   '	B55B>c                     t               di G fdd      }t        di  |              | j                  d   d   t               y )Nr   c                   (    e Zd Z fdZfdZd Zy)1GrammarTests.test_var_annot_refleak.<locals>.CNS2c                     di| _         y r  r   )r2   cnss    r4   r   z:GrammarTests.test_var_annot_refleak.<locals>.CNS2.__init__  s    .4	r6   c                 .    || j                   |<   ||<   y r   r   rB  s      r4   r   z=GrammarTests.test_var_annot_refleak.<locals>.CNS2.__setitem__  rD  r6   c                      | j                   |   S r   r   r   s     r4   r   z=GrammarTests.test_var_annot_refleak.<locals>.CNS2.__getitem__  rF  r6   Nr   )rN  rC  s   r4   rG  rL    s    5('r6   rG  zX: strr3   )r   r   r0   r   )r2   rG  rN  rC  s     @@r4   test_var_annot_refleakz#GrammarTests.test_var_annot_refleak  sK     e&,		' 	' 	Xr46"#45c:C@r6   c                    i }t        d|       | j                  |d   d       d}t        ||       | j                  t         |d                d g       dddt        j                  d	}t        d
|       | j                  |d   d       y )Nzx: tuple = 1, 2r3   r   zdef f():
    x: int = yieldr   rV   r.         r   )r   r   cr-  zx: Tuple[int, ...] = a,*b,crV   r.   rT  rU  r   )r   r0   r   r,  r-  )r2   rH  stmts      r4   test_var_annot_rhszGrammarTests.test_var_annot_rhs  s    #C&)%T2gbgi4&19!fllC*B/C/2r6   c                    d } |         |d   |di i  d }d }| j                  |j                  j                  d       | j                  |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 xs dg   |	g di xr di i   |	di ddi  |	di ddixs i  dd}
 |
d        |
dd        |
di ddi dd} |dd        |ddd        |d   |dgd   |ddgd   |d!i ddi d!d } |         |d        |dd        |d!   |dgd"   |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+   |di ddd# d!d,} |d        |dd        |ddd        |dddd        |d'   |ddgd-   |dgd"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-   |dgdi d/di t        j                         5  t        j
                  d0t               	 t        di d2di | j                  d3       d d d        d4 } |d56       d5d7d8} |ddd59        |ddd5d:;        |ddd5d:<       d5d9d=} |ddd5d5d:>        |ddd5d:d5?       | j                  t        t        d@       | j                  t        t        dA       | j                  t        t        dB       dC }| j                   |dgddgdddDdEdddDf       | j                   |dgdd d'i f       | j                  t        t        dF       | j                   |di dGdHdIddGdHdIf       | j                   |ddJdHidKdGiddGdHdIf       t        | dL       t        | dM       dNt        fdO}| j                  |j                  dNt        i       d1t         fdP}| j                  |j                  d1t         i       d1t         fdQ}| j                  |j                  d1t         i       dd1t         fdR}| j                  |j                  d1t         i       d1t        fdS}| j                  |j                  d1t        i       d1t"        fdT}| j                  |j                  d1t"        i       ddV}| j                  |j                  dUdi       ddW}| j                  |j                  dUdi       ddX}| j                  |j                  dddY       ddZ}| j                  |j                  dddY       ddd]}| j                  |j                  ddddd^       ddd_d`	 	 	 ddf}| j                  |j                  dddddddddedg       ddd_d`ddddd[ddht         d\ddaddbddcdddNdefdi}| j                  |j                  dddt         ddddddedj	        G dk dl      } G dm dn|      }| j                  |j$                  j                  dodi       | j                  |j$                  j                  dodi       dp dNt        fdq       }| j                  |j                  dNt        i       dr        }x}ds        }fdtdu        }dvdvgd   dw        }              dx        }gd   j&                  j&                  dy        }dfdz}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 }y # t        $ r Y w xY w# 1 sw Y   xY w)Nc                       y r   rP   rP   r6   r4   f1z%GrammarTests.test_funcdef.<locals>.f1'  s    $r6   rP   c                      y r   rP   one_arguments    r4   f2z%GrammarTests.test_funcdef.<locals>.f2+      dr6   c                      y r   rP   two	argumentss     r4   f3z%GrammarTests.test_funcdef.<locals>.f3,  s    r6   r^  rc  c                      y r   rP   )one_args    r4   a1z%GrammarTests.test_funcdef.<locals>.a1/      $r6   c                      y r   rP   )rd  argss     r4   a2z%GrammarTests.test_funcdef.<locals>.a20      Dr6   c                       y r   rP   rests    r4   v0z%GrammarTests.test_funcdef.<locals>.v01      tr6   c                      y r   rP   r   rq  s     r4   v1z%GrammarTests.test_funcdef.<locals>.v12  rj  r6   c                      y r   rP   r   r   rq  s      r4   v2z%GrammarTests.test_funcdef.<locals>.v23      Tr6   rV   r.   rT  rU  r            r9   r   c                      y r   rP   r   s    r4   d01z&GrammarTests.test_funcdef.<locals>.d01I      dr6   rV   r   c                      y r   rP   r   s     r4   d11z&GrammarTests.test_funcdef.<locals>.d11Q      r6   r   c                      y r   rP   r   r   rV  s      r4   d21z&GrammarTests.test_funcdef.<locals>.d21U  rn  r6   rV   r.   rT  )r.   rT  rT  rV  c                      y r   rP   r   s     r4   d02z&GrammarTests.test_funcdef.<locals>.d02\      4r6   r   r.   r   c                      y r   rP   r  s      r4   d12z&GrammarTests.test_funcdef.<locals>.d12d  ra  r6   c                      y r   rP   r   r   rV  ds       r4   d22z&GrammarTests.test_funcdef.<locals>.d22h      r6   c                      y r   rP   ru  s     r4   d01vz'GrammarTests.test_funcdef.<locals>.d01vl  ra  r6   )rV   r.   rT  rU  c                      y r   rP   rx  s      r4   d11vz'GrammarTests.test_funcdef.<locals>.d11vs  r  r6   c                      y r   rP   r   r   rV  rq  s       r4   d21vz'GrammarTests.test_funcdef.<locals>.d21vw      Dr6   c                      y r   rP   rx  s      r4   d02vz'GrammarTests.test_funcdef.<locals>.d02v}  s    4r6   rS  c                      y r   rP   r  s       r4   d12vz'GrammarTests.test_funcdef.<locals>.d12v  s    dr6   rT  rU  r   c                      y r   rP   )r   r   rV  r  rq  s        r4   d22vz'GrammarTests.test_funcdef.<locals>.d22v  s    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   )rl  kwargss     r4   r   z$GrammarTests.test_funcdef.<locals>.f  s    <r6   r3   r   )rV   rT  rU  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                      y r   rP   r   s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  rj  r6   c                      y r   rP   r   s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  rs  r6   c                     y r   rP   r   s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  rj  r6   c                     y r   rP   r   s    r4   r   z$GrammarTests.test_funcdef.<locals>.f      tr6   c                       y r   rP   r   s    r4   r   z$GrammarTests.test_funcdef.<locals>.f      r6   c                       y r   rP   r   s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  r  r6   r   c                      y r   rP   r  s     r4   r   z$GrammarTests.test_funcdef.<locals>.f  rj  r6   c                     y r   rP   r  s     r4   r   z$GrammarTests.test_funcdef.<locals>.f  rz  r6   c                      y r   rP   r  s       r4   r   z$GrammarTests.test_funcdef.<locals>.f  r  r6   )r   rV  c                     y r   rP   r  s       r4   r   z$GrammarTests.test_funcdef.<locals>.f  r  r6   r   gc                      y r   rP   )r   r   rV  r  r   r   r  s          r4   r   z$GrammarTests.test_funcdef.<locals>.f  s    tr6   )r   rV  r   r  
   )ijhr  k      c                     y r   rP   r   r   rV  r  r   r   r  r  r  r  r  s              r4   r   z$GrammarTests.test_funcdef.<locals>.f      "r6   )r   rV  r   r  r  r  r  r  r   c                    y r   rP   r  s              r4   r   z$GrammarTests.test_funcdef.<locals>.f  r  r6   )	r   rV  r   r   r  r  r  r  r  c                       e Zd ZddZy)'GrammarTests.test_funcdef.<locals>.Spamc                     y r   rP   )r2   	_Spam__kws     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y)&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                      y r   rP   r   s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  s    r6   c                      y r   rP   r   s    r4   r   z$GrammarTests.test_funcdef.<locals>.f      r6   c                      y 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    47 r6   c                      y r   rP   r   s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  r  r6   .c                      y r   rP   r   s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  r  r6   c                      y r   rP   r   s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  r  r6   c                      y 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                      y r   rP   r  s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  s    4r6   c                       y r   rP   rl  s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  rs  r6   c                       y r   rP   r  s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  r  r6   c                      y r   rP   r   rl  s     r4   r   z$GrammarTests.test_funcdef.<locals>.f  rj  r6   c                      y r   rP   r   r  s     r4   r   z$GrammarTests.test_funcdef.<locals>.f  r  r6   c                      y r   rP   r   rl  s     r4   r   z$GrammarTests.test_funcdef.<locals>.f  rj  r6   c                      y r   rP   r   s    r4   r   z$GrammarTests.test_funcdef.<locals>.f  r  r6   c                       y r   rP   rl  r  s     r4   r   z$GrammarTests.test_funcdef.<locals>.f	  r  r6   c                     y r   rP   r   r   rl  s      r4   r   z$GrammarTests.test_funcdef.<locals>.f
  rz  r6   c                     y r   rP   r   s     r4   r   z$GrammarTests.test_funcdef.<locals>.f  r  r6   c                      y r   rP   r   rl  r  s      r4   r   z$GrammarTests.test_funcdef.<locals>.f      $r6   c                      y r   rP   r   rl  r  s      r4   r   z$GrammarTests.test_funcdef.<locals>.f  r  r6   c                      y r   rP   r   r  s     r4   r   z$GrammarTests.test_funcdef.<locals>.f  ra  r6   c                     y r   rP   r   r   rl  r  s       r4   r   z$GrammarTests.test_funcdef.<locals>.f      Tr6   c                     y r   rP   r   r   r  s      r4   r   z$GrammarTests.test_funcdef.<locals>.f  r  r6   r   )r   )r   rT  )r   rV   rV  r.   )rV  r.   r   rV   )rU  r   )r   rV   rV  r.   r   rT  r  r{  )r   rV   rV  r.   r   rT  r  r{  r  r|  r  r9   r  r  r  r  )r0   __code__co_varnamesrW   rX   rY   BytesWarningr   rL   	TypeErrorrF   rG   rH   r   r   r   r   r.  r   __call__)r2   r\  r`  rf  ri  rm  rr  rv  ry  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""$002CD002F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!!(L9M'F1;' 		KL	M 	)S'*?A#A##&A##&'*RQqCc:Qq#ss;+t-=>+t->?+t-EF	 10QF0a099:N3D 	E1ua<*<=+t-EFB[ABk'BC	E@@F;+?@k'BC	E 	4.4/ 	D**Xt,<=**S#J7**S#J7##**S#J7#**S#J75**S%L9**S!H5!**S!H5%**!!,<=(**!!,<=;** qqq9	;	#a 	#	#	#** qqqqq!R1	2	#RT 	#A 	#! 	#1 	#S 	#Q 	#1 	#a 	#	#	#** !!!RS "b2	3	 	 	$//+q1AB..a0@A	D 
**Xt,<=  
 
	 

tS	!	 
	dD	 

			$	$ 
% "%&3& 	#!&&")%m  		M 	Ms0   ;c%c$c%	c"c%!c""c%%c/c                 $   d }| j                   |       d       d }d }| j                   |       g d       d&dfdfd	}| j                   |       d       d'd}| j                   |dd
      d       | j                   |dd
d      d       t        | d       t        | d       ddd}| j                   |dd
      d       | j                   |dd
d      d       d }d }d }	d }
d }d }d }d }d }d  }d! }d" }d# }d$ }d% }y )(Nc                       yNr   rP   rP   r6   r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>  r   r6   r   c                      t         t           S r   )r   r  rP   r6   r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>  s
    ad r6   c                  2    dD  cg c]  } d| k  	 c} S c c} w )N)rT  r   r.   rP   r   s    r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>  s    j1q1u1 1s   )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    AC 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   rT  r{  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                      yr  rP   r  s    r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>%  r   r6   c                       yr  rP   r  s    r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>&  r   r6   c                       yr  rP   r  s    r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>'  r   r6   c                      yr  rP   r  s     r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>(  r   r6   c                      yr  rP   r  s     r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>)  r   r6   c                      yr  rP   r  s     r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>*  r   r6   c                      yr  rP   r  s    r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>+  r   r6   c                       yr  rP   r  s     r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>,  r   r6   c                     yr  rP   r  s      r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>-  r   r6   c                     yr  rP   r   s     r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>.  r   r6   c                      yr  rP   r  s      r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>/  r   r6   c                      yr  rP   r	  s      r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>0  r   r6   c                      yr  rP   r  s     r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>1  r   r6   c                     yr  rP   r  s       r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>2  r   r6   c                     yr  rP   r  s      r4   r  z+GrammarTests.test_lambdef.<locals>.<lambda>3  r   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   q!1y)#17=q!(Aq1%Aq!a(4!234!78!(Aa&)Aa"v. !"!&$ ))%,(r6   c                     d}~d } |        y )NrV   c                  
    d} ~ y r   rP   r   s    r4   fooz*GrammarTests.test_simple_stmt.<locals>.foo<  s	    AQr6   rP   )r2   r3   rN  s      r4   test_simple_stmtzGrammarTests.test_simple_stmt9  s    	  	r6   c                 x    	 	 d}d}dx}x}}d\  }}}dx}x\  }}}x\  }}}}t        | d       t        | d       y )NrV   r  )rV   r.   )rT  rU  z	x + 1 = 1za + 1 = b + 2r   )	r2   r3   r   r   abcr   r   rV  xyzs	            r4   test_expr_stmtzGrammarTests.test_expr_stmtD  s`    	A1a(444gaA41a#4-41r6   c           	         d}g d}|D ]  }dj                  |      }|D ]  }|j                  |      }| j                  |      5  | j                  t        |      5  t	        |       d d d        d d d        |j                  dd      }| j                  |      5  | j                  t        d      5  t	        |       d d d        d d d          y # 1 sw Y   mxY w# 1 sw Y   qxY w# 1 sw Y   .xY w# 1 sw Y   xY w)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 '{}')sourcerN  z(foo.)zinvalid syntax)formatr   r   rG   r   rb   )r2   keywordscaseskeyword
custom_msgcaserU  s          r4   (test_former_statements_refer_to_builtinsz5GrammarTests.test_former_statements_refer_to_builtinsS  s   "
   
	%G'..w7J %W-\\\0 %//ZH %V%%  x8\\\0 %//=MN %V%% %%
	%
% %% %
% %% %sH   C C	(C C83C,	?C8CC  C),C51C88Dc                     g d}|\  }}}|||f}~~~~~d\  }}}~~~d\  }}}}	}
}}~~~~	~
~d\  }}}}	}
}}~~~~	~
~t        d      }|dd= t        ddd	       y )
Nr  rR  abcdefgabcdrV   r.   z-del a, (b[0].c, (d.e, f.g[1:2])), [h.i.j], ()r}   r   )r   r   )r2   rQ  r3   r   r   rR  r   r   rV  r  r   r   r  r_  s                 r4   test_del_stmtzGrammarTests.test_del_stmtj  s    1aAgq1c1a (1aAq!1Aq'1aAq!1AqF|1I?vVr6   c                      y r   rP   r[   s    r4   test_pass_stmtzGrammarTests.test_pass_stmt  s    r6   c                      y r   rP   r[   s    r4   test_break_stmtzGrammarTests.test_break_stmt  s    r6   c                     d}|rd}d}|sd}	 |dk7  r| j                  |       d}|sd}	 	 d}	|dk7  r| j                  |       y y #  d}Y nxY w|sIF# d}w xY w)NrV   r   r_   okz'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@ $;IIcN,C$;IIcN @?   s   	AAc                       d fd	} |        y )Nc                     d}|r|dz  }	 | r|dk(  r| dz  } n|dz  }|dkD  s|dk7  rj                  d       y y #   xY w)Nr.   rV   z1continue then break in try/except in loop broken!rg  )extra_burning_oilcount	big_hippor2   s      r4   
test_innerz9GrammarTests.test_break_continue_loop.<locals>.test_inner  sg    I
(Y!^)Q.)NI qyIN		MN +s   < < ?)rV   r   rP   )r2   ro  s   ` r4   test_break_continue_loopz%GrammarTests.test_break_continue_loop  s    	O 	r6   c                 ~    d }d }d } |         |       } |       }| j                  |dd       t        | d       y )Nc                       y r   rP   rP   r6   r4   g1z$GrammarTests.test_return.<locals>.g1  s    &r6   c                       yr   rP   rP   r6   r4   g2z$GrammarTests.test_return.<locals>.g2  s    r6   c                      ddg} dg| S )Nr.   rT  rV   rP   r  s    r4   g3z$GrammarTests.test_return.<locals>.g3  s    AA5q5Lr6   r  z unparenthesized star expr returnzclass foo:return 1r5  )r2   rs  ru  rw  r3   r   s         r4   test_returnzGrammarTests.test_return  s@    	 	DDI'IJ4!56r6   c                 H   d}|dk  r|dz  }	 	 	 | j                  |d       d}|dk  r|dz  }	 	 	 | j                  |d       d}|dk  r|dz  }	 ddz   	 | j                  |d       dD ]  }| j                  |d       	 	  n | j                  |d       dD ]  }| j                  |d       	 	  n | j                  |d       dD ]  }| j                  |d       	 ddz    n | j                  |d       y #  Y xY w#  Y xY w#  Y xY w#  Y  xY w#  Y  gxY w#  Y  =xY wNr   r.   rV   r   rV   r/   r2   rm  s     r4   test_break_in_finallyz"GrammarTests.test_break_in_finally  st   aiQJE"aiQJE"aiQJE!" 	EUA&	 	" 	EUA&	 	" 	EUA&!	 	"W      s0   D D7C;>DD	DDD!c                    d}|dk  r|dz  }	 	 | j                  |d       d}|dk  r|dz  }	 	 | j                  |d       d}|dk  r|dz  }	 ddz   | j                  |d       dD ]  }	 	  | j                  |d       dD ]  }	 	  | j                  |d       dD ]  }	 ddz   
 | j                  |d       y #  Y xY w#  Y xY w#  Y xY w#  Y mxY w#  Y YxY w#  Y ExY wrz  r/   r|  s     r4   test_continue_in_finallyz%GrammarTests.test_continue_in_finally  sD   aiQJE"aiQJE"aiQJE!" 	E		 	" 	E		
 	" 	E!		 	"Y      s0   C $C!>CC	CCC!C%c                     d }| j                   |       d       d }| j                   |       d       d }| j                   |       d       y )Nc                      	 	 y#  Y yxY wr   rP   rP   r6   r4   rs  z/GrammarTests.test_return_in_finally.<locals>.g1;  s    q   rV   c                      	 	 y#  Y yxY w)NrT  rP   rP   r6   r4   ru  z/GrammarTests.test_return_in_finally.<locals>.g2B  s    qr  rT  c                      	 ddz   y#  Y yxY w)NrV   r   rU  rP   rP   r6   r4   rw  z/GrammarTests.test_return_in_finally.<locals>.g3I  s    !qs    rU  r/   )r2   rs  ru  rw  s       r4   test_return_in_finallyz#GrammarTests.test_return_in_finally:  sM    	
 	q!	
 	q!	
 	q!r6   c                     d }| j                   |d      d       | j                   |d      d       d }| j                   |d      d       | j                   |d      d       y )Nc                 ^    dD ]  }d}|dk  s|dz  }	 ||z   | r c S  dfS # | r Y (w xY w)Nr{  r   r"  r  endrP   r3   rm  count2s      r4   rs  z;GrammarTests.test_break_in_finally_after_return.<locals>.g1R  s[     "rkbLF"$v~! " %'' ! s   %,,Fr  T)r  rV   r  c                 Z    dD ]  }dD ]  }	 ||z   | r  c c S   dfS # | r Y  &w xY w)Nr{  )r  r"  r  rP   r  s      r4   ru  z;GrammarTests.test_break_in_finally_after_return.<locals>.g2`  sU     "& "F"$v~! 	"" %'' ! s   "**r/   r2   rs  ru  s      r4   "test_break_in_finally_after_returnz/GrammarTests.test_break_in_finally_after_returnP  s`    
	( 	EB'D>2	( 	EB'D>2r6   c                     d }| j                   |d      d       | j                   |d      d       d }| j                   |d      d       | j                   |d      d       y )	Nc                 D    d}|dk  r|dz  }	 || r S d|fS # | r Y w xY w)Nr   r  rV   r  rP   r3   rm  s     r4   rs  z>GrammarTests.test_continue_in_finally_after_return.<locals>.g1n  sC    E#+
!   %<   s    FrV   T)r  r  c                 <    dD ]
  }	 || r 	c S  dfS # | r Y w xY w)Nr{  r  rP   r  s     r4   ru  z>GrammarTests.test_continue_in_finally_after_return.<locals>.g2{  s?     !!   	! %<   s   r   )r  rV   r/   r  s      r4   %test_continue_in_finally_after_returnz2GrammarTests.test_continue_in_finally_after_returnl  s`    		  	EA&D<0	  	EA&D:.r6   c                    d }d }d }d }d }d }t        | d       t        | d       d	 }d
 }t        | d       t        | d       d }d }d }d }d }| j                  t         |             dg       t        | d       t        | d       t        | d       t        | d       t        | d       t        | d       t        | d       t        | d       t        | d       y )Nc               3      K   d y wr   rP   rP   r6   r4   r  z"GrammarTests.test_yield.<locals>.g  s
     q   c               3   $   K   dE d {    y 7 wNrP   rP   rP   r6   r4   r  z"GrammarTests.test_yield.<locals>.g  s     B   c               3      K   d} y wr   rP   r   s    r4   r  z"GrammarTests.test_yield.<locals>.g  s     1Wr  c               3   $   K   dE d {   } y 7 wr  rP   r   s    r4   r  z"GrammarTests.test_yield.<locals>.g  s     ]]r  c               3      K   d y wN)rV   rV   rP   rP   r6   r4   r  z"GrammarTests.test_yield.<locals>.g  s
     tr  c               3      K   d} y wr  rP   r   s    r4   r  z"GrammarTests.test_yield.<locals>.g  s     4Zr  zdef g(): yield from (), 1zdef g(): x = yield from (), 1c               3      K   ddf y wr   rP   rP   r6   r4   r  z"GrammarTests.test_yield.<locals>.g  s     1W   
c               3   (   K   ddE d {   f y 7 wNrV   rP   rP   rP   r6   r4   r  z"GrammarTests.test_yield.<locals>.g  s     ]#]s   zdef g(): 1, yield 1zdef g(): 1, yield from ()c               3   &   K   t        d       y wr   r   rP   r6   r4   r  z"GrammarTests.test_yield.<locals>.g  s     !G   c               3   (   K   t        dd       y wr   r  rP   r6   r4   r  z"GrammarTests.test_yield.<locals>.g  s     !Gas   c               3   6   K   t        dE d {          y 7 	wr  r  rP   r6   r4   r  z"GrammarTests.test_yield.<locals>.g  s     rM#Ms   
c               3   8   K   t        dE d {   d       y 7 
w)NrP   rV   r  rP   r6   r4   r  z"GrammarTests.test_yield.<locals>.g  s     rMA&Ms   c               3   $   K   d} dddg|  y w)NrU  r   r{  rV   r.   rT  rP   rp  s    r4   r  z"GrammarTests.test_yield.<locals>.g  s     q!Q~~!5   )rV   r.   rT  rU  r   r{  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#4!674!<= #&5ac%7$894!674!9:4!<=4!?@4)4.4!4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       y )Nc               3   <   K   dfD  cg c]  } |  c}  y c c} w wr   rP   r   s    r4   r  z4GrammarTests.test_yield_in_comprehensions.<locals>.g  s     Qw[)!))s   		c               3   L   K   dE d {   fD  cg c]  } |  c}  y 7 c c} w wr  rP   r   s    r4   r  z4GrammarTests.test_yield_in_comprehensions.<locals>.g  s     "}./!/}/s   $$	$$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91	3=1	300	231	331	303	551	301	3'1	3r6   c                 `    t        d      # t         $ r Y nw xY wt        # t        $ r Y y w xY w)Nzjust testing)RuntimeErrorKeyboardInterruptr[   s    r4   
test_raisezGrammarTests.test_raise  s-    //!T!$$ &$&s    	! 	--c                 d    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} y )Nr   )time)pathargv)rI   r  r  r  )r2   rI   r  r  r  s        r4   test_importzGrammarTests.test_import  s     	#$%%r6   c                      y r   rP   r[   s    r4   test_globalzGrammarTests.test_global  r   r6   c                     ddfd}y )Nr   c                       y 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  s    	r6   c                     	 	 d sJ 	 	 	 	 y # t         $ r}| j                  d       Y d }~!d }~ww xY w# t         $ r}| j                  d       Y d }~y d }~ww xY w)Nc                     | S r   rP   r   s    r4   r  z*GrammarTests.test_assert.<locals>.<lambda>  s     r6   z6'assert True' should not have raised an AssertionErrorz;'assert True, msg' should not have raised an AssertionError)AssertionErrorrL   r2   r   s     r4   test_assertzGrammarTests.test_assert  so    z	P	2	  	PIINOO	P
  	2II 1 2 2	2s   	1,1	AAATz Won't work if __debug__ is Falsec                     	 J d       # t        $ r)}| j                  |j                  d   d       Y d }~nd }~ww xY w	 J # t        $ r/}| j                  t	        |j                        d       Y d }~y d }~ww xY w)Nr   rh  )rL   r  r0   rl  r   r  s     r4   test_assert_failuresz!GrammarTests.test_assert_failures  sq    	?eO1 	/QVVAY..	/
	E5 	-S[!,,	-s'   	 	;6;A 	A9
%A44A9c                     | j                  dd       | j                  dd       | j                  dd       | j                  t              5  t        ddd       t        d	dd       d d d        y # 1 sw Y   y xY w)
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%|V<)<@	A 	A 	As   A11A:c                 0   t        j                         5  t        j                  dt               	 t	        ddd       | j                  t
              5  t	        ddd       d d d        | j                  t
              5  t	        ddd       d d d        | j                  t
              5  t	        ddd       d d d        d d d        y # t
        $ r | j                  d       Y w xY w# 1 sw Y   xY w# 1 sw Y   ixY w# 1 sw Y   JxY w# 1 sw Y   y xY w)	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T*L&A "";/ B*L&AB"";/ F.fEF"";/ @(,?@	@ 	@  T		RSTB BF F@ @	@ 	@su   DCDC(!D>C4D)D 7DC%"D$C%%D(C1	-D4C=	9D D		DDc                      	 	 	 	 	 	 	 	 y r   rP   r[   s    r4   test_ifzGrammarTests.test_if0  s    r6   c                 8    	 	 	 d}	 d}| j                  |d       y )Nr   r.   r/   r1   s     r4   
test_whilezGrammarTests.test_while=  s,      AAr6   c                 n   dD ]  } dD ]  \  }}} 	  G d d      }d} |d      D ]  }||z   }	 |dk7  r| j                  d       g }d	D ]  \  }|j                  |        | j                  |g d       g }g dx}x}	}
g ||	|
D ]  }|j                  |        | j                  |d
|z         y )Nr  rP   c                       e Zd Zd Zd Zd Zy)&GrammarTests.test_for.<locals>.Squaresc                      || _         g | _        y r   )maxsofar)r2   r  s     r4   r   z/GrammarTests.test_for.<locals>.Squares.__init__R  s    
r6   c                 ,    t        | j                        S r   )r   r  r[   s    r4   __len__z.GrammarTests.test_for.<locals>.Squares.__len__U  s    c$**o5r6   c                     d|cxk  r| j                   k  st         t        t        | j                        }||k  r)| j                  j	                  ||z         |dz   }||k  r)| j                  |   S )Nr   rV   )r  
IndexErrorr   r  append)r2   r  ns      r4   r   z2GrammarTests.test_for.<locals>.Squares.__getitem__V  sl    A((
*:(
*:

O1fJJ%%ac*!A 1f zz!}$r6   N)r   r   r   r   r  r   rP   r6   r4   Squaresr  Q  s      6%r6   r  r   r  i  zfor over growing sequence)r  r  r  rT  )rL   r  r0   )r2   r  r  r  r  r  r3   resultr   r   rV  s              r4   test_forzGrammarTests.test_forL  s    A 	GAq! 		% 	% %A!A#a%8II12$ 	BAMM!	+A!a! 	AMM!	Q'r6   c                    	 ddz   	 ddz   	 ddz   ddz   	 	 | j                  t              5  t        ddd       t        ddd       d d d        y # t         $ r Y Vw xY w# t        $ r Y _t        $ r
}Y d }~ld }~w Y sxY w# t        t        t         f$ r Y w xY w# t        t        t         f$ r
}Y d }~d }~ww xY w# w xY w# 1 sw Y   y xY w)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   rh  s     r4   test_tryzGrammarTests.test_trym  s    	aC qS qSqS{+ 	XH#vVI3PVW	X 	X ! 		
 % )%67==)%67DD	X 	Xs[   A A" B B C	AA"	B-B:BBBB<7B<?CCc                 <   	 ddz   	 ddz   	 ddz   ddz   	 	 | j                  t              5  t        ddd       t        ddd       t        ddd       d d d        y # g xt         % x n nn x Y qcY w xY w# g xt        % x n nn t         % x}d }~nd }~ nn x Y cY w xY w# g xt        t        t         f% x n nn x Y cY w xY w# g xt        t        t         f% x}d }~nd }~ nn x Y cY w xY w# w xY w# 1 sw Y   y xY w)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    	aC qS qSqS{+ 	GI3PVWJCQWX8#vF	G 	G	! 	D	
 	$$!.$$. 	?9&78>$$>E9&78EE	G 	Gs=   A  A? B3 C (D A<?,B03"C(D
DDc                      	 	 	 	 	 	 y r   rP   r[   s    r4   
test_suitezGrammarTests.test_suite  s     r6   c                      	 	 	 	 	 y r   rP   r[   s    r4   	test_testzGrammarTests.test_test  s     48r6   c                     	 ddk(  }ddk(  r	 ddk7  r	 ddk  r	 ddkD  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  r1dcxkD  r+dcxk(  r%dcxk\  rdcxk  rdcxk7  rdcxv r|cxvr	|cxu r|urn y y y r  rP   r1   s     r4   test_comparisonzGrammarTests.test_comparison  s     !V6464q5$q5$646464A:t7DB;qD1DDQD!DqDADQD!D1DdDr6   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       t        j                         5  t        j                  dt               t	        ddd       t	        ddd       t	        ddd       t	        ddd       t	        ddd       t	        ddd       t	        ddd       t	        ddd       d d d        y # 1 sw Y   y xY w)Nc                 *    j                  | |       y r   r+   r   rh  r2   s     r4   rv   z6GrammarTests.test_comparison_is_literal.<locals>.check      %%dC0r6   zx is 1z"is" with 'int' literalzx is "thing"z"is" with 'str' literalz1 is xzx is y is 1z
x is not 1z"is not" with 'int' literalzx is not (1, 2)z"is not" with 'tuple' literalz(1, 2) is not xz	None is 1z	1 is Nonezx == 3 is yzx == "thing" is yr   z	x is Noner}   r   z
x is Falsez	x is Truezx is ...z	None is xz
False is xz	True is xz... is xrW   rX   rY   rZ   r   ru   s   ` r4   test_comparison_is_literalz'GrammarTests.test_comparison_is_literal  s   	1 	h34n9:h34m89l;<!BC!BCk67k67m89!#>?$$& 		6!!'=9Kv6L,7Kv6Jf5Kv6L,7Kv6Jf5		6 		6 		6s   >BD

D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        y # 1 sw Y   y xY w)LNc                 *    j                  |        y 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   rh  s   ` @r4   test_warn_missed_commaz#GrammarTests.test_warn_missed_comma  s   	1 =     ./././12 !" nooonA ././)*nooonZ   ./ !" = <!"01;!"01<!"34A01@+,;!"#$ !6!"  ! $$& 	B!!'=9/vFNL&9NL&9%|V<$lF;*L&A	B 	B 	Bs   #A)IIc                     d}d}d}y )NrV   r   rP   r1   s     r4   test_binary_mask_opsz!GrammarTests.test_binary_mask_ops8  s    r6   c                     d}d}d}y )Nr.   r   rV   rP   r1   s     r4   test_shift_opszGrammarTests.test_shift_ops=  s    r6   c                     d}d}d}d}y )NrV   r.   r  rP   r1   s     r4   test_additive_opszGrammarTests.test_additive_opsB  s    r6   c                     d}d}d}d}y )NrV         ?r   g        rP   r1   s     r4   test_multiplicative_opsz$GrammarTests.test_multiplicative_opsH  s    r6   c                     d}d}d}d}d}y )NrV   r  r  rP   r1   s     r4   test_unary_opszGrammarTests.test_unary_opsN  s    #!r6   c                    dd l }dd l}|j                  d   }|j                         }|j                  d   j                         }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	        |      }|j                  d        | j                  t        |      d       y )Nr   r  01234r  r   rV   r.   r  rT  r   rU  r  c                 0    t        |       j                  | fS r   )rE   r   r   s    r4   r  z-GrammarTests.test_selectors.<locals>.<lambda>p  s    d1g..2 r6   r  z[1, (1,), (1, 2), (1, 2, 3)])rI   r  r  modulesr   sortr0   r   )	r2   rI   r  rV  r3   r   rM   r  Ls	            r4   test_selectorszGrammarTests.test_selectorsU  s     	HHQKIIKKK$$&aDbEaFbqEabEaDbcFcrFbH !"#%G	2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}y )NrV   r.   rT  r   )r   rd  rU  r   r{  )r   rd  threefourfivesix>   r   rd  r  >   r.   rT  rU  r3   r(  rP   r1   s     r4   
test_atomszGrammarTests.test_atomss  s     !QCM!QAJAKQ$a a!a!Q!LGAK#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             }y ) Nc                       e Zd Zy)%GrammarTests.test_classdef.<locals>.BNr  rP   r6   r4   r  r    r  r6   r  c                       e Zd Zy)&GrammarTests.test_classdef.<locals>.B2Nr  rP   r6   r4   B2r    r  r6   r  c                       e Zd Zy)&GrammarTests.test_classdef.<locals>.C1Nr  rP   r6   r4   C1r    r  r6   r  c                       e Zd Zy)&GrammarTests.test_classdef.<locals>.C2Nr  rP   r6   r4   C2r    r  r6   r  c                       e Zd Zy)%GrammarTests.test_classdef.<locals>.DNr  rP   r6   r4   r
  r!    r  r6   r
  c                       e Zd Zd Zd Zd Zy)%GrammarTests.test_classdef.<locals>.Cc                      y r   rP   r[   s    r4   meth1z+GrammarTests.test_classdef.<locals>.C.meth1  rz  r6   c                      y r   rP   )r2   args     r4   meth2z+GrammarTests.test_classdef.<locals>.C.meth2  r  r6   c                      y r   rP   )r2   ri  rm  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y)%GrammarTests.test_classdef.<locals>.GNr  rP   r6   r4   Gr.        r6   r/  c                       e Zd Zy)%GrammarTests.test_classdef.<locals>.HNr  rP   r6   r4   Hr2    r0  r6   r3  c                       e Zd Zy)%GrammarTests.test_classdef.<locals>.INr  rP   r6   r4   Ir5    r0  r6   r6  c                      |       S r   rP   )rV  r,  s    r4   r  z,GrammarTests.test_classdef.<locals>.<lambda>  s    ?1% r6   c                       e Zd Zy)%GrammarTests.test_classdef.<locals>.JNr  rP   r6   r4   Jr9    r0  r6   r:  .rV   c                       e Zd Zy)%GrammarTests.test_classdef.<locals>.KNr  rP   r6   r4   Kr<    r0  r6   r=  c                       e Zd Zy)%GrammarTests.test_classdef.<locals>.LNr  rP   r6   r4   r  r?    r0  r6   r  r   c                       e Zd Zy)%GrammarTests.test_classdef.<locals>.MNr  rP   r6   r4   r/  rA    r0  r6   r/  )r  )r2   r  r  r  r  r
  r   r/  r3  r  r6  r:  r=  r  r/  r,  s                  @r4   test_classdefzGrammarTests.test_classdef  s     B 	* 	* 	)	 
 " 
"	 
	% 
&
	$Q	' 
(	)	)/	: 
;
	1		&	&	/	/ 
0r6   c                 f    g d}| j                  |D ci c]  }||dz   
 c}dddd       y c c}w )Nr  rV   r.   rT  rU  r/   )r2   numsr  s      r4   test_dictcompszGrammarTests.test_dictcomps  s6     .A!AaC%.A!0BC.s   .c                     g d}g d}g d} j                  |D cg c]  }|j                          c}g d        j                  |D cg c]  }d|z  	 c}g d        j                  |D cg c]
  }|dkD  s	| c}g d        j                  |D cg c]  }|D ]  }||f  c}}g d	        j                  |D cg c]   }|D cg c]	  }d
|v s| c}D ]  }||f " c}}}g d        j                  t        d      D cg c]  } d |       c}dgddgg dg dg dg       d }	 j                   |	|      g d        fd}
 |
        t         d       t         d       g d}g d}g d}|D cg c]'  \  }}|D ]  \  }}|D ]  \  }}||k(  r	||k(  r||f  ) }}}}}}} j                  |g d       y c c}w c c}w c c}w c c}}w c c}w c c}}}w c c}w c c}}}}}}w )NrW  )AppleBananaCoconut)z  Applez Banana zCoco  nut  )rG  rH  z	Coco  nutrT  )rT  r{  r9   r     r.   r  ))rV   rG  rV   rH  rV   rI  )r.   rG  r.   rH  r.   rI  )rT  rG  rT  rH  rT  rI  )rU  rG  rU  rH  rU  rI  )r   rG  r   rH  r   rI  r  )
rK  rL  rM  rN  rO  rP  rQ  rR  rS  rT  r   c                 J    t        | dz         D cg c]  }| |z  	 c}S c c}w r   range)r   r  s     r4   r  z-GrammarTests.test_listcomps.<locals>.<lambda>  s     51:$>aQT$> $>s    rV   )rV   r.   rU  )rV   rT  r9      )rV   rU     @      c                 T    | D cg c]  }|dkD  s	d|cxk  xr dk  nc  c}S c c}w )Nr.   r   rT  rP   )lr3   s     r4   test_in_funcz1GrammarTests.test_listcomps.<locals>.test_in_func  s$    '(2!AEAIAI222s   
%%)FFFc            
          j                  dD  cg c]  } | | dz   fD cg c]  }| c} c}} ddgddgddgg       y c c}w c c}} w )N)rV   rT  r   rV   r.   rT  rU  r   r{  r/   )r3   r   r2   s     r4   test_nested_frontz6GrammarTests.test_listcomps.<locals>.test_nested_front  sM    wG!1a!e*5Qq5G !fq!fq!f575Gs   A
	AA
A
z"[i, s for i in nums for s in strs]z[x if y]))rV   Boeing)r.   Ford)rT  
Macdonalds))r  Airliner)r"  Engine)   Cheeseburger))rV   r  )rV   r"  )r.   r"  )rT  rf  ))ra  rd  )ra  re  )rb  re  )rc  rg  )r0   striprW  r   )r2   rD  strsspcsrM   r3   r  r   r  r^  r`  	supplierspartssuppartsnosnamepnopnamesp_snosp_pnos   `                   r4   test_listcompszGrammarTests.test_listcomps  s&   -5T2!'')24TU.A!a%.0ABT3QU!3Y?$=Q=11a&=&=G	H 	$VVQD8UqCSTH8UV11a&V&V9	: 	ERSHUq>BU#1vy-ATU	W	3 	d+-BC	7 	4!EF4,
	

 !*
 
e"'
 3(/	
 %VVF]sf}	 %.




 
 	 = 	>m 3.3= 9VV VB
sG   GG2
G =G G%
		G0	G+G+ G0G7,G<+G0c           
      :   d t        d      D        }| j                  t        |      t        d      D cg c]  }| c}       	 t        |       | j                  d       d	 fdD        }t        |       | j                  d       | j                  t        d dD              dD cg c]  }dD ]  }||f  c}}       | j                  t        d	 d
D              d
D cg c]  }dD ]  }||f  c}}       t        d      D cg c]  }| c}d d D        D        }| j                  t        |      t        t        d      D cg c]  }| c}             | j                  t        d t        d      D              t        t        d      D cg c]  }|dz  	 c}             | j                  t        d t        d      D              t        t        d      D cg c]  }|dz  s	||z   c}             | j                  t        d d t        d      D        D              t        t        d      D cg c]  }| c}             | j                  t        d d d t        d      D        D        D              t        t        d      D cg c]  }| c}             | j                  t        d d t        d      D        D cg c]  }| c}D              t        t        d      D cg c]  }| c}             | j                  t        d d d t        d      D        D        D              t        t        d      D cg c]  }| c}             | j                  t        d d d t        d      D        D        D              d       t        | d       t        | d        y c c}w # t        $ r Y mw xY w# t
        $ r Y Sw xY wc c}}w c c}}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w )!Nc              3   X   K   | ]  }t        d       D cg c]  }| c}  yc c}w w)r  NrV  .0r3   s     r4   	<genexpr>z,GrammarTests.test_genexps.<locals>.<genexpr>  s"     6r#Aa#6#s   *	%*rV   r  z&should produce StopIteration exceptionc              3   "   K   | ]  }  y wr   rP   )rx  r  r   s     r4   ry  z,GrammarTests.test_genexps.<locals>.<genexpr>	  s     qs   zshould produce TypeErrorc              3   2   K   | ]  }d D ]  }||f 
  yw)r_  NrP   rx  r3   r   s      r4   ry  z,GrammarTests.test_genexps.<locals>.<genexpr>  s      EfEq!fEfE   r_  c              3   2   K   | ]  }d D ]  }||f 
  yw)xyNrP   r|  s      r4   ry  z,GrammarTests.test_genexps.<locals>.<genexpr>  s      ADAqq!fAfAr}  abr  c              3       K   | ]  }|  y wr   rP   rw  s     r4   ry  z,GrammarTests.test_genexps.<locals>.<genexpr>  s     '1Q'   c              3       K   | ]  }|  y wr   rP   rx  r   s     r4   ry  z,GrammarTests.test_genexps.<locals>.<genexpr>  s     qr  c              3   &   K   | ]	  }|d z    ywr.   NrP   rw  s     r4   ry  z,GrammarTests.test_genexps.<locals>.<genexpr>  s     5aQT5r  r.   c              3   2   K   | ]  }|d z  s	||z    ywr  rP   rw  s     r4   ry  z,GrammarTests.test_genexps.<locals>.<genexpr>  s     ;QqsQqS;s   

c              3       K   | ]  }|  y wr   rP   rw  s     r4   ry  z,GrammarTests.test_genexps.<locals>.<genexpr>  s     ?1Q?r  c              3       K   | ]  }|  y wr   rP   r  s     r4   ry  z,GrammarTests.test_genexps.<locals>.<genexpr>  s     (>q(>r  c              3       K   | ]  }|  y wr   rP   rw  s     r4   ry  z,GrammarTests.test_genexps.<locals>.<genexpr>       L1QLr  c              3       K   | ]  }|  y wr   rP   r  s     r4   ry  z,GrammarTests.test_genexps.<locals>.<genexpr>  s     (Kq(Kr  c              3       K   | ]  }|  y wr   rP   rx  r   s     r4   ry  z,GrammarTests.test_genexps.<locals>.<genexpr>       4J1Q4Jr  c              3       K   | ]  }|  y wr   rP   rw  s     r4   ry  z,GrammarTests.test_genexps.<locals>.<genexpr>  r  r  c              3       K   | ]  }|  y wr   rP   r  s     r4   ry  z,GrammarTests.test_genexps.<locals>.<genexpr>  r  r  c              3       K   | ]  }|  ywTNrP   rw  s     r4   ry  z,GrammarTests.test_genexps.<locals>.<genexpr>  s     \1Q\r  c              3       K   | ]  }|  y wr   rP   r  s     r4   ry  z,GrammarTests.test_genexps.<locals>.<genexpr>  s     (Sq(Sr  c              3       K   | ]  }|  ywr  rP   r  s     r4   ry  z,GrammarTests.test_genexps.<locals>.<genexpr>       4R1Q4Rr  c              3       K   | ]  }|  ywr  rP   rw  s     r4   ry  z,GrammarTests.test_genexps.<locals>.<genexpr>  s     e1Qer  c              3      K   | ]  } yw)FNrP   r  s     r4   ry  z,GrammarTests.test_genexps.<locals>.<genexpr>  s     (\qV[(\r  c              3       K   | ]  }|  ywr  rP   r  s     r4   ry  z,GrammarTests.test_genexps.<locals>.<genexpr>  r  r  r   zfoo(x for x in range(10), 100)zfoo(100, x for x in range(10)))	rW  r0   nextrL   StopIterationr  r   sumr   )r2   r  r3   r   r   r   s        @r4   test_genexpszGrammarTests.test_genexps  sN   6U1X6aeBi"81"89	GII>? 	AAGII01 	EfEEX^GoSThnGocdAGoGopAdAATXCgqbfCg]^QFCgFCghb	"1Q"'A'Qr%;Aa%;!<=55955s%PR);TQAqD;T7UV;%);;SuUWyA`!\]^_\_!A#A`=ab?(>E"I(>??QVWYQZE[AaE[A\]L(K4Jb	4J(KLLc^cdf^gRhYZSTRhNijL4Jb	4J(Kq(KLLc^cdf^gRhYZSTRhNij\(S4Rb	4R(S\\^anstvnwbxijcdbx^yze(\4Rb	4R(\eeghi4!AB4!AB= #9  		  		 HpCg"%;;TA`E[Rh(KRhbxsq   	N?
O &'O .O$)O*	O0	O5O:,
O?7O?	P 	P		P 	P	P	OO	O! O!c           	         dd t              D        }d| j                  t        t        |            d       ddfdt              D        }dd| j                  t        d      D cg c]  }t        d      D ]  }||f  c}}t        |             | j                  t        d      D cg c]  }|dz  s	|dz  s| c}g d	       | j                  t        d
 t        d      D              g d	       | j                  dD cg c]  \  }| c}g d       | j                  t        d dD              g d       y c c}}w c c}w c c}w )Nr  c              3       K   | ]  }|  y wr   rP   )rx  r  s     r4   ry  z;GrammarTests.test_comprehension_specials.<locals>.<genexpr>"  s     )1Q)r  r   Fc              3   L   K   | ]  }st              D ]  }||f 
  y wr   rV  )rx  r  r  tr3   s      r4   ry  z;GrammarTests.test_comprehension_specials.<locals>.<genexpr>&  s'     O!1eAhO1OOs   $$Tr.   rT  )rV   r   r|  c              3   8   K   | ]  }|d z  s	|dz  s|  yw)r.   rT  NrP   rw  s     r4   ry  z;GrammarTests.test_comprehension_specials.<locals>.<genexpr>-  s     EAa!eq1uaEs   
))rU  )r   )r{  r  c              3   $   K   | ]  \  }| 
 y wr   rP   rw  s     r4   ry  z;GrammarTests.test_comprehension_specials.<locals>.<genexpr>1  s     =BAa=r  ))r|  )r}  )r9   )r|  r}  r9   )rW  r0   r   r   )r2   r  r  r  r3   r  s       `@r4   test_comprehension_specialsz(GrammarTests.test_comprehension_specials   s$   )a)q1T!Wr* EOuQxO14qrEAE!HEq1Q%E%EtAwO 	eBiC1q5AE1CYOErEEyQ 	&89!99E=*<==yI F D :s   3E
8
EE	EEc                     G d dt               } |       5  	 d d d         |       5 }	 d d d         |       5 \  }}	 d d d         |       5   |       5  	 d d d        d d d         |       5 } |       5 }	 d d d        d d d         |       5 } |       5  	 d d d        d d d         |       5  	 d d d         |       5 }	 d d d         |       5 \  }} |       5 }	 d d d        d d d         |       5   |       5  	 d d d        d d d         |       5 } |       5 }	 d d d        d d d         |       5 } |       5  	 d d d        d d d         |       5 } |       5 } |       5 }	 d d d        d d d        d d d         |       5 } |       5 } |       5  	 d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   yxY w# 1 sw Y   ~xY w# 1 sw Y   zxY w# 1 sw Y   vxY w# 1 sw Y   gxY w# 1 sw Y   lxY w# 1 sw Y   `xY w# 1 sw Y   exY w# 1 sw Y   YxY w# 1 sw Y   ^xY w# 1 sw Y   RxY w# 1 sw Y   WxY w# 1 sw Y   CxY w# 1 sw Y   HxY w# 1 sw Y   MxY w# 1 sw Y   9xY w# 1 sw Y   >xY w# 1 sw Y   y xY w)Nc                       e Zd Zd Zd Zy)1GrammarTests.test_with_statement.<locals>.managerc                      yNr   rP   r[   s    r4   	__enter__z;GrammarTests.test_with_statement.<locals>.manager.__enter__5  s    r6   c                      y r   rP   )r2   rl  s     r4   __exit__z:GrammarTests.test_with_statement.<locals>.manager.__exit__7  r  r6   N)r   r   r   r  r  rP   r6   r4   managerr  4  s    r6   r  )object)r2   r  r3   r   r   s        r4   test_with_statementz GrammarTests.test_with_statement3  s   	f 	 Y 		Y 	!	Y 	&1a	Y 		 		 	Y 	!WY 	!	 	Y 	!WY 		 	 I	 	 I		 I	!QI			 	 I	I	 		 	 I	I			 	 I	I	 		 	 I	I	I	 	 	 	 I	I	I	
 	 	 	 	m	 		 		 		 	 	 		 	 	 		 	 	 		 	
	 	
	 	 	 		 	 	 		 	 	 		 	 	 		 	 	 	 	 		 	 	 	 	 	s  F5GGG)GG).H6G68HHHH0H*H7III6I+>I I+JI8!J8J JJK!J9)J,+J93K
K-K KK $K-5F?GGG&	!G))G36H 	;HHH	HH'*H47II		III(	#I++I58J	=JJJ	JJ),J61J99K	>KKKK  K*	%K--K6c                    d }| j                  d d fD cg c]  } |       s |        c}dg       | j                  d d fD cg c]  } |d      s |d       c}dg       | j                  d	d	       | j                  d	d	       | j                  dd       | j                  dd       | j                  d
d
       | j                  dd       | j                  dd       | j                  d	d	       | j                  dd       | j                  dd       | j                  dd       | j                  d	d	       | j                  dd       | j                  dd       | j                  dd       y c c}w c c}w )Nc                     t        |        |S )z@helper to check that evaluation of expressions is done correctlyr   )rh  rets     r4   
_checkevalz2GrammarTests.test_if_else_expr.<locals>._checkevaly  s    #JJr6   c                       y)NTrP   rP   r6   r4   r  z0GrammarTests.test_if_else_expr.<locals>.<lambda>  r   r6   c                       yNFrP   rP   r6   r4   r  z0GrammarTests.test_if_else_expr.<locals>.<lambda>  r   r6   Tc                     | rdS dS )NFTrP   r   s    r4   r  z0GrammarTests.test_if_else_expr.<locals>.<lambda>  s      r6   c                     | rdS dS )NTFrP   r   s    r4   r  z0GrammarTests.test_if_else_expr.<locals>.<lambda>  s    `aX\ gl r6   FrV   r   r{  r.   rT  r|  r  g      @r/   )r2   r  r3   s      r4   test_if_else_exprzGrammarTests.test_if_else_exprw  sk   	 	}(EN113NQUPVW.LNl-m{qrsxqy1U8{  C  ~D  	E!CQCA2a!4!4!aH!]^_qaH%e4!a0%a0%a0%b1%a0!a0! O{s   E9	E9	E>
E>c                    | j                  dd       | j                  dd       | j                  dd       d}d}| j                  d||u u        | j                  d|u |u        | j                  d|cxu xr	 |u        y c        y )Nr}  r.   rT  F)r0   rJ   assertFalser   s      r4   test_paren_evaluationz"GrammarTests.test_paren_evaluation  s    ++q)!q&)*%1**+!q))r6   c                      G d d      } |       }| j                  ||z  d       |dz  }| j                  |j                  d       y )Nc                       e Zd Zd Zd Zy)'GrammarTests.test_matrix_mul.<locals>.Mc                      y)NrU  rP   r2   r*  s     r4   
__matmul__z2GrammarTests.test_matrix_mul.<locals>.M.__matmul__  s    r6   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   r/  r    s    r6   r/  rU  r   )r0   r  )r2   r/  ms      r4   test_matrix_mulzGrammarTests.test_matrix_mul  sF    	 	 CQ"	R"%r6   c                    d }| j                  |j                  d       | j                  t        |j                  j
                  t        j                  z               d }|d        }| j                  |j                         | j                  |j                  d       | j                  t        |j                  j
                  t        j                  z               y )Nc                  <   K   d } 	 t                d {    y 7 w)Nc                       y 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  s     is   r   c                      t        | dd       | S )N_markedT)setattr)funcs    r4   	decoratorz0GrammarTests.test_async_await.<locals>.decorator  s    D)T*Kr6   c                     K   yw)N   rP   rP   r6   r4   test2z,GrammarTests.test_async_await.<locals>.test2  s	        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]]33g6J6JJKL	 
	 
	&1U^^44w7K7KKLMr6   c                      G d dt                G d d      fd}| j                        5   |       j                  d        d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zy))GrammarTests.test_async_for.<locals>.DoneNr  rP   r6   r4   Doner    r  r6   r  c                       e Zd Zd Zd Zy)*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         wr   )StopAsyncIterationr[   s    r4   	__anext__z4GrammarTests.test_async_for.<locals>.AIter.__anext__  s     ((s   	N)r   r   r   r  r  rP   r6   r4   AIterr    s    )r6   r  c                     K           2 3 d {   } 
7 6         2 3 d {  7  \  } }6         2 3 d {  7  } 6 	 wr   rP   )r  r  r  r  s     r4   rN  z(GrammarTests.test_async_for.<locals>.foo  sc      7  a7#g  da & 7  a # JsC   AAA-&-AA <A Ar   rF   send)r2   rN  r  r  s     @@r4   test_async_forzGrammarTests.test_async_for  sM    #9#	) 	)		 t$ 	EJJt	 	 	   AAc                      G d dt                G d d      fd}| j                        5   |       j                  d        d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zy)*GrammarTests.test_async_with.<locals>.DoneNr  rP   r6   r4   r  r    r  r6   r  c                       e Zd Zd Zd Zy)-GrammarTests.test_async_with.<locals>.managerc                    K   ywr  rP   r[   s    r4   
__aenter__z8GrammarTests.test_async_with.<locals>.manager.__aenter__  s	     r  c                    K   ywr  rP   )r2   excs     r4   	__aexit__z7GrammarTests.test_async_with.<locals>.manager.__aexit__  s	     r  N)r   r   r   r  r  rP   r6   r4   r  r    s    r6   r  c                  B  K           4 d {    	 d d d       d {            4 d {   } 	 d d d       d {            4 d {   \  } }	 d d d       d {            4 d {            4 d {    	 d d d       d {    d d d       d {            4 d {   }         4 d {   }	 d d d       d {    d d d       d {            4 d {   }         4 d {    	 d d d       d {    d d d       d {    7  7 # 1 d {  7  sw Y   #xY w7 7 # 1 d {  7  sw Y   xY w7 7 # 1 d {  7  sw Y   xY w7 7 7 # 1 d {  7  sw Y   xY w7 # 1 d {  7  sw Y   xY w7 7 7 # 1 d {  7  sw Y   xY w7 # 1 d {  7  sw Y   xY w7 7 7 # 1 d {  7  sw Y   xY w7 # 1 d {  7  sw Y   xY wwr   rP   )r3   r   r  r  s     r4   rN  z)GrammarTests.test_async_with.<locals>.foo  s
    y   y  A y  FQ y  ')     y  Awy  A   y  Awy     J                                       Js_  HD/HD5HD2HEHEHEHE'HE-H%E*&H5F6H9F#FF#	FF#F	F#H&F!'H6F97H:GF<G
G GF>GH'G(H7G,8H;H	G.H	G2H	G0H	H(H)H2H5E;D><E	HHE$EE$	H*H-F 3E64F ;	HF#	F#F	FF	F#!H#F6)F,*F61	H<G>G G	G	G	GHG)G G)%H.H	0H	2H	8G;9H	 H	H	HHHHr  )r2   rN  r  r  s     @@r4   test_async_withzGrammarTests.test_async_with  sM    #9#	 		 t$ 	EJJt	 	 	r  N)Mr   r   r   r   r   r   r,   r   r   r   r   r   r  r%  r0  r7  r<  rI  rQ  rY  r  rK  rO  rS  r\  r`  rb  rd  ri  rp  rx  r}  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  rB  rE  rt  r  r  r  r  r  r  r  r  r  rP   r6   r4   r   r   @  s   /A>
&1>,\0,<:	%#A*A"3v&p!)N2%.W44472#h3#j",38/4%;N36'&I2& X$FGE HEA@*(BX2G0	9K"6:PBd

"A<FBD=>~!CFJ&BH16*&N*.r6   r   __main__)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  *  .4 nKA"" KAZ   o8$$ od5 zHMMO r6   