B
    Ç S]ÂÞ ã               @   sº  d Z ddlZddlmZ ddlmZ ddlmZmZ ddl	m
Z
 G dd„ de
jƒZG d	d
„ d
eƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd „ d eƒZG d!d"„ d"eƒZG d#d$„ d$eƒZG d%d&„ d&eƒZG d'd(„ d(eƒZG d)d*„ d*eƒZG d+d,„ d,eƒZG d-d.„ d.eƒZG d/d0„ d0eƒZ G d1d2„ d2eƒZ!G d3d4„ d4ƒZ"G d5d6„ d6ee"ƒZ#G d7d8„ d8ee"ƒZ$G d9d:„ d:ee"ƒZ%G d;d<„ d<eƒZ&G d=d>„ d>eƒZ'G d?d@„ d@eƒZ(G dAdB„ dBeƒZ)G dCdD„ dDeƒZ*G dEdF„ dFeƒZ+G dGdH„ dHeƒZ,G dIdJ„ dJeƒZ-G dKdL„ dLeƒZ.G dMdN„ dNeƒZ/G dOdP„ dPeƒZ0G dQdR„ dReƒZ1G dSdT„ dTeƒZ2G dUdV„ dVeƒZ3G dWdX„ dXeƒZ4G dYdZ„ dZeƒZ5G d[d\„ d\eƒZ6G d]d^„ d^eƒZ7G d_d`„ d`eƒZ8G dadb„ dbeƒZ9G dcdd„ ddeƒZ:G dedf„ dfeƒZ;G dgdh„ dheƒZ<G didj„ djeƒZ=G dkdl„ dleƒZ>G dmdn„ dneƒZ?G dodp„ dpeƒZ@G dqdr„ dreƒZAG dsdt„ dteƒZBdS )uz" Test suite for the fixer modules é    N)Úchain)Ú
itemgetter)ÚpygramÚ
fixer_util)Úsupportc               @   sL   e Zd Zddd„Zdd„ Zddd	„Zdd
d„Zdd„ Zddd„Zdd„ Z	dS )ÚFixerTestCaseNÚlib2to3c             C   sT   |d kr| j g}t |||¡| _g | _d| _x"t| jj| jjƒD ]}| j|_	q@W d S )Nz<string>)
Úfixerr   Úget_refactorerÚrefactorÚ	fixer_logÚfilenamer   Z	pre_orderZ
post_orderÚlog)ÚselfZfix_listZ	fixer_pkgZoptionsr	   © r   ú*lib/python3.7/lib2to3/tests/test_fixers.pyÚsetUp   s    
zFixerTestCase.setUpc             C   s8   t  |¡}t  |¡}| j || j¡}|  |t|ƒ¡ |S )N)r   Zreformatr   Zrefactor_stringr   ÚassertEqualÚstr)r   ÚbeforeÚafterÚtreer   r   r   Ú_check   s
    

zFixerTestCase._checkFc             C   s.   |   ||¡}|  |j¡ |s*|  | jg ¡ d S )N)r   Ú
assertTrueÚwas_changedr   r   )r   r   r   Úignore_warningsr   r   r   r   Úcheck#   s    zFixerTestCase.checkc             C   s4   |   ||¡}|  |d | j¡¡ |s0|  |j¡ d S )NÚ )r   ZassertInÚjoinr   r   r   )r   r   r   ÚmessageÚ	unchangedr   r   r   r   Úwarns)   s    zFixerTestCase.warnsc             C   s   | j |||dd d S )NT)r    )r!   )r   r   r   r   r   r   Úwarns_unchanged/   s    zFixerTestCase.warns_unchangedc             C   s"   |   ||¡ |s|  | jg ¡ d S )N)r   r   r   )r   r   r   r   r   r   r    2   s    zFixerTestCase.unchangedc             G   s–   | j g}| |¡ t d|¡}| ¡ \}}d| j  }|rN|d jj |¡rNd S |rl|d jj |¡rl|sld S |  dd 	dd„ || D ƒ¡|f ¡ d S )Nr   Zfix_éÿÿÿÿz5Fixer run order (%s) is incorrect; %s should be last.z, c             S   s   g | ]}|j j‘qS r   )Ú	__class__Ú
__module__)Ú.0Úxr   r   r   ú
<listcomp>D   s    z3FixerTestCase.assert_runs_after.<locals>.<listcomp>)
r	   Úextendr   r
   Z
get_fixersr$   r%   ÚendswithZfailr   )r   ÚnamesÚfixesÚrZpreZpostÚnr   r   r   Úassert_runs_after7   s    

zFixerTestCase.assert_runs_after)Nr   N)F)F)F)
Ú__name__r%   Ú__qualname__r   r   r   r!   r"   r    r/   r   r   r   r   r      s   



r   c               @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚTest_neÚnec             C   s   d}d}|   ||¡ d S )Nzif x <> y:
            passzif x != y:
            pass)r   )r   ÚbÚar   r   r   Ú
test_basicI   s    zTest_ne.test_basicc             C   s   d}d}|   ||¡ d S )Nzif x<>y:
            passzif x!=y:
            pass)r   )r   r4   r5   r   r   r   Útest_no_spacesQ   s    zTest_ne.test_no_spacesc             C   s   d}d}|   ||¡ d S )Nzif x<>y<>z:
            passzif x!=y!=z:
            pass)r   )r   r4   r5   r   r   r   Útest_chainedY   s    zTest_ne.test_chainedN)r0   r%   r1   r	   r6   r7   r8   r   r   r   r   r2   F   s   r2   c               @   sh   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
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTest_has_keyZhas_keyc             C   s   d}d}|   ||¡ d S )Nz$x = d.has_key("x") or d.has_key("y")zx = "x" in d or "y" in d)r   )r   r4   r5   r   r   r   Útest_1d   s    zTest_has_key.test_1c             C   s   d}d}|   ||¡ d S )Nzx = a.b.c.d.has_key("x") ** 3zx = ("x" in a.b.c.d) ** 3)r   )r   r4   r5   r   r   r   Útest_2i   s    zTest_has_key.test_2c             C   s   d}d}|   ||¡ d S )Nz!x = a.b.has_key(1 + 2).__repr__()zx = (1 + 2 in a.b).__repr__())r   )r   r4   r5   r   r   r   Útest_3n   s    zTest_has_key.test_3c             C   s   d}d}|   ||¡ d S )Nz,x = a.b.has_key(1 + 2).__repr__() ** -3 ** 4z(x = (1 + 2 in a.b).__repr__() ** -3 ** 4)r   )r   r4   r5   r   r   r   Útest_4s   s    zTest_has_key.test_4c             C   s   d}d}|   ||¡ d S )Nzx = a.has_key(f or g)zx = (f or g) in a)r   )r   r4   r5   r   r   r   Útest_5x   s    zTest_has_key.test_5c             C   s   d}d}|   ||¡ d S )Nzx = a + b.has_key(c)zx = a + (c in b))r   )r   r4   r5   r   r   r   Útest_6}   s    zTest_has_key.test_6c             C   s   d}d}|   ||¡ d S )Nzx = a.has_key(lambda: 12)zx = (lambda: 12) in a)r   )r   r4   r5   r   r   r   Útest_7‚   s    zTest_has_key.test_7c             C   s   d}d}|   ||¡ d S )Nzx = a.has_key(a for a in b)zx = (a for a in b) in a)r   )r   r4   r5   r   r   r   Útest_8‡   s    zTest_has_key.test_8c             C   s   d}d}|   ||¡ d S )Nzif not a.has_key(b): passzif b not in a: pass)r   )r   r4   r5   r   r   r   Útest_9Œ   s    zTest_has_key.test_9c             C   s   d}d}|   ||¡ d S )Nz$if not a.has_key(b).__repr__(): passz if not (b in a).__repr__(): pass)r   )r   r4   r5   r   r   r   Útest_10‘   s    zTest_has_key.test_10c             C   s   d}d}|   ||¡ d S )Nzif not a.has_key(b) ** 2: passzif not (b in a) ** 2: pass)r   )r   r4   r5   r   r   r   Útest_11–   s    zTest_has_key.test_11N)r0   r%   r1   r	   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   r   r   r   r   r9   a   s   r9   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
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d6S )7Ú
Test_applyZapplyc             C   s   d}d}|   ||¡ d S )Nzx = apply(f, g + h)zx = f(*g + h))r   )r   r4   r5   r   r   r   r:   ž   s    zTest_apply.test_1c             C   s   d}d}|   ||¡ d S )Nzy = apply(f, g, h)zy = f(*g, **h))r   )r   r4   r5   r   r   r   r;   £   s    zTest_apply.test_2c             C   s   d}d}|   ||¡ d S )Nz z = apply(fs[0], g or h, h or g)zz = fs[0](*g or h, **h or g))r   )r   r4   r5   r   r   r   r<   ¨   s    zTest_apply.test_3c             C   s   d}d}|   ||¡ d S )Nzapply(f, (x, y) + t)zf(*(x, y) + t))r   )r   r4   r5   r   r   r   r=   ­   s    zTest_apply.test_4c             C   s   d}d}|   ||¡ d S )Nzapply(f, args,)zf(*args))r   )r   r4   r5   r   r   r   r>   ²   s    zTest_apply.test_5c             C   s   d}d}|   ||¡ d S )Nzapply(f, args, kwds,)zf(*args, **kwds))r   )r   r4   r5   r   r   r   r?   ·   s    zTest_apply.test_6c             C   s   d}d}|   ||¡ d S )Nzx = apply(f+g, args)zx = (f+g)(*args))r   )r   r4   r5   r   r   r   Útest_complex_1¾   s    zTest_apply.test_complex_1c             C   s   d}d}|   ||¡ d S )Nzx = apply(f*g, args)zx = (f*g)(*args))r   )r   r4   r5   r   r   r   Útest_complex_2Ã   s    zTest_apply.test_complex_2c             C   s   d}d}|   ||¡ d S )Nzx = apply(f**g, args)zx = (f**g)(*args))r   )r   r4   r5   r   r   r   Útest_complex_3È   s    zTest_apply.test_complex_3c             C   s   d}d}|   ||¡ d S )Nzx = apply(f.g, args)zx = f.g(*args))r   )r   r4   r5   r   r   r   Útest_dotted_nameÏ   s    zTest_apply.test_dotted_namec             C   s   d}d}|   ||¡ d S )Nzx = apply(f[x], args)zx = f[x](*args))r   )r   r4   r5   r   r   r   Útest_subscriptÔ   s    zTest_apply.test_subscriptc             C   s   d}d}|   ||¡ d S )Nzx = apply(f(), args)zx = f()(*args))r   )r   r4   r5   r   r   r   Ú	test_callÙ   s    zTest_apply.test_callc             C   s   d}d}|   ||¡ d S )Nz"x = apply(a.b.c.d.e.f, args, kwds)zx = a.b.c.d.e.f(*args, **kwds))r   )r   r4   r5   r   r   r   Útest_extremeß   s    zTest_apply.test_extremec             C   s   d}d}|   ||¡ d S )Nz1apply(   # foo
          f, # bar
          args)zf(*args))r   )r   r4   r5   r   r   r   Útest_weird_commentså   s    zTest_apply.test_weird_commentsc             C   s   d}|   |¡ d S )Nzapply())r    )r   Úsr   r   r   Útest_unchanged_1î   s    zTest_apply.test_unchanged_1c             C   s   d}|   |¡ d S )Nzapply(f))r    )r   rN   r   r   r   Útest_unchanged_2ò   s    zTest_apply.test_unchanged_2c             C   s   d}|   |¡ d S )Nz	apply(f,))r    )r   rN   r   r   r   Útest_unchanged_3ö   s    zTest_apply.test_unchanged_3c             C   s   d}|   |¡ d S )Nzapply(f, args, kwds, extras))r    )r   rN   r   r   r   Útest_unchanged_4ú   s    zTest_apply.test_unchanged_4c             C   s   d}|   |¡ d S )Nzapply(f, *args, **kwds))r    )r   rN   r   r   r   Útest_unchanged_5þ   s    zTest_apply.test_unchanged_5c             C   s   d}|   |¡ d S )Nzapply(f, *args))r    )r   rN   r   r   r   Útest_unchanged_6  s    zTest_apply.test_unchanged_6c             C   s   d}|   |¡ d S )Nzapply(f, **kwds))r    )r   rN   r   r   r   Útest_unchanged_6b  s    zTest_apply.test_unchanged_6bc             C   s   d}|   |¡ d S )Nz#apply(func=f, args=args, kwds=kwds))r    )r   rN   r   r   r   Útest_unchanged_7
  s    zTest_apply.test_unchanged_7c             C   s   d}|   |¡ d S )Nzapply(f, args=args, kwds=kwds))r    )r   rN   r   r   r   Útest_unchanged_8  s    zTest_apply.test_unchanged_8c             C   s   d}|   |¡ d S )Nzapply(f, args, kwds=kwds))r    )r   rN   r   r   r   Útest_unchanged_9  s    zTest_apply.test_unchanged_9c             C   s   d}d}|   ||¡ d S )Nzapply(  f,  args,   kwds)zf(*args, **kwds))r   )r   r5   r4   r   r   r   Útest_space_1  s    zTest_apply.test_space_1c             C   s   d}d}|   ||¡ d S )Nzapply(  f  ,args,kwds   )zf(*args, **kwds))r   )r   r5   r4   r   r   r   Útest_space_2  s    zTest_apply.test_space_2N)r0   r%   r1   r	   r:   r;   r<   r=   r>   r?   rF   rG   rH   rI   rJ   rK   rL   rM   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r   r   r   r   rE   ›   s6   	rE   c               @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚTest_reloadÚreloadc             C   s   d}d}|   ||¡ d S )Nz	reload(a)z$import importlib
importlib.reload(a))r   )r   r4   r5   r   r   r   Útest#  s    zTest_reload.testc             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nzreload( a ) # commentz0import importlib
importlib.reload( a ) # commentzreload( a )  # commentz1import importlib
importlib.reload( a )  # comment)r   )r   r4   r5   r   r   r   Útest_comment(  s    zTest_reload.test_commentc             C   s@   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )Nzreload( a )z&import importlib
importlib.reload( a )z
reload( a)z%import importlib
importlib.reload( a)z
reload(a )z%import importlib
importlib.reload(a ))r   )r   r4   r5   r   r   r   Ú
test_space2  s    zTest_reload.test_spacec             C   s‚   d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d	}|   |¡ d S )
Nzreload(a=1)zreload(f, g)zreload(f, *h)zreload(f, *h, **i)zreload(f, **i)zreload(*h, **i)z
reload(*h)zreload(**i)zreload())r    )r   rN   r   r   r   Útest_unchanged?  s$    







zTest_reload.test_unchangedN)r0   r%   r1   r	   r]   r^   r_   r`   r   r   r   r   r[      s
   
r[   c               @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚTest_internÚinternc             C   s@   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )Nzx =   intern(  a  )z"import sys
x =   sys.intern(  a  )z%y = intern("b" # test
              )z4import sys
y = sys.intern("b" # test
              )zz = intern(a+b+c.d,   )z&import sys
z = sys.intern(a+b+c.d,   ))r   )r   r4   r5   r   r   r   Útest_prefix_preservation^  s    z$Test_intern.test_prefix_preservationc             C   s@   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )Nzx = intern(a)zimport sys
x = sys.intern(a)zz = intern(a+b+c.d,)z#import sys
z = sys.intern(a+b+c.d,)z"intern("y%s" % 5).replace("y", "")z1import sys
sys.intern("y%s" % 5).replace("y", ""))r   )r   r4   r5   r   r   r   r]   m  s    zTest_intern.testc             C   sJ   d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d S )Nzintern(a=1)zintern(f, g)z
intern(*h)zintern(**i)zintern())r    )r   rN   r   r   r   r`   |  s    



zTest_intern.test_unchangedN)r0   r%   r1   r	   rc   r]   r`   r   r   r   r   ra   [  s   ra   c               @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚTest_reduceÚreducec             C   s   d}d}|   ||¡ d S )Nzreduce(a, b, c)z,from functools import reduce
reduce(a, b, c))r   )r   r4   r5   r   r   r   Útest_simple_call  s    zTest_reduce.test_simple_callc             C   s   d}d}|   ||¡ d S )Nzdef x(arg): reduce(sum, [])z8from functools import reduce
def x(arg): reduce(sum, []))r   )r   r4   r5   r   r   r   Útest_bug_7253”  s    zTest_reduce.test_bug_7253c             C   s   d}d}|   ||¡ d S )Nzreduce(lambda x, y: x + y, seq)z<from functools import reduce
reduce(lambda x, y: x + y, seq))r   )r   r4   r5   r   r   r   Útest_call_with_lambdaš  s    z!Test_reduce.test_call_with_lambdac             C   sJ   d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d S )Nz	reduce(a)zreduce(a, b=42)zreduce(a, b, c, d)zreduce(**c)zreduce())r    )r   rN   r   r   r   r`   Ÿ  s    



zTest_reduce.test_unchangedN)r0   r%   r1   r	   rf   rg   rh   r`   r   r   r   r   rd   Œ  s
   rd   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
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 )%Ú
Test_printÚprintc             C   s   d}d}|   ||¡ d S )Nzprint 1,   1+1,   1+1+1zprint(1,   1+1,   1+1+1))r   )r   r4   r5   r   r   r   rc   ²  s    z#Test_print.test_prefix_preservationc             C   s    d}|   |¡ d}|   |¡ d S )Nzprint()z	print(''))r    )r   rN   r   r   r   Útest_idempotency·  s    
zTest_print.test_idempotencyc             C   s:   t j| jj_d}|  |¡ d}|  |¡ d}|  |¡ d S )Nzprint(1, 1+1, 1+1+1)zprint()z	print(''))r   Z!python_grammar_no_print_statementr   ZdriverZgrammarr    )r   rN   r   r   r   Ú"test_idempotency_print_as_function¾  s    

z-Test_print.test_idempotency_print_as_functionc             C   s   d}d}|   ||¡ d S )Nzprint 1, 1+1, 1+1+1zprint(1, 1+1, 1+1+1))r   )r   r4   r5   r   r   r   r:   É  s    zTest_print.test_1c             C   s   d}d}|   ||¡ d S )Nz
print 1, 2zprint(1, 2))r   )r   r4   r5   r   r   r   r;   Î  s    zTest_print.test_2c             C   s   d}d}|   ||¡ d S )Nrj   zprint())r   )r   r4   r5   r   r   r   r<   Ó  s    zTest_print.test_3c             C   s   d}d}|   ||¡ d S )Nzprint whatever; printzprint(whatever); print())r   )r   r4   r5   r   r   r   r=   Ø  s    zTest_print.test_4c             C   s   d}d}|   ||¡ d S )Nzprint; print whatever;zprint(); print(whatever);)r   )r   r4   r5   r   r   r   r>   Þ  s    zTest_print.test_5c             C   s   d}d}|   ||¡ d S )Nzprint (a, b, c)zprint((a, b, c)))r   )r   r4   r5   r   r   r   Ú
test_tupleã  s    zTest_print.test_tuplec             C   s   d}d}|   ||¡ d S )Nzprint 1, 2, 3,zprint(1, 2, 3, end=' '))r   )r   r4   r5   r   r   r   Útest_trailing_comma_1ê  s    z Test_print.test_trailing_comma_1c             C   s   d}d}|   ||¡ d S )Nzprint 1, 2,zprint(1, 2, end=' '))r   )r   r4   r5   r   r   r   Útest_trailing_comma_2ï  s    z Test_print.test_trailing_comma_2c             C   s   d}d}|   ||¡ d S )Nzprint 1,zprint(1, end=' '))r   )r   r4   r5   r   r   r   Útest_trailing_comma_3ô  s    z Test_print.test_trailing_comma_3c             C   s   d}d}|   ||¡ d S )Nzprint >>sys.stderr, 1, 2, 3zprint(1, 2, 3, file=sys.stderr))r   )r   r4   r5   r   r   r   Ú!test_vargs_without_trailing_commaû  s    z,Test_print.test_vargs_without_trailing_commac             C   s   d}d}|   ||¡ d S )Nzprint >>sys.stderr, 1, 2,z%print(1, 2, end=' ', file=sys.stderr))r   )r   r4   r5   r   r   r   Útest_with_trailing_comma   s    z#Test_print.test_with_trailing_commac             C   s   d}d}|   ||¡ d S )Nzprint >>sys.stderr, 1+1zprint(1+1, file=sys.stderr))r   )r   r4   r5   r   r   r   Útest_no_trailing_comma  s    z!Test_print.test_no_trailing_commac             C   s   d}d}|   ||¡ d S )Nzprint >>  sys.stderrzprint(file=sys.stderr))r   )r   r4   r5   r   r   r   Útest_spaces_before_file
  s    z"Test_print.test_spaces_before_filec             C   s&   d}|   |¡ d}d}|  ||¡ d S )Nz<from __future__ import print_function
print('Hai!', end=' ')zprint 'Hello, world!'zprint('Hello, world!'))r    r   )r   rN   r4   r5   r   r   r   Útest_with_future_print_function  s
    
z*Test_print.test_with_future_print_functionN)r0   r%   r1   r	   rc   rk   rl   r:   r;   r<   r=   r>   rm   rn   ro   rp   rq   rr   rs   rt   ru   r   r   r   r   ri   ¯  s$   ri   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
dd„ Zdd„ Zdd„ ZdS )Ú	Test_execÚexecc             C   s   d}d}|   ||¡ d S )Nz  exec code in ns1,   ns2z  exec(code, ns1,   ns2))r   )r   r4   r5   r   r   r   rc     s    z"Test_exec.test_prefix_preservationc             C   s   d}d}|   ||¡ d S )Nz	exec codez
exec(code))r   )r   r4   r5   r   r   r   r6   !  s    zTest_exec.test_basicc             C   s   d}d}|   ||¡ d S )Nzexec code in nszexec(code, ns))r   )r   r4   r5   r   r   r   Útest_with_globals&  s    zTest_exec.test_with_globalsc             C   s   d}d}|   ||¡ d S )Nzexec code in ns1, ns2zexec(code, ns1, ns2))r   )r   r4   r5   r   r   r   Útest_with_globals_locals+  s    z"Test_exec.test_with_globals_localsc             C   s   d}d}|   ||¡ d S )Nzexec (a.b()) in nszexec((a.b()), ns))r   )r   r4   r5   r   r   r   rF   0  s    zTest_exec.test_complex_1c             C   s   d}d}|   ||¡ d S )Nzexec a.b() + c in nszexec(a.b() + c, ns))r   )r   r4   r5   r   r   r   rG   5  s    zTest_exec.test_complex_2c             C   s   d}|   |¡ d S )Nz
exec(code))r    )r   rN   r   r   r   rO   <  s    zTest_exec.test_unchanged_1c             C   s   d}|   |¡ d S )Nzexec (code))r    )r   rN   r   r   r   rP   @  s    zTest_exec.test_unchanged_2c             C   s   d}|   |¡ d S )Nzexec(code, ns))r    )r   rN   r   r   r   rQ   D  s    zTest_exec.test_unchanged_3c             C   s   d}|   |¡ d S )Nzexec(code, ns1, ns2))r    )r   rN   r   r   r   rR   H  s    zTest_exec.test_unchanged_4N)r0   r%   r1   r	   rc   r6   rx   ry   rF   rG   rO   rP   rQ   rR   r   r   r   r   rv     s   rv   c               @   sH   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
dS )Ú	Test_reprÚreprc             C   s   d}d}|   ||¡ d S )Nzx =   `1 + 2`zx =   repr(1 + 2))r   )r   r4   r5   r   r   r   rc   O  s    z"Test_repr.test_prefix_preservationc             C   s   d}d}|   ||¡ d S )Nzx = `1 + 2`zx = repr(1 + 2))r   )r   r4   r5   r   r   r   Útest_simple_1T  s    zTest_repr.test_simple_1c             C   s   d}d}|   ||¡ d S )Nzy = `x`zy = repr(x))r   )r   r4   r5   r   r   r   Útest_simple_2Y  s    zTest_repr.test_simple_2c             C   s   d}d}|   ||¡ d S )Nzz = `y`.__repr__()zz = repr(y).__repr__())r   )r   r4   r5   r   r   r   Útest_complex^  s    zTest_repr.test_complexc             C   s   d}d}|   ||¡ d S )Nzx = `1, 2, 3`zx = repr((1, 2, 3)))r   )r   r4   r5   r   r   r   rm   c  s    zTest_repr.test_tuplec             C   s   d}d}|   ||¡ d S )Nzx = `1 + `2``zx = repr(1 + repr(2)))r   )r   r4   r5   r   r   r   Útest_nestedh  s    zTest_repr.test_nestedc             C   s   d}d}|   ||¡ d S )Nzx = `1, 2 + `3, 4``zx = repr((1, 2 + repr((3, 4)))))r   )r   r4   r5   r   r   r   Útest_nested_tuplesm  s    zTest_repr.test_nested_tuplesN)r0   r%   r1   r	   rc   r|   r}   r~   rm   r   r€   r   r   r   r   rz   L  s   rz   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
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 )#ÚTest_exceptÚexceptc             C   s   d}d}|   ||¡ d S )Nzq
            try:
                pass
            except (RuntimeError, ImportError),    e:
                passzs
            try:
                pass
            except (RuntimeError, ImportError) as    e:
                pass)r   )r   r4   r5   r   r   r   rc   u  s    z$Test_except.test_prefix_preservationc             C   s   d}d}|   ||¡ d S )NzV
            try:
                pass
            except Foo, e:
                passzX
            try:
                pass
            except Foo as e:
                pass)r   )r   r4   r5   r   r   r   Útest_simple‚  s    zTest_except.test_simplec             C   s   d}d}|   ||¡ d S )NzU
            try:
                pass
            except Foo,e:
                passzX
            try:
                pass
            except Foo as e:
                pass)r   )r   r4   r5   r   r   r   Ú"test_simple_no_space_before_target  s    z.Test_except.test_simple_no_space_before_targetc             C   s   d}d}|   ||¡ d S )NzÈ
            def foo():
                try:
                    pass
                except Exception, (f, e):
                    pass
                except ImportError, e:
                    passa  
            def foo():
                try:
                    pass
                except Exception as xxx_todo_changeme:
                    (f, e) = xxx_todo_changeme.args
                    pass
                except ImportError as e:
                    pass)r   )r   r4   r5   r   r   r   Útest_tuple_unpackœ  s    
zTest_except.test_tuple_unpackc             C   s   d}d}|   ||¡ d S )Nzn
            try:
                pass
            except (RuntimeError, ImportError), e:
                passzp
            try:
                pass
            except (RuntimeError, ImportError) as e:
                pass)r   )r   r4   r5   r   r   r   Útest_multi_class±  s    zTest_except.test_multi_classc             C   s   d}d}|   ||¡ d S )Nza
            try:
                pass
            except Exception, [a, b]:
                passzž
            try:
                pass
            except Exception as xxx_todo_changeme:
                [a, b] = xxx_todo_changeme.args
                pass)r   )r   r4   r5   r   r   r   Útest_list_unpack¿  s    zTest_except.test_list_unpackc             C   s   d}d}|   ||¡ d S )Nz_
            try:
                pass
            except Exception, d[5]:
                passz—
            try:
                pass
            except Exception as xxx_todo_changeme:
                d[5] = xxx_todo_changeme
                pass)r   )r   r4   r5   r   r   r   Útest_weird_target_1Î  s    zTest_except.test_weird_target_1c             C   s   d}d}|   ||¡ d S )Nz`
            try:
                pass
            except Exception, a.foo:
                passz˜
            try:
                pass
            except Exception as xxx_todo_changeme:
                a.foo = xxx_todo_changeme
                pass)r   )r   r4   r5   r   r   r   Útest_weird_target_2Ý  s    zTest_except.test_weird_target_2c             C   s   d}d}|   ||¡ d S )Nzb
            try:
                pass
            except Exception, a().foo:
                passzš
            try:
                pass
            except Exception as xxx_todo_changeme:
                a().foo = xxx_todo_changeme
                pass)r   )r   r4   r5   r   r   r   Útest_weird_target_3ì  s    zTest_except.test_weird_target_3c             C   s   d}d}|   ||¡ d S )Nz…
            try:
                pass
            except Exception, a:
                pass
            except:
                passz‡
            try:
                pass
            except Exception as a:
                pass
            except:
                pass)r   )r   r4   r5   r   r   r   Útest_bare_exceptû  s    zTest_except.test_bare_exceptc             C   s   d}d}|   ||¡ d S )NzÖ
            try:
                pass
            except Exception, a:
                pass
            except:
                pass
            else:
                pass
            finally:
                passzØ
            try:
                pass
            except Exception as a:
                pass
            except:
                pass
            else:
                pass
            finally:
                pass)r   )r   r4   r5   r   r   r   Ú!test_bare_except_and_else_finally  s    z-Test_except.test_bare_except_and_else_finallyc             C   s   d}d}|   ||¡ d S )Nz»
            try:
                pass
            except TypeError, b:
                pass
            except Exception, a:
                pass
            except:
                passz¿
            try:
                pass
            except TypeError as b:
                pass
            except Exception as a:
                pass
            except:
                pass)r   )r   r4   r5   r   r   r   Ú+test_multi_fixed_excepts_before_bare_except'  s    	
z7Test_except.test_multi_fixed_excepts_before_bare_exceptc             C   sT   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )	Nzd
            try: raise TypeError
            except TypeError, e:
                pass
            zf
            try: raise TypeError
            except TypeError as e:
                pass
            zd
            try:
                raise TypeError
            except TypeError, e: pass
            zf
            try:
                raise TypeError
            except TypeError as e: pass
            zT
            try: raise TypeError
            except TypeError, e: pass
            zV
            try: raise TypeError
            except TypeError as e: pass
            z
            try: raise TypeError
            except TypeError, e: pass
            else: function()
            finally: done()
            z
            try: raise TypeError
            except TypeError as e: pass
            else: function()
            finally: done()
            )r   )r   r4   r5   r   r   r   Útest_one_line_suites=  s    z Test_except.test_one_line_suitesc             C   s   d}|   |¡ d S )NzO
            try:
                pass
            except:
                pass)r    )r   rN   r   r   r   rO   m  s    zTest_except.test_unchanged_1c             C   s   d}|   |¡ d S )NzY
            try:
                pass
            except Exception:
                pass)r    )r   rN   r   r   r   rP   u  s    zTest_except.test_unchanged_2c             C   s   d}|   |¡ d S )Nzg
            try:
                pass
            except (Exception, SystemExit):
                pass)r    )r   rN   r   r   r   rQ   }  s    zTest_except.test_unchanged_3N)r0   r%   r1   r	   rc   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r   rŽ   rO   rP   rQ   r   r   r   r   r   r  s"   0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
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 )%Ú
Test_raiseÚraisec             C   s   d}d}|   ||¡ d S )Nzraise Exception, 5zraise Exception(5))r   )r   r4   r5   r   r   r   r6   ˆ  s    zTest_raise.test_basicc             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nzraise Exception,5zraise Exception(5)zraise   Exception,    5zraise   Exception(5))r   )r   r4   r5   r   r   r   rc     s    z#Test_raise.test_prefix_preservationc             C   s@   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )Nzraise Exception, 5 # foozraise Exception(5) # foozraise E, (5, 6) % (a, b) # foozraise E((5, 6) % (a, b)) # fooz:def foo():
                    raise Exception, 5, 6 # foozIdef foo():
                    raise Exception(5).with_traceback(6) # foo)r   )r   r4   r5   r   r   r   Útest_with_comments–  s    zTest_raise.test_with_commentsc             C   s   d}d}|   ||¡ d S )Nzraise Exception(5), None, tbz%raise Exception(5).with_traceback(tb))r   )r   r4   r5   r   r   r   Útest_None_value¥  s    zTest_raise.test_None_valuec             C   s   d}d}|   ||¡ d S )Nzraise Exception, (5, 6, 7)zraise Exception(5, 6, 7))r   )r   r4   r5   r   r   r   Útest_tuple_valueª  s    zTest_raise.test_tuple_valuec             C   s   d}d}|   ||¡ d S )Nzraise E, (5, 6) % (a, b)zraise E((5, 6) % (a, b)))r   )r   r4   r5   r   r   r   Útest_tuple_detection¯  s    zTest_raise.test_tuple_detectionc             C   s   d}d}|   ||¡ d S )Nzraise (((E1, E2), E3), E4), Vzraise E1(V))r   )r   r4   r5   r   r   r   Útest_tuple_exc_1´  s    zTest_raise.test_tuple_exc_1c             C   s   d}d}|   ||¡ d S )Nzraise (E1, (E2, E3), E4), Vzraise E1(V))r   )r   r4   r5   r   r   r   Útest_tuple_exc_2¹  s    zTest_raise.test_tuple_exc_2c             C   s   d}|   |d¡ d S )Nzraise 'foo'z+Python 3 does not support string exceptions)r"   )r   rN   r   r   r   Útest_string_excÀ  s    zTest_raise.test_string_excc             C   s   d}|   |d¡ d S )Nzraise "foo", 5z+Python 3 does not support string exceptions)r"   )r   rN   r   r   r   Útest_string_exc_valÄ  s    zTest_raise.test_string_exc_valc             C   s   d}|   |d¡ d S )Nzraise "foo", 5, 6z+Python 3 does not support string exceptions)r"   )r   rN   r   r   r   Útest_string_exc_val_tbÈ  s    z!Test_raise.test_string_exc_val_tbc             C   s   d}d}|   ||¡ d S )Nz4def foo():
                    raise Exception, 5, 6zCdef foo():
                    raise Exception(5).with_traceback(6))r   )r   r4   r5   r   r   r   Ú	test_tb_1Î  s    zTest_raise.test_tb_1c             C   s   d}d}|   ||¡ d S )Nzhdef foo():
                    a = 5
                    raise Exception, 5, 6
                    b = 6zwdef foo():
                    a = 5
                    raise Exception(5).with_traceback(6)
                    b = 6)r   )r   r4   r5   r   r   r   Ú	test_tb_2Õ  s    zTest_raise.test_tb_2c             C   s   d}d}|   ||¡ d S )Nz2def foo():
                    raise Exception,5,6zCdef foo():
                    raise Exception(5).with_traceback(6))r   )r   r4   r5   r   r   r   Ú	test_tb_3à  s    zTest_raise.test_tb_3c             C   s   d}d}|   ||¡ d S )Nzfdef foo():
                    a = 5
                    raise Exception,5,6
                    b = 6zwdef foo():
                    a = 5
                    raise Exception(5).with_traceback(6)
                    b = 6)r   )r   r4   r5   r   r   r   Ú	test_tb_4ç  s    zTest_raise.test_tb_4c             C   s   d}d}|   ||¡ d S )Nz<def foo():
                    raise Exception, (5, 6, 7), 6zIdef foo():
                    raise Exception(5, 6, 7).with_traceback(6))r   )r   r4   r5   r   r   r   Ú	test_tb_5ò  s    zTest_raise.test_tb_5c             C   s   d}d}|   ||¡ d S )Nzpdef foo():
                    a = 5
                    raise Exception, (5, 6, 7), 6
                    b = 6z}def foo():
                    a = 5
                    raise Exception(5, 6, 7).with_traceback(6)
                    b = 6)r   )r   r4   r5   r   r   r   Ú	test_tb_6ù  s    zTest_raise.test_tb_6N)r0   r%   r1   r	   r6   rc   r‘   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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&S )'Ú
Test_throwÚthrowc             C   s   d}d}|   ||¡ d S )Nzg.throw(Exception, 5)zg.throw(Exception(5)))r   )r   r4   r5   r   r   r   r:     s    zTest_throw.test_1c             C   s   d}d}|   ||¡ d S )Nzg.throw(Exception,5)zg.throw(Exception(5)))r   )r   r4   r5   r   r   r   r;     s    zTest_throw.test_2c             C   s   d}d}|   ||¡ d S )Nzg.throw(Exception, (5, 6, 7))zg.throw(Exception(5, 6, 7)))r   )r   r4   r5   r   r   r   r<     s    zTest_throw.test_3c             C   s   d}d}|   ||¡ d S )Nz5 + g.throw(Exception, 5)z5 + g.throw(Exception(5)))r   )r   r4   r5   r   r   r   r=     s    zTest_throw.test_4c             C   s   d}|   |d¡ d S )Nzg.throw("foo")z+Python 3 does not support string exceptions)r"   )r   rN   r   r   r   Útest_warn_1  s    zTest_throw.test_warn_1c             C   s   d}|   |d¡ d S )Nzg.throw("foo", 5)z+Python 3 does not support string exceptions)r"   )r   rN   r   r   r   Útest_warn_2!  s    zTest_throw.test_warn_2c             C   s   d}|   |d¡ d S )Nzg.throw("foo", 5, 6)z+Python 3 does not support string exceptions)r"   )r   rN   r   r   r   Útest_warn_3%  s    zTest_throw.test_warn_3c             C   s   d}|   |¡ d S )Nzg.throw(Exception))r    )r   rN   r   r   r   Útest_untouched_1+  s    zTest_throw.test_untouched_1c             C   s   d}|   |¡ d S )Nzg.throw(Exception(5, 6)))r    )r   rN   r   r   r   Útest_untouched_2/  s    zTest_throw.test_untouched_2c             C   s   d}|   |¡ d S )Nz5 + g.throw(Exception(5, 6)))r    )r   rN   r   r   r   Útest_untouched_33  s    zTest_throw.test_untouched_3c             C   s   d}d}|   ||¡ d S )Nz7def foo():
                    g.throw(Exception, 5, 6)zFdef foo():
                    g.throw(Exception(5).with_traceback(6)))r   )r   r4   r5   r   r   r   rš   9  s    zTest_throw.test_tb_1c             C   s   d}d}|   ||¡ d S )Nzkdef foo():
                    a = 5
                    g.throw(Exception, 5, 6)
                    b = 6zzdef foo():
                    a = 5
                    g.throw(Exception(5).with_traceback(6))
                    b = 6)r   )r   r4   r5   r   r   r   r›   @  s    zTest_throw.test_tb_2c             C   s   d}d}|   ||¡ d S )Nz5def foo():
                    g.throw(Exception,5,6)zFdef foo():
                    g.throw(Exception(5).with_traceback(6)))r   )r   r4   r5   r   r   r   rœ   K  s    zTest_throw.test_tb_3c             C   s   d}d}|   ||¡ d S )Nzidef foo():
                    a = 5
                    g.throw(Exception,5,6)
                    b = 6zzdef foo():
                    a = 5
                    g.throw(Exception(5).with_traceback(6))
                    b = 6)r   )r   r4   r5   r   r   r   r   R  s    zTest_throw.test_tb_4c             C   s   d}d}|   ||¡ d S )Nz?def foo():
                    g.throw(Exception, (5, 6, 7), 6)zLdef foo():
                    g.throw(Exception(5, 6, 7).with_traceback(6)))r   )r   r4   r5   r   r   r   rž   ]  s    zTest_throw.test_tb_5c             C   s   d}d}|   ||¡ d S )Nzsdef foo():
                    a = 5
                    g.throw(Exception, (5, 6, 7), 6)
                    b = 6z€def foo():
                    a = 5
                    g.throw(Exception(5, 6, 7).with_traceback(6))
                    b = 6)r   )r   r4   r5   r   r   r   rŸ   d  s    zTest_throw.test_tb_6c             C   s   d}d}|   ||¡ d S )Nz;def foo():
                    a + g.throw(Exception, 5, 6)zJdef foo():
                    a + g.throw(Exception(5).with_traceback(6)))r   )r   r4   r5   r   r   r   Ú	test_tb_7o  s    zTest_throw.test_tb_7c             C   s   d}d}|   ||¡ d S )Nzodef foo():
                    a = 5
                    a + g.throw(Exception, 5, 6)
                    b = 6z~def foo():
                    a = 5
                    a + g.throw(Exception(5).with_traceback(6))
                    b = 6)r   )r   r4   r5   r   r   r   Ú	test_tb_8v  s    zTest_throw.test_tb_8N)r0   r%   r1   r	   r:   r;   r<   r=   r¢   r£   r¤   r¥   r¦   r§   rš   r›   rœ   r   rž   rŸ   r¨   r©   r   r   r   r   r      s&   r    c               @   s8   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )Ú	Test_longZlongc             C   s   d}d}|   ||¡ d S )Nzx = long(x)z
x = int(x))r   )r   r4   r5   r   r   r   r:   „  s    zTest_long.test_1c             C   s   d}d}|   ||¡ d S )Nzy = isinstance(x, long)zy = isinstance(x, int))r   )r   r4   r5   r   r   r   r;   ‰  s    zTest_long.test_2c             C   s   d}d}|   ||¡ d S )Nzz = type(x) in (int, long)zz = type(x) in (int, int))r   )r   r4   r5   r   r   r   r<   Ž  s    zTest_long.test_3c             C   sf   d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d S )Nzlong = Truezs.long = Truezdef long(): passzclass long(): passzdef f(long): passzdef f(g, long): passzdef f(x, long=True): pass)r    )r   rN   r   r   r   r`   “  s    





zTest_long.test_unchangedc             C   s   d}d}|   ||¡ d S )Nzx =   long(  x  )zx =   int(  x  ))r   )r   r4   r5   r   r   r   rc   ©  s    z"Test_long.test_prefix_preservationN)	r0   r%   r1   r	   r:   r;   r<   r`   rc   r   r   r   r   rª     s   rª   c               @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚTest_execfileZexecfilec             C   s|   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d	}d
}|   ||¡ d}d}|   ||¡ d S )Nzexecfile("fn")z4exec(compile(open("fn", "rb").read(), "fn", 'exec'))zexecfile("fn", glob)z:exec(compile(open("fn", "rb").read(), "fn", 'exec'), glob)zexecfile("fn", glob, loc)z?exec(compile(open("fn", "rb").read(), "fn", 'exec'), glob, loc)zexecfile("fn", globals=glob)zBexec(compile(open("fn", "rb").read(), "fn", 'exec'), globals=glob)zexecfile("fn", locals=loc)z@exec(compile(open("fn", "rb").read(), "fn", 'exec'), locals=loc)z(execfile("fn", globals=glob, locals=loc)zNexec(compile(open("fn", "rb").read(), "fn", 'exec'), globals=glob, locals=loc))r   )r   r4   r5   r   r   r   Útest_conversion²  s$    zTest_execfile.test_conversionc             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nzexecfile( "fn" )z6exec(compile(open( "fn", "rb" ).read(), "fn", 'exec'))zexecfile("fn",  globals = glob)zEexec(compile(open("fn", "rb").read(), "fn", 'exec'),  globals = glob))r   )r   r4   r5   r   r   r   Útest_spacingË  s    zTest_execfile.test_spacingN)r0   r%   r1   r	   r¬   r­   r   r   r   r   r«   ¯  s   r«   c               @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚTest_isinstanceÚ
isinstancec             C   sT   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )	Nzisinstance(x, (int, int, int))zisinstance(x, int)z,isinstance(x, (int, float, int, int, float))zisinstance(x, (int, float))z1isinstance(x, (int, float, int, int, float, str))z isinstance(x, (int, float, str))z4isinstance(foo() + bar(), (x(), y(), x(), int, int))z/isinstance(foo() + bar(), (x(), y(), x(), int)))r   )r   r4   r5   r   r   r   Útest_remove_multiple_itemsØ  s    z*Test_isinstance.test_remove_multiple_itemsc             C   s   d}d}|   ||¡ d S )Nz4if    isinstance(  foo(), (  bar, bar, baz )) : passz/if    isinstance(  foo(), (  bar, baz )) : pass)r   )r   r4   r5   r   r   r   rc   é  s    z(Test_isinstance.test_prefix_preservationc             C   s   |   d¡ d S )Nzisinstance(x, (str, int)))r    )r   r   r   r   r`   î  s    zTest_isinstance.test_unchangedN)r0   r%   r1   r	   r°   rc   r`   r   r   r   r   r®   Õ  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
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&dHS )IÚ	Test_dictÚdictc             C   s|   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d	}d
}|   ||¡ d}d}|   ||¡ d S )Nzif   d. keys  (  )  : passz if   list(d. keys  (  ))  : passzif   d. items  (  )  : passz!if   list(d. items  (  ))  : passzif   d. iterkeys  ( )  : passzif   iter(d. keys  ( ))  : passz"[i for i in    d.  iterkeys(  )  ]z[i for i in    d.  keys(  )  ]zif   d. viewkeys  ( )  : passzif   d. keys  ( )  : passz"[i for i in    d.  viewkeys(  )  ])r   )r   r4   r5   r   r   r   rc   ô  s$    z"Test_dict.test_prefix_preservationc             C   s|   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d	}d}|   ||¡ d S )
Nzd.keys() # foozlist(d.keys()) # foozd.items()  # foozlist(d.items())  # foozd.iterkeys()  # fooziter(d.keys())  # fooz/[i for i in d.iterkeys() # foo
               ]z+[i for i in d.keys() # foo
               ]zd.viewitems()  # foo)r   )r   r4   r5   r   r   r   Útest_trailing_comment  s$    zTest_dict.test_trailing_commentc             C   sJ   xDt jD ]:}d| }|  |¡ d| }|  |¡ d| }|  |¡ qW d S )Nzs = %s(d.keys())zs = %s(d.values())zs = %s(d.items()))r   Úconsuming_callsr    )r   ÚwrapperrN   r   r   r   r`   *  s    

zTest_dict.test_unchangedc             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nzd.keys()zlist(d.keys())za[0].foo().keys()zlist(a[0].foo().keys()))r   )r   r4   r5   r   r   r   Útest_015  s    zTest_dict.test_01c             C   s   d}d}|   ||¡ d S )Nz	d.items()zlist(d.items()))r   )r   r4   r5   r   r   r   Útest_02>  s    zTest_dict.test_02c             C   s   d}d}|   ||¡ d S )Nz
d.values()zlist(d.values()))r   )r   r4   r5   r   r   r   Útest_03C  s    zTest_dict.test_03c             C   s   d}d}|   ||¡ d S )Nzd.iterkeys()ziter(d.keys()))r   )r   r4   r5   r   r   r   Útest_04H  s    zTest_dict.test_04c             C   s   d}d}|   ||¡ d S )Nzd.iteritems()ziter(d.items()))r   )r   r4   r5   r   r   r   Útest_05M  s    zTest_dict.test_05c             C   s   d}d}|   ||¡ d S )Nzd.itervalues()ziter(d.values()))r   )r   r4   r5   r   r   r   Útest_06R  s    zTest_dict.test_06c             C   s   d}|   |¡ d S )Nzlist(d.keys()))r    )r   rN   r   r   r   Útest_07W  s    zTest_dict.test_07c             C   s   d}|   |¡ d S )Nzsorted(d.keys()))r    )r   rN   r   r   r   Útest_08[  s    zTest_dict.test_08c             C   s   d}d}|   ||¡ d S )Nziter(d.keys())ziter(list(d.keys())))r   )r   r4   r5   r   r   r   Útest_09_  s    zTest_dict.test_09c             C   s   d}d}|   ||¡ d S )Nzfoo(d.keys())zfoo(list(d.keys())))r   )r   r4   r5   r   r   r   rC   d  s    zTest_dict.test_10c             C   s   d}d}|   ||¡ d S )Nzfor i in d.keys(): print iz for i in list(d.keys()): print i)r   )r   r4   r5   r   r   r   rD   i  s    zTest_dict.test_11c             C   s   d}d}|   ||¡ d S )Nzfor i in d.iterkeys(): print izfor i in d.keys(): print i)r   )r   r4   r5   r   r   r   Útest_12n  s    zTest_dict.test_12c             C   s   d}d}|   ||¡ d S )Nz[i for i in d.keys()]z[i for i in list(d.keys())])r   )r   r4   r5   r   r   r   Útest_13s  s    zTest_dict.test_13c             C   s   d}d}|   ||¡ d S )Nz[i for i in d.iterkeys()]z[i for i in d.keys()])r   )r   r4   r5   r   r   r   Útest_14x  s    zTest_dict.test_14c             C   s   d}d}|   ||¡ d S )Nz(i for i in d.keys())z(i for i in list(d.keys())))r   )r   r4   r5   r   r   r   Útest_15}  s    zTest_dict.test_15c             C   s   d}d}|   ||¡ d S )Nz(i for i in d.iterkeys())z(i for i in d.keys()))r   )r   r4   r5   r   r   r   Útest_16‚  s    zTest_dict.test_16c             C   s   d}d}|   ||¡ d S )Nziter(d.iterkeys())ziter(d.keys()))r   )r   r4   r5   r   r   r   Útest_17‡  s    zTest_dict.test_17c             C   s   d}d}|   ||¡ d S )Nzlist(d.iterkeys())zlist(d.keys()))r   )r   r4   r5   r   r   r   Útest_18Œ  s    zTest_dict.test_18c             C   s   d}d}|   ||¡ d S )Nzsorted(d.iterkeys())zsorted(d.keys()))r   )r   r4   r5   r   r   r   Útest_19‘  s    zTest_dict.test_19c             C   s   d}d}|   ||¡ d S )Nzfoo(d.iterkeys())zfoo(iter(d.keys())))r   )r   r4   r5   r   r   r   Útest_20–  s    zTest_dict.test_20c             C   s   d}d}|   ||¡ d S )Nzprint h.iterkeys().next()zprint iter(h.keys()).next())r   )r   r4   r5   r   r   r   Útest_21›  s    zTest_dict.test_21c             C   s   d}d}|   ||¡ d S )Nzprint h.keys()[0]zprint list(h.keys())[0])r   )r   r4   r5   r   r   r   Útest_22   s    zTest_dict.test_22c             C   s   d}d}|   ||¡ d S )Nzprint list(h.iterkeys().next())z!print list(iter(h.keys()).next()))r   )r   r4   r5   r   r   r   Útest_23¥  s    zTest_dict.test_23c             C   s   d}d}|   ||¡ d S )Nzfor x in h.keys()[0]: print xz#for x in list(h.keys())[0]: print x)r   )r   r4   r5   r   r   r   Útest_24ª  s    zTest_dict.test_24c             C   s   d}d}|   ||¡ d S )Nzd.viewkeys()zd.keys())r   )r   r4   r5   r   r   r   Útest_25¯  s    zTest_dict.test_25c             C   s   d}d}|   ||¡ d S )Nzd.viewitems()z	d.items())r   )r   r4   r5   r   r   r   Útest_26´  s    zTest_dict.test_26c             C   s   d}d}|   ||¡ d S )Nzd.viewvalues()z
d.values())r   )r   r4   r5   r   r   r   Útest_27¹  s    zTest_dict.test_27c             C   s   d}d}|   ||¡ d S )Nz[i for i in d.viewkeys()]z[i for i in d.keys()])r   )r   r4   r5   r   r   r   Útest_28¾  s    zTest_dict.test_28c             C   s   d}d}|   ||¡ d S )Nz(i for i in d.viewkeys())z(i for i in d.keys()))r   )r   r4   r5   r   r   r   Útest_29Ã  s    zTest_dict.test_29c             C   s   d}d}|   ||¡ d S )Nziter(d.viewkeys())ziter(d.keys()))r   )r   r4   r5   r   r   r   Útest_30È  s    zTest_dict.test_30c             C   s   d}d}|   ||¡ d S )Nzlist(d.viewkeys())zlist(d.keys()))r   )r   r4   r5   r   r   r   Útest_31Í  s    zTest_dict.test_31c             C   s   d}d}|   ||¡ d S )Nzsorted(d.viewkeys())zsorted(d.keys()))r   )r   r4   r5   r   r   r   Útest_32Ò  s    zTest_dict.test_32N)'r0   r%   r1   r	   rc   r³   r`   r¶   r·   r¸   r¹   rº   r»   r¼   r½   r¾   rC   rD   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±   ñ  sH   	r±   c               @   sX   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
dd„ Zdd„ ZdS )ÚTest_xrangeÚxrangec             C   s@   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )Nzx =    xrange(  10  )zx =    range(  10  )zx = xrange(  1  ,  10   )zx = range(  1  ,  10   )zx = xrange(  0  ,  10 ,  2 )zx = range(  0  ,  10 ,  2 ))r   )r   r4   r5   r   r   r   rc   Ú  s    z$Test_xrange.test_prefix_preservationc             C   s   d}d}|   ||¡ d S )Nzx = xrange(10)zx = range(10))r   )r   r4   r5   r   r   r   Útest_single_argç  s    zTest_xrange.test_single_argc             C   s   d}d}|   ||¡ d S )Nzx = xrange(1, 10)zx = range(1, 10))r   )r   r4   r5   r   r   r   Útest_two_argsì  s    zTest_xrange.test_two_argsc             C   s   d}d}|   ||¡ d S )Nzx = xrange(0, 10, 2)zx = range(0, 10, 2))r   )r   r4   r5   r   r   r   Útest_three_argsñ  s    zTest_xrange.test_three_argsc             C   sh   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d	}d
}|   ||¡ d S )Nzx = range(10, 3, 9)zx = list(range(10, 3, 9))zx = foo(range(10, 3, 9))zx = foo(list(range(10, 3, 9)))zx = range(10, 3, 9) + [4]zx = list(range(10, 3, 9)) + [4]zx = range(10)[::-1]zx = list(range(10))[::-1]zx = range(10)  [3]zx = list(range(10))  [3])r   )r   r4   r5   r   r   r   Útest_wrap_in_listö  s    zTest_xrange.test_wrap_in_listc             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nzfor i in xrange(10):
    j=izfor i in range(10):
    j=iz[i for i in xrange(10)]z[i for i in range(10)])r   )r   r4   r5   r   r   r   Útest_xrange_in_for  s    zTest_xrange.test_xrange_in_forc             C   s   |   d¡ |   d¡ d S )Nzfor i in range(10): passz[i for i in range(10)])r    )r   r   r   r   Útest_range_in_for  s    
zTest_xrange.test_range_in_forc             C   s   |   d¡ d S )Nzx in range(10, 3, 9))r    )r   r   r   r   Útest_in_contains_test  s    z!Test_xrange.test_in_contains_testc             C   s"   xt jD ]}|  d| ¡ qW d S )Nza = %s(range(10)))r   r´   r    )r   Zcallr   r   r   Útest_in_consuming_context  s    z%Test_xrange.test_in_consuming_contextN)r0   r%   r1   r	   rc   rÖ   r×   rØ   rÙ   rÚ   rÛ   rÜ   rÝ   r   r   r   r   rÔ   ×  s   	rÔ   c                   s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )ÚTest_xrange_with_reducec                s   t t| ƒ ddg¡ d S )NrÕ   re   )ÚsuperrÞ   r   )r   )r$   r   r   r   !  s    zTest_xrange_with_reduce.setUpc             C   s   d}d}|   ||¡ d S )Nzreduce(x, xrange(5))z0from functools import reduce
reduce(x, range(5)))r   )r   r4   r5   r   r   r   Útest_double_transform$  s    z-Test_xrange_with_reduce.test_double_transform)r0   r%   r1   r   rà   Ú__classcell__r   r   )r$   r   rÞ     s   rÞ   c               @   sP   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
dd„ ZdS )ÚTest_raw_inputZ	raw_inputc             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nzx =    raw_input(   )zx =    input(   )zx = raw_input(   ''   )zx = input(   ''   ))r   )r   r4   r5   r   r   r   rc   -  s    z'Test_raw_input.test_prefix_preservationc             C   s   d}d}|   ||¡ d S )Nzx = raw_input()zx = input())r   )r   r4   r5   r   r   r   r:   6  s    zTest_raw_input.test_1c             C   s   d}d}|   ||¡ d S )Nzx = raw_input('')zx = input(''))r   )r   r4   r5   r   r   r   r;   ;  s    zTest_raw_input.test_2c             C   s   d}d}|   ||¡ d S )Nzx = raw_input('prompt')zx = input('prompt'))r   )r   r4   r5   r   r   r   r<   @  s    zTest_raw_input.test_3c             C   s   d}d}|   ||¡ d S )Nzx = raw_input(foo(a) + 6)zx = input(foo(a) + 6))r   )r   r4   r5   r   r   r   r=   E  s    zTest_raw_input.test_4c             C   s   d}d}|   ||¡ d S )Nzx = raw_input(invite).split()zx = input(invite).split())r   )r   r4   r5   r   r   r   r>   J  s    zTest_raw_input.test_5c             C   s   d}d}|   ||¡ d S )Nz x = raw_input(invite) . split ()zx = input(invite) . split ())r   )r   r4   r5   r   r   r   r?   O  s    zTest_raw_input.test_6c             C   s   d}d}|   ||¡ d S )Nzx = int(raw_input())zx = int(input()))r   )r   r4   r5   r   r   r   rA   T  s    zTest_raw_input.test_8N)r0   r%   r1   r	   rc   r:   r;   r<   r=   r>   r?   rA   r   r   r   r   râ   *  s   	râ   c               @   s2   e Zd ZdZdddddddgZd	d
„ Zdd„ ZdS )ÚTest_funcattrsZ	funcattrsZclosureÚdocÚnameÚdefaultsÚcodeÚglobalsr²   c             C   sL   xF| j D ]<}d| }d| }|  ||¡ d| }d| }|  ||¡ qW d S )Nz	a.func_%sza.__%s__zself.foo.func_%s.foo_barzself.foo.__%s__.foo_bar)Úattrsr   )r   Úattrr4   r5   r   r   r   r]   ^  s    zTest_funcattrs.testc             C   sJ   xD| j D ]:}d| }|  |¡ d| }|  |¡ d| }|  |¡ qW d S )Nzfoo(func_%s + 5)zf(foo.__%s__)zf(foo.__%s__.foo))ré   r    )r   rê   rN   r   r   r   r`   h  s    

zTest_funcattrs.test_unchangedN)r0   r%   r1   r	   ré   r]   r`   r   r   r   r   rã   Y  s   
rã   c               @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚTest_xreadlinesZ
xreadlinesc             C   s@   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )Nzfor x in f.xreadlines(): passzfor x in f: passz!for x in foo().xreadlines(): passzfor x in foo(): passz'for x in (5 + foo()).xreadlines(): passzfor x in (5 + foo()): pass)r   )r   r4   r5   r   r   r   rK   v  s    zTest_xreadlines.test_callc             C   s@   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )Nzfoo(f.xreadlines + 5)zfoo(f.__iter__ + 5)zfoo(f().xreadlines + 5)zfoo(f().__iter__ + 5)zfoo((5 + f()).xreadlines + 5)zfoo((5 + f()).__iter__ + 5))r   )r   r4   r5   r   r   r   Útest_attr_refƒ  s    zTest_xreadlines.test_attr_refc             C   s<   d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d S )Nzfor x in f.xreadlines(5): passz for x in f.xreadlines(k=5): passz$for x in f.xreadlines(*k, **v): passzfoo(xreadlines))r    )r   rN   r   r   r   r`     s    


zTest_xreadlines.test_unchangedN)r0   r%   r1   r	   rK   rì   r`   r   r   r   r   rë   s  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S )ÚImportsFixerTestsc             C   sT   xN| j  ¡ D ]@\}}d| }d| }|  ||¡ d| }d| }|  ||¡ qW d S )Nz	import %szimport foo, %s, bar)ÚmodulesÚitemsr   )r   ÚoldÚnewr4   r5   r   r   r   Útest_import_module   s    z$ImportsFixerTests.test_import_modulec             C   sp   xj| j  ¡ D ]\\}}d| }d| }|  ||¡ d| }d| }|  ||¡ d| }d| }|  ||¡ qW d S )Nzfrom %s import foozfrom %s import foo, barzfrom %s import (yes, no))rî   rï   r   )r   rð   rñ   r4   r5   r   r   r   Útest_import_fromª  s    z"ImportsFixerTests.test_import_fromc             C   sT   xN| j  ¡ D ]@\}}d| }d| }|  ||¡ d| }d| }|  ||¡ qW d S )Nzimport %s as foo_bar)rî   rï   r   )r   rð   rñ   r4   r5   r   r   r   Útest_import_module_as¸  s    z'ImportsFixerTests.test_import_module_asc             C   s8   x2| j  ¡ D ]$\}}d| }d| }|  ||¡ qW d S )Nzfrom %s import foo as bar)rî   rï   r   )r   rð   rñ   r4   r5   r   r   r   Útest_import_from_asÂ  s    z%ImportsFixerTests.test_import_from_asc             C   s8   x2| j  ¡ D ]$\}}d| }d| }|  ||¡ qW d S )Nzfrom %s import *)rî   rï   r   )r   rð   rñ   r4   r5   r   r   r   Ú	test_starÈ  s    zImportsFixerTests.test_starc             C   sÄ   x¾| j  ¡ D ]°\}}d||f }d||f }|  ||¡ d||f }d||f }|  ||¡ d|f }|  |¡ d|||f }d|||f }|  ||¡ d||f }d||f }|  ||¡ qW d S )NzG
                import %s
                foo(%s.bar)
                zJ
                from %s import x
                %s = 23
                zJ
                def f():
                    %s.method()
                zJ
                import %s
                %s.bar(%s.foo)
                z@
                import %s
                x.%s
                )rî   rï   r   r    )r   rð   rñ   r4   r5   rN   r   r   r   Útest_import_module_usageÎ  s    

z*ImportsFixerTests.test_import_module_usageN)	r0   r%   r1   rò   ró   rô   rõ   rö   r÷   r   r   r   r   rí   ž  s   

rí   c               @   s,   e Zd ZdZddlmZ dd„ Zdd„ ZdS )	ÚTest_importsÚimportsé   )ÚMAPPINGc             C   s   d}d}|   ||¡ d S )Nzimport urlparse, cStringIOzimport urllib.parse, io)r   )r   r4   r5   r   r   r   Útest_multiple_imports  s    z"Test_imports.test_multiple_importsc             C   s   d}d}|   ||¡ d S )Nzv
            import copy_reg as bar, HTMLParser as foo, urlparse
            s = urlparse.spam(bar.foo())
            z~
            import copyreg as bar, html.parser as foo, urllib.parse
            s = urllib.parse.spam(bar.foo())
            )r   )r   r4   r5   r   r   r   Útest_multiple_imports_as	  s    z%Test_imports.test_multiple_imports_asN)	r0   r%   r1   r	   Úfixes.fix_importsrû   rî   rü   rý   r   r   r   r   rø      s   rø   c               @   s   e Zd ZdZddlmZ dS )ÚTest_imports2Úimports2rú   )rû   N)r0   r%   r1   r	   Úfixes.fix_imports2rû   rî   r   r   r   r   rÿ     s   rÿ   c                   s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )ÚTest_imports_fixer_orderc                sV   t t| ƒ ddg¡ ddlm} | ¡ | _ddlm} xdD ]}|| | j|< q<W d S )Nrù   r   rú   )rû   )ZdbhashZdumbdbmZdbmZgdbm)rß   r  r   r  rû   Úcopyrî   rþ   )r   Zmapping2Zmapping1Úkey)r$   r   r   r     s    

zTest_imports_fixer_order.setUpc             C   s"   xdD ]}|| _ |  d¡ qW d S )N)rù   r   Úimport)r	   r/   )r   Zfixr   r   r   Ú$test_after_local_imports_refactoring$  s    
z=Test_imports_fixer_order.test_after_local_imports_refactoring)r0   r%   r1   r   r  rá   r   r   )r$   r   r    s   r  c               @   sT   e Zd ZdZddlmZ dd„ Zdd„ Zdd	„ Z	d
d„ Z
dd„ Zdd„ Zdd„ ZdS )ÚTest_urllibZurllibrú   )rû   c             C   sH   xB| j  ¡ D ]4\}}d| }dd ttdƒ|ƒ¡ }|  ||¡ qW d S )Nz	import %sz, r   )rî   rï   r   Úmapr   r   )r   rð   Úchangesr4   r5   r   r   r   rò   .  s    zTest_urllib.test_import_modulec       
      C   sú   xô| j  ¡ D ]æ\}}g }x¦|D ]ž\}}xL|D ]D}| |¡ d||f }d||f }|  ||¡ d| }	|  |	¡ q,W d|d |¡f }d|d |¡f }|  ||¡ dd |¡ }	|  |	¡ qW d|d |¡f }d dd„ |D ƒ¡}|  ||¡ qW d S )Nzfrom %s import %szfrom foo import %sz, Ú
c             S   s"   g | ]\}}d |d  |¡f ‘qS )zfrom %s import %sz, )r   )r&   rñ   Úmembersr   r   r   r(   J  s   z0Test_urllib.test_import_from.<locals>.<listcomp>)rî   rï   Úappendr   r    r   )
r   rð   r	  Zall_membersrñ   r  Úmemberr4   r5   rN   r   r   r   ró   4  s&    



zTest_urllib.test_import_fromc             C   s(   x"| j D ]}d| }|  |d¡ qW d S )Nzimport %s as fooz#This module is now multiple modules)rî   r"   )r   rð   rN   r   r   r   rô   N  s    z!Test_urllib.test_import_module_asc             C   sˆ   x‚| j  ¡ D ]t\}}xj|D ]b\}}xX|D ]P}d||f }d||f }|  ||¡ d|||f }d|||f }|  ||¡ q(W qW qW d S )Nzfrom %s import %s as foo_barzfrom %s import %s as blah, %s)rî   rï   r   )r   rð   r	  rñ   r  r  r4   r5   r   r   r   rõ   S  s    
zTest_urllib.test_import_from_asc             C   s(   x"| j D ]}d| }|  |d¡ qW d S )Nzfrom %s import *zCannot handle star imports)rî   r"   )r   rð   rN   r   r   r   rö   ^  s    zTest_urllib.test_starc             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nz6
def foo():
    from urllib import urlencode, urlopen
zZ
def foo():
    from urllib.parse import urlencode
    from urllib.request import urlopen
zB
def foo():
    other()
    from urllib import urlencode, urlopen
zf
def foo():
    other()
    from urllib.parse import urlencode
    from urllib.request import urlopen
)r   )r   r4   r5   r   r   r   Útest_indentedc  s    zTest_urllib.test_indentedc       	   	   C   s®   x¨| j  ¡ D ]š\}}x|D ]ˆ\}}x~|D ]v}d dd„ | j | D ƒ¡}d|||f }d|||f }|  ||¡ d|||||f }d|||||f }|  ||¡ q(W qW qW d S )Nz, c             S   s   g | ]\}}|‘qS r   r   )r&   r.   Zmemsr   r   r   r(   ‚  s    z8Test_urllib.test_import_module_usage.<locals>.<listcomp>z^
                        import %s
                        foo(%s.%s)
                        z`
                        import %s
                        %s.%s(%s.%s)
                        )rî   rï   r   r   )	r   rð   r	  rñ   r  r  Z
new_importr4   r5   r   r   r   r÷   ~  s    

z$Test_urllib.test_import_module_usageN)r0   r%   r1   r	   Zfixes.fix_urllibrû   rî   rò   ró   rô   rõ   rö   r  r÷   r   r   r   r   r  *  s   r  c               @   sH   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
dS )Ú
Test_inputÚinputc             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nzx =   input(   )zx =   eval(input(   ))zx = input(   ''   )zx = eval(input(   ''   )))r   )r   r4   r5   r   r   r   rc   ›  s    z#Test_input.test_prefix_preservationc             C   s   d}d}|   ||¡ d S )Nzx = input()  #  foozx = eval(input())  #  foo)r   )r   r4   r5   r   r   r   r³   ¤  s    z Test_input.test_trailing_commentc             C   s.   d}|   |¡ d}|   |¡ d}|   |¡ d S )Nzx = eval(input())zx = eval(input(''))zx = eval(input(foo(5) + 9)))r    )r   rN   r   r   r   rk   ©  s    

zTest_input.test_idempotencyc             C   s   d}d}|   ||¡ d S )Nzx = input()zx = eval(input()))r   )r   r4   r5   r   r   r   r:   ³  s    zTest_input.test_1c             C   s   d}d}|   ||¡ d S )Nzx = input('')zx = eval(input('')))r   )r   r4   r5   r   r   r   r;   ¸  s    zTest_input.test_2c             C   s   d}d}|   ||¡ d S )Nzx = input('prompt')zx = eval(input('prompt')))r   )r   r4   r5   r   r   r   r<   ½  s    zTest_input.test_3c             C   s   d}d}|   ||¡ d S )Nzx = input(foo(5) + 9)zx = eval(input(foo(5) + 9)))r   )r   r4   r5   r   r   r   r=   Â  s    zTest_input.test_4N)r0   r%   r1   r	   rc   r³   rk   r:   r;   r<   r=   r   r   r   r   r  ˜  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
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 )+ÚTest_tuple_paramsZtuple_paramsc             C   s   d}|   |¡ d S )Nzdef foo(): pass)r    )r   rN   r   r   r   rO   Ê  s    z"Test_tuple_params.test_unchanged_1c             C   s   d}|   |¡ d S )Nzdef foo(a, b, c): pass)r    )r   rN   r   r   r   rP   Î  s    z"Test_tuple_params.test_unchanged_2c             C   s   d}|   |¡ d S )Nzdef foo(a=3, b=4, c=5): pass)r    )r   rN   r   r   r   rQ   Ò  s    z"Test_tuple_params.test_unchanged_3c             C   s   d}d}|   ||¡ d S )Nz8
            def foo(((a, b), c)):
                x = 5zn
            def foo(xxx_todo_changeme):
                ((a, b), c) = xxx_todo_changeme
                x = 5)r   )r   r4   r5   r   r   r   r:   Ö  s    zTest_tuple_params.test_1c             C   s   d}d}|   ||¡ d S )Nz;
            def foo(((a, b), c), d):
                x = 5zq
            def foo(xxx_todo_changeme, d):
                ((a, b), c) = xxx_todo_changeme
                x = 5)r   )r   r4   r5   r   r   r   r;   á  s    zTest_tuple_params.test_2c             C   s   d}d}|   ||¡ d S )Nz@
            def foo(((a, b), c), d) -> e:
                x = 5zv
            def foo(xxx_todo_changeme, d) -> e:
                ((a, b), c) = xxx_todo_changeme
                x = 5)r   )r   r4   r5   r   r   r   r<   ì  s    zTest_tuple_params.test_3c             C   s   d}d}|   ||¡ d S )Nz/
            def foo(((a, b), c)): x = 5; y = 7zV
            def foo(xxx_todo_changeme): ((a, b), c) = xxx_todo_changeme; x = 5; y = 7)r   )r   r4   r5   r   r   r   Útest_semicolon÷  s    z Test_tuple_params.test_semicolonc             C   s   d}d}|   ||¡ d S )NzE
            def foo(((a, b), c), d, e=5) -> z:
                x = 5z{
            def foo(xxx_todo_changeme, d, e=5) -> z:
                ((a, b), c) = xxx_todo_changeme
                x = 5)r   )r   r4   r5   r   r   r   Útest_keywordsÿ  s    zTest_tuple_params.test_keywordsc             C   s   d}d}|   ||¡ d S )NzR
            def foo(((a, b), c), d, *vargs, **kwargs) -> z:
                x = 5zˆ
            def foo(xxx_todo_changeme, d, *vargs, **kwargs) -> z:
                ((a, b), c) = xxx_todo_changeme
                x = 5)r   )r   r4   r5   r   r   r   Útest_varargs
  s    zTest_tuple_params.test_varargsc             C   s   d}d}|   ||¡ d S )NzH
            def foo(((a, b), c), (d, e, f)) -> z:
                x = 5z¶
            def foo(xxx_todo_changeme, xxx_todo_changeme1) -> z:
                ((a, b), c) = xxx_todo_changeme
                (d, e, f) = xxx_todo_changeme1
                x = 5)r   )r   r4   r5   r   r   r   Útest_multi_1  s    zTest_tuple_params.test_multi_1c             C   s   d}d}|   ||¡ d S )NzQ
            def foo(x, ((a, b), c), d, (e, f, g), y) -> z:
                x = 5z¿
            def foo(x, xxx_todo_changeme, d, xxx_todo_changeme1, y) -> z:
                ((a, b), c) = xxx_todo_changeme
                (e, f, g) = xxx_todo_changeme1
                x = 5)r   )r   r4   r5   r   r   r   Útest_multi_2!  s    zTest_tuple_params.test_multi_2c             C   s   d}d}|   ||¡ d S )Nzj
            def foo(((a, b), c), (d, e, f)) -> z:
                "foo foo foo foo"
                x = 5zØ
            def foo(xxx_todo_changeme, xxx_todo_changeme1) -> z:
                "foo foo foo foo"
                ((a, b), c) = xxx_todo_changeme
                (d, e, f) = xxx_todo_changeme1
                x = 5)r   )r   r4   r5   r   r   r   Útest_docstring-  s    z Test_tuple_params.test_docstringc             C   s   d}|   |¡ d S )Nzlambda x: x + 5)r    )r   rN   r   r   r   Útest_lambda_no_change;  s    z'Test_tuple_params.test_lambda_no_changec             C   sT   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )Nzlambda (x): x + 5zlambda x: x + 5zlambda(x): x + 5zlambda ((((x)))): x + 5zlambda((((x)))): x + 5)r   )r   r4   r5   r   r   r   Útest_lambda_parens_single_arg?  s    z/Test_tuple_params.test_lambda_parens_single_argc             C   sT   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )Nzlambda (x, y): x + f(y)zlambda x_y: x_y[0] + f(x_y[1])zlambda(x, y): x + f(y)zlambda (((x, y))): x + f(y)zlambda(((x, y))): x + f(y))r   )r   r4   r5   r   r   r   Útest_lambda_simpleP  s    z$Test_tuple_params.test_lambda_simplec             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nzlambda (x,): x + f(x)zlambda x1: x1[0] + f(x1[0])zlambda (((x,))): x + f(x))r   )r   r4   r5   r   r   r   Útest_lambda_one_tuplea  s    z'Test_tuple_params.test_lambda_one_tuplec             C   s   d}d}|   ||¡ d S )Nzlambda (x, y): x + x + f(x) + xz0lambda x_y: x_y[0] + x_y[0] + f(x_y[0]) + x_y[0])r   )r   r4   r5   r   r   r   Útest_lambda_simple_multi_usej  s    z.Test_tuple_params.test_lambda_simple_multi_usec             C   s   d}d}|   ||¡ d S )Nzlambda (x, y): y + xzlambda x_y: x_y[1] + x_y[0])r   )r   r4   r5   r   r   r   Útest_lambda_simple_reverseo  s    z,Test_tuple_params.test_lambda_simple_reversec             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nzlambda (x, (y, z)): x + y + zz2lambda x_y_z: x_y_z[0] + x_y_z[1][0] + x_y_z[1][1]z!lambda (((x, (y, z)))): x + y + z)r   )r   r4   r5   r   r   r   Útest_lambda_nestedt  s    z$Test_tuple_params.test_lambda_nestedc             C   s   d}d}|   ||¡ d S )Nz lambda (x, (y, z)): x + y + f(y)z5lambda x_y_z: x_y_z[0] + x_y_z[1][0] + f(x_y_z[1][0]))r   )r   r4   r5   r   r   r   Útest_lambda_nested_multi_use}  s    z.Test_tuple_params.test_lambda_nested_multi_useN)r0   r%   r1   r	   rO   rP   rQ   r:   r;   r<   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ZdddgZdd„ Zdd„ Zd	S )
ÚTest_methodattrsZmethodattrsÚfuncr   Úclassc             C   sh   xb| j D ]X}d| }|dkr"d}nd| }|  ||¡ d| }|dkrLd}nd| }|  ||¡ qW d S )Nza.im_%sr"  za.__self__.__class__za.__%s__zself.foo.im_%s.foo_barz#self.foo.__self__.__class__.foo_barzself.foo.__%s__.foo_bar)ré   r   )r   rê   r4   r5   r   r   r   r]   ‡  s    zTest_methodattrs.testc             C   sJ   xD| j D ]:}d| }|  |¡ d| }|  |¡ d| }|  |¡ qW d S )Nzfoo(im_%s + 5)zf(foo.__%s__)zf(foo.__%s__.foo))ré   r    )r   rê   rN   r   r   r   r`   —  s    

zTest_methodattrs.test_unchangedN)r0   r%   r1   r	   ré   r]   r`   r   r   r   r   r   ‚  s   
r   c               @   sx  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
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[„ Z0d\S )]Ú	Test_nextÚnextc             C   s   d}d}|   ||¡ d S )Nz	it.next()znext(it))r   )r   r4   r5   r   r   r   r:   ¥  s    zTest_next.test_1c             C   s   d}d}|   ||¡ d S )Nza.b.c.d.next()znext(a.b.c.d))r   )r   r4   r5   r   r   r   r;   ª  s    zTest_next.test_2c             C   s   d}d}|   ||¡ d S )Nz(a + b).next()znext((a + b)))r   )r   r4   r5   r   r   r   r<   ¯  s    zTest_next.test_3c             C   s   d}d}|   ||¡ d S )Nz
a().next()z	next(a()))r   )r   r4   r5   r   r   r   r=   ´  s    zTest_next.test_4c             C   s   d}d}|   ||¡ d S )Nza().next() + bznext(a()) + b)r   )r   r4   r5   r   r   r   r>   ¹  s    zTest_next.test_5c             C   s   d}d}|   ||¡ d S )Nzc(      a().next() + b)zc(      next(a()) + b))r   )r   r4   r5   r   r   r   r?   ¾  s    zTest_next.test_6c             C   s   d}d}|   ||¡ d S )NzU
            for a in b:
                foo(a)
                a.next()
            zT
            for a in b:
                foo(a)
                next(a)
            )r   )r   r4   r5   r   r   r   Útest_prefix_preservation_1Ã  s    z$Test_next.test_prefix_preservation_1c             C   s   d}d}|   ||¡ d S )Nzq
            for a in b:
                foo(a) # abc
                # def
                a.next()
            zp
            for a in b:
                foo(a) # abc
                # def
                next(a)
            )r   )r   r4   r5   r   r   r   Útest_prefix_preservation_2Ð  s    z$Test_next.test_prefix_preservation_2c             C   s   d}d}| j ||dd d S )Nzj
            next = 5
            for a in b:
                foo(a)
                a.next()
            zn
            next = 5
            for a in b:
                foo(a)
                a.__next__()
            T)r   )r   )r   r4   r5   r   r   r   Útest_prefix_preservation_3ß  s    z$Test_next.test_prefix_preservation_3c             C   s   d}d}| j ||dd d S )Nz†
            next = 5
            for a in b:
                foo(a) # abc
                # def
                a.next()
            zŠ
            next = 5
            for a in b:
                foo(a) # abc
                # def
                a.__next__()
            T)r   )r   )r   r4   r5   r   r   r   Útest_prefix_preservation_4î  s    z$Test_next.test_prefix_preservation_4c             C   s   d}d}| j ||dd d S )Nzz
            next = 5
            for a in b:
                foo(foo(a), # abc
                    a.next())
            z~
            next = 5
            for a in b:
                foo(foo(a), # abc
                    a.__next__())
            T)r   )r   )r   r4   r5   r   r   r   Útest_prefix_preservation_5ÿ  s    z$Test_next.test_prefix_preservation_5c             C   s   d}d}|   ||¡ d S )Nze
            for a in b:
                foo(foo(a), # abc
                    a.next())
            zd
            for a in b:
                foo(foo(a), # abc
                    next(a))
            )r   )r   r4   r5   r   r   r   Útest_prefix_preservation_6	  s    z$Test_next.test_prefix_preservation_6c             C   s   d}d}|   ||¡ d S )Nz[
            class A:
                def next(self):
                    pass
            z_
            class A:
                def __next__(self):
                    pass
            )r   )r   r4   r5   r   r   r   Útest_method_1	  s    zTest_next.test_method_1c             C   s   d}d}|   ||¡ d S )Nzc
            class A(object):
                def next(self):
                    pass
            zg
            class A(object):
                def __next__(self):
                    pass
            )r   )r   r4   r5   r   r   r   Útest_method_2(	  s    zTest_next.test_method_2c             C   s   d}d}|   ||¡ d S )NzX
            class A:
                def next(x):
                    pass
            z\
            class A:
                def __next__(x):
                    pass
            )r   )r   r4   r5   r   r   r   Útest_method_35	  s    zTest_next.test_method_3c             C   s   d}d}|   ||¡ d S )Nzí
            class A:
                def __init__(self, foo):
                    self.foo = foo

                def next(self):
                    pass

                def __iter__(self):
                    return self
            zñ
            class A:
                def __init__(self, foo):
                    self.foo = foo

                def __next__(self):
                    pass

                def __iter__(self):
                    return self
            )r   )r   r4   r5   r   r   r   Útest_method_4B	  s    zTest_next.test_method_4c             C   s   d}|   |¡ d S )Nza
            class A:
                def next(self, a, b):
                    pass
            )r    )r   rN   r   r   r   Útest_method_unchanged[	  s    zTest_next.test_method_unchangedc             C   s   d}|   |d¡ d S )Nzy
            next = foo

            class A:
                def next(self, a, b):
                    pass
            z)Calls to builtin next() possibly shadowed)r"   )r   rN   r   r   r   Útest_shadowing_assign_simplec	  s    z&Test_next.test_shadowing_assign_simplec             C   s   d}|   |d¡ d S )Nz~
            (next, a) = foo

            class A:
                def next(self, a, b):
                    pass
            z)Calls to builtin next() possibly shadowed)r"   )r   rN   r   r   r   Útest_shadowing_assign_tuple_1m	  s    z'Test_next.test_shadowing_assign_tuple_1c             C   s   d}|   |d¡ d S )Nz‹
            (a, (b, (next, c)), a) = foo

            class A:
                def next(self, a, b):
                    pass
            z)Calls to builtin next() possibly shadowed)r"   )r   rN   r   r   r   Útest_shadowing_assign_tuple_2w	  s    z'Test_next.test_shadowing_assign_tuple_2c             C   s   d}|   |d¡ d S )Nz~
            [next, a] = foo

            class A:
                def next(self, a, b):
                    pass
            z)Calls to builtin next() possibly shadowed)r"   )r   rN   r   r   r   Útest_shadowing_assign_list_1	  s    z&Test_next.test_shadowing_assign_list_1c             C   s   d}|   |d¡ d S )Nz‹
            [a, [b, [next, c]], a] = foo

            class A:
                def next(self, a, b):
                    pass
            z)Calls to builtin next() possibly shadowed)r"   )r   rN   r   r   r   Útest_shadowing_assign_list_2‹	  s    z&Test_next.test_shadowing_assign_list_2c             C   s   d}|   |d¡ d S )Nz 
            def foo():
                __builtin__.next = foo

            class A:
                def next(self, a, b):
                    pass
            z)Calls to builtin next() possibly shadowed)r"   )r   rN   r   r   r   Útest_builtin_assign•	  s    zTest_next.test_builtin_assignc             C   s   d}|   |d¡ d S )Nz¥
            def foo():
                (a, __builtin__.next) = foo

            class A:
                def next(self, a, b):
                    pass
            z)Calls to builtin next() possibly shadowed)r"   )r   rN   r   r   r   Útest_builtin_assign_in_tuple 	  s    z&Test_next.test_builtin_assign_in_tuplec             C   s   d}|   |d¡ d S )Nz¥
            def foo():
                [a, __builtin__.next] = foo

            class A:
                def next(self, a, b):
                    pass
            z)Calls to builtin next() possibly shadowed)r"   )r   rN   r   r   r   Útest_builtin_assign_in_list«	  s    z%Test_next.test_builtin_assign_in_listc             C   s   d}|   |¡ d S )Nz–
            def foo():
                A.next = foo

            class A:
                def next(self, a, b):
                    pass
            )r    )r   rN   r   r   r   Útest_assign_to_next¶	  s    zTest_next.test_assign_to_nextc             C   s   d}|   |¡ d S )Nz›
            def foo():
                (a, A.next) = foo

            class A:
                def next(self, a, b):
                    pass
            )r    )r   rN   r   r   r   Útest_assign_to_next_in_tupleÁ	  s    z&Test_next.test_assign_to_next_in_tuplec             C   s   d}|   |¡ d S )Nz›
            def foo():
                [a, A.next] = foo

            class A:
                def next(self, a, b):
                    pass
            )r    )r   rN   r   r   r   Útest_assign_to_next_in_listÌ	  s    z%Test_next.test_assign_to_next_in_listc             C   s   d}|   |d¡ d S )Nz…
            import foo.bar as next

            class A:
                def next(self, a, b):
                    pass
            z)Calls to builtin next() possibly shadowed)r"   )r   rN   r   r   r   Útest_shadowing_import_1×	  s    z!Test_next.test_shadowing_import_1c             C   s   d}|   |d¡ d S )NzŠ
            import bar, bar.foo as next

            class A:
                def next(self, a, b):
                    pass
            z)Calls to builtin next() possibly shadowed)r"   )r   rN   r   r   r   Útest_shadowing_import_2á	  s    z!Test_next.test_shadowing_import_2c             C   s   d}|   |d¡ d S )Nz
            import bar, bar.foo as next, baz

            class A:
                def next(self, a, b):
                    pass
            z)Calls to builtin next() possibly shadowed)r"   )r   rN   r   r   r   Útest_shadowing_import_3ë	  s    z!Test_next.test_shadowing_import_3c             C   s   d}|   |d¡ d S )Nz
            from x import next

            class A:
                def next(self, a, b):
                    pass
            z)Calls to builtin next() possibly shadowed)r"   )r   rN   r   r   r   Útest_shadowing_import_from_1õ	  s    z&Test_next.test_shadowing_import_from_1c             C   s   d}|   |d¡ d S )Nzƒ
            from x.a import next

            class A:
                def next(self, a, b):
                    pass
            z)Calls to builtin next() possibly shadowed)r"   )r   rN   r   r   r   Útest_shadowing_import_from_2ÿ	  s    z&Test_next.test_shadowing_import_from_2c             C   s   d}|   |d¡ d S )Nz‡
            from x import a, next, b

            class A:
                def next(self, a, b):
                    pass
            z)Calls to builtin next() possibly shadowed)r"   )r   rN   r   r   r   Útest_shadowing_import_from_3	
  s    z&Test_next.test_shadowing_import_from_3c             C   s   d}|   |d¡ d S )Nz‰
            from x.a import a, next, b

            class A:
                def next(self, a, b):
                    pass
            z)Calls to builtin next() possibly shadowed)r"   )r   rN   r   r   r   Útest_shadowing_import_from_4
  s    z&Test_next.test_shadowing_import_from_4c             C   s   d}|   |d¡ d S )Nz
            def next(a):
                pass

            class A:
                def next(self, a, b):
                    pass
            z)Calls to builtin next() possibly shadowed)r"   )r   rN   r   r   r   Útest_shadowing_funcdef_1
  s    z"Test_next.test_shadowing_funcdef_1c             C   s   d}d}|   ||d¡ d S )Nz¡
            def next(a):
                pass

            class A:
                def next(self):
                    pass

            it.next()
            z©
            def next(a):
                pass

            class A:
                def __next__(self):
                    pass

            it.__next__()
            z)Calls to builtin next() possibly shadowed)r!   )r   r4   r5   r   r   r   Útest_shadowing_funcdef_2(
  s    

z"Test_next.test_shadowing_funcdef_2c             C   s   d}|   |d¡ d S )NzW
            def f():
                global next
                next = 5
            z)Calls to builtin next() possibly shadowed)r"   )r   rN   r   r   r   Útest_shadowing_global_1?
  s    z!Test_next.test_shadowing_global_1c             C   s   d}|   |d¡ d S )Nz]
            def f():
                global a, next, b
                next = 5
            z)Calls to builtin next() possibly shadowed)r"   )r   rN   r   r   r   Útest_shadowing_global_2G
  s    z!Test_next.test_shadowing_global_2c             C   s   d}|   |d¡ d S )Nze
            for next in it():
                pass

            b = 5
            c = 6
            z)Calls to builtin next() possibly shadowed)r"   )r   rN   r   r   r   Útest_shadowing_for_simpleO
  s    z#Test_next.test_shadowing_for_simplec             C   s   d}|   |d¡ d S )Nzh
            for next, b in it():
                pass

            b = 5
            c = 6
            z)Calls to builtin next() possibly shadowed)r"   )r   rN   r   r   r   Útest_shadowing_for_tuple_1Y
  s    z$Test_next.test_shadowing_for_tuple_1c             C   s   d}|   |d¡ d S )Nzp
            for a, (next, c), b in it():
                pass

            b = 5
            c = 6
            z)Calls to builtin next() possibly shadowed)r"   )r   rN   r   r   r   Útest_shadowing_for_tuple_2c
  s    z$Test_next.test_shadowing_for_tuple_2c             C   s   d}d}|   ||¡ d S )Nzgnext = g.nextzgnext = g.__next__)r   )r   r4   r5   r   r   r   Útest_noncall_access_1m
  s    zTest_next.test_noncall_access_1c             C   s   d}d}|   ||¡ d S )Nzf(g.next + 5)zf(g.__next__ + 5))r   )r   r4   r5   r   r   r   Útest_noncall_access_2r
  s    zTest_next.test_noncall_access_2c             C   s   d}d}|   ||¡ d S )Nzf(g().next + 5)zf(g().__next__ + 5))r   )r   r4   r5   r   r   r   Útest_noncall_access_3w
  s    zTest_next.test_noncall_access_3N)1r0   r%   r1   r	   r:   r;   r<   r=   r>   r?   r%  r&  r'  r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  r:  r;  r<  r=  r>  r?  r@  rA  rB  rC  rD  rE  rF  rG  rH  rI  rJ  rK  r   r   r   r   r#  ¢  s\   














r#  c               @   s8   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )ÚTest_nonzeroZnonzeroc             C   s   d}d}|   ||¡ d S )Nzb
            class A:
                def __nonzero__(self):
                    pass
            z_
            class A:
                def __bool__(self):
                    pass
            )r   )r   r4   r5   r   r   r   r:   
  s    zTest_nonzero.test_1c             C   s   d}d}|   ||¡ d S )Nzj
            class A(object):
                def __nonzero__(self):
                    pass
            zg
            class A(object):
                def __bool__(self):
                    pass
            )r   )r   r4   r5   r   r   r   r;   Œ
  s    zTest_nonzero.test_2c             C   s   d}|   |¡ d S )Nzg
            class A(object):
                def __bool__(self):
                    pass
            )r    )r   rN   r   r   r   rO   ™
  s    zTest_nonzero.test_unchanged_1c             C   s   d}|   |¡ d S )Nzm
            class A(object):
                def __nonzero__(self, a):
                    pass
            )r    )r   rN   r   r   r   rP   ¡
  s    zTest_nonzero.test_unchanged_2c             C   s   d}|   |¡ d S )NzE
            def __nonzero__(self):
                pass
            )r    )r   rN   r   r   r   Útest_unchanged_func©
  s    z Test_nonzero.test_unchanged_funcN)	r0   r%   r1   r	   r:   r;   rO   rP   rM  r   r   r   r   rL  |
  s   rL  c               @   sx   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
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTest_numliteralsZnumliteralsc             C   s   d}d}|   ||¡ d S )NZ0755Ú0o755)r   )r   r4   r5   r   r   r   Útest_octal_1³
  s    zTest_numliterals.test_octal_1c             C   s   d}d}|   ||¡ d S )Nza = 12Lza = 12)r   )r   r4   r5   r   r   r   Útest_long_int_1¸
  s    z Test_numliterals.test_long_int_1c             C   s   d}d}|   ||¡ d S )Nza = 12lza = 12)r   )r   r4   r5   r   r   r   Útest_long_int_2½
  s    z Test_numliterals.test_long_int_2c             C   s   d}d}|   ||¡ d S )Nz	b = 0x12lzb = 0x12)r   )r   r4   r5   r   r   r   Útest_long_hexÂ
  s    zTest_numliterals.test_long_hexc             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nzb =   0x12Lz
b =   0x12zb = 0755 # spamzb = 0o755 # spam)r   )r   r4   r5   r   r   r   Útest_comments_and_spacingÇ
  s    z*Test_numliterals.test_comments_and_spacingc             C   s   d}|   |¡ d S )NÚ5)r    )r   rN   r   r   r   Útest_unchanged_intÐ
  s    z#Test_numliterals.test_unchanged_intc             C   s   d}|   |¡ d S )Nz5.0)r    )r   rN   r   r   r   Útest_unchanged_floatÔ
  s    z%Test_numliterals.test_unchanged_floatc             C   s   d}|   |¡ d S )NrO  )r    )r   rN   r   r   r   Útest_unchanged_octalØ
  s    z%Test_numliterals.test_unchanged_octalc             C   s   d}|   |¡ d S )NZ0xABC)r    )r   rN   r   r   r   Útest_unchanged_hexÜ
  s    z#Test_numliterals.test_unchanged_hexc             C   s   d}|   |¡ d S )Nz5.0e10)r    )r   rN   r   r   r   Útest_unchanged_expà
  s    z#Test_numliterals.test_unchanged_expc             C   s   d}|   |¡ d S )Nz5 + 4j)r    )r   rN   r   r   r   Útest_unchanged_complex_intä
  s    z+Test_numliterals.test_unchanged_complex_intc             C   s   d}|   |¡ d S )Nz
5.4 + 4.9j)r    )r   rN   r   r   r   Útest_unchanged_complex_floatè
  s    z-Test_numliterals.test_unchanged_complex_floatc             C   s    d}|   |¡ d}|   |¡ d S )NZ4jz4.4j)r    )r   rN   r   r   r   Útest_unchanged_complex_bareì
  s    
z,Test_numliterals.test_unchanged_complex_bareN)r0   r%   r1   r	   rP  rQ  rR  rS  rT  rV  rW  rX  rY  rZ  r[  r\  r]  r   r   r   r   rN  °
  s   	rN  c               @   s8   e Zd ZdZddiZdd„ Zdd„ Zdd	„ Zd
d„ ZdS )ÚTest_renamesÚrenamesÚsys)ZmaxintÚmaxsizec             C   sZ   xTt | j ¡ ƒD ]B\}\}}d||f }d||f }|  ||¡ d| }|  |¡ qW d S )Nzfrom %s import %szfrom foo import %s)Úlistrî   rï   r   r    )r   Úmodrð   rñ   r4   r5   rN   r   r   r   ró   ø
  s    zTest_renames.test_import_fromc             C   sH   xBt | j ¡ ƒD ]0\}\}}d||f }d||f }|  ||¡ qW d S )Nzfrom %s import %s as foo_bar)rb  rî   rï   r   )r   rc  rð   rñ   r4   r5   r   r   r   rõ     s    z Test_renames.test_import_from_asc             C   sP   xJt | j ¡ ƒD ]8\}\}}d||||f }d||||f }|  ||¡ qW d S )NzJ
                import %s
                foo(%s, %s.%s)
                )rb  rî   rï   r   )r   rc  rð   rñ   r4   r5   r   r   r   r÷     s    z%Test_renames.test_import_module_usagec             C   sP   xJt | j ¡ ƒD ]8\}\}}d||||f }d||||f }|  ||¡ qW d S )NzO
                from %s import %s
                foo(%s, %s)
                )rb  rî   rï   r   )r   rc  rð   rñ   r4   r5   r   r   r   ÚXXX_test_from_import_usage  s    z'Test_renames.XXX_test_from_import_usageN)	r0   r%   r1   r	   rî   ró   rõ   r÷   rd  r   r   r   r   r^  ò
  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
dd„ Zdd„ Zdd„ ZdS )ÚTest_unicodeZunicodec             C   s@   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )Nzunicode( x)zstr( x)z unicode(x )z str(x )z u'h'z 'h')r   )r   r4   r5   r   r   r   Útest_whitespace#  s    zTest_unicode.test_whitespacec             C   s   d}d}|   ||¡ d S )Nzunicode(x, y, z)zstr(x, y, z))r   )r   r4   r5   r   r   r   Útest_unicode_call0  s    zTest_unicode.test_unicode_callc             C   s   d}d}|   ||¡ d S )Nzunichr(u'h')zchr('h'))r   )r   r4   r5   r   r   r   Útest_unichr5  s    zTest_unicode.test_unichrc             C   s   d}d}|   ||¡ d S )Nzu"x"z"x")r   )r   r4   r5   r   r   r   Útest_unicode_literal_1:  s    z#Test_unicode.test_unicode_literal_1c             C   s   d}d}|   ||¡ d S )Nzur'x'zr'x')r   )r   r4   r5   r   r   r   Útest_unicode_literal_2?  s    z#Test_unicode.test_unicode_literal_2c             C   s   d}d}|   ||¡ d S )Nz
UR'''x''' z	R'''x''' )r   )r   r4   r5   r   r   r   Útest_unicode_literal_3D  s    z#Test_unicode.test_unicode_literal_3c             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nz'\\\u20ac\U0001d121\\u20ac'z'\\\\u20ac\\U0001d121\\u20ac'zr'\\\u20ac\U0001d121\\u20ac')r   )r   r4   r5   r   r   r   Útest_native_literal_escape_uI  s    z)Test_unicode.test_native_literal_escape_uc             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nzb'\\\u20ac\U0001d121\\u20ac'zbr'\\\u20ac\U0001d121\\u20ac')r   )r   r4   r5   r   r   r   Útest_bytes_literal_escape_uR  s    z(Test_unicode.test_bytes_literal_escape_uc             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nzu'\\\u20ac\U0001d121\\u20ac'z'\\\u20ac\U0001d121\\u20ac'zur'\\\u20ac\U0001d121\\u20ac'zr'\\\u20ac\U0001d121\\u20ac')r   )r   r4   r5   r   r   r   Útest_unicode_literal_escape_u[  s    z*Test_unicode.test_unicode_literal_escape_uc             C   s@   d}|d }|d }|   ||¡ |d }|d }|   ||¡ d S )Nz(from __future__ import unicode_literals
z'\\\u20ac\U0001d121\\u20ac'zr'\\\u20ac\U0001d121\\u20ac')r   )r   Úfr4   r5   r   r   r   Ú$test_native_unicode_literal_escape_ud  s    z1Test_unicode.test_native_unicode_literal_escape_uN)r0   r%   r1   r	   rf  rg  rh  ri  rj  rk  rl  rm  rn  rp  r   r   r   r   re     s   			re  c               @   s8   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )ÚTest_filterÚfilterc             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nz#x =   filter(    foo,     'abc'   )z)x =   list(filter(    foo,     'abc'   ))zx =   filter(  None , 'abc'  )z x =   [_f for _f in 'abc' if _f])r   )r   r4   r5   r   r   r   rc   r  s    z$Test_filter.test_prefix_preservationc             C   sT   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )Nzx = filter(None, 'abc')zx = [_f for _f in 'abc' if _f]zx = len(filter(f, 'abc'))zx = len(list(filter(f, 'abc')))z)x = filter(lambda x: x%2 == 0, range(10))z&x = [x for x in range(10) if x%2 == 0]z+x = filter(lambda (x): x%2 == 0, range(10)))r   )r   r4   r5   r   r   r   Útest_filter_basic{  s    zTest_filter.test_filter_basicc             C   sT   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )Nzx = filter(None, 'abc')[0]z!x = [_f for _f in 'abc' if _f][0]zx = len(filter(f, 'abc')[0])z"x = len(list(filter(f, 'abc'))[0])z,x = filter(lambda x: x%2 == 0, range(10))[0]z)x = [x for x in range(10) if x%2 == 0][0]z.x = filter(lambda (x): x%2 == 0, range(10))[0])r   )r   r4   r5   r   r   r   Útest_filter_trailers  s    z Test_filter.test_filter_trailersc             C   s  d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d	}|   |¡ d
}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d S )Nzb.join(filter(f, 'abc'))z#(a + foo(5)).join(filter(f, 'abc'))ziter(filter(f, 'abc'))zlist(filter(f, 'abc'))zlist(filter(f, 'abc'))[0]zset(filter(f, 'abc'))zset(filter(f, 'abc')).pop()ztuple(filter(f, 'abc'))zany(filter(f, 'abc'))zall(filter(f, 'abc'))zsum(filter(f, 'abc'))zsorted(filter(f, 'abc'))z"sorted(filter(f, 'abc'), key=blah)z%sorted(filter(f, 'abc'), key=blah)[0]zenumerate(filter(f, 'abc'))z$enumerate(filter(f, 'abc'), start=1)zfor i in filter(f, 'abc'): passz[x for x in filter(f, 'abc')]z(x for x in filter(f, 'abc')))r    )r   r5   r   r   r   Útest_filter_nochangeŸ  sL    

















z Test_filter.test_filter_nochangec             C   s4   d}|   |¡ d}d}|  ||¡ d}|   |¡ d S )Nz:from future_builtins import spam, filter; filter(f, 'ham')z6from future_builtins import spam; x = filter(f, 'abc')z<from future_builtins import spam; x = list(filter(f, 'abc'))z/from future_builtins import *; filter(f, 'ham'))r    r   )r   r5   r4   r   r   r   Útest_future_builtinsÇ  s    
z Test_filter.test_future_builtinsN)	r0   r%   r1   r	   rc   rs  rt  ru  rv  r   r   r   r   rq  o  s   	(rq  c                   sX   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Z‡  ZS )ÚTest_mapr  c                s&   |   d| |¡ tt| ƒ ||¡ d S )Nz!from future_builtins import map; )r    rß   rw  r   )r   r4   r5   )r$   r   r   r   Õ  s    zTest_map.checkc             C   s   d}d}|   ||¡ d S )Nzx =    map(   f,    'abc'   )z#x =    list(map(   f,    'abc'   )))r   )r   r4   r5   r   r   r   rc   Ù  s    z!Test_map.test_prefix_preservationc             C   sT   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )	Nzx = map(f, 'abc')[0]zx = list(map(f, 'abc'))[0]zx = map(None, l)[0]zx = list(l)[0]zx = map(lambda x:x, l)[0]zx = [x for x in l][0]zx = map(f, 'abc')[0][1]zx = list(map(f, 'abc'))[0][1])r   )r   r4   r5   r   r   r   Útest_map_trailersÞ  s    zTest_map.test_map_trailersc             C   s   d}d}|   ||¡ d S )Nzx = map(f, 'abc')   #   fooz!x = list(map(f, 'abc'))   #   foo)r   )r   r4   r5   r   r   r   r³   ï  s    zTest_map.test_trailing_commentc             C   s   d}|   |d¡ d S )Nzx = map(None, a, b, c)z5cannot convert map(None, ...) with multiple arguments)r"   )r   rN   r   r   r   Ú!test_None_with_multiple_argumentsô  s    z*Test_map.test_None_with_multiple_argumentsc             C   s~   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d	}d}|   ||¡ d
}d}|  ||d¡ d S )Nzx = map(f, 'abc')zx = list(map(f, 'abc'))zx = len(map(f, 'abc', 'def'))z#x = len(list(map(f, 'abc', 'def')))zx = map(None, 'abc')zx = list('abc')z x = map(lambda x: x+1, range(4))zx = [x+1 for x in range(4)]z"x = map(lambda (x): x+1, range(4))zG
            foo()
            # foo
            map(f, x)
            zM
            foo()
            # foo
            list(map(f, x))
            zYou should use a for loop here)r   r!   )r   r4   r5   r   r   r   Útest_map_basicù  s$    zTest_map.test_map_basicc             C   s  d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d	}|   |¡ d
}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d S )Nzb.join(map(f, 'abc'))z (a + foo(5)).join(map(f, 'abc'))ziter(map(f, 'abc'))zlist(map(f, 'abc'))zlist(map(f, 'abc'))[0]zset(map(f, 'abc'))zset(map(f, 'abc')).pop()ztuple(map(f, 'abc'))zany(map(f, 'abc'))zall(map(f, 'abc'))zsum(map(f, 'abc'))zsorted(map(f, 'abc'))zsorted(map(f, 'abc'), key=blah)z"sorted(map(f, 'abc'), key=blah)[0]zenumerate(map(f, 'abc'))z!enumerate(map(f, 'abc'), start=1)zfor i in map(f, 'abc'): passz[x for x in map(f, 'abc')]z(x for x in map(f, 'abc')))r    )r   r5   r   r   r   Útest_map_nochange  sL    

















zTest_map.test_map_nochangec             C   s4   d}|   |¡ d}d}|  ||¡ d}|   |¡ d S )Nz:from future_builtins import spam, map, eggs; map(f, 'ham')z9from future_builtins import spam, eggs; x = map(f, 'abc')z?from future_builtins import spam, eggs; x = list(map(f, 'abc'))z,from future_builtins import *; map(f, 'ham'))r    r   )r   r5   r4   r   r   r   rv  C  s    
zTest_map.test_future_builtins)r0   r%   r1   r	   r   rc   rx  r³   ry  rz  r{  rv  rá   r   r   )r$   r   rw  Ò  s   "(rw  c                   s@   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Zdd	„ Zd
d„ Z‡  Z	S )ÚTest_zipÚzipc                s&   |   d| |¡ tt| ƒ ||¡ d S )Nz!from future_builtins import zip; )r    rß   r|  r   )r   r4   r5   )r$   r   r   r   Q  s    zTest_zip.checkc             C   s@   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )Nz	x = zip()zx = list(zip())zx = zip(a, b, c)zx = list(zip(a, b, c))zx = len(zip(a, b))zx = len(list(zip(a, b))))r   )r   r4   r5   r   r   r   Útest_zip_basicU  s    zTest_zip.test_zip_basicc             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nzx = zip(a, b, c)[0]zx = list(zip(a, b, c))[0]zx = zip(a, b, c)[0][1]zx = list(zip(a, b, c))[0][1])r   )r   r4   r5   r   r   r   Útest_zip_trailersb  s    zTest_zip.test_zip_trailersc             C   s  d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d	}|   |¡ d
}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d S )Nzb.join(zip(a, b))z(a + foo(5)).join(zip(a, b))ziter(zip(a, b))zlist(zip(a, b))zlist(zip(a, b))[0]zset(zip(a, b))zset(zip(a, b)).pop()ztuple(zip(a, b))zany(zip(a, b))zall(zip(a, b))zsum(zip(a, b))zsorted(zip(a, b))zsorted(zip(a, b), key=blah)zsorted(zip(a, b), key=blah)[0]zenumerate(zip(a, b))zenumerate(zip(a, b), start=1)zfor i in zip(a, b): passz[x for x in zip(a, b)]z(x for x in zip(a, b)))r    )r   r5   r   r   r   Útest_zip_nochangek  sL    

















zTest_zip.test_zip_nochangec             C   s4   d}|   |¡ d}d}|  ||¡ d}|   |¡ d S )Nz6from future_builtins import spam, zip, eggs; zip(a, b)z5from future_builtins import spam, eggs; x = zip(a, b)z;from future_builtins import spam, eggs; x = list(zip(a, b))z(from future_builtins import *; zip(a, b))r    r   )r   r5   r4   r   r   r   rv  “  s    
zTest_zip.test_future_builtins)
r0   r%   r1   r	   r   r~  r  r€  rv  rá   r   r   )r$   r   r|  N  s   	(r|  c               @   s   e Zd ZdZdd„ ZdS )ÚTest_standarderrorZstandarderrorc             C   s@   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )Nzx =    StandardError()zx =    Exception()zx = StandardError(a, b, c)zx = Exception(a, b, c)zf(2 + StandardError(a, b, c))zf(2 + Exception(a, b, c)))r   )r   r4   r5   r   r   r   r]   ¡  s    zTest_standarderror.testN)r0   r%   r1   r	   r]   r   r   r   r   r  ž  s   r  c               @   s   e Zd ZdZdd„ ZdS )Ú
Test_typesÚtypesc             C   s   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d	}d}|   ||¡ d
}d}|   ||¡ d}d}|   ||¡ d S )Nztypes.StringTypeÚbytesztypes.DictTyper²   ztypes . IntTypeÚintztypes.ListTyperb  ztypes.LongTypeztypes.NoneTypez
type(None)ztypes.StringTypesz(str,))r   )r   r4   r5   r   r   r   Útest_basic_types_convert±  s*    z#Test_types.test_basic_types_convertN)r0   r%   r1   r	   r†  r   r   r   r   r‚  ®  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
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 )'ÚTest_idiomsZidiomsc             C   s@   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )Nzwhile 1: foo()zwhile True: foo()zwhile   1: foo()zwhile   True: foo()z8
            while 1:
                foo()
            z;
            while True:
                foo()
            )r   )r   r4   r5   r   r   r   Ú
test_whileÑ  s    zTest_idioms.test_whilec             C   s<   d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d S )Nzwhile 11: foo()zwhile 0: foo()zwhile foo(): foo()zwhile []: foo())r    )r   rN   r   r   r   Útest_while_unchangedä  s    


z Test_idioms.test_while_unchangedc             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nztype(x) == Tzisinstance(x, T)zif   type(x) == T: passzif   isinstance(x, T): pass)r   )r   r4   r5   r   r   r   Útest_eq_simpleñ  s    zTest_idioms.test_eq_simplec             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )NzT == type(x)zisinstance(x, T)zif   T == type(x): passzif   isinstance(x, T): pass)r   )r   r4   r5   r   r   r   Útest_eq_reverseú  s    zTest_idioms.test_eq_reversec             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nztype(x+y) == d.get('T')zisinstance(x+y, d.get('T'))ztype(   x  +  y) == d.get('T')zisinstance(x  +  y, d.get('T')))r   )r   r4   r5   r   r   r   Útest_eq_expression  s    zTest_idioms.test_eq_expressionc             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nztype(x) is Tzisinstance(x, T)zif   type(x) is T: passzif   isinstance(x, T): pass)r   )r   r4   r5   r   r   r   Útest_is_simple  s    zTest_idioms.test_is_simplec             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )NzT is type(x)zisinstance(x, T)zif   T is type(x): passzif   isinstance(x, T): pass)r   )r   r4   r5   r   r   r   Útest_is_reverse  s    zTest_idioms.test_is_reversec             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nztype(x+y) is d.get('T')zisinstance(x+y, d.get('T'))ztype(   x  +  y) is d.get('T')zisinstance(x  +  y, d.get('T')))r   )r   r4   r5   r   r   r   Útest_is_expression  s    zTest_idioms.test_is_expressionc             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nztype(x) is not Tznot isinstance(x, T)zif   type(x) is not T: passzif   not isinstance(x, T): pass)r   )r   r4   r5   r   r   r   Útest_is_not_simple'  s    zTest_idioms.test_is_not_simplec             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )NzT is not type(x)znot isinstance(x, T)zif   T is not type(x): passzif   not isinstance(x, T): pass)r   )r   r4   r5   r   r   r   Útest_is_not_reverse0  s    zTest_idioms.test_is_not_reversec             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nztype(x+y) is not d.get('T')znot isinstance(x+y, d.get('T'))z"type(   x  +  y) is not d.get('T')z#not isinstance(x  +  y, d.get('T')))r   )r   r4   r5   r   r   r   Útest_is_not_expression9  s    z"Test_idioms.test_is_not_expressionc             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nztype(x) != Tznot isinstance(x, T)zif   type(x) != T: passzif   not isinstance(x, T): pass)r   )r   r4   r5   r   r   r   Útest_ne_simpleB  s    zTest_idioms.test_ne_simplec             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )NzT != type(x)znot isinstance(x, T)zif   T != type(x): passzif   not isinstance(x, T): pass)r   )r   r4   r5   r   r   r   Útest_ne_reverseK  s    zTest_idioms.test_ne_reversec             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nztype(x+y) != d.get('T')znot isinstance(x+y, d.get('T'))ztype(   x  +  y) != d.get('T')z#not isinstance(x  +  y, d.get('T')))r   )r   r4   r5   r   r   r   Útest_ne_expressionT  s    zTest_idioms.test_ne_expressionc             C   s   d}|   |¡ d S )Nztype(x).__name__)r    )r   r5   r   r   r   Útest_type_unchanged]  s    zTest_idioms.test_type_unchangedc             C   s¤   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d	}d
}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )NzM
            v = list(t)
            v.sort()
            foo(v)
            z:
            v = sorted(t)
            foo(v)
            zV
            v = list(foo(b) + d)
            v.sort()
            foo(v)
            zC
            v = sorted(foo(b) + d)
            foo(v)
            zn
            while x:
                v = list(t)
                v.sort()
                foo(v)
            zW
            while x:
                v = sorted(t)
                foo(v)
            z_
            v = list(t)
            # foo
            v.sort()
            foo(v)
            zL
            v = sorted(t)
            # foo
            foo(v)
            zP
            v = list(   t)
            v.sort()
            foo(v)
            z=
            v = sorted(   t)
            foo(v)
            zl
            try:
                m = list(s)
                m.sort()
            except: pass
            zU
            try:
                m = sorted(s)
            except: pass
            z‚
            try:
                m = list(s)
                # foo
                m.sort()
            except: pass
            zk
            try:
                m = sorted(s)
                # foo
            except: pass
            zI
            m = list(s)
            # more comments
            m.sort()z6
            m = sorted(s)
            # more comments)r   )r   r4   r5   r   r   r   Útest_sort_list_calla  s0    zTest_idioms.test_sort_list_callc             C   s   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d	}d
}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )NzG
            v = t
            v.sort()
            foo(v)
            z:
            v = sorted(t)
            foo(v)
            zL
            v = foo(b)
            v.sort()
            foo(v)
            z?
            v = sorted(foo(b))
            foo(v)
            zN
            v = b.keys()
            v.sort()
            foo(v)
            zA
            v = sorted(b.keys())
            foo(v)
            zP
            v = foo(b) + d
            v.sort()
            foo(v)
            zC
            v = sorted(foo(b) + d)
            foo(v)
            zh
            while x:
                v = t
                v.sort()
                foo(v)
            zW
            while x:
                v = sorted(t)
                foo(v)
            zY
            v = t
            # foo
            v.sort()
            foo(v)
            zL
            v = sorted(t)
            # foo
            foo(v)
            zI
            v =   t
            v.sort()
            foo(v)
            z<
            v =   sorted(t)
            foo(v)
            )r   )r   r4   r5   r   r   r   Útest_sort_simple_exprÅ  s*    z!Test_idioms.test_sort_simple_exprc             C   s    d}|   |¡ d}|   |¡ d S )NzM
            v = list(t)
            w.sort()
            foo(w)
            zN
            v = list(t)
            v.sort(u)
            foo(v)
            )r    )r   rN   r   r   r   Útest_sort_unchanged  s    
zTest_idioms.test_sort_unchangedN)r0   r%   r1   r	   rˆ  r‰  rŠ  r‹  rŒ  r  rŽ  r  r  r‘  r’  r“  r”  r•  r–  r—  r˜  r™  r   r   r   r   r‡  Î  s&   												dRr‡  c               @   s   e Zd ZdZdd„ ZdS )ÚTest_basestringZ
basestringc             C   s   d}d}|   ||¡ d S )Nzisinstance(x, basestring)zisinstance(x, str))r   )r   r4   r5   r   r   r   Útest_basestring)  s    zTest_basestring.test_basestringN)r0   r%   r1   r	   r›  r   r   r   r   rš  &  s   rš  c               @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚTest_bufferÚbufferc             C   s   d}d}|   ||¡ d S )Nzx = buffer(y)zx = memoryview(y))r   )r   r4   r5   r   r   r   Útest_buffer1  s    zTest_buffer.test_bufferc             C   s   d}d}|   ||¡ d S )Nzbuffer(y)[4:5]zmemoryview(y)[4:5])r   )r   r4   r5   r   r   r   Útest_slicing6  s    zTest_buffer.test_slicingN)r0   r%   r1   r	   rž  rŸ  r   r   r   r   rœ  .  s   rœ  c               @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚTest_futureZfuturec             C   s@   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )Nzfrom __future__ import bracesr   z'# comment
from __future__ import bracesz
# comment
z'from __future__ import braces
# commentz

# comment)r   )r   r4   r5   r   r   r   Útest_future>  s    zTest_future.test_futurec             C   s   |   d¡ d S )Nrj   )r/   )r   r   r   r   Útest_run_orderK  s    zTest_future.test_run_orderN)r0   r%   r1   r	   r¡  r¢  r   r   r   r   r   ;  s   r   c               @   sP   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
dd„ ZdS )ÚTest_itertoolsÚ	itertoolsc             C   sD   x>dD ]6}x0dD ](}||d |  }|| }|   ||¡ qW qW d S )N)z
itertools.r   )r  rr  r}  Úi)r   )r   r   r   r¥  ro  r4   r5   r   r   r   ÚcheckallQ  s
    

zTest_itertools.checkallc             C   s   d}d}|   ||¡ d S )Nzitertools.izip(a, b)z	zip(a, b))r   )r   r4   r5   r   r   r   Útest_0[  s    zTest_itertools.test_0c             C   s   d}d}|   ||¡ d S )Nz%s(f, a))r¦  )r   r4   r5   r   r   r   r:   b  s    zTest_itertools.test_1c             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nzitertools.ifilterfalse(a, b)zitertools.filterfalse(a, b)zitertools.izip_longest(a, b)zitertools.zip_longest(a, b))r   )r   r4   r5   r   r   r   Útest_qualifiedg  s    zTest_itertools.test_qualifiedc             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nzifilterfalse(a, b)zfilterfalse(a, b)zizip_longest(a, b)zzip_longest(a, b))r   )r   r4   r5   r   r   r   r;   p  s    zTest_itertools.test_2c             C   s   d}d}|   ||¡ d S )Nz    %s(f, a))r¦  )r   r4   r5   r   r   r   rY   y  s    zTest_itertools.test_space_1c             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nz     itertools.ifilterfalse(a, b)z    itertools.filterfalse(a, b)z     itertools.izip_longest(a, b)z    itertools.zip_longest(a, b))r   )r   r4   r5   r   r   r   rZ   ~  s    zTest_itertools.test_space_2c             C   s   |   ddd¡ d S )Nr  r}  rr  )r/   )r   r   r   r   r¢  ‡  s    zTest_itertools.test_run_orderN)r0   r%   r1   r	   r¦  r§  r:   r¨  r;   rY   rZ   r¢  r   r   r   r   r£  N  s   
			r£  c               @   sH   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
dS )ÚTest_itertools_importsZitertools_importsc             C   s@   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )Nz%from itertools import imap, izip, foozfrom itertools import fooz*from itertools import bar, imap, izip, foozfrom itertools import bar, fooz'from itertools import chain, imap, izipzfrom itertools import chain)r   )r   r4   r5   r   r   r   Útest_reducedŽ  s    z#Test_itertools_imports.test_reducedc             C   s   d}d}|   ||¡ d S )Nz%#foo
from itertools import imap, izipz#foo
)r   )r   r4   r5   r   r   r   Útest_comments›  s    z$Test_itertools_imports.test_commentsc             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nz from itertools import imap, izipr   zfrom itertools import izip)r   )r   r4   r5   r   r   r   Ú	test_none   s    z Test_itertools_imports.test_nonec             C   sb   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}|  |¡ d S )Nz-from itertools import izip, bar as bang, imapz!from itertools import bar as bangz-from itertools import izip as _zip, imap, barzfrom itertools import barz"from itertools import imap as _mapr   z0from itertools import imap as _map, izip as _zip)r   r    )r   r4   r5   rN   r   r   r   Útest_import_as©  s    z%Test_itertools_imports.test_import_asc             C   sr   xldD ]d}d|f }d|f }|   ||¡ d|f }d|f }|   ||¡ d|f }d|f }|   ||¡ qW d S )N)ÚfilterfalseÚzip_longestzfrom itertools import i%szfrom itertools import %sz$from itertools import imap, i%s, foozfrom itertools import %s, fooz#from itertools import bar, i%s, fooz"from itertools import bar, %s, foo)r   )r   rå   r4   r5   r   r   r   Útest_ifilter_and_zip_longest½  s    






z3Test_itertools_imports.test_ifilter_and_zip_longestc             C   s   d}|   |¡ d S )Nzfrom itertools import *)r    )r   rN   r   r   r   Útest_import_starË  s    z'Test_itertools_imports.test_import_starc             C   s   d}|   |¡ d S )Nzfrom itertools import foo)r    )r   rN   r   r   r   r`   Ð  s    z%Test_itertools_imports.test_unchangedN)r0   r%   r1   r	   rª  r«  r¬  r­  r°  r±  r`   r   r   r   r   r©  ‹  s   	r©  c                   s´   e Zd ZdZ‡ fdd„Zdd„ Z‡ f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‡  ZS )(ÚTest_importr  c                sD   t tˆ ƒ ¡  g ˆ _tƒ ˆ _dˆ _‡ fdd„}ddlm} ||_	d S )NTc                s   ˆ j  | ¡ ˆ jp| ˆ jkS )N)Úfiles_checkedr  Úalways_existsÚpresent_files)rå   )r   r   r   Úfake_existsß  s    z&Test_import.setUp.<locals>.fake_existsr   )Ú
fix_import)
rß   r²  r   r³  Úsetrµ  r´  Úlib2to3.fixesr·  Úexists)r   r¶  r·  )r$   )r   r   r   Ø  s    zTest_import.setUpc             C   s   ddl m} tjj|_d S )Nr   )r·  )r¹  r·  ÚosÚpathrº  )r   r·  r   r   r   ÚtearDownæ  s    zTest_import.tearDownc                s2   d| _ tt| ƒ ||¡ d| _ tt| ƒ |¡ d S )NTF)r´  rß   r²  r   r    )r   r4   r5   )r$   r   r   Ú
check_bothê  s    zTest_import.check_bothc                s¼   dd„ }d| _ tdgƒ| _dtjjdddd	f}|d
ƒd|dƒf}xv|D ]n‰ g | _ˆ | _|  d¡ tj 	ˆ ¡r~tj 	ˆ ¡d ‰ nd‰ t‡ fdd„|D ƒƒ}| 
d¡ |  t| jƒ|¡ qFW d S )Nc             S   s   t jj |  d¡¡S )Nú/)r»  r¼  Úpathsepr   Úsplit)r¼  r   r   r   Úpñ  s    z)Test_import.test_files_checked.<locals>.pFz__init__.pyz.pyz.pycz.soz.slz.pydz/spam/eggs.pyzni.pyz../../shrubbery.pyz
import jamz/jamZjamc             3   s   | ]}ˆ | V  qd S )Nr   )r&   Zext)rå   r   r   ú	<genexpr>  s    z1Test_import.test_files_checked.<locals>.<genexpr>)r´  r¸  rµ  r»  r¼  Úsepr³  r   r    ÚdirnameÚaddr   )r   rÂ  Zexpected_extensionsZnames_to_testZexpected_checksr   )rå   r   Útest_files_checkedð  s    


zTest_import.test_files_checkedc             C   s$   d}d| _ tdgƒ| _|  |¡ d S )Nz
import barFzbar.py)r´  r¸  rµ  r    )r   rN   r   r   r   Útest_not_in_package  s    zTest_import.test_not_in_packagec             C   s&   d}d| _ tddgƒ| _|  |¡ d S )Nz1from __future__ import absolute_import
import barFz__init__.pyzbar.py)r´  r¸  rµ  r    )r   rN   r   r   r   Ú!test_with_absolute_import_enabled  s    z-Test_import.test_with_absolute_import_enabledc             C   s,   d}d}d| _ tddgƒ| _|  ||¡ d S )Nz
import barzfrom . import barFz__init__.pyzbar.py)r´  r¸  rµ  r   )r   r4   r5   r   r   r   Útest_in_package  s
    zTest_import.test_in_packagec             C   s4   d}d}d| _ tddtjj gƒ| _|  ||¡ d S )Nz
import barzfrom . import barFz__init__.pyZbar)r´  r¸  r»  r¼  rÄ  rµ  r   )r   r4   r5   r   r   r   Útest_import_from_package  s
    z$Test_import.test_import_from_packagec             C   s   d}|   |¡ d S )Nzfrom . import bar)r    )r   rN   r   r   r   Útest_already_relative_import"  s    z(Test_import.test_already_relative_importc             C   s   d}d}|   ||¡ d S )Nzimport bar # Foozfrom . import bar # Foo)r   )r   r4   r5   r   r   r   Útest_comments_and_indent&  s    z$Test_import.test_comments_and_indentc             C   s@   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )Nzfrom foo import bar, bazzfrom .foo import bar, bazzfrom foo import barzfrom .foo import barzfrom foo import (bar, baz)zfrom .foo import (bar, baz))r¾  )r   r4   r5   r   r   r   Ú	test_from+  s    zTest_import.test_fromc             C   s   d}d}|   ||¡ d S )Nzfrom green.eggs import hamzfrom .green.eggs import ham)r¾  )r   r4   r5   r   r   r   Útest_dotted_from8  s    zTest_import.test_dotted_fromc             C   s   d}d}|   ||¡ d S )Nz"from green.eggs import ham as spamz#from .green.eggs import ham as spam)r¾  )r   r4   r5   r   r   r   Útest_from_as=  s    zTest_import.test_from_asc             C   sT   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )	Nz
import foozfrom . import foozimport foo, barzfrom . import foo, barzimport foo, bar, xzfrom . import foo, bar, xzimport x, y, zzfrom . import x, y, z)r¾  )r   r4   r5   r   r   r   Útest_importB  s    zTest_import.test_importc             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nzimport foo as xzfrom . import foo as xzimport a as b, b as c, c as dz$from . import a as b, b as c, c as d)r¾  )r   r4   r5   r   r   r   r­  S  s    zTest_import.test_import_asc             C   s(   d| _ tddgƒ| _d}|  |d¡ d S )NFzfoo.pyz__init__.pyzimport foo, barz#absolute and local imports together)r´  r¸  rµ  r"   )r   rN   r   r   r   Útest_local_and_absolute\  s    z#Test_import.test_local_and_absolutec             C   s   d}d}|   ||¡ d S )Nzimport foo.barzfrom . import foo.bar)r¾  )r   r4   r5   r   r   r   Útest_dotted_importc  s    zTest_import.test_dotted_importc             C   s   d}d}|   ||¡ d S )Nzimport foo.bar as bangzfrom . import foo.bar as bang)r¾  )r   r4   r5   r   r   r   Útest_dotted_import_ash  s    z!Test_import.test_dotted_import_asc             C   s   d}d}|   ||¡ d S )Nz1
        # prefix
        import foo.bar
        z8
        # prefix
        from . import foo.bar
        )r¾  )r   r4   r5   r   r   r   Útest_prefixm  s    zTest_import.test_prefix)r0   r%   r1   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²  Õ  s(   	r²  c               @   s8   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )ÚTest_set_literalZset_literalc             C   s°   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}|   ||¡ d}d}|   ||¡ d	}|   ||¡ d
}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )Nzset([1, 2, 3])z	{1, 2, 3}zset((1, 2, 3))z	set((1,))z{1}zset([1])zset((a, b))z{a, b}zset([a, b])zset((a*234, f(args=23)))z{a*234, f(args=23)}zset([a*23, f(23)])z{a*23, f(23)}zset([a-234**23])z{a-234**23})r   )r   r4   r5   r   r   r   r6   }  s2    zTest_set_literal.test_basicc             C   sT   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )	Nzset([x for x in y])z{x for x in y}zset([x for x in y if x == m])z{x for x in y if x == m}zset([x for x in y for a in b])z{x for x in y for a in b}zset([f(x) - 23 for x in y])z{f(x) - 23 for x in y})r   )r   r4   r5   r   r   r   Útest_listcomps   s    zTest_set_literal.test_listcompsc             C   s   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d	}d
}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )Nzset( [1, 2])z{1, 2}zset([1 ,  2])z{1 ,  2}z
set([ 1 ])z{ 1 }z
set( [1] )z{1}zset([  1,  2  ])z{  1,  2  }zset([x  for x in y ])z{x  for x in y }z<set(
                   [1, 2]
               )
            z{1, 2}
)r   )r   r4   r5   r   r   r   rf  ±  s*    z Test_set_literal.test_whitespacec             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )Nzset((1, 2)) # Hiz{1, 2} # HizZ
            # Foo
            set( # Bar
               (1, 2)
            )
            z2
            # Foo
            {1, 2}
            )r   )r   r4   r5   r   r   r   r«  Ñ  s    zTest_set_literal.test_commentsc             C   sX   d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d}|   |¡ d S )Nzset()zset(a)zset(a, b, c)zset(x for x in y)zset(x for x in y if z)zset(a*823-23**2 + f(23)))r    )r   rN   r   r   r   r`   ã  s    




zTest_set_literal.test_unchangedN)	r0   r%   r1   r	   r6   r×  rf  r«  r`   r   r   r   r   rÖ  y  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S )ÚTest_sys_excZsys_excc             C   s   d}d}|   ||¡ d S )Nzsys.exc_typezsys.exc_info()[0])r   )r   r4   r5   r   r   r   r§  û  s    zTest_sys_exc.test_0c             C   s   d}d}|   ||¡ d S )Nzsys.exc_valuezsys.exc_info()[1])r   )r   r4   r5   r   r   r   r:      s    zTest_sys_exc.test_1c             C   s   d}d}|   ||¡ d S )Nzsys.exc_tracebackzsys.exc_info()[2])r   )r   r4   r5   r   r   r   r;     s    zTest_sys_exc.test_2c             C   s   d}d}|   ||¡ d S )Nzsys.exc_type # Foozsys.exc_info()[0] # Foo)r   )r   r4   r5   r   r   r   r<   
  s    zTest_sys_exc.test_3c             C   s   d}d}|   ||¡ d S )Nzsys.  exc_typezsys.  exc_info()[0])r   )r   r4   r5   r   r   r   r=     s    zTest_sys_exc.test_4c             C   s   d}d}|   ||¡ d S )Nzsys  .exc_typezsys  .exc_info()[0])r   )r   r4   r5   r   r   r   r>     s    zTest_sys_exc.test_5N)
r0   r%   r1   r	   r§  r:   r;   r<   r=   r>   r   r   r   r   rØ  ø  s   rØ  c               @   sp   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
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )Ú
Test_parenZparenc             C   s   d}d}|   ||¡ d S )Nz[i for i in 1, 2 ]z[i for i in (1, 2) ])r   )r   r4   r5   r   r   r   r§    s    zTest_paren.test_0c             C   s   d}d}|   ||¡ d S )Nz[i for i in 1, 2, ]z[i for i in (1, 2,) ])r   )r   r4   r5   r   r   r   r:   "  s    zTest_paren.test_1c             C   s   d}d}|   ||¡ d S )Nz[i for i  in     1, 2 ]z[i for i  in     (1, 2) ])r   )r   r4   r5   r   r   r   r;   '  s    zTest_paren.test_2c             C   s   d}d}|   ||¡ d S )Nz[i for i in 1, 2 if i]z[i for i in (1, 2) if i])r   )r   r4   r5   r   r   r   r<   ,  s    zTest_paren.test_3c             C   s   d}d}|   ||¡ d S )Nz[i for i in 1,    2    ]z[i for i in (1,    2)    ])r   )r   r4   r5   r   r   r   r=   1  s    zTest_paren.test_4c             C   s   d}d}|   ||¡ d S )Nz(i for i in 1, 2)z(i for i in (1, 2)))r   )r   r4   r5   r   r   r   r>   6  s    zTest_paren.test_5c             C   s   d}d}|   ||¡ d S )Nz(i for i in 1   ,2   if i)z(i for i in (1   ,2)   if i))r   )r   r4   r5   r   r   r   r?   ;  s    zTest_paren.test_6c             C   s   d}|   |¡ d S )Nz[i for i in (1, 2)])r    )r   rN   r   r   r   Útest_unchanged_0@  s    zTest_paren.test_unchanged_0c             C   s   d}|   |¡ d S )Nz[i for i in foo()])r    )r   rN   r   r   r   rO   D  s    zTest_paren.test_unchanged_1c             C   s   d}|   |¡ d S )Nz[i for i in (1, 2) if nothing])r    )r   rN   r   r   r   rP   H  s    zTest_paren.test_unchanged_2c             C   s   d}|   |¡ d S )Nz(i for i in (1, 2)))r    )r   rN   r   r   r   rQ   L  s    zTest_paren.test_unchanged_3c             C   s   d}|   |¡ d S )Nz[i for i in m])r    )r   rN   r   r   r   rR   P  s    zTest_paren.test_unchanged_4N)r0   r%   r1   r	   r§  r:   r;   r<   r=   r>   r?   rÚ  rO   rP   rQ   rR   r   r   r   r   rÙ    s   rÙ  c               @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚTest_metaclassÚ	metaclassc             C   sf   |   d¡ |   d¡ |   d¡ |   d¡ |   d¡ |   d¡ |   d¡ d}|   |¡ d	}|   |¡ d S )
Nzclass X(): passzclass X(object): passzclass X(object1, object2): passz(class X(object1, object2, object3): passzclass X(metaclass=Meta): passz'class X(b, arg=23, metclass=Meta): passz2class X(b, arg=23, metaclass=Meta, other=42): passzD
        class X:
            def __metaclass__(self): pass
        z1
        class X:
            a[23] = 74
        )r    )r   rN   r   r   r   r`   X  s    







zTest_metaclass.test_unchangedc             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )NzQ
        class X:
            # hi
            __metaclass__ = AppleMeta
        zQ
        class X(metaclass=AppleMeta):
            # hi
            pass
        zR
        class X:
            __metaclass__ = Meta
            # Bedtime!
        zR
        class X(metaclass=Meta):
            pass
            # Bedtime!
        )r   )r   r4   r5   r   r   r   r«  m  s    zTest_metaclass.test_commentsc             C   sà   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d	}d}|   ||¡ d
}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )NzK
        class X():
            __metaclass__ = Q
            pass
        z8
        class X(metaclass=Q):
            pass
        z"class X(object): __metaclass__ = Qz"class X(object, metaclass=Q): passzW
        class X(object):
            __metaclass__ = Meta
            bar = 7
        zF
        class X(object, metaclass=Meta):
            bar = 7
        zJ
        class X:
            __metaclass__ = Meta; x = 4; g = 23
        zD
        class X(metaclass=Meta):
            x = 4; g = 23
        zW
        class X(object):
            bar = 7
            __metaclass__ = Meta
        zl
        class X():
            __metaclass__ = A
            __metaclass__ = B
            bar = 7
        z;
        class X(metaclass=B):
            bar = 7
        z[
        class X(clsA, clsB):
            __metaclass__ = Meta
            bar = 7
        zJ
        class X(clsA, clsB, metaclass=Meta):
            bar = 7
        z(class m(a, arg=23): __metaclass__ = Metaz(class m(a, arg=23, metaclass=Meta): passzN
        class X(expression(2 + 4)):
            __metaclass__ = Meta
        zN
        class X(expression(2 + 4), metaclass=Meta):
            pass
        zT
        class X(expression(2 + 4), x**4):
            __metaclass__ = Meta
        zT
        class X(expression(2 + 4), x**4, metaclass=Meta):
            pass
        zT
        class X:
            __metaclass__ = Meta
            save.py = 23
        zC
        class X(metaclass=Meta):
            save.py = 23
        )r   )r   r4   r5   r   r   r   Ú	test_meta†  sB    zTest_metaclass.test_metaN)r0   r%   r1   r	   r`   r«  rÝ  r   r   r   r   rÛ  T  s   rÛ  c               @   s8   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )ÚTest_getcwduZgetcwduc             C   sT   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )	Nz
os.getcwduz	os.getcwdzos.getcwdu()zos.getcwd()zmeth = os.getcwduzmeth = os.getcwdzos.getcwdu(args)zos.getcwd(args))r   )r   r4   r5   r   r   r   r6   ý  s    zTest_getcwdu.test_basicc             C   s   d}d}|   ||¡ d S )Nzos.getcwdu() # Foozos.getcwd() # Foo)r   )r   r4   r5   r   r   r   r^     s    zTest_getcwdu.test_commentc             C   s.   d}|   |¡ d}|   |¡ d}|   |¡ d S )Nzos.getcwd()z	getcwdu()zos.getcwdb())r    )r   rN   r   r   r   r`     s    

zTest_getcwdu.test_unchangedc             C   s   d}d}|   ||¡ d S )Nz<
            if 1:
                os.getcwdu()
            z;
            if 1:
                os.getcwd()
            )r   )r   r4   r5   r   r   r   Útest_indentation  s    zTest_getcwdu.test_indentationc             C   s@   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )Nzos .getcwdu()zos .getcwd()zos.  getcwduzos.  getcwdzos.getcwdu (  )zos.getcwd (  ))r   )r   r4   r5   r   r   r   Útest_multilation(  s    zTest_getcwdu.test_multilationN)	r0   r%   r1   r	   r6   r^   r`   rß  rà  r   r   r   r   rÞ  ù  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
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTest_operatorÚoperatorc             C   s   d}d}|   ||¡ d S )Nzoperator.isCallable(x)zcallable(x))r   )r   r4   r5   r   r   r   Útest_operator_isCallable:  s    z&Test_operator.test_operator_isCallablec             C   s@   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )Nzoperator.sequenceIncludes(x, y)zoperator.contains(x, y)z operator .sequenceIncludes(x, y)zoperator .contains(x, y)z!operator.  sequenceIncludes(x, y)zoperator.  contains(x, y))r   )r   r4   r5   r   r   r   Útest_operator_sequenceIncludes?  s    z,Test_operator.test_operator_sequenceIncludesc             C   s   d}d}|   ||¡ d S )Nzoperator.isSequenceType(x)z>import collections.abc
isinstance(x, collections.abc.Sequence))r   )r   r4   r5   r   r   r   Útest_operator_isSequenceTypeL  s    z*Test_operator.test_operator_isSequenceTypec             C   s   d}d}|   ||¡ d S )Nzoperator.isMappingType(x)z=import collections.abc
isinstance(x, collections.abc.Mapping))r   )r   r4   r5   r   r   r   Útest_operator_isMappingTypeQ  s    z)Test_operator.test_operator_isMappingTypec             C   s   d}d}|   ||¡ d S )Nzoperator.isNumberType(x)z,import numbers
isinstance(x, numbers.Number))r   )r   r4   r5   r   r   r   Útest_operator_isNumberTypeV  s    z(Test_operator.test_operator_isNumberTypec             C   s@   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )Nzoperator.repeat(x, n)zoperator.mul(x, n)zoperator .repeat(x, n)zoperator .mul(x, n)zoperator.  repeat(x, n)zoperator.  mul(x, n))r   )r   r4   r5   r   r   r   Útest_operator_repeat[  s    z"Test_operator.test_operator_repeatc             C   s@   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )Nzoperator.irepeat(x, n)zoperator.imul(x, n)zoperator .irepeat(x, n)zoperator .imul(x, n)zoperator.  irepeat(x, n)zoperator.  imul(x, n))r   )r   r4   r5   r   r   r   Útest_operator_irepeath  s    z#Test_operator.test_operator_irepeatc             C   s   d}d}|   ||¡ d S )NzisCallable(x)z"You should use 'callable(x)' here.)r"   )r   rN   Útr   r   r   Útest_bare_isCallableu  s    z"Test_operator.test_bare_isCallablec             C   s   d}d}|   ||¡ d S )NzsequenceIncludes(x, y)z.You should use 'operator.contains(x, y)' here.)r"   )r   rN   rê  r   r   r   Útest_bare_sequenceIncludesz  s    z(Test_operator.test_bare_sequenceIncludesc             C   s   d}d}|   ||¡ d S )NzisSequenceType(z)z>You should use 'isinstance(z, collections.abc.Sequence)' here.)r"   )r   rN   rê  r   r   r   Ú!test_bare_operator_isSequenceType  s    z/Test_operator.test_bare_operator_isSequenceTypec             C   s   d}d}|   ||¡ d S )NzisMappingType(x)z=You should use 'isinstance(x, collections.abc.Mapping)' here.)r"   )r   rN   rê  r   r   r   Ú test_bare_operator_isMappingType„  s    z.Test_operator.test_bare_operator_isMappingTypec             C   s   d}d}|   ||¡ d S )NzisNumberType(y)z4You should use 'isinstance(y, numbers.Number)' here.)r"   )r   rN   rê  r   r   r   Útest_bare_operator_isNumberType‰  s    z-Test_operator.test_bare_operator_isNumberTypec             C   s   d}d}|   ||¡ d S )Nzrepeat(x, n)z)You should use 'operator.mul(x, n)' here.)r"   )r   rN   rê  r   r   r   Útest_bare_operator_repeatŽ  s    z'Test_operator.test_bare_operator_repeatc             C   s   d}d}|   ||¡ d S )Nzirepeat(y, 187)z,You should use 'operator.imul(y, 187)' here.)r"   )r   rN   rê  r   r   r   Útest_bare_operator_irepeat“  s    z(Test_operator.test_bare_operator_irepeatN)r0   r%   r1   r	   rã  rä  rå  ræ  rç  rè  ré  rë  rì  rí  rî  rï  rð  rñ  r   r   r   r   rá  6  s   rá  c               @   sH   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
dS )ÚTest_exitfuncZexitfuncc             C   s   d}d}|   ||¡ d S )NzI
            import sys
            sys.exitfunc = my_atexit
            ze
            import sys
            import atexit
            atexit.register(my_atexit)
            )r   )r   r4   r5   r   r   r   rƒ     s    zTest_exitfunc.test_simplec             C   s   d}d}|   ||¡ d S )NzO
            import sys, crumbs
            sys.exitfunc = my_func
            zY
            import sys, crumbs, atexit
            atexit.register(my_func)
            )r   )r   r4   r5   r   r   r   Útest_names_import©  s    zTest_exitfunc.test_names_importc             C   s   d}d}|   ||¡ d S )Nzh
            import sys
            sys.exitfunc = do(d)/a()+complex(f=23, g=23)*expression
            z„
            import sys
            import atexit
            atexit.register(do(d)/a()+complex(f=23, g=23)*expression)
            )r   )r   r4   r5   r   r   r   Útest_complex_expression´  s    z%Test_exitfunc.test_complex_expressionc             C   s,   d}d}|   ||¡ d}d}|   ||¡ d S )NzN
            import sys # Foo
            sys.exitfunc = f # Blah
            zj
            import sys
            import atexit # Foo
            atexit.register(f) # Blah
            zo
            import apples, sys, crumbs, larry # Pleasant comments
            sys.exitfunc = func
            zy
            import apples, sys, crumbs, larry, atexit # Pleasant comments
            atexit.register(func)
            )r   )r   r4   r5   r   r   r   r«  À  s    zTest_exitfunc.test_commentsc             C   s   d}d}|   ||¡ d S )Nz]
            import sys
            def f():
                sys.exitfunc = func
            zz
            import sys
            import atexit
            def f():
                atexit.register(func)
             )r   )r   r4   r5   r   r   r   Útest_in_a_functionÖ  s    z Test_exitfunc.test_in_a_functionc             C   s   d}d}d}|   |||¡ d S )Nzsys.exitfunc = fzatexit.register(f)zKCan't find sys import; Please add an atexit import at the top of your file.)r!   )r   r4   r5   Úmsgr   r   r   Útest_no_sys_importä  s    z Test_exitfunc.test_no_sys_importc             C   s   d}|   |¡ d S )Nzf(sys.exitfunc))r    )r   rN   r   r   r   r`   ì  s    zTest_exitfunc.test_unchangedN)r0   r%   r1   r	   rƒ   ró  rô  r«  rõ  r÷  r`   r   r   r   r   rò  ™  s   rò  c               @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚTest_assertsZassertsc             C   s>   ddddddddd	d
ddg}x|D ]\}}|   ||¡ q"W d S )N)zself.assert_(True)zself.assertTrue(True))zself.assertEquals(2, 2)zself.assertEqual(2, 2))zself.assertNotEquals(2, 3)zself.assertNotEqual(2, 3))zself.assertAlmostEquals(2, 3)zself.assertAlmostEqual(2, 3))z self.assertNotAlmostEquals(2, 8)zself.assertNotAlmostEqual(2, 8))zself.failUnlessEqual(2, 2)zself.assertEqual(2, 2))zself.failIfEqual(2, 3)zself.assertNotEqual(2, 3))z self.failUnlessAlmostEqual(2, 3)zself.assertAlmostEqual(2, 3))zself.failIfAlmostEqual(2, 8)zself.assertNotAlmostEqual(2, 8))zself.failUnless(True)zself.assertTrue(True))zself.failUnlessRaises(foo)zself.assertRaises(foo))zself.failIf(False)zself.assertFalse(False))r   )r   Ztestsr4   r5   r   r   r   Útest_deprecated_namesõ  s    z"Test_asserts.test_deprecated_namesc             C   s   d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d	}d
}|   ||¡ d}d}|   ||¡ d}d}|   ||¡ d S )Nzeq = self.assertEqualszeq = self.assertEqualz#self.assertEquals(2, 3, msg="fail")z"self.assertEqual(2, 3, msg="fail")z)self.assertEquals(2, 3, msg="fail") # fooz(self.assertEqual(2, 3, msg="fail") # foozself.assertEquals (2, 3)zself.assertEqual (2, 3)z  self.assertEquals (2, 3)z  self.assertEqual (2, 3)z0with self.failUnlessRaises(Explosion): explode()z,with self.assertRaises(Explosion): explode()z6with self.failUnlessRaises(Explosion) as cm: explode()z2with self.assertRaises(Explosion) as cm: explode())r   )r   r4   r5   r   r   r   Útest_variants  s*    zTest_asserts.test_variantsc             C   s   |   d¡ |   d¡ d S )Nzself.assertEqualsOnSaturdayz!self.assertEqualsOnSaturday(3, 5))r    )r   r   r   r   r`     s    
zTest_asserts.test_unchangedN)r0   r%   r1   r	   rù  rú  r`   r   r   r   r   rø  ñ  s   rø  )CÚ__doc__r»  r¤  r   râ  r   r   r   r   Zlib2to3.testsr   ZTestCaser   r2   r9   rE   r[   ra   rd   ri   rv   rz   r   r   r    rª   r«   r®   r±   rÔ   rÞ   râ   rã   rë   rí   rø   rÿ   r  r  r  r  r   r#  rL  rN  r^  re  rq  rw  r|  r  r‚  r‡  rš  rœ  r   r£  r©  r²  rÖ  rØ  rÙ  rÛ  rÞ  rá  rò  rø  r   r   r   r   Ú<module>   s   9: ;1#j3&  }.& gH/+bn/ <    ]4B.Oc|P   Z=J %": &=cX