o
    ^hy                     @   s`   d dl mZ d dlZd dlZd dlT G dd dejZG dd dejZedkr.e  dS dS )	    check_syntax_errorN)*c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )
TokenTestsc                 C   s(   d}|  |dd d}|  |dd d S )N   zbackslash for line continuationr   zbackslash ending commentassertEqualsselfx r   5  /home/conda/feedstock_root/build_artifacts/python-split_1761171407825/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehol/lib/python3.10/lib2to3/tests/data/py3_test_grammar.pytestBackslash   s   zTokenTests.testBackslashc              	   C   s`  |  tdtd |  dd |  dd |  dd |  dd | ttd ddlm} |dkrk|  dd | ddk | ddk | ddk d	D ]}zt|}W qP tyh   | 	d
|  Y qPw d S |dkr|  dd | ddk | ddk | ddk dD ]}zt|}W q ty   | 	d
|  Y qw d S | 	d|  d S )Nr      i	   Z0x)maxsizei   l    )Z
2147483648Z0o40000000000Z0x100000000Z"0b10000000000000000000000000000000z(OverflowError on huge integer literal %rl    l             l    )Z9223372036854775808Z0o2000000000000000000000Z0x10000000000000000ZA0b100000000000000000000000000000000000000000000000000000000000000zWeird maxsize value %r)
r   typeassertRaisesSyntaxErrorevalsysr   assert_OverflowErrorfail)r
   r   sr   r   r   r   testPlainIntegers   s@   zTokenTests.testPlainIntegersc                 C   s$   d}d}d}d}d}d}d}d}d S )Nr   r   l   ? l   
~l!]c l            l   r   r	   r   r   r   testLongIntegersA   s   zTokenTests.testLongIntegersc                 C   sH   d}d}d}d}d}d}d}d}d}d}d}d	}d
}d
}d}d}d}d S )N
   i[l   E#W i#    iw	  gffffff?@g      ?@gףp=
?Q	@  BgIae
Hg#;7r   r	   r   r   r   testUnderscoresInNumbersK   s"   z#TokenTests.testUnderscoresInNumbersc                 C   s0   d}d}d}d}d}d}d}d}d}d}d}d S )Nr    g     s@gjt?r!   gt =g  WHBg     F@r   r	   r   r   r   
testFloatsa   s   zTokenTests.testFloatsc                 C   s*  d}d}|  t|dko||k d}d}|  t|dko&||ko&t|dk d}d}|  t|dko=||ko=t|dk d}d}|  t|d	koN||k d
}d
}|  t|d	ko_||k d}d}| || d}| || d}| || d}| || dd }dd }| || d S )N r   '   '   ""   zdoesn't "shrink" does it   zdoes "shrink" doesn't itz2
The "quick"
brown fox
jumps over
the 'lazy' dog.
zhello \T)r   lenordr   )r
   r   yr   r   r   testStringLiteralso   s(   "..zTokenTests.testStringLiteralsc                 C   s$   d}|  |tu  | ttd d S )N.z.. .)r   Ellipsisr   r   r   r	   r   r   r   testEllipsis   s   zTokenTests.testEllipsisN)
__name__
__module____qualname__r   r   r   r"   r#   r.   r0   r   r   r   r   r      s    
$
*r   c                   @   s<  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"dAdB Z#dCdD Z$dEdF Z%dGdH Z&dIdJ Z'dKdL Z(dMS )NGrammarTestsc                 C   s   t d}d S )Nz	1, 0 or 1)r   r	   r   r   r   testEvalInput   s   zGrammarTests.testEvalInputc                    sX  dd }|  |d  |di i  dd }dd }|  |jjd |  |jjd	 d
d }dd }dd }dd }dd }|  |d |d |dd |dd |  |d |d |dd |dddddddddd
 |d |d |dd |ddd |dddddddddd
 |dd |ddd |dddd |dddddddddd
 d dd}	|	  |	d |	d   |	di d!di d d"d#}
|
d |
dd |
d i d$di d d%d&}|dd |ddd |d'  |dgd(R   |ddgd)R   |d-i d*di d-d+d,}|  |d |dd |d-  |dgd.R   |d i d$di |di ddd/ d-d0d1}|d |dd |ddd d-d2d3}|dd |ddd |dddd d d4d5}|  |d |dd |d6  |d   |di d!di d d7d8}|d |dd |ddd d d9d:}|dd |ddd |dddd |d6  |d-i d*di d-d;d<}|  |d |dd |ddd |dgd=R   |di ddd/ d-d>d?}|d |dd |ddd |dddd |d6  |ddgd@R   |dgd.R i d*di d-dAdB}|dd |ddd |dddd |ddddd |d6  |ddgd@R   |dgd(R i dCdi ztd|i dEdi W n
 tyn   Y nw | dF dGdH }|dIdJ dIdKdLdM}|dddIdN |dddIdOdP |dddIdOdQ dIdNdRdS}|dddIdIdOdT |dddIdOdIdU dVdW }|  |dgddgR dddXdYdddXf | ttdZ | ttd[ d\t	fd]dW}|  |j
d\t	i dDtfd^dW}|  |j
dDti dDtfd_dW}|  |j
dDti dDtfd`dW}|  |j
dDti d}dbdW}|  |j
dadi d~dcdW}|  |j
dddd dddgdW}|  |j
dddddh dddidj	n	\	oddpdW}|  |j
dddddddndodq drds }|d\t	fdtdW}|  |j
d\t	i d  fdudW}d  fdvdW	}ddw fdxdW
}d\tf fdydW}t| dz t| d{ d S )Nc                   S      d S Nr   r   r   r   r   f1       z$GrammarTests.testFuncdef.<locals>.f1r   c                 S   r6   r7   r   Zone_argumentr   r   r   f2   r9   z$GrammarTests.testFuncdef.<locals>.f2c                 S   r6   r7   r   twoZ	argumentsr   r   r   f3   r9   z$GrammarTests.testFuncdef.<locals>.f3r:   r<   c                 S   r6   r7   r   )Zone_argr   r   r   a1   r9   z$GrammarTests.testFuncdef.<locals>.a1c                 S   r6   r7   r   )r=   argsr   r   r   a2   r9   z$GrammarTests.testFuncdef.<locals>.a2c                  W   r6   r7   r   )restr   r   r   v0   r9   z$GrammarTests.testFuncdef.<locals>.v0c                 W   r6   r7   r   arB   r   r   r   v1   r9   z$GrammarTests.testFuncdef.<locals>.v1c                 W   r6   r7   r   rE   brB   r   r   r   v2   r9   z$GrammarTests.testFuncdef.<locals>.v2r&   r                     r   r   c                 S   r6   r7   r   rE   r   r   r   d01   r9   z%GrammarTests.testFuncdef.<locals>.d01r&   rE   c                 S   r6   r7   r   rE   rH   r   r   r   d11   r9   z%GrammarTests.testFuncdef.<locals>.d11rH   c                 S   r6   r7   r   rE   rH   cr   r   r   d21   r9   z%GrammarTests.testFuncdef.<locals>.d21r&   r   rJ   r   rJ   rJ   rV   c                 S   r6   r7   r   rS   r   r   r   d02   r9   z%GrammarTests.testFuncdef.<locals>.d02r&   r   r   rS   c                 S   r6   r7   r   rU   r   r   r   d12   r9   z%GrammarTests.testFuncdef.<locals>.d12c                 S   r6   r7   r   rE   rH   rV   dr   r   r   d22   r9   z%GrammarTests.testFuncdef.<locals>.d22c                 W   r6   r7   r   rD   r   r   r   d01v   r9   z&GrammarTests.testFuncdef.<locals>.d01v)r&   r   rJ   rK   c                 W   r6   r7   r   rG   r   r   r   d11v  r9   z&GrammarTests.testFuncdef.<locals>.d11vc                 W   r6   r7   r   rE   rH   rV   rB   r   r   r   d21v  r9   z&GrammarTests.testFuncdef.<locals>.d21vc                 W   r6   r7   r   rG   r   r   r   d02v  r9   z&GrammarTests.testFuncdef.<locals>.d02v)r   rJ   rK   c                 W   r6   r7   r   rd   r   r   r   d12v  r9   z&GrammarTests.testFuncdef.<locals>.d12vrJ   rK   rL   c                 W   r6   r7   r   )rE   rH   rV   r`   rB   r   r   r   d22v  r9   z&GrammarTests.testFuncdef.<locals>.d22vr`   r   s   fooz/Bytes should not work as keyword argument namesc                 S      | S r7   r   keyr   r   r   pos0key1-  r9   z*GrammarTests.testFuncdef.<locals>.pos0key1d   rk   )k2c                S   s   | |||fS r7   r   )p1p2k1ro   r   r   r   pos2key2/      z*GrammarTests.testFuncdef.<locals>.pos2key2)rr      )rr   ro   )ro   rr   c                [   s   | ||||fS r7   r   )rp   rq   rr   ro   kwargr   r   r   pos2key2dict3      z.GrammarTests.testFuncdef.<locals>.pos2key2dict)ro   tokwarg1tokwarg2)ry   rz   ro   c                  _   s   | |fS r7   r   )r@   kwargsr   r   r   f8  s   z#GrammarTests.testFuncdef.<locals>.fr   r-   )r&   rJ   rK   zf(1, *(2,3), 4)zf(1, x=2, *(3,4), x=5)returnc                 S   r6   r7   r   r   r   r   r   r|   @  r9   c                 S   r6   r7   r   r   r   r   r   r|   B  r9   c                  W   r6   r7   r   r   r   r   r   r|   D  r9   c                  [   r6   r7   r   r   r   r   r   r|   F  r9   r-   c                 S   r6   r7   r   r}   r   r   r   r|   H  r9   c                 S   r6   r7   r   r_   r   r   r   r|   J  r9   )rH   rV   egc                 W   r6   r7   r   )rE   rH   rV   r`   r   r|   r   r   r   r   r|   L  r9   )rH   rV   r   r   r   )ijhr   k      c                _   r6   r7   r   )rE   rH   rV   r`   r   r|   r   r   r   r   r   r   r   r   r|   O     )rH   rV   r   r   r   r   r   r~   c                 S   rj   r7   r   r   r   r   r   nullU  r9   z&GrammarTests.testFuncdef.<locals>.nullc                 S   r6   r7   r   r   r   r   r   r|   V  r   c                          S r7   r   r   Zclosurer   r   r|   \  r9   c                    r   r7   r   r   r   r   r   r|   ]  r9   r   c                    r   r7   r   r   r   r   r   r|   ^  r9   c                      r   r7   r   r   r   r   r   r|   _  r9   z
f(*g(1=2))zf(**g(1=2))r   )r-   rJ   )rH   r&   rV   r   )rK   rL   )rH   r&   rV   r   r   rJ   r   rM   )rH   r&   rV   r   r   rJ   r   rM   r   rN   r   r   r   r   r~   r   )r   __code__co_varnamesstr	TypeErrorr   r   r   r   list__annotations__intfloatr   )r
   r8   r;   r>   r?   rA   rC   rF   rI   rQ   rT   rW   r[   r^   ra   rb   rc   re   rf   rg   ri   rm   rs   rw   r|   r   r   r   r   testFuncdef   sD  





























 




zGrammarTests.testFuncdefc                 C   s   dd }|  | d dd }dd }|  | g d dddfd	dfd
d}|  | d ddd}|  |ddd |  |dddd t| d t| d dddd}|  |ddd |  |ddddd d S )Nc                   S      dS )Nr   r   r   r   r   r   <lambda>g  r9   z*GrammarTests.testLambdef.<locals>.<lambda>r   c                   S   s   t t S r7   )rE   r`   r   r   r   r   r   i      c                   S   s   dd dD S )Nc                 S   s   g | ]}d |k qS r]   r   .0r   r   r   r   
<listcomp>j      z>GrammarTests.testLambdef.<locals>.<lambda>.<locals>.<listcomp>)rJ   r   r   r   r   r   r   r   j  rx   )r   r&   r   r&   c                 S   rj   r7   r   )zr   r   r   r   l  r9   c                 S      |  S r7   r   )r-   r   r   r   r   l      c                 S   r   r7   r   r   r   r   r   r   l  r   r   c                 S      | | | S r7   r   )r   r-   r   r   r   r   r   n  rt   rL   rJ   rM   zlambda x: x = 2zlambda (None,): None   r   c                S   r   r7   r   )r   r-   r   r   r   r   r   s  rt      r   r   rR   r]   )r   r   )r
   l1l2l3l4l5l6r   r   r   testLambdefe  s   


zGrammarTests.testLambdefc                 C   s   d}~dd }|  d S )Nr&   c                  S   s
   d} ~ d S Nr&   r   r   r   r   r   foo~  s   
z(GrammarTests.testSimpleStmt.<locals>.foor   )r
   r   r   r   r   r   testSimpleStmt{  s   
zGrammarTests.testSimpleStmtc           	      C   sV   	 	 d}d}d } }}d\}}}d } \}}} \}}}}t | d t | d d S )Nr&   rX   )r&   r   )rJ   rK   z	x + 1 = 1za + 1 = b + 2r   )	r
   r   r-   r   abcrE   rH   rV   xyzr   r   r   testExprStmt  s   

zGrammarTests.testExprStmtc                 C   s*   g d}|\}}}|||f}~~~~~d S )NrX   r   )r
   r   r   r-   r   r   r   r   r   testDelStmt  s
   

zGrammarTests.testDelStmtc                 C   r6   r7   r   r
   r   r   r   testPassStmt     zGrammarTests.testPassStmtc                 C   r6   r7   r   r   r   r   r   testBreakStmt  r   zGrammarTests.testBreakStmtc                 C   sx   d}|rd}qd}|sd}zW q	   d}Y |r|dkr!|  | d}|s/d}zW d}q#d}w |dkr:|  | d S d S )Nr&   r   r$   okz&continue failed to continue inside tryz'continue inside try called except blockzfinally block not calledr   )r
   r   msgr   r   r   testContinueStmt  s*   

zGrammarTests.testContinueStmtc                    s   d fdd	}|  d S )Nr&   r   c                    s`   d}|r|d7 }z| r|dkr| d8 } W n
|d8 }W q    |dks'|dkr.  d d S d S )Nr   r&   z1continue then break in try/except in loop broken!r   )Zextra_burning_oilcountZ	big_hippor   r   r   
test_inner  s   z9GrammarTests.test_break_continue_loop.<locals>.test_inner)r&   r   r   )r
   r   r   r   r   test_break_continue_loop  s   

z%GrammarTests.test_break_continue_loopc                    sD   dd }dd }ddg  fdd}|  | }| }t | d	 d S )
Nc                   S   r6   r7   r   r   r   r   r   g1  r9   z#GrammarTests.testReturn.<locals>.g1c                   S   r   r   r   r   r   r   r   g2  r9   z#GrammarTests.testReturn.<locals>.g2r   rJ   c                      s   dg R S r   r   r   Zreturn_listr   r   g3  rt   z#GrammarTests.testReturn.<locals>.g3zclass foo:return 1r   )r
   r   r   r   r   x3r   r   r   
testReturn  s   zGrammarTests.testReturnc                    sR   dd }ddg  fdd} fdd}| }| }| }t | d	 t | d
 d S )Nc                   s   s    dV  d S r   r   r   r   r   r   r     s   
 z"GrammarTests.testYield.<locals>.g1r   rJ   c                   3   s    dg R V  d S r   r   r   Z
yield_listr   r   r         z"GrammarTests.testYield.<locals>.g2c                   3   s    t  E d H  d S r7   )iterr   r   r   r   r     r   z"GrammarTests.testYield.<locals>.g3zclass foo:yield 1zdef g4(): yield from *ar   )r
   r   r   r   Zx1Zx2r   r   r   r   	testYield  s   
zGrammarTests.testYieldc                 C   s6   zt d t y   Y nw zt ty   Y d S w )Nzjust testing)RuntimeErrorKeyboardInterruptr   r   r   r   	testRaise  s   
zGrammarTests.testRaisec                 C   sd   dd l }dd l}dd l }ddlm} ddlm} ddl m}m} ddl m}m} ddl m}m} d S )Nr   )time)pathargv)r   r   r   r   )r
   r   r   r   r   r   r   r   
testImport  s   zGrammarTests.testImportc                 C   r6   r7   r   r   r   r   r   
testGlobal  r9   zGrammarTests.testGlobalc                    s   d d fdd}d S )Nr   c                      r6   r7   r   r   r}   r   r   r|     r9   z$GrammarTests.testNonlocal.<locals>.fr   )r
   r|   r   r}   r   testNonlocal  s   zGrammarTests.testNonlocalc              
   C   sT   	 	 dd sJ 	 zJ d t y) } z| |jd d W Y d }~d S d }~ww )Nr&   c                 S   rj   r7   r   r   r   r   r   r     r9   z)GrammarTests.testAssert.<locals>.<lambda>c                 S   s   | d S r   r   r   r   r   r   r     r   r   r   )AssertionErrorr   r@   r   )r
   r   r   r   r   
testAssert  s    zGrammarTests.testAssertc                 C   s   	 	 	 	 	 	 	 	 	 d S r7   r   r   r   r   r   testIf%  s   zGrammarTests.testIfc                 C   s    	 	 	 d}	 d}|  |d d S )Nr   r&   r   r   r	   r   r   r   	testWhile2  s   zGrammarTests.testWhilec                 C   s   dD ]}qdD ]\}}}q	 G dd d}d}|dD ]}|| }q|dkr+|  d g }d	D ]\}|| q/| |g d d S )
NrX   r   c                   @   $   e Zd Zdd Zdd Zdd ZdS )z%GrammarTests.testFor.<locals>.Squaresc                 S   s   || _ g | _d S r7   )maxsofar)r
   r   r   r   r   __init__G  s   
z.GrammarTests.testFor.<locals>.Squares.__init__c                 S   s
   t | jS r7   )r+   r   r   r   r   r   __len__J  s   
 z-GrammarTests.testFor.<locals>.Squares.__len__c                 S   sZ   d|  kr| j k st tt| j}||kr(| j||  |d }||ks| j| S )Nr   r&   )r   
IndexErrorr+   r   append)r
   r   nr   r   r   __getitem__K  s   

z1GrammarTests.testFor.<locals>.Squares.__getitem__N)r1   r2   r3   r   r   r   r   r   r   r   SquaresF  s    r   r   r   i  zfor over growing sequence)rR   r]   rZ   )r   r   assertEqual)r
   r   r   r   r   r   r   resultr   r   r   testForA  s   


zGrammarTests.testForc              
   C   s   zdd  W n	 t y   Y nw 	 zdd  W n/ ty    Y n( ty1 } zW Y d }~nd }~w tyB } zW Y d }~n
d }~w   Y n	 zdd  W n ttt fyZ   Y nw zdd  W n ttt fyv } zW Y d }~nd }~ww zW d S w Nr&   r   )ZeroDivisionErrorEOFErrorr   r   )r
   r   r   r   r   testTry\  s,   
  zGrammarTests.testTryc                 C   s   	 	 	 	 	 	 	 d S r7   r   r   r   r   r   	testSuites  s   zGrammarTests.testSuitec                 C   s   	 	 	 	 	 	 d S r7   r   r   r   r   r   testTest  s   zGrammarTests.testTestc                 C   s   	 ddk}ddkr	ddkrddk rddkrddkrddkrddu r!ddur%ddv r)ddvr-dd  k r_d  kr_d  kr_d  kr_d  kr_d  kr_d  v r_d  vr_d  u r_duren d S 	 d S d S )Nr&   r   r   r	   r   r   r   testComparison  s   tzGrammarTests.testComparisonc                 C   s   d}d}d}d S r   r   r	   r   r   r   testBinaryMaskOps     zGrammarTests.testBinaryMaskOpsc                 C   s   d}d}d}d S )Nr   r   r&   r   r	   r   r   r   testShiftOps  r   zGrammarTests.testShiftOpsc                 C   s   d}d}d}d}d S )Nr&   r   r   r   r	   r   r   r   testAdditiveOps     zGrammarTests.testAdditiveOpsc                 C   s   d}d}d}d}d S )Nr&         ?r   g        r   r	   r   r   r   testMultiplicativeOps  r   z"GrammarTests.testMultiplicativeOpsc                 C   s   d}d}d}d}d}d S )Nr&   r   r   r   r	   r   r   r   testUnaryOps  s
   zGrammarTests.testUnaryOpsc           	      C   s   dd l }dd l}|jd }| }|jd  }d}|d }|d }|dd }|d d }|dd  }|d d  }|dd  }|d d }|dd }i }d	|d	< d
|d< d|d< d|d< t|}|jdd d | t|d d S )Nr   r   Z01234r   rL   r&   r   rR   rJ   r\   rK   rX   c                 S   s   t | tr| S dS )Nr   )
isinstancetupler   r   r   r   r         z,GrammarTests.testSelectors.<locals>.<lambda>rk   z[1, (1,), (1, 2), (1, 2, 3)])r   r   r   modulesr   sortr   r   )	r
   r   r   rV   r   rE   r   r`   Lr   r   r   testSelectors  s,   
zGrammarTests.testSelectorsc                 C   s   d}d}dddf}g }dg}dg}dddg}g }i }ddi}ddi}ddi}ddd}ddd}dddddd	d
}dh}ddh}h d}h d}|}d}d}d S )Nr&   r   rJ   oner=   )r   r=   rK   rL   rM   )r   r=   threeZfourZfiveZsix>   r   r   r=   >   r   rJ   rK   r   {   r   r	   r   r   r   	testAtoms  s,   



zGrammarTests.testAtomsc           	      C   s|   G dd d}G dd d}G dd d|}G dd d|}G d	d
 d
|||}G dd d}dd }|G dd d}d S )Nc                   @      e Zd ZdS )z$GrammarTests.testClassdef.<locals>.BNr1   r2   r3   r   r   r   r   B  rt   r  c                   @   r   )z%GrammarTests.testClassdef.<locals>.B2Nr   r   r   r   r   B2  rt   r  c                   @   r   )z%GrammarTests.testClassdef.<locals>.C1Nr   r   r   r   r   C1   rt   r  c                   @   r   )z%GrammarTests.testClassdef.<locals>.C2Nr   r   r   r   r   C2  rt   r  c                   @   r   )z$GrammarTests.testClassdef.<locals>.DNr   r   r   r   r   D  rt   r  c                   @   r   )z$GrammarTests.testClassdef.<locals>.Cc                 S   r6   r7   r   r   r   r   r   meth1  r9   z*GrammarTests.testClassdef.<locals>.C.meth1c                 S   r6   r7   r   )r
   argr   r   r   meth2  r9   z*GrammarTests.testClassdef.<locals>.C.meth2c                 S   r6   r7   r   )r
   r?   rA   r   r   r   meth3  r9   z*GrammarTests.testClassdef.<locals>.C.meth3N)r1   r2   r3   r  r  r	  r   r   r   r   C  s    r
  c                 S   rj   r7   r   r   r   r   r   class_decorator  r9   z2GrammarTests.testClassdef.<locals>.class_decoratorc                   @   r   )z$GrammarTests.testClassdef.<locals>.GNr   r   r   r   r   G  s    r  r   )	r
   r  r  r  r  r  r
  r  r  r   r   r   testClassdef  s   zGrammarTests.testClassdefc                 C   s*   g d}|  dd |D dddd d S )NrX   c                 S   s   i | ]}||d  qS rR   r   r   r   r   r   r   
<dictcomp>  s    z.GrammarTests.testDictcomps.<locals>.<dictcomp>r   rJ   rK   r   )r
   numsr   r   r   testDictcomps  s   "zGrammarTests.testDictcompsc              	      sZ  g d}g dg d} dd |D g d  dd |D g d  d	d |D g d
  fdd|D g d  fdd|D g d  dd tdD dgddgg dg dg dg dd } ||g d fdd}|  td td g d}g d g d fdd|D } |g d  d S )!N)r&   r   rJ   rK   rL   )AppleBananaCoconut)z  Applez Banana zCoco  nut  c                 S   s   g | ]}|  qS r   )strip)r   r   r   r   r   r     r   z.GrammarTests.testListcomps.<locals>.<listcomp>)r  r  z	Coco  nutc                 S   s   g | ]}d | qS rZ   r   r   r   r   r   r     r   )rJ   rM   r   r      c                 S   s   g | ]}|d kr|qS r]   r   r   r   r   r   r         rh   c                    s   g | ]} D ]}||fqqS r   r   r   r   r   strsr   r   r         ))r&   r  r&   r  r&   r  )r   r  r   r  r   r  )rJ   r  rJ   r  rJ   r  )rK   r  rK   r  rK   r  )rL   r  rL   r  rL   r  c                    s(   g | ]}d d  D D ]}||fqqS )c                 S   s   g | ]}d |v r|qS )r   r   )r   r|   r   r   r   r   %  r  z9GrammarTests.testListcomps.<locals>.<listcomp>.<listcomp>r   r  r  r   r   r   %  s   ( )
r  r  r  r   r!  r"  r#  r$  r%  r&  c                 S   s   g | ]}d d |qS )c                    s    fddt  d D S )Nc                    s   g | ]} | qS r   r   r  rP   r   r   r   )  r   zKGrammarTests.testListcomps.<locals>.<listcomp>.<lambda>.<locals>.<listcomp>r&   rangerP   r   rP   r   r   )  s    z7GrammarTests.testListcomps.<locals>.<listcomp>.<lambda>r   )r   r   r   r   r   r   )  r  rL   r&   )r&   r   rK   )r&   rJ   r      )r&   rK      @      c                 S   s   dd | D S )Nc                 S   s,   g | ]}|d krd|  k odk n  qS )r   r   rJ   r   r   r   r   r   r   -  s   , zDGrammarTests.testListcomps.<locals>.test_in_func.<locals>.<listcomp>r   )lr   r   r   test_in_func,  s   z0GrammarTests.testListcomps.<locals>.test_in_func)FFFc                      s,     dd dD ddgddgdd	gg d S )
Nc                 S   s"   g | ]}d d ||d fD qS )c                 S      g | ]}|qS r   r   r   r-   r   r   r   r   2      zTGrammarTests.testListcomps.<locals>.test_nested_front.<locals>.<listcomp>.<listcomp>r&   r   r   r   r   r   r   2     " zIGrammarTests.testListcomps.<locals>.test_nested_front.<locals>.<listcomp>)r&   rJ   rL   r&   r   rJ   rK   rL   rM   r  r   r   r   r   test_nested_front1  s   z5GrammarTests.testListcomps.<locals>.test_nested_frontz"[i, s for i in nums for s in strs]z[x if y]))r&   Boeing)r   Ford)rJ   
Macdonalds))r   Airliner)r   Engine)   Cheeseburger))r&   r   )r&   r   )r   r   )rJ   r9  c                    sD   g | ]\}} D ]\}}D ]\}}||kr||kr||fqqqS r   r   )r   ZsnoZsnameZpnoZpnameZsp_snoZsp_pno)partssuppartr   r   r   J  s    
))r4  r7  )r4  r8  )r5  r8  )r6  r:  )r   r(  r   )r
   r  Zspcsr.  r3  Z	suppliersr   r   )r;  r
   r  r<  r   testListcomps  s8   

zGrammarTests.testListcompsc                    s  dd t dD }| t|dd t dD  zt| | d W n	 ty,   Y nw d z fdd D }t| | d	 W n	 tyL   Y nw | td
d dD dd dD  | tdd dD dd dD  dd t dD  dd dd  D D }| t|tdd t dD  | tdd t dD tdd t dD  | tdd t dD tdd t dD  | tdd dd t dD D tdd t dD  | tdd dd dd t dD D D tdd t dD  | tdd d d d!d t dD D D td"d t dD  | td#d d$d d%d t dD D D td&d t dD  | td'd d(d d)d t dD D D d* t| d+ t| d, d S )-Nc                 s   s"    | ]}d d t dD V  qdS )c                 S   r/  r   r   r   r   r   r   r   W  r1  z6GrammarTests.testGenexps.<locals>.<genexpr>.<listcomp>r   Nr'  r   r   r   r   	<genexpr>W       z+GrammarTests.testGenexps.<locals>.<genexpr>r&   c                 S   r/  r   r   r   r   r   r   r   X  r1  z,GrammarTests.testGenexps.<locals>.<listcomp>r   z&should produce StopIteration exceptionc                 3   s    | ]} V  qd S r7   r   )r   r`   rP   r   r   r>  a  r   zshould produce TypeErrorc                 s   "    | ]}d D ]}||fV  qqdS )abcdNr   r   r   r-   r   r   r   r>  g  r?  rA  c                 S      g | ]}d D ]}||fqqS )rA  r   rB  r   r   r   r   g  r  c                 s   r@  )xyNr   rB  r   r   r   r>  h  r?  Zabc                 S   rC  )rD  r   rB  r   r   r   r   h  r  c                 S   r/  r   r   r   r   r   r   r   j  r1  c                 s       | ]}|V  qd S r7   r   r   r   r   r   r>  k  r   c                 s   rE  r7   r   r0  r   r   r   r>  k  r   c                 S   r/  r   r   r   r   r   r   r   l  r1  c                 s   s    | ]}|d  V  qdS r   Nr   r   r   r   r   r>  n  s    c                 S   s   g | ]}|d  qS r]   r   r   r   r   r   r   n  r   c                 s   s     | ]}|d  r|| V  qdS rF  r   r   r   r   r   r>  o  s    c                 S   s   g | ]
}|d  r|| qS r]   r   r   r   r   r   r   o      c                 s   rE  r7   r   r   r   r   r   r>  p  r   c                 s   rE  r7   r   r0  r   r   r   r>  p  r   c                 S   r/  r   r   r   r   r   r   r   p  r1  c                 s   rE  r7   r   r   r   r   r   r>  q  r   c                 s   rE  r7   r   r0  r   r   r   r>  q  r   c                 s   rE  r7   r   r   r   r   r   r   r>  q  r   c                 S   r/  r   r   r   r   r   r   r   q  r1  c                 s   rE  r7   r   r   r   r   r   r>  r  r   c                 S   r/  r   r   r0  r   r   r   r   r  r1  c                 s   rE  r7   r   rH  r   r   r   r>  r  r   c                 S   r/  r   r   r   r   r   r   r   r  r1  c                 s       | ]}|V  qdS TNr   r   r   r   r   r>  s  r   c                 s   rE  r7   r   r0  r   r   r   r>  s  r   c                 s   rI  rJ  r   rH  r   r   r   r>  s  r   c                 S   r/  r   r   r   r   r   r   r   s  r1  c                 s   rI  rJ  r   r   r   r   r   r>  t  r   c                 s   s    | ]}qdS )FNr   r0  r   r   r   r>  t  s    c                 s   rI  rJ  r   rH  r   r   r   r>  t  r   r   zfoo(x for x in range(10), 100)zfoo(100, x for x in range(10)))	r(  r   nextr   StopIterationr   r   sumr   )r
   r   rH   r   rP   r   testGenexpsU  s<   $$"00:DDD2
zGrammarTests.testGenexpsc                    s   ddd t D }d| tt|d dd  fddt D }dd | dd	 t dD t| | d
d	 t dD g d | tdd t dD g d | dd	 dD g d | tdd dD g d d S )Nr   c                 s   rE  r7   r   r  r   r   r   r>  z  r   z9GrammarTests.testComprehensionSpecials.<locals>.<genexpr>rL   Fc                 3   s*    | ]} rt D ]}||fV  q
qd S r7   r'  r   r   r   tr   r   r   r>  ~  s   ( Tc                 S   s"   g | ]}t d D ]}||fqqS rL   r'  rO  r   r   r   r     r2  z:GrammarTests.testComprehensionSpecials.<locals>.<listcomp>c                 S   s    g | ]}|d  r|d r|qS rY   r   r   r   r   r   r     s     )r&   rL   rN   c                 s   s$    | ]}|d  r|d r|V  qdS )r   rJ   Nr   r   r   r   r   r>    s   " c                 S   s   g | ]\}|qS r   r   r   r   r   r   r     r   ))rK   rR  )rM   )rK   rL   rM   c                 s   s    | ]\}|V  qd S r7   r   r   r   r   r   r>    s    ))rN   )rO   )r   )rN   rO   r   )r(  r   r+   r   )r
   r   r   rP  r   testComprehensionSpecialsx  s    ""z&GrammarTests.testComprehensionSpecialsc              	   C   s  G dd dt }|  W d    n1 sw   Y  | }W d    n1 s)w   Y  | 
\}}W d    n1 s>w   Y  |  |  W d    n1 sUw   Y  W d    n1 sdw   Y  | }| }W d    n1 s{w   Y  W d    n1 sw   Y  | $}|  W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nc                   @   s   e Zd Zdd Zdd ZdS )z1GrammarTests.test_with_statement.<locals>.managerc                 S   r   )Nr\   r   r   r   r   r   	__enter__  r   z;GrammarTests.test_with_statement.<locals>.manager.__enter__c                 W   r6   r7   r   )r
   r@   r   r   r   __exit__  r   z:GrammarTests.test_with_statement.<locals>.manager.__exit__N)r1   r2   r3   rT  rU  r   r   r   r   manager  s    rV  )object)r
   rV  r   r-   r   r   r   test_with_statement  s.     Pz GrammarTests.test_with_statementc                 C   s  dd }|  dd dd dd fD dg |  d	d d
d dd fD dg |  dd |  dd |  dd |  dd |  dd |  dd |  dd |  dd |  dd |  dd |  dd |  dd |  dd |  dd |  dd d S )Nc                 S   s   t t |S )z@helper to check that evaluation of expressions is done correctly)printr   )r   Zretr   r   r   
_checkeval  s   z/GrammarTests.testIfElseExpr.<locals>._checkevalc                 S   s   g | ]}| r| qS r   r   r   r   r   r   r     r  z/GrammarTests.testIfElseExpr.<locals>.<listcomp>c                   S   r   )NTr   r   r   r   r   r     r9   z-GrammarTests.testIfElseExpr.<locals>.<lambda>c                   S   r   )NFr   r   r   r   r   r     r9   Tc                 S   s   g | ]
}|d r|d qS )Fr   r   r   r   r   r     rG  c                 S      | rdS dS )NFTr   r   r   r   r   r     rt   c                 S   r[  )NTFr   r   r   r   r   r     rt   r&   rL   zcheck 1r   zcheck 2rM   zcheck 3r   rJ   zcheck 4zcheck 5zcheck 6FrN   r   rK   g      @r  )r
   rZ  r   r   r   testIfElseExpr  s$   $$zGrammarTests.testIfElseExprN))r1   r2   r3   r5   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r=  rN  rS  rX  r\  r   r   r   r   r4      sP     9	#?#r4   __main__)	Ztest.supportr   Zunittestr   ZTestCaser   r4   r1   mainr   r   r   r   <module>   s    
       #