[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

AltStyle によって変換されたページ (->オリジナル) /