[Python-checkins] r67767 - in sandbox/trunk/2to3/lib2to3: fixes/fix_isinstance.py tests/test_fixers.py
benjamin.peterson
python-checkins at python.org
Sun Dec 14 21:28:12 CET 2008
Author: benjamin.peterson
Date: Sun Dec 14 21:28:12 2008
New Revision: 67767
Log:
don't retain parenthesis if there is only one item left
Modified:
sandbox/trunk/2to3/lib2to3/fixes/fix_isinstance.py
sandbox/trunk/2to3/lib2to3/tests/test_fixers.py
Modified: sandbox/trunk/2to3/lib2to3/fixes/fix_isinstance.py
==============================================================================
--- sandbox/trunk/2to3/lib2to3/fixes/fix_isinstance.py (original)
+++ sandbox/trunk/2to3/lib2to3/fixes/fix_isinstance.py Sun Dec 14 21:28:12 2008
@@ -6,15 +6,11 @@
tokens as a leftover of the long -> int / unicode -> str conversion.
eg. isinstance(x, (int, long)) -> isinstance(x, (int, int))
- -> isinstance(x, (int))
-
-TODO: currently a pair of bogus parentheses is left if only one item
- is left in the list. This doesn't do harm but doesn't look very
- nice.
+ -> isinstance(x, int)
"""
from .. import fixer_base
-from ..pgen2 import token
+from ..fixer_util import token
class FixIsinstance(fixer_base.BaseFix):
@@ -32,7 +28,8 @@
def transform(self, node, results):
names_inserted = set()
- args = results['args'].children
+ testlist = results["args"]
+ args = testlist.children
new_args = []
iterator = enumerate(args)
for idx, arg in iterator:
@@ -46,5 +43,10 @@
names_inserted.add(arg.value)
if new_args and new_args[-1].type == token.COMMA:
del new_args[-1]
- args[:] = new_args
- node.changed()
+ if len(new_args) == 1:
+ atom = testlist.parent
+ new_args[0].set_prefix(atom.get_prefix())
+ atom.replace(new_args[0])
+ else:
+ args[:] = new_args
+ node.changed()
Modified: sandbox/trunk/2to3/lib2to3/tests/test_fixers.py
==============================================================================
--- sandbox/trunk/2to3/lib2to3/tests/test_fixers.py (original)
+++ sandbox/trunk/2to3/lib2to3/tests/test_fixers.py Sun Dec 14 21:28:12 2008
@@ -1081,7 +1081,7 @@
def test_remove_multiple_items(self):
b = """isinstance(x, (int, int, int))"""
- a = """isinstance(x, (int))"""
+ a = """isinstance(x, int)"""
self.check(b, a)
b = """isinstance(x, (int, float, int, int, float))"""
More information about the Python-checkins
mailing list