B
    u9aÍÎ  ã            =   @   sþ  d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ dd„ Zddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3g/Z	d4gZ
dd5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKgZG dLdM„ dMejƒZG dNdO„ dOejƒZG dPdQ„ dQejƒZG dRdS„ dSejƒZdTdU„ ZdVdWgfdVdXgfdVdYdZd[d\g dg g dg fd]gg dfgfdVdYdZd[d\g dg g dg fd^gg dfgfdVdYdZd[d\d_gdg g dg fd`gg dfgfdVdYdZd[d\d_gdg g ddagfdbgg dfgfdVdYdZd[d\g dcg g dg fddgg dfgfdVdYdZd[d\g dg g deg fdfgg dfgfdVdYdZd[d\d_dgdhdidjgdkdlgdmgdndodpdqdrg dsfdtdug g fgfdvgg dfgfdVdwdZdxg g dygg fgfdVdwdZdxg g dzgg fgfdVdwdZdxd{gg dfgg fgfdVdYdZd[d\g dg g dg fd|gg dfgfdVd}dZd~gfgfdVddZd€gdfgfdVd‚gfdVdƒdZd„d…d†gg fgfdVd‡dZdˆdygg fgfdVd‰dZdŠd‹gg fgfdVdŒdZdgdŽgfgfdVdŒdZddgdgfgfdVd‘dZd’d“d”d•gg fdfgfdVd–dZd—gd˜d™dšdd›gfgg g fgfdVd–dZd—gg g d›gfgfdVdœgfdVddZdžgfgfdVdŸdZd d¡gd fgfdVd¢dZdEgfgfdVd£gfdVd¤gfdVdƒdZd„d…d¥gg fgfdVdƒdZd„d…d¦gg fgfdVdƒdZd§d¨d©dªgd«fd¬ddgg fgfdVd­dZd®d¯d§d°d±d²gdsfd³d§d´dµd¶gd«fd·g d fgffgfdVd­dZd¸d¯d§d°d±d²gdsfd³d§d´dµd¶gd«fd·g d fgffgfdVd­dZd¸d¯d§d°d±d²gdsfd³d§d¹dºd»gd«fd¼g d fgffgfdVd­dZd¸d½d§d¾d¿dÀgdsfd³d§dÁdÂdÃgd«fdÄg d fgffgfdVd­dZdÅdZdÆdÇd³dÈdÉg d fd³dÊdËdÌgd fgffgfdVd­dZdÅdZdÆdÇd³d§d´dÍdÎgd«fdÏg d fgffgfdVd­dZdÐdZdÑd³dÒdÓdÔgd fgffgfdVd­dZdÐdZdÑd³d§dÕdÒdÖgd«fd×g d fgffgfdVdØdZd[d\g dg g dg fdÙd­dÚdÛdÚd’dÜdÝg g fffgg dfgfdVdØdZd[d\g dg g dg fdÞdßdàdádâgdãgfgg dfgfdVdØdZd[d\g dg g dg fdädßdågdægfgg dfgfdVd­dZdtdZddçgdtdèdgdégfdêgffgfdVd­dZdëdZdìd¯dëd°dídégfdsfdîgffgfdVdØdZd[d\g dg g dg fd­dßd®dïdðd³dñdòg dófgffgg dfgfg/ZdôdõgfgZdöd÷dødZdùdúdûgffdüdýd÷dþdZd\g dg g dg fdÿffd÷dtdZd gdgffd÷dtdZg g ffd÷dëdZdgffd÷dtdZdgdgffd÷d®d¯dÆd³dddgd fgffd÷d¸d¯dÆd³dddgd fgffd÷ddZd	d
d
gddgffd÷d’dZdd ddgddgffdddddd÷dqdZdddgdsffd÷dqdZg dsffd÷d§dZd	ddgdsffd÷d§d¯dddgdsffd÷d§dZg dsffd÷d’dZddgg ffgZeƒ  dS (  é    N)Úsupportc             C   s¢   | d kst | tttfƒr| S t | tƒr4dd„ | D ƒS | jjg}t| dƒrdt| dƒrd| | j	| j
f¡ | jd krvt|ƒS x"| jD ]}| tt| |ƒƒ¡ q~W t|ƒS )Nc             S   s   g | ]}t |ƒ‘qS © )Úto_tuple)Ú.0Úer   r   ú/usr/lib/python3.7/test_ast.pyú
<listcomp>   s    zto_tuple.<locals>.<listcomp>ÚlinenoÚ
col_offset)Ú
isinstanceÚstrÚintÚcomplexÚlistÚ	__class__Ú__name__ÚhasattrÚappendr	   r
   Ú_fieldsÚtupler   Úgetattr)ÚtÚresultÚfr   r   r   r   
   s    


r   ÚNonez'module docstring'zdef f(): passzdef f(): 'function docstring'zdef f(a): passzdef f(a=0): passzdef f(*args): passzdef f(**kwargs): passzGdef f(a, b=1, c=None, d=[], e={}, *args, f=42, **kwargs): 'doc for f()'zclass C:passz class C: 'docstring for class C'zclass C(object): passzdef f():return 1zdel vzv = 1zv += 1zfor v in v:passzwhile v:passz	if v:passzwith x as y: passzwith x as y, z as q: passzraise Exception('string')z$try:
  pass
except Exception:
  passztry:
  pass
finally:
  passzassert vz
import syszfrom sys import vzglobal vÚ1Úpasszfor v in v:breakzfor v in v:continuezfor a,b in c: passz[(a,b) for a,b in c]z((a,b) for a,b in c)z((a,b) for (a,b) in c)zL(
    (
    Aa
    ,
       Bb
    )
    for
    Aa
    ,
    Bb in Cc
    )z"{a : b for w in x for m in p if g}z{a : b for v,w in x}z{r for l in x if g}z{r for l,m in x}z3async def f():
 'async function'
 await something()z,async def f():
 async for e in i: 1
 else: 2z$async def f():
 async with a as b: 1z{**{1:2}, 2:3}z{*{1, 2}, 3}z$async def f():
 [i async for b in c]z1+2za and bza + bznot vzlambda:Nonez{ 1:2 }z{}z{None,}z&{
      1
        :
          2
     }z[a for b in c if d]z(a for b in c if d)z	1 < 2 < 3zf(1,2,c=3,*d,**e)Z10z'string'za.bza[b:c]Úvz[1,2,3]z[]z1,2,3z(1,2,3)z()za.b.c.d(a.b[1:2])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ejd'd(„ ƒZd)S )*Ú	AST_Testsc             C   s®   t |tjƒr|jd krd S t |tjtjtjfƒrV|j|jf}|  	||k¡ |j|jf}xR|jD ]H}t
||ƒ}t |tƒr’x.|D ]}|  ||¡ q|W q^|d k	r^|  ||¡ q^W d S )N)r   ÚastÚASTr   ÚexprÚstmtZexcepthandlerr	   r
   Ú
assertTruer   r   Ú_assertTrueorder)ÚselfZast_nodeZ
parent_posZnode_posÚnameÚvalueZchildr   r   r   r$   É   s    


zAST_Tests._assertTrueorderc          	   C   s|   t  ¡ }|  |jd¡ d|_|  |jd¡ |  |jd d¡ |  t¡ |j W d Q R X |  t	¡ t  d¡ W d Q R X d S )Nr   é*   Úfoobaré   )
r   r    ÚassertEqualr   r)   Ú__dict__ÚassertRaisesÚAttributeErrorÚvarargÚ	TypeError)r%   Úxr   r   r   Útest_AST_objectsØ   s    zAST_Tests.test_AST_objectsc             C   sL   G dd„ dƒ}t  ¡ }|ƒ |_||j_t |j¡}~t ¡  |  |ƒ ¡ d S )Nc               @   s   e Zd ZdS )z0AST_Tests.test_AST_garbage_collection.<locals>.XN)r   Ú
__module__Ú__qualname__r   r   r   r   ÚXç   s   r5   )	r   r    r1   ÚaÚweakrefÚrefr   Z
gc_collectÚassertIsNone)r%   r5   r6   r8   r   r   r   Útest_AST_garbage_collectionæ   s    z%AST_Tests.test_AST_garbage_collectionc             C   s¶   x°t tdfttdfttdffD ]\}}}x„t||ƒD ]v\}}| jd|d2 t|d|t	j
ƒ}|  t|ƒ|¡ |  |d¡ W d Q R X | jd||d	 t|d|ƒ W d Q R X q4W qW d S )
NÚexecÚsingleÚevalZparsing)ÚactionÚinputú?)r   r   Z	compiling)r>   r?   Úkind)Ú
exec_testsÚexec_resultsÚsingle_testsÚsingle_resultsÚ
eval_testsÚeval_resultsÚzipÚsubTestÚcompiler   ÚPyCF_ONLY_ASTr+   r   r$   )r%   r?   ÚoutputrA   ÚiÚoZast_treer   r   r   Útest_snippetsñ   s    
zAST_Tests.test_snippetsc             C   s<   t  d¡jd jj}|  |j¡ |  |j¡ |  |j¡ d S )Nzx[::]r   )	r   ÚparseÚbodyr'   Úslicer9   ÚupperÚlowerÚstep)r%   Zslcr   r   r   Ú
test_sliceý   s    zAST_Tests.test_slicec             C   s    t  d¡jd }|  |j¡ d S )Nzfrom . import yr   )r   rP   rQ   r9   Úmodule)r%   Zimr   r   r   Útest_from_import  s    zAST_Tests.test_from_importc             C   s>   t  d¡}|  |jd t j¡ d ¡ |jd _t|ddƒ d S )Nzfrom __future__ import divisionr   z __future__ z<test>r;   )r   rP   ZassertIsInstancerQ   Ú
ImportFromÚstriprW   rJ   )r%   Úmodr   r   r   Ú!test_non_interned_future_from_ast  s    
z+AST_Tests.test_non_interned_future_from_astc             C   s|   |   ttjtjƒ¡ |   ttjtjƒ¡ |   ttjtjƒ¡ |   ttjtjƒ¡ |   ttjtjƒ¡ |   ttj	tjƒ¡ d S )N)
r#   Ú
issubclassr   ÚForr"   ÚNamer!   r    ÚcomprehensionZGt)r%   r   r   r   Útest_base_classes  s    zAST_Tests.test_base_classesc             C   s^   xXt j ¡ D ]J\}}t|tƒr|dkr|d  ¡ r|ƒ }t|t jƒr|  t|jƒt	¡ qW d S )Nr    r   )
r   r,   Úitemsr   ÚtypeÚisupperr    r+   r   r   )r%   r&   Úitemr1   r   r   r   Útest_field_attr_existence  s
    z#AST_Tests.test_field_attr_existencec          	   C   sT   t  ¡ }|  |jd¡ |  t¡ |j W d Q R X t jtddƒŽ }|  |jd¡ d S )N)Úargsr/   Ú
kwonlyargsÚkw_defaultsÚkwargÚdefaultsé   é   r*   )r   Ú	argumentsr+   r   r-   r.   r/   Úrange)r%   r1   r   r   r   Útest_arguments  s    zAST_Tests.test_argumentsc             C   s    t  ¡ }d|_|  |jd¡ d S )Niš  )r   ÚNumr   r+   )r%   r1   r   r   r   Útest_field_attr_writable'  s    z"AST_Tests.test_field_attr_writablec          	   C   s   t  ¡ }|  |jd¡ |  t¡ |j W d Q R X t  d¡}|  |jd¡ |  t¡ |j W d Q R X |  t¡ |j W d Q R X t jdd}|  |jd¡ t jddd}|  |jd¡ |  |jd¡ |  |jd¡ |  t	t jdd¡ | jt	t jdddd d S )N)Únr(   r*   )r	   r   rl   )
r   rq   r+   r   r-   r.   rs   r	   r)   r0   )r%   r1   r   r   r   Útest_classattrs-  s$    
zAST_Tests.test_classattrsc             C   s(   t  d¡g}t  |¡}|  |j|¡ d S )Nr(   )r   rq   ÚModuler+   rQ   )r%   rQ   r1   r   r   r   Útest_moduleH  s    
zAST_Tests.test_modulec          	   C   sž  t  ¡ }|  |jd¡ d|_|  |jd¡ t  d¡}t  d¡}t  ¡ }t  |||¡}|  |j|¡ |  |j|¡ |  |j	|¡ t  ddd¡}|  |jd¡ |  |jd¡ |  |j	d¡ t jddddd}|  |jd¡ |  |jd¡ |  |j	d¡ |  |j
d¡ |  tt jdddd¡ | jtt jdddddd t jddddd	}|  |jd¡ |  |jd¡ |  |j	d¡ |  |j
d¡ t jdddd
d}|  |jd
¡ d S )N)ÚleftÚopÚrighté   rl   é   r*   r   )r	   é   )rw   rx   ry   r	   r(   )Ú	foobarbaz)r   ÚBinOpr+   r   r}   rq   ÚAddrw   rx   ry   r	   r-   r0   )r%   r1   Zn1Zn3Zaddopr   r   r   Útest_nodeclassesM  s:    

zAST_Tests.test_nodeclassesc             C   s   t  ¡ }|  |jd¡ d S )Nr   )r   ZSubr+   r   )r%   r1   r   r   r   Útest_no_fieldsy  s    zAST_Tests.test_no_fieldsc       	   	   C   s¢   dd l }|g}ydd l}| |¡ W n tk
r8   Y nX dddg}xX|D ]P}xJ|D ]B}x<dd„ tD ƒD ]*}| | ||¡¡}|  t|ƒt|ƒ¡ qhW qTW qJW d S )Nr   rl   r*   c             s   s   | ]}t |d ddƒV  qdS )r@   r;   i   N)rJ   )r   rM   r   r   r   ú	<genexpr>‰  s    z*AST_Tests.test_pickling.<locals>.<genexpr>)	ÚpickleÚcPickler   ÚImportErrorrB   ÚloadsÚdumpsr+   r   )	r%   rƒ   Zmodsr„   Z	protocolsr[   Zprotocolr   Zast2r   r   r   Útest_pickling~  s    


zAST_Tests.test_picklingc          	   C   sb   t ddd}t tjtjf |Žf|Žg¡}|  t¡}t|ddƒ W d Q R X |  dt	|j
ƒ¡ d S )Nr*   r{   )r	   r
   z<test>r;   zbut got <_ast.expr)Údictr   ru   ÚExprr!   r-   r0   rJ   ÚassertInr   Ú	exception)r%   ÚposÚmÚcmr   r   r   Útest_invalid_sum  s
    zAST_Tests.test_invalid_sumc          	   C   s`   t  t  t  dt  ¡ ¡¡g¡}t  |¡ |  t¡}t|ddƒ W d Q R X |  	dt
|jƒ¡ d S )Nr(   z<test>r;   zidentifier must be of type str)r   ru   rŠ   r_   ÚLoadÚfix_missing_locationsr-   r0   rJ   r‹   r   rŒ   )r%   rŽ   r   r   r   r   Útest_invalid_identitifer”  s
    
z"AST_Tests.test_invalid_identitiferc          	   C   sV   t  d¡}d |jd jd j_|  t¡}t|ddƒ W d Q R X |  dt|j	ƒ¡ d S )Nzdef f():
 yield from g()r   z<test>r;   zfield value is required)
r   rP   rQ   r'   r-   Ú
ValueErrorrJ   r‹   r   rŒ   )r%   Zempty_yield_fromr   r   r   r   Útest_empty_yield_from›  s
    
zAST_Tests.test_empty_yield_fromc          	   C   s>   dd l }dd„ }t |d|¡ |  ttjd¡ W d Q R X d S )Nr   c              W   s   d S )Nr   )rg   r   r   r   Úbad_normalize¨  s    z0AST_Tests.test_issue31592.<locals>.bad_normalizeÚ	normalizeu   Ï•)Úunicodedatar   Z	swap_attrr-   r0   r   rP   )r%   r˜   r–   r   r   r   Útest_issue31592£  s    zAST_Tests.test_issue31592N)r   r3   r4   r$   r2   r:   rO   rV   rX   r\   ra   rf   rp   rr   rt   rv   r€   r   rˆ   r   r“   r•   r   Úcpython_onlyr™   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S )ÚASTHelpers_Testc             C   s6   t  d¡}tdddt jƒ}|  t  |¡t  |¡¡ d S )Nz
foo(1 + 1)z	<unknown>r;   )r   rP   rJ   rK   r+   Údump)r%   r6   Úbr   r   r   Ú
test_parse°  s    
zASTHelpers_Test.test_parsec             C   sT   ydd  W nB t k
rN   |  t¡}t d¡ W d Q R X |  |jj¡ Y nX d S )Nrl   r   z'\U')Ú	Exceptionr-   ÚSyntaxErrorr   Úliteral_evalZassertIsNotNonerŒ   Ú__context__)r%   r   r   r   r   Útest_parse_in_errorµ  s    z#ASTHelpers_Test.test_parse_in_errorc             C   sL   t  d¡}|  t  |¡d¡ |  t j|ddd¡ |  t j|ddd¡ d S )	Nzspam(eggs, "and cheese")z‡Module(body=[Expr(value=Call(func=Name(id='spam', ctx=Load()), args=[Name(id='eggs', ctx=Load()), Str(s='and cheese')], keywords=[]))])F)Zannotate_fieldszYModule([Expr(Call(Name('spam', Load()), [Name('eggs', Load()), Str('and cheese')], []))])T)Úinclude_attributesa   Module(body=[Expr(value=Call(func=Name(id='spam', ctx=Load(), lineno=1, col_offset=0), args=[Name(id='eggs', ctx=Load(), lineno=1, col_offset=5), Str(s='and cheese', lineno=1, col_offset=11)], keywords=[], lineno=1, col_offset=0), lineno=1, col_offset=0)]))r   rP   r+   rœ   )r%   Únoder   r   r   Ú	test_dump½  s    
zASTHelpers_Test.test_dumpc             C   sB   t jddd}t  t  d¡|jj¡|j_|  t j|ddd¡ d S )Nz1 + 1r=   )Úmoder*   T)r¤   z‡Expression(body=BinOp(left=Num(n=1, lineno=1, col_offset=0), op=Add(), right=Num(n=2, lineno=1, col_offset=4), lineno=1, col_offset=0)))r   rP   Úcopy_locationrq   rQ   ry   r+   rœ   )r%   Úsrcr   r   r   Útest_copy_locationÐ  s    z"ASTHelpers_Test.test_copy_locationc             C   sf   t  d¡}|j t  t  t  dt  ¡ ¡t  d¡gg ¡¡¡ |  	|t  
|¡¡ |  	t j|ddd¡ d S )Nzwrite("spam")ÚspamZeggsT)r¤   a|  Module(body=[Expr(value=Call(func=Name(id='write', ctx=Load(), lineno=1, col_offset=0), args=[Str(s='spam', lineno=1, col_offset=6)], keywords=[], lineno=1, col_offset=0), lineno=1, col_offset=0), Expr(value=Call(func=Name(id='spam', ctx=Load(), lineno=1, col_offset=0), args=[Str(s='eggs', lineno=1, col_offset=0)], keywords=[], lineno=1, col_offset=0), lineno=1, col_offset=0)]))r   rP   rQ   r   rŠ   ÚCallr_   r‘   ÚStrr+   r’   rœ   )r%   r©   r   r   r   Útest_fix_missing_locationsÙ  s    
z*ASTHelpers_Test.test_fix_missing_locationsc             C   s|   t jddd}|  t j|dd|¡ |  t j|ddd¡ t jddd}|  t j|jdd|j¡ |  t j|ddd¡ d S )	Nz1 + 1r=   )r§   r{   )rs   T)r¤   z‡Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, col_offset=0)))r   rP   r+   Zincrement_linenorœ   rQ   )r%   r©   r   r   r   Útest_increment_linenoé  s    z%ASTHelpers_Test.test_increment_linenoc             C   sH   t jddd}tt  |j¡ƒ}|  | d¡jd¡ |  |g g dœ¡ d S )Nzfoo()r=   )r§   ÚfuncÚfoo)Úkeywordsrg   )r   rP   r‰   Ziter_fieldsrQ   r+   ÚpopÚid)r%   r¥   Údr   r   r   Útest_iter_fieldsú  s    z ASTHelpers_Test.test_iter_fieldsc             C   s†   t jddd}|  ttt  |j¡ƒƒd¡ t  |j¡}|  t|ƒjd¡ |  t|ƒj	d¡ |  t|ƒj	d¡ |  t  
t|ƒ¡d¡ d S )	Nzspam(23, 42, eggs='leek')r=   )r§   r|   r«   é   r(   z(keyword(arg='eggs', value=Str(s='leek')))r   rP   r+   Úlenr   Ziter_child_nodesrQ   Únextr´   rs   rœ   )r%   r¥   Úiteratorr   r   r   Útest_iter_child_nodes   s    z%ASTHelpers_Test.test_iter_child_nodesc             C   s†   t  d¡}|  t  |¡d¡ t  d¡}|  t  |jd ¡d¡ t  d¡}|  t  |jd ¡d¡ t  d¡}|  t  |jd ¡d¡ d S )Nz"""line one
  line two"""zline one
line twoz&class foo:
  """line one
  line two"""r   z&def foo():
  """line one
  line two"""z#async def foo():
  """spam
  ham"""zspam
ham)r   rP   r+   Úget_docstringrQ   )r%   r¥   r   r   r   Útest_get_docstring  s    



z"ASTHelpers_Test.test_get_docstringc             C   s.  |   t t d¡¡¡ t d¡}|   t |¡¡ t d¡}|   t |¡¡ t d¡}|   t |jd ¡¡ t d¡}|   t |jd ¡¡ t d¡}|   t |jd ¡¡ t d¡}|   t |jd ¡¡ t d¡}|   t |jd ¡¡ t d	¡}|   t |jd ¡¡ t d
¡}|   t |jd ¡¡ d S )NÚ zx = "not docstring"zdef foo():
  passzclass foo:
  passr   z class foo:
  x = "not docstring"z class foo:
  def bar(self): passz def foo():
  x = "not docstring"zasync def foo():
  passz&async def foo():
  x = "not docstring")r9   r   r¼   rP   rQ   )r%   r¥   r   r   r   Útest_get_docstring_none  s&    








z'ASTHelpers_Test.test_get_docstring_nonec             C   s0  |   t d¡dddg¡ |   t d¡ddi¡ |   t d¡d	¡ |   t d
¡dddh¡ |   t d¡d¡ |  ttjd¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   tt d¡ƒd¡ |  ttjd¡ |  ttjd¡ |  ttjd¡ d S )Nz	[1, 2, 3]rl   r*   r{   z{"foo": 42}r±   r(   z(True, False, None))TFNz	{1, 2, 3}zb"hi"s   hizfoo()Ú6é   z+6z-6iúÿÿÿz3.25g      
@z+3.25z-3.25g      
Àz-0.0z++6z+Truez2+3)r+   r   r¡   r-   r”   Úrepr)r%   r   r   r   Útest_literal_eval3  s     z!ASTHelpers_Test.test_literal_evalc             C   s>  |   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¡ |   t d¡d¡ |   t d¡d
¡ |  ttjd¡ |  ttjd¡ |  ttjd¡ |  ttjd¡ |  ttjd¡ d S )NZ6jy              @z-6jy       €      Àz6.75jy              @z-6.75jy       €      Àz3+6jy      @      @z-3+6jy      À      @z3-6jy      @      Àz-3-6jy      À      Àz
3.25+6.75jy      
@      @z-3.25+6.75jy      
À      @z
3.25-6.75jy      
@      Àz-3.25-6.75jy      
À      Àz(3+6j)z-6j+3z-6j+3jz3+-6jz3+(0+6j)z-(3+6j))r+   r   r¡   r-   r”   )r%   r   r   r   Útest_literal_eval_complexE  s$    z)ASTHelpers_Test.test_literal_eval_complexc          	   C   sb   t jdt jddgd d d dg}t  |¡}|  t¡}t|ddƒ W d Q R X |  dt|j	ƒ¡ d S )NÚtimeÚsleep)r&   )rW   ÚnamesÚlevelr	   r
   Útestr;   zinvalid integer value: None)
r   rY   Úaliasru   r-   r”   rJ   r‹   r   rŒ   )r%   rQ   r[   r   r   r   r   Útest_bad_integerZ  s    
z ASTHelpers_Test.test_bad_integerc             C   sT   t jdt jddgd dddg}t  |¡}t|ddƒ}i }t||ƒ |  d|¡ d S )NrÅ   rÆ   )r&   r   )rW   rÇ   rÈ   r	   r
   rÉ   r;   )r   rY   rÊ   ru   rJ   r;   r‹   )r%   rQ   r[   ÚcodeÚnsr   r   r   Útest_level_as_nonee  s    

z"ASTHelpers_Test.test_level_as_noneN)r   r3   r4   rž   r£   r¦   rª   r®   r¯   r¶   r»   r½   r¿   rÃ   rÄ   rË   rÎ   r   r   r   r   r›   ®  s   	r›   c               @   sŽ  e Zd Zd`edœdd„Zdaedœdd„Zdbd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d0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zd:d;„ Zd<d=„ Z d>d?„ Z!d@dA„ Z"dBdC„ Z#dDdE„ Z$dFdG„ Z%dHdI„ Z&dJdK„ Z'dLdM„ Z(dNdO„ Z)dPdQ„ Z*dRdS„ Z+dTdU„ Z,dVdW„ Z-dXdY„ Z.dZd[„ Z/d\d]„ Z0d^d_„ Z1dS )cÚASTValidatorTestsNr;   )Úexcc         	   C   sV   d |_ |_t |¡ |  |¡}t|d|ƒ W d Q R X |d k	rR|  |t|jƒ¡ d S )Nr   z<test>)	r	   r
   r   r’   r-   rJ   r‹   r   rŒ   )r%   r[   Úmsgr§   rÐ   r   r   r   r   r[   s  s    
zASTValidatorTests.modc            C   s&   t  t  |¡g¡}| j|||d d S )N)rÐ   )r   ru   rŠ   r[   )r%   r¥   rÑ   rÐ   r[   r   r   r   r!   {  s    zASTValidatorTests.exprc             C   s   t  |g¡}|  ||¡ d S )N)r   ru   r[   )r%   r"   rÑ   r[   r   r   r   r"     s    zASTValidatorTests.stmtc          	   C   sT   t  t  t  dt  ¡ ¡¡g¡}|  |dd¡ t  t  dt  ¡ ¡¡}|  |dd¡ d S )Nr1   zmust have Load contextr<   r=   )r   ÚInteractiverŠ   r_   ÚStorer[   Ú
Expression)r%   rŽ   r   r   r   rv   ƒ  s    zASTValidatorTests.test_modulec          	      s  d‡ fdd„	}t  dt  dt  ¡ ¡¡g}|||ddƒ |||ddƒ ||t  d¡gdd	ƒ ||t  d
¡gddƒ t  dt  dt  ¡ ¡¡g}|||t  dt  ¡ ¡gddƒ t  dt  dt  ¡ ¡¡t  dt  dt  ¡ ¡¡g}|||d t  dt  ¡ ¡gddƒ d S )Nc                sL   | d krg } |d krg }|d kr$g }|d kr0g }t  | |||||¡} ˆ | ƒS )N)r   rn   )rg   r/   rh   rj   rk   ri   )Úfacr   r   rn   Š  s    z5ASTValidatorTests._check_arguments.<locals>.argumentsr1   )rg   zmust have Load context)rh   r{   )rk   z"more positional defaults than argsr|   )ri   z3length of kwonlyargs is not the same as kw_defaults)rg   rk   r6   r   Úy)rh   ri   )NNNNNN)r   Úargr_   rÓ   rq   r‘   )r%   rÕ   Zcheckrn   rg   r   )rÕ   r   Ú_check_arguments‰  s$      z"ASTValidatorTests._check_argumentsc             C   s®   t  g d g g d g ¡}t  d|g g d ¡}|  |d¡ t  d|t  ¡ gt  dt  ¡ ¡gd ¡}|  |d¡ t  d|t  ¡ gg t  dt  ¡ ¡¡}|  |d¡ dd„ }|  || j¡ d S )Nr1   zempty body on FunctionDefzmust have Load contextc             S   s   t  d| t  ¡ gg d ¡S )Nr1   )r   ÚFunctionDefÚPass)rg   r   r   r   rÕ   ²  s    z+ASTValidatorTests.test_funcdef.<locals>.fac)r   rn   rÙ   r"   rÚ   r_   rÓ   rØ   )r%   r6   r   rÕ   r   r   r   Útest_funcdef¨  s     zASTValidatorTests.test_funcdefc             C   sœ   ddd„}|   |t dt ¡ ¡gdd¡ |   |t dt dt ¡ ¡¡gdd¡ |   |g dd¡ |   |d gdd	¡ |   |t dt ¡ ¡gd
d¡ d S )Nc             S   sH   | d krg } |d krg }|d kr*t  ¡ g}|d kr6g }t  d| |||¡S )NZmyclass)r   rÚ   ÚClassDef)Úbasesr²   rQ   Údecorator_listr   r   r   Úcls·  s    

z,ASTValidatorTests.test_classdef.<locals>.clsr1   )rÝ   zmust have Load context)r²   )rQ   zempty body on ClassDefzNone disallowed)rÞ   )NNNN)r"   r   r_   rÓ   Úkeyword)r%   rß   r   r   r   Útest_classdef¶  s    
"zASTValidatorTests.test_classdefc          	   C   sJ   |   t g ¡d¡ |   t d g¡d¡ |   t t dt ¡ ¡g¡d¡ d S )Nzempty targets on DeletezNone disallowedr1   zmust have Del context)r"   r   ÚDeleter_   r‘   )r%   r   r   r   Útest_deleteË  s    zASTValidatorTests.test_deletec          
   C   s   |   t g t d¡¡d¡ |   t d gt d¡¡d¡ |   t t dt ¡ ¡gt d¡¡d¡ |   t t dt ¡ ¡gt dt ¡ ¡¡d¡ d S )Nr{   zempty targets on AssignzNone disallowedr1   zmust have Store contextrÖ   zmust have Load context)r"   r   ÚAssignrq   r_   r‘   rÓ   )r%   r   r   r   Útest_assignÑ  s    "zASTValidatorTests.test_assignc          	   C   sp   t  t  dt  ¡ ¡t  ¡ t  dt  ¡ ¡¡}|  |d¡ t  t  dt  ¡ ¡t  ¡ t  dt  ¡ ¡¡}|  |d¡ d S )Nr1   rÖ   zmust have Store contextzmust have Load context)r   Ú	AugAssignr_   r‘   r   r"   rÓ   )r%   Zaugr   r   r   Útest_augassignÚ  s    z ASTValidatorTests.test_augassignc          
   C   sÜ   t  dt  ¡ ¡}t  dt  ¡ ¡}t  ¡ }|  t  ||g g ¡d¡ |  t  t  dt  ¡ ¡||gg ¡d¡ |  t  |t  dt  ¡ ¡|gg ¡d¡ t  t  dt  ¡ ¡¡}|  t  |||gg ¡d¡ |  t  |||g|g¡d¡ d S )Nr1   rÖ   zempty body on Forzmust have Store contextzmust have Load context)r   r_   rÓ   r‘   rÚ   r"   r^   rŠ   )r%   r1   rÖ   Úpr   r   r   r   Útest_forâ  s      zASTValidatorTests.test_forc             C   s~   |   t t d¡g g ¡d¡ |   t t dt ¡ ¡t ¡ gg ¡d¡ |   t t d¡t ¡ gt t dt ¡ ¡¡g¡d¡ d S )Nr{   zempty body on Whiler1   zmust have Load context)r"   r   ÚWhilerq   r_   rÓ   rÚ   rŠ   )r%   r   r   r   Ú
test_whileï  s    "zASTValidatorTests.test_whilec             C   sº   |   t t d¡g g ¡d¡ t t dt ¡ ¡t ¡ gg ¡}|   |d¡ t t d¡t t dt ¡ ¡¡gg ¡}|   |d¡ t t d¡t ¡ gt t dt ¡ ¡¡g¡}|   |d¡ d S )Nr{   zempty body on Ifr1   zmust have Load context)r"   r   ÚIfrq   r_   rÓ   rÚ   rŠ   )r%   rM   r   r   r   Útest_if÷  s     (zASTValidatorTests.test_ifc             C   s°   t  ¡ }|  t  g |g¡d¡ t  t  d¡d ¡}|  t  |gg ¡d¡ t  t  dt  ¡ ¡d ¡}|  t  |g|g¡d¡ t  t  d¡t  dt  ¡ ¡¡}|  t  |g|g¡d¡ d S )Nzempty items on Withr{   zempty body on Withr1   zmust have Load contextzmust have Store context)	r   rÚ   r"   ÚWithÚwithitemrq   r_   rÓ   r‘   )r%   rè   rM   r   r   r   Ú	test_with  s    zASTValidatorTests.test_withc             C   sp   t  d t  d¡¡}|  |d¡ t  t  dt  ¡ ¡d ¡}|  |d¡ t  t  d¡t  dt  ¡ ¡¡}|  |d¡ d S )Nr{   z!Raise with cause but no exceptionr1   zmust have Load contextr|   )r   ÚRaiserq   r"   r_   rÓ   )r%   Úrr   r   r   Ú
test_raise  s    zASTValidatorTests.test_raisec             C   sx  t  ¡ }t  g g g |g¡}|  |d¡ t  t  t  dt  ¡ ¡¡gg g |g¡}|  |d¡ t  |gg g g ¡}|  |d¡ t  |gg |g|g¡}|  |d¡ t  |gt  d dg ¡gg g ¡}|  |d¡ t  t  dt  ¡ ¡d|g¡g}|  t  |g|g g ¡d¡ t  d d|g¡g}t  |g|t  t  dt  ¡ ¡¡g|g¡}|  |d¡ t  |g||gt  t  dt  ¡ ¡¡g¡}|  |d¡ d S )Nzempty body on Tryr1   zmust have Load contextz-Try has neither except handlers nor finalbodyz%Try has orelse but no except handlerszempty body on ExceptHandlerrÖ   )r   rÚ   ÚTryr"   rŠ   r_   rÓ   ÚExceptHandler)r%   rè   r   r   r   r   r   Útest_try  s$    &((zASTValidatorTests.test_tryc          	   C   sT   |   t t dt ¡ ¡d ¡d¡ t t dt ¡ ¡t dt ¡ ¡¡}|   |d¡ d S )Nr1   zmust have Load contextrÖ   )r"   r   ÚAssertr_   rÓ   r‘   )r%   Zassrtr   r   r   Útest_assert'  s
    zASTValidatorTests.test_assertc             C   s   |   t g ¡d¡ d S )Nzempty names on Import)r"   r   ÚImport)r%   r   r   r   Útest_import.  s    zASTValidatorTests.test_importc             C   s>   t  d t  dd ¡gd¡}|  |d¡ |  t  d g d¡d¡ d S )Nr1   iÖÿÿÿzNegative ImportFrom levelr   zempty names on ImportFrom)r   rY   rÊ   r"   )r%   Zimpr   r   r   Útest_importfrom1  s    z!ASTValidatorTests.test_importfromc             C   s   |   t g ¡d¡ d S )Nzempty names on Global)r"   r   ÚGlobal)r%   r   r   r   Útest_global6  s    zASTValidatorTests.test_globalc             C   s   |   t g ¡d¡ d S )Nzempty names on Nonlocal)r"   r   ZNonlocal)r%   r   r   r   Útest_nonlocal9  s    zASTValidatorTests.test_nonlocalc             C   s&   t  t  dt  ¡ ¡¡}|  |d¡ d S )Nr1   zmust have Load context)r   rŠ   r_   rÓ   r"   )r%   r   r   r   r   Ú	test_expr<  s    zASTValidatorTests.test_exprc          	   C   sœ   t  t  ¡ g ¡}|  |d¡ t  t  ¡ t  d¡g¡}|  |d¡ t  t  ¡ t  d¡d g¡}|  |d¡ t  t  ¡ t  d¡t  dt  ¡ ¡g¡}|  |d¡ d S )Nzless than 2 valuesr{   r|   zNone disallowedr1   zmust have Load context)r   ÚBoolOpÚAndr!   rq   r_   rÓ   )r%   r   r   r   r   Útest_boolop@  s    &zASTValidatorTests.test_boolopc             C   s,   t  t  ¡ t  dt  ¡ ¡¡}|  |d¡ d S )Nr1   zmust have Load context)r   ÚUnaryOpÚNotr_   rÓ   r!   )r%   Úur   r   r   Útest_unaryopJ  s    zASTValidatorTests.test_unaryopc          
   C   sN   t  g d g g d g ¡}|  t  |t  dt  ¡ ¡¡d¡ dd„ }|  || j¡ d S )Nr1   zmust have Load contextc             S   s   t  | t  dt  ¡ ¡¡S )Nr1   )r   ÚLambdar_   r‘   )rg   r   r   r   rÕ   R  s    z*ASTValidatorTests.test_lambda.<locals>.fac)r   rn   r!   r  r_   rÓ   rØ   )r%   r6   rÕ   r   r   r   Útest_lambdaN  s
    zASTValidatorTests.test_lambdac             C   s\   t  dt  ¡ ¡}t  dt  ¡ ¡}x6|||f|||f|||ffD ]}|  t j|Ž d¡ q>W d S )Nr1   rÖ   zmust have Load context)r   r_   r‘   rÓ   r!   ZIfExp)r%   ÚlÚsrg   r   r   r   Ú
test_ifexpV  s    "zASTValidatorTests.test_ifexpc             C   sR   t  g t  dt  ¡ ¡g¡}|  |d¡ t  t  dt  ¡ ¡gd g¡}|  |d¡ d S )Nr1   zsame number of keys as valueszNone disallowed)r   ÚDictr_   r‘   r!   )r%   rµ   r   r   r   Ú	test_dict\  s    zASTValidatorTests.test_dictc             C   s<   |   t d g¡d¡ t t dt ¡ ¡g¡}|   |d¡ d S )NzNone disallowedr1   zmust have Load context)r!   r   ÚSetr_   rÓ   )r%   r
  r   r   r   Útest_setb  s    zASTValidatorTests.test_setc          	   C   sü   |   |g ƒd¡ t t dt ¡ ¡t dt ¡ ¡g d¡}|   ||gƒd¡ t t dt ¡ ¡t dt ¡ ¡g d¡}|   ||gƒd¡ t dt ¡ ¡}t dt ¡ ¡}t ||d gd¡}|   ||gƒd¡ t ||t dt ¡ ¡gd¡}|   ||gƒd¡ d S )Nz comprehension with no generatorsr1   r   zmust have Store contextzmust have Load contextrÖ   zNone disallowed)r!   r   r`   r_   r‘   rÓ   )r%   rÕ   Úgr1   rÖ   r   r   r   Ú_check_comprehensiong  s    z&ASTValidatorTests._check_comprehensionc                sb   t  t  dt  ¡ ¡t  dt  ¡ ¡g d¡}|  ˆ t  dt  ¡ ¡|gƒd¡ ‡ fdd„}|  |¡ d S )Nr1   r   zmust have Load contextc                s   ˆ t  dt  ¡ ¡| ƒS )Nr1   )r   r_   rÓ   )Zgens)rÕ   r   r   Úwrap{  s    z,ASTValidatorTests._simple_comp.<locals>.wrap)r   r`   r_   rÓ   r‘   r!   r  )r%   rÕ   r  r  r   )rÕ   r   Ú_simple_compv  s    zASTValidatorTests._simple_compc             C   s   |   tj¡ d S )N)r  r   ÚListComp)r%   r   r   r   Útest_listcomp  s    zASTValidatorTests.test_listcompc             C   s   |   tj¡ d S )N)r  r   ÚSetComp)r%   r   r   r   Útest_setcomp‚  s    zASTValidatorTests.test_setcompc             C   s   |   tj¡ d S )N)r  r   ÚGeneratorExp)r%   r   r   r   Útest_generatorexp…  s    z#ASTValidatorTests.test_generatorexpc             C   s¦   t  t  dt  ¡ ¡t  dt  ¡ ¡g d¡}t  t  dt  ¡ ¡t  dt  ¡ ¡|g¡}|  |d¡ t  t  dt  ¡ ¡t  dt  ¡ ¡|g¡}|  |d¡ dd„ }|  |¡ d S )NrÖ   rè   r   r1   zmust have Load contextc             S   s.   t  dt  ¡ ¡}t  dt  ¡ ¡}t  ||| ¡S )Nr1   rÖ   )r   r_   r‘   ÚDictComp)ÚcompsÚkr   r   r   r   Úfactory‘  s    z0ASTValidatorTests.test_dictcomp.<locals>.factory)r   r`   r_   rÓ   r‘   r  r!   r  )r%   r  Úcr  r   r   r   Útest_dictcompˆ  s    zASTValidatorTests.test_dictcompc          	   C   s@   |   t t dt ¡ ¡¡d¡ |   t t dt ¡ ¡¡d¡ d S )Nr1   zmust have Load)r!   r   ZYieldr_   rÓ   Z	YieldFrom)r%   r   r   r   Ú
test_yield—  s    zASTValidatorTests.test_yieldc             C   s¼   t  dt  ¡ ¡}t  |t  ¡ gg ¡}|  |d¡ t  |t  ¡ gt  d¡t  d¡g¡}|  |d¡ t  t  d¡t  ¡ g|g¡}| j|dtd t  |t  ¡ gt  d¡g¡}| j|dtd d S )	Nr1   zno comparatorsr|   rz   z,different number of comparators and operandsZblahznon-numeric)rÐ   )r   r_   r‘   ÚCompareZInr!   rq   r0   )r%   rw   Úcompr   r   r   Útest_compare›  s    $zASTValidatorTests.test_comparec             C   s¶   t  dt  ¡ ¡}t  dt  ¡ ¡g}t  dt  dt  ¡ ¡¡g}t  t  dt  ¡ ¡||¡}|  |d¡ t  |d g|¡}|  |d¡ t  dt  dt  ¡ ¡¡g}t  |||¡}|  |d¡ d S )Nr1   rÖ   ÚwÚzzmust have Load contextzNone disallowed)r   r_   r‘   rà   r¬   rÓ   r!   )r%   r°   rg   r²   ZcallZbad_keywordsr   r   r   Ú	test_call¦  s    zASTValidatorTests.test_callc             C   sh   G dd„ dt ƒ}G dd„ dtƒ}G dd„ dtƒ}x2dd|ƒ |ƒ |ƒ fD ]}| jt |¡d	td
 qFW d S )Nc               @   s   e Zd ZdS )z*ASTValidatorTests.test_num.<locals>.subintN)r   r3   r4   r   r   r   r   Úsubint³  s   r'  c               @   s   e Zd ZdS )z,ASTValidatorTests.test_num.<locals>.subfloatN)r   r3   r4   r   r   r   r   Úsubfloatµ  s   r(  c               @   s   e Zd ZdS )z.ASTValidatorTests.test_num.<locals>.subcomplexN)r   r3   r4   r   r   r   r   Ú
subcomplex·  s   r)  Ú0Zhelloznon-numeric)rÐ   )r   Úfloatr   r!   r   rq   r0   )r%   r'  r(  r)  Úobjr   r   r   Útest_num²  s
    zASTValidatorTests.test_numc             C   s.   t  t  dt  ¡ ¡dt  ¡ ¡}|  |d¡ d S )Nr1   rÖ   zmust have Load context)r   Ú	Attributer_   rÓ   r‘   r!   )r%   Úattrr   r   r   Útest_attribute¼  s    z ASTValidatorTests.test_attributec          
   C   s$  t  t  dt  ¡ ¡t  t  d¡¡t  ¡ ¡}|  |d¡ t  dt  ¡ ¡}t  |t  t  dt  ¡ ¡¡t  ¡ ¡}|  |d¡ t  dt  ¡ ¡}xH|d d fd |d fd d |ffD ](}t j|Ž }|  t  ||t  ¡ ¡d¡ q¤W t  	g ¡}|  t  ||t  ¡ ¡d¡ t  	t  |¡g¡}|  t  ||t  ¡ ¡d¡ d S )Nr1   r{   zmust have Load contextrÖ   zempty dims on ExtSlice)
r   Ú	Subscriptr_   rÓ   ZIndexrq   r‘   r!   ÚSliceZExtSlice)r%   Úsubr1   r
  rg   Úslr   r   r   Útest_subscriptÀ  s      

"


z ASTValidatorTests.test_subscriptc          	   C   sN   t  t  t  dt  ¡ ¡t  ¡ ¡gt  ¡ ¡}t  |gt  d¡¡}|  |d¡ d S )Nr1   r|   zmust have Store context)	r   ÚListÚStarredr_   r‘   rÓ   rä   rq   r"   )r%   rw   Úassignr   r   r   Útest_starredÒ  s     
zASTValidatorTests.test_starredc             C   s@   |   |d gt ¡ ƒd¡ |   |t dt ¡ ¡gt ¡ ƒd¡ d S )NzNone disallowedr1   zmust have Load context)r!   r   r‘   r_   rÓ   )r%   rÕ   r   r   r   Ú	_sequenceØ  s    zASTValidatorTests._sequencec             C   s   |   tj¡ d S )N)r:  r   r6  )r%   r   r   r   Ú	test_listÝ  s    zASTValidatorTests.test_listc             C   s   |   tj¡ d S )N)r:  r   ÚTuple)r%   r   r   r   Ú
test_tupleà  s    zASTValidatorTests.test_tuplec             C   s   |   t d¡d¡ d S )Nr|   z&singleton must be True, False, or None)r!   r   ÚNameConstant)r%   r   r   r   Útest_nameconstantã  s    z#ASTValidatorTests.test_nameconstantc          
   C   sŠ   t j tj¡}dd„ t  |¡D ƒ}| ddg¡ xT|D ]L}t j ||¡}t|ddd}| 	¡ }W d Q R X t 
||¡}t||dƒ q6W d S )	Nc             S   s   g | ]}|  d ¡r|‘qS )z.py)Úendswith)r   Úfnr   r   r   r   è  s    z;ASTValidatorTests.test_stdlib_validates.<locals>.<listcomp>ztest/test_grammar.pyztest/test_unpack_ex.pyrò   zutf-8)Úencodingr;   )ÚosÚpathÚdirnamer   Ú__file__ÚlistdirÚextendÚjoinÚopenÚreadrP   rJ   )r%   ZstdlibZtestsrW   rA  ÚfpÚsourcer[   r   r   r   Útest_stdlib_validatesæ  s    
z'ASTValidatorTests.test_stdlib_validates)Nr;   )N)N)2r   r3   r4   r”   r[   r!   r"   rv   rØ   rÛ   rá   rã   rå   rç   ré   rë   rí   rð   ró   rö   rø   rú   rû   rý   rþ   rÿ   r  r  r  r  r  r  r  r  r  r  r  r  r   r#  r&  r-  r0  r5  r9  r:  r;  r=  r?  rN  r   r   r   r   rÏ   q  s\   
	


	
rÏ   c               @   s^   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
ejdd„ ƒZdd„ ZdS )ÚConstantTestsz$Tests on the ast.Constant node type.c             C   s\   t  d¡}|jd j}t j|d}t  ||¡ ||jd _t|ddƒ}i }t||ƒ |d S )Nzx = 123r   )r'   z<string>r;   r1   )r   rP   rQ   r'   ÚConstantr¨   rJ   r;   )r%   r'   Útreer¥   Únew_noderÌ   rÍ   r   r   r   Úcompile_constantõ  s    

zConstantTests.compile_constantc          	   C   s<   |   t¡}|  dddg¡ W d Q R X |  t|jƒd¡ d S )Nrl   r*   r{   z%got an invalid type in Constant: list)r-   r0   rS  r+   r   rŒ   )r%   r   r   r   r   Útest_validation  s    zConstantTests.test_validationc          
   C   sN   xHd ddt dtƒ fD ]2}| j|d |  |¡}|  ||¡ W d Q R X qW d S )NFTó    )Úconst)ÚEllipsisÚ	frozensetrI   rS  ZassertIs)r%   rV  r'   r   r   r   Útest_singletons	  s    
zConstantTests.test_singletonsc          
   C   s’   d}t dhƒ}x$tdƒD ]}|df}t |dhƒ}qW ddddd	td
ƒt dƒ||f	}x:|D ]2}| j|d |  |¡}|  ||¡ W d Q R X qXW d S )N)rl   rl   r{   r*   é{   g     À^@y             À^@Úunicodes   bytesr   rX  )r'   )rX  ro   r   rI   rS  r+   )r%   Znested_tupleZnested_frozensetrÈ   Úvaluesr'   r   r   r   r   Útest_values  s    


zConstantTests.test_valuesc          	   C   sz   t  d¡}|jd jd }t jdd}t  ||¡ ||jd jd< |  t¡}t|ddƒ W d Q R X |  	t
|jƒd¡ d S )Nzx = 1r   rl   )r'   Ústringr;   z6expression which can't be assigned to in Store context)r   rP   rQ   ZtargetsrP  r¨   r-   r”   rJ   r+   r   rŒ   )r%   rQ  ÚtargetÚ
new_targetr   r   r   r   Útest_assign_to_constant  s    
z%ConstantTests.test_assign_to_constantc             C   s    t  d¡}|  t  |¡d¡ d S )Nz'docstring'
x = 1Z	docstring)r   rP   r+   r¼   )r%   rQ  r   r   r   r½   ,  s    
z ConstantTests.test_get_docstringc             C   s>   t |ddƒ}g }x(t |¡D ]}|jdkr| |j¡ qW |S )Nz<string>r;   Z
LOAD_CONST)rJ   ÚdisZget_instructionsÚopnamer   Zargval)r%   rQ  ÚcoÚconstsZinstrr   r   r   Úget_load_const0  s    
zConstantTests.get_load_constc          	   C   sÆ   d ddddddddg	}d	  d
d„ |D ƒ¡}|d7 }| td f¡ t |¡}|  |  |¡|¡ xRt|j|ƒD ]B\}}t	|tj
ƒsŒtt |¡ƒ‚tj|d}t ||j¡ ||_qjW |  |  |¡|¡ d S )NTFé|   g       @y              @r[  s   bytes)rl   r*   r{   Ú
c             S   s   g | ]}d   |¡‘qS )zx={!r})Úformat)r   rV  r   r   r   r   E  s    z1ConstantTests.test_load_const.<locals>.<listcomp>z
x = ...)r'   )rI  rH  rW  r   rP   r+   rf  rH   rQ   r   rä   ÚAssertionErrorrœ   rP  r¨   r'   )r%   re  rÌ   rQ  r8  rV  rR  r   r   r   Útest_load_const:  s*    

zConstantTests.test_load_constc             C   sl   t  d¡}|jd j}t jdd}t  ||j¡ ||_t jdd}t  ||j¡ ||_|  t  	|¡d¡ d S )Nz1 + 2r   é
   )r'   y              4@y      $@      4@)
r   rP   rQ   r'   rP  r¨   rw   ry   r+   r¡   )r%   rQ  ZbinopZnew_leftZ	new_rightr   r   r   rÃ   W  s    
zConstantTests.test_literal_evalN)r   r3   r4   Ú__doc__rS  rT  rY  r]  ra  r½   rf  r   rš   rk  rÃ   r   r   r   r   rO  ò  s   
rO  c              C   sž   t dkrd S tjdd … dgkr’xdtdftdftdffD ]J\} }t|d ƒ x,| D ]$}t |d|¡}td	t	|ƒf ƒ qRW td
ƒ q8W tdƒ t
‚t ¡  d S )NÚ__main__rl   z-gr;   r<   r=   z_results = [r@   z%r,ú]zmain())r   ÚsysÚargvrB   rD   rF   Úprintr   rP   r   Ú
SystemExitÚunittestÚmain)Z
statementsrA   Z	statementrQ  r   r   r   ru  f  s    
ru  ru   )rŠ   )rl   r   )r>  )rl   r   N)rŠ   )rl   r   )r­   )rl   r   zmodule docstringrÙ   )rl   r   r   rn   )rÚ   )rl   é	   )rŠ   )rl   rv  )r­   )rl   rv  zfunction docstring)r×   )rl   rÁ   r6   N)rÚ   )rl   rl  )rq   )rl   é   r   )rÚ   )rl   é   )r×   )rl   rm   rg   N)rÚ   )rl   é   )r×   )rl   rw  ÚkwargsN)rÚ   )rl   é   )r×   )rl   rv  r   N)r×   )rl   ry  r  N)r×   )rl   é   rµ   N)r×   )rl   é   r   N)r×   )rl   é#   rg   N)r×   )rl   é)   r   N)rq   )rl   é+   r(   )r×   )rl   é1   rz  N)rq   )rl   é   rl   )r>  )rl   é   Nr6  )rl   é   )r‘   r  )rl   é   )rŠ   )rl   é:   )r­   )rl   r†  zdoc for f()rÜ   ÚC)rÚ   )rl   rw  )rŠ   )rl   rv  )r­   )rl   rv  zdocstring for class C)r_   )rl   rw  Úobject)r‘   )ZReturn)rl   rw  )rq   )rl   é   rl   râ   )r_   )rl   r|   r   )ZDelrä   )r_   )rl   r   r   )rÓ   )rq   )rl   r|   rl   )ræ   )rl   r   )r_   )rl   r   r   )rÓ   )r   )rq   )rl   rz   rl   r^   )r_   )rl   r|   r   )rÓ   )r_   )rl   rv  r   )r‘   )rÚ   )rl   r‚  rê   )r_   )rl   rÁ   r   )r‘   rì   )r_   )rl   r{   r   )r‘   )rÚ   )rl   rz   rî   )rï   )r_   )rl   rz   r1   )r‘   )r_   )rl   rl  rÖ   )rÓ   )rÚ   )rl   é   )rï   )r_   )rl   rŠ  r%  )r‘   )r_   )rl   é   Úq)rÓ   )rÚ   )rl   é   rñ   r¬   )rl   rÁ   )r_   )rl   rÁ   rŸ   )r‘   )r­   )rl   rƒ  r^  rô   )rÚ   )r*   r*   rõ   )r{   r   )r_   )r{   rm   rŸ   )r‘   )rÚ   )r|   r*   )r÷   )rl   r   )r_   )rl   rm   r   )r‘   Nrù   )rÊ   rp  NrY   rp  )rÊ   r   Nrü   )rŠ   )rl   r   )rq   )rl   r   rl   )rÚ   )rl   r   )ZBreak)rl   r‚  )ZContinue)rl   r‚  r<  )rl   r|   )r_   )rl   r|   r6   )rÓ   )r_   )rl   rÁ   r   )rÓ   )rÓ   )r_   )rl   r‚  r  )r‘   rŠ   r  )rl   rl   )rl   r*   )r_   )rl   r*   r6   )r‘   )r_   )rl   r|   r   )r‘   r`   )rl   r‚  )r_   )rl   r‚  r6   )rÓ   )r_   )rl   rŠ  r   )rÓ   )r_   )rl   r‹  r  )r‘   r  )rl   rx  )r_   )rl   rx  r6   )rÓ   )r_   )rl   ry  r   )rÓ   )r_   )rl   é   r  )r‘   )r*   r|   )r{   r|   )r_   )r{   r|   ÚAa)r‘   )r_   )rz   rm   ÚBb)r‘   )rw  r|   )r_   )rw  r|   r  )rÓ   )r_   )rl  r|   r  )rÓ   )r_   )rl  rl  ZCc)r‘   r  )r_   )rl   rl   r6   )r‘   )r_   )rl   rz   r   )r‘   )r_   )rl   r‚  r$  )rÓ   )r_   )rl   rƒ  r1   )r‘   )r_   )rl   r|  rŽ   )rÓ   )r_   )rl   é   rè   )r‘   )r_   )rl   é    r  )r‘   )r_   )rl   r‚  r   )rÓ   )r_   )rl   rŠ  r$  )rÓ   )r_   )rl   r‹  r1   )r‘   r  )r_   )rl   rl   rò   )r‘   )r_   )rl   rm   r	  )rÓ   )r_   )rl   rx  r1   )r‘   )r_   )rl   r{  r  )r‘   )rl   rm   )r_   )rl   rv  rŽ   )rÓ   )r_   )rl   ry  r1   )r‘   ZAsyncFunctionDef)rŠ   )r*   rl   )r­   )r*   rl   zasync function)r{   rl   ZAwait)r{   rm   )r_   )r{   rm   Z	something)r‘   ZAsyncFor)r*   rl   )r_   )r*   r‚  r   )rÓ   )r_   )r*   rƒ  rM   )r‘   )rŠ   )r*   é   )rq   )r*   r“  rl   )rŠ   )r{   rm   )rq   )r{   rm   r*   Z	AsyncWith)rï   )r_   )r*   rx  r6   )r‘   )r_   )r*   r{  r   )rÓ   )rŠ   )r*   rŽ  )rq   )r*   rŽ  rl   )rq   )rl   rl  r*   )rl   r{   )rq   )rl   rÁ   r*   )rq   )rl   rx  r{   r  r7  )rq   )rl   r{   rl   )rq   )rl   rl  r{   )r*   r*   )r_   )r*   r*   rM   )r‘   )r_   )r*   ry  r   )rÓ   )r_   )r*   r“  r  )r‘   rl   rÒ   )rŠ   )rl   r   )r~   )rl   r   )rq   )rl   r   rl   )r   )rq   )rl   r*   r*   )rÔ   )r>  )rl   r   NrÔ   r   )r  )r_   )rl   r   r6   )r‘   )r_   )rl   rÁ   r   )r‘   )rÔ   )r~   )rl   r   )r_   )rl   r   r6   )r‘   )r   )r_   )rl   r|   r   )r‘   )rÔ   )r  )rl   r   )r  )r_   )rl   r|   r   )r‘   r  )r>  )rl   rm   N)rq   )rl   r*   rl   )rq   )rl   r|   r*   )r>  )rl   rl   N)rq   )r*   rÁ   rl   )rq   )r|   rl  r*   )r_   )rl   rm   r   )rÓ   )r_   )rl   rx  r  )r‘   )r_   )rl   r{  rµ   )r‘   r!  )rq   )rl   r   rl   )ZLt)rq   )rl   rw  r{   )r_   )rl   r   r   )r‘   )r7  )rl   rl  )r_   )rl   r‚  rµ   )r‘   )r‘   )rà   r  )rq   )rl   rw  r{   )rà   N)r_   )rl   r‰  r   )r‘   )rÔ   )rq   )rl   r   rl  )rÔ   )r­   )rl   r   r^  )rÔ   )r.  )rl   r   )r_   )rl   r   r6   )r‘   r   )r‘   )rÔ   )r1  )rl   r   )r_   )rl   r   r6   )r‘   )r2  )r_   )rl   r*   r   )r‘   )r_   )rl   r|   r  )r‘   N)r‘   )rÔ   )r_   )rl   r   r   )r‘   )rq   )rl   rl   rl   )rq   )rl   r{   r*   )rq   )rl   rz   r{   )rq   )rl   r*   r*   )rq   )rl   r|   r{   )r.  )rl   r   )r.  )rl   r   )r.  )rl   r   )r_   )rl   r   r6   )r‘   r   )r‘   r  )r‘   rµ   )r‘   )r1  )rl   rw  )r.  )rl   rw  )r_   )rl   rw  r6   )r‘   r   )r‘   )r2  )rq   )rl   rx  rl   )rq   )rl   ry  r*   N)r‘   )r   rb  rC  rp  rt  r7   rÉ   r   r   rB   rD   rF   ZTestCaser   r›   rÏ   rO  ru  rC   rE   rG   r   r   r   r   Ú<module>   sD   h D   t&&(*&&L&$"::::20$.>62**D""$&