[Python-checkins] r65703 - in python/trunk/Lib/lib2to3: fixes/fix_imports.py

benjamin.peterson python-checkins at python.org
Sat Aug 16 01:51:24 CEST 2008


Author: benjamin.peterson
Date: Sat Aug 16 01:51:24 2008
New Revision: 65703

Log:
Merged revisions 65397 via svnmerge from 
svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3

........
  r65397 | collin.winter | 2008-08-01 22:39:06 -0500 (Fri, 01 Aug 2008) | 5 lines
  
  Patch #3480 by Nick Edds.
  
  Dramatically simplifies the fix_imports pattern, resulting in a reduction of the test_all_fixers runtime from 122+ secs to 59 secs (a good predictor of 2to3 performance).
........


Modified:
   python/trunk/Lib/lib2to3/   (props changed)
   python/trunk/Lib/lib2to3/fixes/fix_imports.py

Modified: python/trunk/Lib/lib2to3/fixes/fix_imports.py
==============================================================================
--- python/trunk/Lib/lib2to3/fixes/fix_imports.py	(original)
+++ python/trunk/Lib/lib2to3/fixes/fix_imports.py	Sat Aug 16 01:51:24 2008
@@ -61,24 +61,23 @@
 
 
 def build_pattern(mapping=MAPPING):
-    bare = set()
-    for old_module, new_module in mapping.items():
-        bare.add(old_module)
-        yield """import_name< 'import' (module=%r
-                              | dotted_as_names< any* module=%r any* >) >
-              """ % (old_module, old_module)
-        yield """import_from< 'from' module_name=%r 'import'
-                  ( any | import_as_name< any 'as' any > |
-                    import_as_names< any* >) >
-              """ % old_module
-        yield """import_name< 'import'
-                              dotted_as_name< module_name=%r 'as' any > >
-              """ % old_module
-        # Find usages of module members in code e.g. urllib.foo(bar)
-        yield """power< module_name=%r
-                 trailer<'.' any > any* >
-              """ % old_module
-    yield """bare_name=%s""" % alternates(bare)
+    mod_list = ' | '.join(["module='" + key + "'" for key in mapping.keys()])
+    mod_name_list = ' | '.join(["module_name='" + key + "'" for key in mapping.keys()])
+    yield """import_name< 'import' ((%s)
+                          | dotted_as_names< any* (%s) any* >) >
+          """ % (mod_list, mod_list)
+    yield """import_from< 'from' (%s) 'import'
+              ( any | import_as_name< any 'as' any > |
+                import_as_names< any* >) >
+          """ % mod_name_list
+    yield """import_name< 'import'
+                          dotted_as_name< (%s) 'as' any > >
+          """ % mod_name_list
+    # Find usages of module members in code e.g. urllib.foo(bar)
+    yield """power< (%s)
+             trailer<'.' any > any* >
+          """ % mod_name_list
+    yield """bare_name=%s""" % alternates(mapping.keys())
 
 class FixImports(fixer_base.BaseFix):
     PATTERN = "|".join(build_pattern())


More information about the Python-checkins mailing list