[Python-checkins] r61645 - in sandbox/trunk/2to3/lib2to3: fixes/fix_itertools_imports.py tests/test_fixers.py
david.wolever
python-checkins at python.org
Wed Mar 19 23:22:36 CET 2008
Author: david.wolever
Date: Wed Mar 19 23:22:35 2008
New Revision: 61645
Added:
sandbox/trunk/2to3/lib2to3/fixes/fix_itertools_imports.py
Modified:
sandbox/trunk/2to3/lib2to3/tests/test_fixers.py
Log:
SVN is happier when you add the files you create... -_-'
Added: sandbox/trunk/2to3/lib2to3/fixes/fix_itertools_imports.py
==============================================================================
--- (empty file)
+++ sandbox/trunk/2to3/lib2to3/fixes/fix_itertools_imports.py Wed Mar 19 23:22:35 2008
@@ -0,0 +1,41 @@
+""" Fixer for imports of itertools.(imap|ifilter|izip|ifilterfalse) """
+
+# Local imports
+from . import basefix
+from .util import BlankLine
+
+class FixItertoolsImports(basefix.BaseFix):
+ PATTERN = """
+ import_from< 'from' 'itertools' 'import' imports=any >
+ """ %(locals())
+
+ def transform(self, node, results):
+ imports = results['imports']
+ children = imports.children[:] or [imports]
+ for child in children:
+ if not hasattr(child, 'value'):
+ # Handle 'import ... as ...'
+ continue
+ if child.value in ('imap', 'izip', 'ifilter'):
+ child.remove()
+ elif child.value == 'ifilterfalse':
+ node.changed()
+ child.value = 'filterfalse'
+
+ # Make sure the import statement is still sane
+ children = imports.children[:] or [imports]
+ remove_comma = True
+ for child in children:
+ if remove_comma and getattr(child, 'value', None) == ',':
+ child.remove()
+ else:
+ remove_comma ^= True
+
+ if unicode(children[-1]) == ',':
+ children[-1].remove()
+
+ # If there is nothing left, return a blank line
+ if not (imports.children or getattr(imports, 'value', None)):
+ node = BlankLine()
+
+ return node
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 Wed Mar 19 23:22:35 2008
@@ -3027,8 +3027,6 @@
s = "from itertools import foo"
self.unchanged(s)
-
-
class Test_import(FixerTestCase):
fixer = "import"
More information about the Python-checkins
mailing list