[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