B
    v9aÂÞ ã               @   s¶  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.d/„ d/eƒZG d0d1„ d1eƒZ G d2d3„ d3ƒZ!G d4d5„ d5ee!ƒZ"G d6d7„ d7ee!ƒZ#G d8d9„ d9ee!ƒZ$G d:d;„ d;eƒZ%G d<d=„ d=eƒZ&G d>d?„ d?eƒZ'G d@dA„ dAeƒZ(G dBdC„ dCeƒZ)G dDdE„ dEeƒZ*G dFdG„ dGeƒZ+G dHdI„ dIeƒZ,G dJdK„ dKeƒZ-G dLdM„ dMeƒZ.G dNdO„ dOeƒZ/G dPdQ„ dQeƒZ0G dRdS„ dSeƒZ1G dTdU„ dUeƒZ2G dVdW„ dWeƒZ3G dXdY„ dYeƒZ4G dZd[„ d[eƒZ5G d\d]„ d]eƒZ6G d^d_„ d_eƒZ7G d`da„ daeƒZ8G dbdc„ dceƒZ9G ddde„ deeƒZ:G dfdg„ dgeƒZ;G dhdi„ dieƒZ<G djdk„ dkeƒZ=G dldm„ dmeƒZ>G dndo„ doeƒZ?G dpdq„ dqeƒZ@G drds„ dseƒZAdS )té    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_pkgÚoptionsr	   © r   ú!/usr/lib/python3.7/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!   r0   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   r5   r6   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   r5   r6   r   r   r   Útest_chainedY   s    zTest_ne.test_chainedN)r1   r&   r2   r	   r7   r8   r9   r   r   r   r   r3   F   s   r3   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   r   r   r   Útest_11–   s    zTest_has_key.test_11N)r1   r&   r2   r	   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   r   r   r   r   r:   a   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d6S )7Ú
Test_applyZapplyc             C   s   d}d}|   ||¡ d S )Nzx = apply(f, g + h)zx = f(*g + h))r   )r   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   rO   r   r   r   Útest_unchanged_2ò   s    zTest_apply.test_unchanged_2c             C   s   d}|   |¡ d S )Nz	apply(f,))r!   )r   rO   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   rO   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   rO   r   r   r   Útest_unchanged_5þ   s    zTest_apply.test_unchanged_5c             C   s   d}|   |¡ d S )Nzapply(f, *args))r!   )r   rO   r   r   r   Útest_unchanged_6  s    zTest_apply.test_unchanged_6c             C   s   d}|   |¡ d S )Nzapply(f, **kwds))r!   )r   rO   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   rO   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   rO   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   rO   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   r6   r5   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   r6   r5   r   r   r   Útest_space_2  s    zTest_apply.test_space_2N)r1   r&   r2   r	   r;   r<   r=   r>   r?   r@   rG   rH   rI   rJ   rK   rL   rM   rN   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r   r   r   r   rF   ›   s6   	rF   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   r5   r6   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   r5   r6   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   r5   r6   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   rO   r   r   r   Útest_unchanged?  s$    







zTest_reload.test_unchangedN)r1   r&   r2   r	   r^   r_   r`   ra   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   r5   r6   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   r5   r6   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   rO   r   r   r   ra   |  s    



zTest_intern.test_unchangedN)r1   r&   r2   r	   rd   r^   ra   r   r   r   r   rb   [  s   rb   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   r5   r6   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   r5   r6   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   r5   r6   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   rO   r   r   r   ra   Ÿ  s    



zTest_reduce.test_unchangedN)r1   r&   r2   r	   rg   rh   ri   ra   r   r   r   r   re   Œ  s
   re   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   r5   r6   r   r   r   rd   ²  s    z#Test_print.test_prefix_preservationc             C   s    d}|   |¡ d}|   |¡ d S )Nzprint()z	print(''))r!   )r   rO   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   rO   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   r5   r6   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   r5   r6   r   r   r   r<   Î  s    zTest_print.test_2c             C   s   d}d}|   ||¡ d S )Nrk   zprint())r   )r   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   rO   r5   r6   r   r   r   Útest_with_future_print_function  s
    
z*Test_print.test_with_future_print_functionN)r1   r&   r2   r	   rd   rl   rm   r;   r<   r=   r>   r?   rn   ro   rp   rq   rr   rs   rt   ru   rv   r   r   r   r   rj   ¯  s$   rj   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   r5   r6   r   r   r   rd     s    z"Test_exec.test_prefix_preservationc             C   s   d}d}|   ||¡ d S )Nz	exec codez
exec(code))r   )r   r5   r6   r   r   r   r7   !  s    zTest_exec.test_basicc             C   s   d}d}|   ||¡ d S )Nzexec code in nszexec(code, ns))r   )r   r5   r6   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   r5   r6   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   r5   r6   r   r   r   rG   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   r5   r6   r   r   r   rH   5  s    zTest_exec.test_complex_2c             C   s   d}|   |¡ d S )Nz
exec(code))r!   )r   rO   r   r   r   rP   <  s    zTest_exec.test_unchanged_1c             C   s   d}|   |¡ d S )Nzexec (code))r!   )r   rO   r   r   r   rQ   @  s    zTest_exec.test_unchanged_2c             C   s   d}|   |¡ d S )Nzexec(code, ns))r!   )r   rO   r   r   r   rR   D  s    zTest_exec.test_unchanged_3c             C   s   d}|   |¡ d S )Nzexec(code, ns1, ns2))r!   )r   rO   r   r   r   rS   H  s    zTest_exec.test_unchanged_4N)r1   r&   r2   r	   rd   r7   ry   rz   rG   rH   rP   rQ   rR   rS   r   r   r   r   rw     s   rw   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   r5   r6   r   r   r   rd   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   r   r   r   rn   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   r5   r6   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   r5   r6   r   r   r   Útest_nested_tuplesm  s    zTest_repr.test_nested_tuplesN)r1   r&   r2   r	   rd   r}   r~   r   rn   r€   r   r   r   r   r   r{   L  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"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   r5   r6   r   r   r   rd   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   rO   r   r   r   rP   m  s    zTest_except.test_unchanged_1c             C   s   d}|   |¡ d S )NzY
            try:
                pass
            except Exception:
                pass)r!   )r   rO   r   r   r   rQ   u  s    zTest_except.test_unchanged_2c             C   s   d}|   |¡ d S )Nzg
            try:
                pass
            except (Exception, SystemExit):
                pass)r!   )r   rO   r   r   r   rR   }  s    zTest_except.test_unchanged_3N)r1   r&   r2   r	   rd   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r   rŽ   r   rP   rQ   rR   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   r5   r6   r   r   r   r7   ˆ  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   r5   r6   r   r   r   rd     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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   rO   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   rO   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   rO   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   r   r   r   Ú	test_tb_6ù  s    zTest_raise.test_tb_6N)r1   r&   r2   r	   r7   rd   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   rO   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   rO   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   rO   r   r   r   Útest_warn_3%  s    zTest_throw.test_warn_3c             C   s   d}|   |¡ d S )Nzg.throw(Exception))r!   )r   rO   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   rO   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   rO   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   r   r   r   Ú	test_tb_8v  s    zTest_throw.test_tb_8N)r1   r&   r2   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   r5   r6   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   r5   r6   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   r5   r6   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   rO   r   r   r   ra   “  s    





zTest_long.test_unchangedc             C   s   d}d}|   ||¡ d S )Nzx =   long(  x  )zx =   int(  x  ))r   )r   r5   r6   r   r   r   rd   ©  s    z"Test_long.test_prefix_preservationN)	r1   r&   r2   r	   r;   r<   r=   ra   rd   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   r5   r6   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   r5   r6   r   r   r   Útest_spacingË  s    zTest_execfile.test_spacingN)r1   r&   r2   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   r5   r6   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   r5   r6   r   r   r   rd   é  s    z(Test_isinstance.test_prefix_preservationc             C   s   |   d¡ d S )Nzisinstance(x, (str, int)))r!   )r   r   r   r   ra   î  s    zTest_isinstance.test_unchangedN)r1   r&   r2   r	   r±   rd   ra   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   r5   r6   r   r   r   rd   ô  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   r5   r6   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   ÚwrapperrO   r   r   r   ra   *  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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   r   r   r   Útest_06R  s    zTest_dict.test_06c             C   s   d}|   |¡ d S )Nzlist(d.keys()))r!   )r   rO   r   r   r   Útest_07W  s    zTest_dict.test_07c             C   s   d}|   |¡ d S )Nzsorted(d.keys()))r!   )r   rO   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   r5   r6   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   r5   r6   r   r   r   rD   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   r5   r6   r   r   r   rE   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   r   r   r   Útest_32Ò  s    zTest_dict.test_32N)'r1   r&   r2   r	   rd   r´   ra   r·   r¸   r¹   rº   r»   r¼   r½   r¾   r¿   rD   rE   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   r5   r6   r   r   r   rd   Ú  s    z$Test_xrange.test_prefix_preservationc             C   s   d}d}|   ||¡ d S )Nzx = xrange(10)zx = range(10))r   )r   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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)r1   r&   r2   r	   rd   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Ö   rf   )Ú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   r5   r6   r   r   r   Útest_double_transform$  s    z-Test_xrange_with_reduce.test_double_transform)r1   r&   r2   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   r5   r6   r   r   r   rd   -  s    z'Test_raw_input.test_prefix_preservationc             C   s   d}d}|   ||¡ d S )Nzx = raw_input()zx = input())r   )r   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   r   r   r   rB   T  s    zTest_raw_input.test_8N)r1   r&   r2   r	   rd   r;   r<   r=   r>   r?   r@   rB   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   Úattrr5   r6   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ë   rO   r   r   r   ra   h  s    

zTest_funcattrs.test_unchangedN)r1   r&   r2   r	   rê   r^   ra   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   r5   r6   r   r   r   rL   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   r5   r6   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   rO   r   r   r   ra     s    


zTest_xreadlines.test_unchangedN)r1   r&   r2   r	   rL   rí   ra   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Únewr5   r6   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ò   r5   r6   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ò   r5   r6   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ò   r5   r6   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ò   r5   r6   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ò   r5   r6   rO   r   r   r   Útest_import_module_usageÎ  s    

z*ImportsFixerTests.test_import_module_usageN)	r1   r&   r2   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   r5   r6   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   r5   r6   r   r   r   Útest_multiple_imports_as	  s    z%Test_imports.test_multiple_imports_asN)	r1   r&   r2   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)r1   r&   r2   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	   r0   )r   Zfixr   r   r   Ú$test_after_local_imports_refactoring$  s    
z=Test_imports_fixer_order.test_after_local_imports_refactoring)r1   r&   r2   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ñ   Úchangesr5   r6   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  Úmemberr5   r6   rO   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ñ   rO   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  r5   r6   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ñ   rO   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   r5   r6   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_importr5   r6   r   r   r   rø   ~  s    

z$Test_urllib.test_import_module_usageN)r1   r&   r2   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   r5   r6   r   r   r   rd   ›  s    z#Test_input.test_prefix_preservationc             C   s   d}d}|   ||¡ d S )Nzx = input()  #  foozx = eval(input())  #  foo)r   )r   r5   r6   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   rO   r   r   r   rl   ©  s    

zTest_input.test_idempotencyc             C   s   d}d}|   ||¡ d S )Nzx = input()zx = eval(input()))r   )r   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   r   r   r   r>   Â  s    zTest_input.test_4N)r1   r&   r2   r	   rd   r´   rl   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   rO   r   r   r   rP   Ê  s    z"Test_tuple_params.test_unchanged_1c             C   s   d}|   |¡ d S )Nzdef foo(a, b, c): pass)r!   )r   rO   r   r   r   rQ   Î  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   rO   r   r   r   rR   Ò  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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   r   r   r   Útest_docstring-  s    z Test_tuple_params.test_docstringc             C   s   d}|   |¡ d S )Nzlambda x: x + 5)r!   )r   rO   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   r   r   r   Útest_lambda_nested_multi_use}  s    z.Test_tuple_params.test_lambda_nested_multi_useN)r1   r&   r2   r	   rP   rQ   rR   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ë   r5   r6   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ë   rO   r   r   r   ra   —  s    

zTest_methodattrs.test_unchangedN)r1   r&   r2   r	   rê   r^   ra   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   r5   r6   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   r5   r6   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   r5   r6   r   r   r   r=   ¯  s    zTest_next.test_3c             C   s   d}d}|   ||¡ d S )Nz
a().next()z	next(a()))r   )r   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   rO   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   rO   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   rO   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   rO   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   rO   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   rO   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   rO   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   rO   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   rO   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   rO   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   rO   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   rO   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   rO   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   rO   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   rO   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   rO   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   rO   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   rO   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   rO   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   rO   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   r5   r6   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   rO   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   rO   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   rO   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   rO   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   rO   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   r5   r6   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   r5   r6   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   r5   r6   r   r   r   Útest_noncall_access_3w
  s    zTest_next.test_noncall_access_3N)1r1   r&   r2   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  rL  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   r5   r6   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   r5   r6   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   rO   r   r   r   rP   ™
  s    zTest_nonzero.test_unchanged_1c             C   s   d}|   |¡ d S )Nzm
            class A(object):
                def __nonzero__(self, a):
                    pass
            )r!   )r   rO   r   r   r   rQ   ¡
  s    zTest_nonzero.test_unchanged_2c             C   s   d}|   |¡ d S )NzE
            def __nonzero__(self):
                pass
            )r!   )r   rO   r   r   r   Útest_unchanged_func©
  s    z Test_nonzero.test_unchanged_funcN)	r1   r&   r2   r	   r;   r<   rP   rQ   rN  r   r   r   r   rM  |
  s   rM  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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   r   r   r   Útest_comments_and_spacingÇ
  s    z*Test_numliterals.test_comments_and_spacingc             C   s   d}|   |¡ d S )NÚ5)r!   )r   rO   r   r   r   Útest_unchanged_intÐ
  s    z#Test_numliterals.test_unchanged_intc             C   s   d}|   |¡ d S )Nz5.0)r!   )r   rO   r   r   r   Útest_unchanged_floatÔ
  s    z%Test_numliterals.test_unchanged_floatc             C   s   d}|   |¡ d S )NrP  )r!   )r   rO   r   r   r   Útest_unchanged_octalØ
  s    z%Test_numliterals.test_unchanged_octalc             C   s   d}|   |¡ d S )NZ0xABC)r!   )r   rO   r   r   r   Útest_unchanged_hexÜ
  s    z#Test_numliterals.test_unchanged_hexc             C   s   d}|   |¡ d S )Nz5.0e10)r!   )r   rO   r   r   r   Útest_unchanged_expà
  s    z#Test_numliterals.test_unchanged_expc             C   s   d}|   |¡ d S )Nz5 + 4j)r!   )r   rO   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   rO   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   rO   r   r   r   Útest_unchanged_complex_bareì
  s    
z,Test_numliterals.test_unchanged_complex_bareN)r1   r&   r2   r	   rQ  rR  rS  rT  rU  rW  rX  rY  rZ  r[  r\  r]  r^  r   r   r   r   rO  °
  s   	rO  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ò   r5   r6   rO   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)rc  rï   rð   r   )r   rd  rñ   rò   r5   r6   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)
                )rc  rï   rð   r   )r   rd  rñ   rò   r5   r6   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)
                )rc  rï   rð   r   )r   rd  rñ   rò   r5   r6   r   r   r   ÚXXX_test_from_import_usage  s    z'Test_renames.XXX_test_from_import_usageN)	r1   r&   r2   r	   rï   rô   rö   rø   re  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   r5   r6   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   r5   r6   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   r5   r6   r   r   r   Útest_unichr5  s    zTest_unicode.test_unichrc             C   s   d}d}|   ||¡ d S )Nzu"x"z"x")r   )r   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   Úfr5   r6   r   r   r   Ú$test_native_unicode_literal_escape_ud  s    z1Test_unicode.test_native_unicode_literal_escape_uN)r1   r&   r2   r	   rg  rh  ri  rj  rk  rl  rm  rn  ro  rq  r   r   r   r   rf     s   			rf  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   r5   r6   r   r   r   rd   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   r5   r6   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   r5   r6   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   r6   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   r6   r5   r   r   r   Útest_future_builtinsÇ  s    
z Test_filter.test_future_builtinsN)	r1   r&   r2   r	   rd   rt  ru  rv  rw  r   r   r   r   rr  o  s   	(rr  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à   rx  r   )r   r5   r6   )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   r5   r6   r   r   r   rd   Ù  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   r5   r6   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   r5   r6   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   rO   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   r5   r6   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   r6   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   r6   r5   r   r   r   rw  C  s    
zTest_map.test_future_builtins)r1   r&   r2   r	   r   rd   ry  r´   rz  r{  r|  rw  râ   r   r   )r%   r   rx  Ò  s   "(rx  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   r5   r6   )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   r5   r6   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   r5   r6   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   r6   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   r6   r5   r   r   r   rw  “  s    
zTest_zip.test_future_builtins)
r1   r&   r2   r	   r   r  r€  r  rw  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   r5   r6   r   r   r   r^   ¡  s    zTest_standarderror.testN)r1   r&   r2   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.ListTyperc  ztypes.LongTypeztypes.NoneTypez
type(None)ztypes.StringTypesz(str,))r   )r   r5   r6   r   r   r   Útest_basic_types_convert±  s*    z#Test_types.test_basic_types_convertN)r1   r&   r2   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   r5   r6   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   rO   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   r   r   r   Útest_ne_expressionT  s    zTest_idioms.test_ne_expressionc             C   s   d}|   |¡ d S )Nztype(x).__name__)r!   )r   r6   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   r5   r6   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   r5   r6   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   rO   r   r   r   Útest_sort_unchanged  s    
zTest_idioms.test_sort_unchangedN)r1   r&   r2   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   r5   r6   r   r   r   Útest_basestring)  s    zTest_basestring.test_basestringN)r1   r&   r2   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   r5   r6   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   r5   r6   r   r   r   Útest_slicing6  s    zTest_buffer.test_slicingN)r1   r&   r2   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   r5   r6   r   r   r   Útest_future>  s    zTest_future.test_futurec             C   s   |   d¡ d S )Nrk   )r0   )r   r   r   r   Útest_run_orderK  s    zTest_future.test_run_orderN)r1   r&   r2   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	  rs  r~  Úi)r   )r   r   r   r¦  rp  r5   r6   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   r5   r6   r   r   r   Útest_0[  s    zTest_itertools.test_0c             C   s   d}d}|   ||¡ d S )Nz%s(f, a))r§  )r   r5   r6   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   r5   r6   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   r5   r6   r   r   r   r<   p  s    zTest_itertools.test_2c             C   s   d}d}|   ||¡ d S )Nz    %s(f, a))r§  )r   r5   r6   r   r   r   rZ   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   r5   r6   r   r   r   r[   ~  s    zTest_itertools.test_space_2c             C   s   |   ddd¡ d S )Nr	  r~  rs  )r0   )r   r   r   r   r£  ‡  s    zTest_itertools.test_run_orderN)r1   r&   r2   r	   r§  r¨  r;   r©  r<   rZ   r[   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   rO   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æ   r5   r6   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   rO   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   rO   r   r   r   ra   Ð  s    z%Test_itertools_imports.test_unchangedN)r1   r&   r2   r	   r«  r¬  r­  r®  r±  r²  ra   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   r5   r6   )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   rO   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   rO   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   r5   r6   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   r5   r6   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   rO   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   rO   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   r5   r6   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   r5   r6   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   r5   r6   r   r   r   Útest_prefixm  s    zTest_import.test_prefix)r1   r&   r2   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   r5   r6   r   r   r   r7   }  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   r5   r6   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   r5   r6   r   r   r   rg  ±  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   r5   r6   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   rO   r   r   r   ra   ã  s    




zTest_set_literal.test_unchangedN)	r1   r&   r2   r	   r7   rØ  rg  r¬  ra   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   r   r   r   r?     s    zTest_sys_exc.test_5N)
r1   r&   r2   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   r   r   r   r@   ;  s    zTest_paren.test_6c             C   s   d}|   |¡ d S )Nz[i for i in (1, 2)])r!   )r   rO   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   rO   r   r   r   rP   D  s    zTest_paren.test_unchanged_1c             C   s   d}|   |¡ d S )Nz[i for i in (1, 2) if nothing])r!   )r   rO   r   r   r   rQ   H  s    zTest_paren.test_unchanged_2c             C   s   d}|   |¡ d S )Nz(i for i in (1, 2)))r!   )r   rO   r   r   r   rR   L  s    zTest_paren.test_unchanged_3c             C   s   d}|   |¡ d S )Nz[i for i in m])r!   )r   rO   r   r   r   rS   P  s    zTest_paren.test_unchanged_4N)r1   r&   r2   r	   r¨  r;   r<   r=   r>   r?   r@   rÛ  rP   rQ   rR   rS   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   rO   r   r   r   ra   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   r5   r6   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   r5   r6   r   r   r   Ú	test_meta†  sB    zTest_metaclass.test_metaN)r1   r&   r2   r	   ra   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   r5   r6   r   r   r   r7   ý  s    zTest_getcwdu.test_basicc             C   s   d}d}|   ||¡ d S )Nzos.getcwdu() # Foozos.getcwd() # Foo)r   )r   r5   r6   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   rO   r   r   r   ra     s    

zTest_getcwdu.test_unchangedc             C   s   d}d}|   ||¡ d S )Nz<
            if 1:
                os.getcwdu()
            z;
            if 1:
                os.getcwd()
            )r   )r   r5   r6   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   r5   r6   r   r   r   Útest_multilation(  s    zTest_getcwdu.test_multilationN)	r1   r&   r2   r	   r7   r_   ra   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   rO   Ú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   rO   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   rO   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   rO   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   rO   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   rO   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   rO   rë  r   r   r   Útest_bare_operator_irepeat“  s    z(Test_operator.test_bare_operator_irepeatN)r1   r&   r2   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   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   r5   r6   Ú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   rO   r   r   r   ra   ì  s    zTest_exitfunc.test_unchangedN)r1   r&   r2   r	   r„   rô  rõ  r¬  rö  rø  ra   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testsr5   r6   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   r5   r6   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   ra     s    
zTest_asserts.test_unchangedN)r1   r&   r2   r	   rú  rû  ra   r   r   r   r   rù  ñ  s   rù  )Br¼  r¥  r   rã  r   r   r   r   Zlib2to3.testsr   ZTestCaser   r3   r:   rF   r\   rb   re   rj   rw   r{   r‚   r   r¡   r«   r¬   r¯   r²   rÕ   rß   rã   rä   rì   rî   rù   r   r  r  r  r  r!  r$  rM  rO  r_  rf  rr  rx  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