Merged revisions 64863,64868,64870,64942,65001-65002,65017-65018 via svnmerge from
svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3
........
r64863 | brett.cannon | 2008-07-10 19:42:32 -0500 (Thu, 10 Jul 2008) | 1 line
Add urlparse -> urllib.parse to fix_imports.
........
r64868 | brett.cannon | 2008-07-10 20:00:10 -0500 (Thu, 10 Jul 2008) | 1 line
Add robotparser -> urllib.robotparser to fix_imports.
........
r64870 | brett.cannon | 2008-07-11 00:56:27 -0500 (Fri, 11 Jul 2008) | 6 lines
Fix the fixers for the new dbm package.
Had to create a new fixer (fix_imports2) which did fixes in post-order. This
because ``import anydbm`` was being translated into ``import dbm`` which was
then subsequently changed into ``import dbm.ndbm``; one transform too many.
........
r64942 | collin.winter | 2008-07-13 20:19:05 -0500 (Sun, 13 Jul 2008) | 1 line
Add a comment explaining part of fix_imports.py
........
r65001 | brett.cannon | 2008-07-16 00:11:12 -0500 (Wed, 16 Jul 2008) | 2 lines
Remove some extraneous whitespace.
........
r65002 | brett.cannon | 2008-07-16 00:12:04 -0500 (Wed, 16 Jul 2008) | 4 lines
Implement a fixer for urllib(2).
Thanks Nick Edds for the patch.
........
r65017 | benjamin.peterson | 2008-07-16 11:04:19 -0500 (Wed, 16 Jul 2008) | 1 line
fix 2to3 in Python 2.6
........
r65018 | benjamin.peterson | 2008-07-16 11:55:21 -0500 (Wed, 16 Jul 2008) | 1 line
normalize whitespace
........
2008-07-16 14:01:46 -03:00
|
|
|
"""Fix incompatible imports and module references."""
|
2008-03-19 01:43:46 -03:00
|
|
|
# Author: Collin Winter
|
|
|
|
|
|
|
|
# Local imports
|
Merged revisions 63661,63666,63695,63711,63729,63769,63790,63880,63886 via svnmerge from
svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3
........
r63661 | georg.brandl | 2008-05-26 05:26:20 -0500 (Mon, 26 May 2008) | 2 lines
Add import fixes for dbm package.
........
r63666 | georg.brandl | 2008-05-26 05:49:09 -0500 (Mon, 26 May 2008) | 2 lines
Add xmlrpc package fixes.
........
r63695 | georg.brandl | 2008-05-26 10:14:33 -0500 (Mon, 26 May 2008) | 2 lines
Add fixer entries for http package.
........
r63711 | benjamin.peterson | 2008-05-26 13:43:51 -0500 (Mon, 26 May 2008) | 2 lines
add import mapping for test.test_support -> test.support
........
r63729 | benjamin.peterson | 2008-05-26 16:31:03 -0500 (Mon, 26 May 2008) | 2 lines
mapping for commands module -> subprocess
........
r63769 | brett.cannon | 2008-05-29 00:13:13 -0500 (Thu, 29 May 2008) | 1 line
Fixer for UserString.UserString over to the collections module.
........
r63790 | brett.cannon | 2008-05-29 14:13:51 -0500 (Thu, 29 May 2008) | 4 lines
Add a fixer for UserList.
Closes issue #2878. Thanks to Quentin Gallet-Gilles for the patch.
........
r63880 | collin.winter | 2008-06-01 18:09:38 -0500 (Sun, 01 Jun 2008) | 6 lines
Move lib2to3/fixes/{basefix,util}.py down to lib2to3/.
This is step 1 of turning lib2to3/ into a general-purpose refactoring
library, reusable by other projects.
........
r63886 | collin.winter | 2008-06-01 22:15:01 -0500 (Sun, 01 Jun 2008) | 5 lines
Allow refactoring tools to specify a directory for fixer modules.
This is step 2 of turning lib2to3/ into a general-purpose refactoring
library, reusable by other projects. Step 1: r63880.
........
2008-06-14 23:31:05 -03:00
|
|
|
from .. import fixer_base
|
|
|
|
from ..fixer_util import Name, attr_chain, any, set
|
2008-03-19 01:43:46 -03:00
|
|
|
|
2008-07-16 23:07:46 -03:00
|
|
|
MAPPING = {'StringIO': 'io',
|
|
|
|
'cStringIO': 'io',
|
|
|
|
'cPickle': 'pickle',
|
|
|
|
'__builtin__' : 'builtins',
|
|
|
|
'copy_reg': 'copyreg',
|
|
|
|
'Queue': 'queue',
|
|
|
|
'SocketServer': 'socketserver',
|
|
|
|
'ConfigParser': 'configparser',
|
|
|
|
'repr': 'reprlib',
|
|
|
|
'FileDialog': 'tkinter.filedialog',
|
|
|
|
'tkFileDialog': 'tkinter.filedialog',
|
|
|
|
'SimpleDialog': 'tkinter.simpledialog',
|
|
|
|
'tkSimpleDialog': 'tkinter.simpledialog',
|
|
|
|
'tkColorChooser': 'tkinter.colorchooser',
|
|
|
|
'tkCommonDialog': 'tkinter.commondialog',
|
|
|
|
'Dialog': 'tkinter.dialog',
|
|
|
|
'Tkdnd': 'tkinter.dnd',
|
|
|
|
'tkFont': 'tkinter.font',
|
|
|
|
'tkMessageBox': 'tkinter.messagebox',
|
|
|
|
'ScrolledText': 'tkinter.scrolledtext',
|
|
|
|
'turtle': 'tkinter.turtle',
|
|
|
|
'Tkconstants': 'tkinter.constants',
|
|
|
|
'Tix': 'tkinter.tix',
|
|
|
|
'Tkinter': 'tkinter',
|
|
|
|
'markupbase': '_markupbase',
|
|
|
|
'_winreg': 'winreg',
|
|
|
|
'thread': '_thread',
|
|
|
|
'dummy_thread': '_dummy_thread',
|
|
|
|
# anydbm and whichdb are handled by fix_imports2
|
|
|
|
'dbhash': 'dbm.bsd',
|
|
|
|
'dumbdbm': 'dbm.dumb',
|
|
|
|
'dbm': 'dbm.ndbm',
|
|
|
|
'gdbm': 'dbm.gnu',
|
|
|
|
'xmlrpclib': 'xmlrpc.client',
|
|
|
|
'DocXMLRPCServer': 'xmlrpc.server',
|
|
|
|
'SimpleXMLRPCServer': 'xmlrpc.server',
|
|
|
|
'httplib': 'http.client',
|
|
|
|
'Cookie': 'http.cookies',
|
|
|
|
'cookielib': 'http.cookiejar',
|
|
|
|
'BaseHTTPServer': 'http.server',
|
|
|
|
'SimpleHTTPServer': 'http.server',
|
|
|
|
'CGIHTTPServer': 'http.server',
|
|
|
|
#'test.test_support': 'test.support',
|
|
|
|
'commands': 'subprocess',
|
|
|
|
'UserString' : 'collections',
|
|
|
|
'UserList' : 'collections',
|
|
|
|
'urlparse' : 'urllib.parse',
|
|
|
|
'robotparser' : 'urllib.robotparser',
|
Merged revisions 62647-63633 via svnmerge from
svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3
........
r63047 | alexandre.vassalotti | 2008-05-11 11:03:24 +0200 (So, 11 Mai 2008) | 2 lines
Added import fixer for copy_reg rename.
........
r63081 | alexandre.vassalotti | 2008-05-11 22:06:36 +0200 (So, 11 Mai 2008) | 2 lines
Added import fixer for Queue rename.
........
r63090 | alexandre.vassalotti | 2008-05-11 22:38:16 +0200 (So, 11 Mai 2008) | 2 lines
Added import fixer for PixMapWrapper rename.
........
r63141 | alexandre.vassalotti | 2008-05-12 04:42:03 +0200 (Mo, 12 Mai 2008) | 5 lines
Added fixer for SocketServer renaming.
Removed PixMapWrapper fixer, since the module is actually pending
removal.
........
r63252 | alexandre.vassalotti | 2008-05-15 01:10:20 +0200 (Do, 15 Mai 2008) | 2 lines
Added fixer for ConfigParser rename.
........
r63321 | collin.winter | 2008-05-15 19:42:58 +0200 (Do, 15 Mai 2008) | 1 line
Add a missing comma. Fixes issue 2866.
........
r63356 | alexandre.vassalotti | 2008-05-16 08:55:44 +0200 (Fr, 16 Mai 2008) | 4 lines
Added new tests for fix_imports.
Added refactoring support of from-import statements of the style:
from foo import bar, baz
........
r63362 | alexandre.vassalotti | 2008-05-16 09:17:53 +0200 (Fr, 16 Mai 2008) | 2 lines
Added the repr module import fixer.
........
r63456 | georg.brandl | 2008-05-18 21:51:18 +0200 (So, 18 Mai 2008) | 2 lines
#2908: fixers for Tkinter rename.
........
r63461 | georg.brandl | 2008-05-18 23:00:20 +0200 (So, 18 Mai 2008) | 2 lines
Fix for last patch.
........
r63525 | alexandre.vassalotti | 2008-05-21 23:43:29 +0200 (Mi, 21 Mai 2008) | 4 lines
Add missing comma in fix_imports.
Bug caught by Quentin Gallet-Gilles.
........
r63532 | brett.cannon | 2008-05-22 05:02:43 +0200 (Do, 22 Mai 2008) | 4 lines
When testing fix_imports, no need to only test a subset of input; test it all!
Do all revisions to the sandbox need to be manually applied to the trunk?
........
r63533 | brett.cannon | 2008-05-22 05:16:45 +0200 (Do, 22 Mai 2008) | 1 line
Add _markupbase to the import fixer.
........
r63612 | georg.brandl | 2008-05-25 09:56:59 +0200 (So, 25 Mai 2008) | 2 lines
Add fixer for _winreg rename.
........
r63627 | georg.brandl | 2008-05-25 14:30:10 +0200 (So, 25 Mai 2008) | 2 lines
Add fixer entry for the thread module.
........
r63629 | georg.brandl | 2008-05-25 14:34:13 +0200 (So, 25 Mai 2008) | 2 lines
Fixer entry for dummy_thread.
........
r63633 | martin.v.loewis | 2008-05-25 16:52:41 +0200 (So, 25 Mai 2008) | 2 lines
Temporarily disable Test_imports.
........
2008-05-25 11:58:01 -03:00
|
|
|
}
|
2008-03-19 01:43:46 -03:00
|
|
|
|
|
|
|
|
|
|
|
def alternates(members):
|
|
|
|
return "(" + "|".join(map(repr, members)) + ")"
|
|
|
|
|
|
|
|
|
Merged revisions 64863,64868,64870,64942,65001-65002,65017-65018 via svnmerge from
svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3
........
r64863 | brett.cannon | 2008-07-10 19:42:32 -0500 (Thu, 10 Jul 2008) | 1 line
Add urlparse -> urllib.parse to fix_imports.
........
r64868 | brett.cannon | 2008-07-10 20:00:10 -0500 (Thu, 10 Jul 2008) | 1 line
Add robotparser -> urllib.robotparser to fix_imports.
........
r64870 | brett.cannon | 2008-07-11 00:56:27 -0500 (Fri, 11 Jul 2008) | 6 lines
Fix the fixers for the new dbm package.
Had to create a new fixer (fix_imports2) which did fixes in post-order. This
because ``import anydbm`` was being translated into ``import dbm`` which was
then subsequently changed into ``import dbm.ndbm``; one transform too many.
........
r64942 | collin.winter | 2008-07-13 20:19:05 -0500 (Sun, 13 Jul 2008) | 1 line
Add a comment explaining part of fix_imports.py
........
r65001 | brett.cannon | 2008-07-16 00:11:12 -0500 (Wed, 16 Jul 2008) | 2 lines
Remove some extraneous whitespace.
........
r65002 | brett.cannon | 2008-07-16 00:12:04 -0500 (Wed, 16 Jul 2008) | 4 lines
Implement a fixer for urllib(2).
Thanks Nick Edds for the patch.
........
r65017 | benjamin.peterson | 2008-07-16 11:04:19 -0500 (Wed, 16 Jul 2008) | 1 line
fix 2to3 in Python 2.6
........
r65018 | benjamin.peterson | 2008-07-16 11:55:21 -0500 (Wed, 16 Jul 2008) | 1 line
normalize whitespace
........
2008-07-16 14:01:46 -03:00
|
|
|
def build_pattern(mapping=MAPPING):
|
2008-03-19 01:43:46 -03:00
|
|
|
bare = set()
|
2008-07-16 23:07:46 -03:00
|
|
|
for old_module, new_module in mapping.items():
|
2008-03-19 01:43:46 -03:00
|
|
|
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'
|
2008-07-16 23:07:46 -03:00
|
|
|
( any | import_as_name< any 'as' any > |
|
|
|
|
import_as_names< any* >) >
|
2008-03-19 01:43:46 -03:00
|
|
|
""" % old_module
|
|
|
|
yield """import_name< 'import'
|
|
|
|
dotted_as_name< module_name=%r 'as' any > >
|
|
|
|
""" % old_module
|
Merged revisions 64863,64868,64870,64942,65001-65002,65017-65018 via svnmerge from
svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3
........
r64863 | brett.cannon | 2008-07-10 19:42:32 -0500 (Thu, 10 Jul 2008) | 1 line
Add urlparse -> urllib.parse to fix_imports.
........
r64868 | brett.cannon | 2008-07-10 20:00:10 -0500 (Thu, 10 Jul 2008) | 1 line
Add robotparser -> urllib.robotparser to fix_imports.
........
r64870 | brett.cannon | 2008-07-11 00:56:27 -0500 (Fri, 11 Jul 2008) | 6 lines
Fix the fixers for the new dbm package.
Had to create a new fixer (fix_imports2) which did fixes in post-order. This
because ``import anydbm`` was being translated into ``import dbm`` which was
then subsequently changed into ``import dbm.ndbm``; one transform too many.
........
r64942 | collin.winter | 2008-07-13 20:19:05 -0500 (Sun, 13 Jul 2008) | 1 line
Add a comment explaining part of fix_imports.py
........
r65001 | brett.cannon | 2008-07-16 00:11:12 -0500 (Wed, 16 Jul 2008) | 2 lines
Remove some extraneous whitespace.
........
r65002 | brett.cannon | 2008-07-16 00:12:04 -0500 (Wed, 16 Jul 2008) | 4 lines
Implement a fixer for urllib(2).
Thanks Nick Edds for the patch.
........
r65017 | benjamin.peterson | 2008-07-16 11:04:19 -0500 (Wed, 16 Jul 2008) | 1 line
fix 2to3 in Python 2.6
........
r65018 | benjamin.peterson | 2008-07-16 11:55:21 -0500 (Wed, 16 Jul 2008) | 1 line
normalize whitespace
........
2008-07-16 14:01:46 -03:00
|
|
|
# Find usages of module members in code e.g. urllib.foo(bar)
|
2008-07-16 23:07:46 -03:00
|
|
|
yield """power< module_name=%r
|
|
|
|
trailer<'.' any > any* >
|
|
|
|
""" % old_module
|
2008-03-19 01:43:46 -03:00
|
|
|
yield """bare_name=%s""" % alternates(bare)
|
|
|
|
|
Merged revisions 63661,63666,63695,63711,63729,63769,63790,63880,63886 via svnmerge from
svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3
........
r63661 | georg.brandl | 2008-05-26 05:26:20 -0500 (Mon, 26 May 2008) | 2 lines
Add import fixes for dbm package.
........
r63666 | georg.brandl | 2008-05-26 05:49:09 -0500 (Mon, 26 May 2008) | 2 lines
Add xmlrpc package fixes.
........
r63695 | georg.brandl | 2008-05-26 10:14:33 -0500 (Mon, 26 May 2008) | 2 lines
Add fixer entries for http package.
........
r63711 | benjamin.peterson | 2008-05-26 13:43:51 -0500 (Mon, 26 May 2008) | 2 lines
add import mapping for test.test_support -> test.support
........
r63729 | benjamin.peterson | 2008-05-26 16:31:03 -0500 (Mon, 26 May 2008) | 2 lines
mapping for commands module -> subprocess
........
r63769 | brett.cannon | 2008-05-29 00:13:13 -0500 (Thu, 29 May 2008) | 1 line
Fixer for UserString.UserString over to the collections module.
........
r63790 | brett.cannon | 2008-05-29 14:13:51 -0500 (Thu, 29 May 2008) | 4 lines
Add a fixer for UserList.
Closes issue #2878. Thanks to Quentin Gallet-Gilles for the patch.
........
r63880 | collin.winter | 2008-06-01 18:09:38 -0500 (Sun, 01 Jun 2008) | 6 lines
Move lib2to3/fixes/{basefix,util}.py down to lib2to3/.
This is step 1 of turning lib2to3/ into a general-purpose refactoring
library, reusable by other projects.
........
r63886 | collin.winter | 2008-06-01 22:15:01 -0500 (Sun, 01 Jun 2008) | 5 lines
Allow refactoring tools to specify a directory for fixer modules.
This is step 2 of turning lib2to3/ into a general-purpose refactoring
library, reusable by other projects. Step 1: r63880.
........
2008-06-14 23:31:05 -03:00
|
|
|
class FixImports(fixer_base.BaseFix):
|
2008-03-19 01:43:46 -03:00
|
|
|
PATTERN = "|".join(build_pattern())
|
|
|
|
order = "pre" # Pre-order tree traversal
|
|
|
|
|
Merged revisions 64863,64868,64870,64942,65001-65002,65017-65018 via svnmerge from
svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3
........
r64863 | brett.cannon | 2008-07-10 19:42:32 -0500 (Thu, 10 Jul 2008) | 1 line
Add urlparse -> urllib.parse to fix_imports.
........
r64868 | brett.cannon | 2008-07-10 20:00:10 -0500 (Thu, 10 Jul 2008) | 1 line
Add robotparser -> urllib.robotparser to fix_imports.
........
r64870 | brett.cannon | 2008-07-11 00:56:27 -0500 (Fri, 11 Jul 2008) | 6 lines
Fix the fixers for the new dbm package.
Had to create a new fixer (fix_imports2) which did fixes in post-order. This
because ``import anydbm`` was being translated into ``import dbm`` which was
then subsequently changed into ``import dbm.ndbm``; one transform too many.
........
r64942 | collin.winter | 2008-07-13 20:19:05 -0500 (Sun, 13 Jul 2008) | 1 line
Add a comment explaining part of fix_imports.py
........
r65001 | brett.cannon | 2008-07-16 00:11:12 -0500 (Wed, 16 Jul 2008) | 2 lines
Remove some extraneous whitespace.
........
r65002 | brett.cannon | 2008-07-16 00:12:04 -0500 (Wed, 16 Jul 2008) | 4 lines
Implement a fixer for urllib(2).
Thanks Nick Edds for the patch.
........
r65017 | benjamin.peterson | 2008-07-16 11:04:19 -0500 (Wed, 16 Jul 2008) | 1 line
fix 2to3 in Python 2.6
........
r65018 | benjamin.peterson | 2008-07-16 11:55:21 -0500 (Wed, 16 Jul 2008) | 1 line
normalize whitespace
........
2008-07-16 14:01:46 -03:00
|
|
|
mapping = MAPPING
|
|
|
|
|
2008-03-19 01:43:46 -03:00
|
|
|
# Don't match the node if it's within another match
|
|
|
|
def match(self, node):
|
|
|
|
match = super(FixImports, self).match
|
|
|
|
results = match(node)
|
|
|
|
if results:
|
|
|
|
if any([match(obj) for obj in attr_chain(node, "parent")]):
|
|
|
|
return False
|
|
|
|
return results
|
|
|
|
return False
|
|
|
|
|
|
|
|
def start_tree(self, tree, filename):
|
|
|
|
super(FixImports, self).start_tree(tree, filename)
|
|
|
|
self.replace = {}
|
|
|
|
|
|
|
|
def transform(self, node, results):
|
|
|
|
import_mod = results.get("module")
|
|
|
|
mod_name = results.get("module_name")
|
|
|
|
bare_name = results.get("bare_name")
|
|
|
|
|
|
|
|
if import_mod or mod_name:
|
2008-07-16 23:07:46 -03:00
|
|
|
new_name = self.mapping[(import_mod or mod_name).value]
|
2008-03-19 01:43:46 -03:00
|
|
|
|
|
|
|
if import_mod:
|
|
|
|
self.replace[import_mod.value] = new_name
|
|
|
|
import_mod.replace(Name(new_name, prefix=import_mod.get_prefix()))
|
|
|
|
elif mod_name:
|
2008-07-16 23:07:46 -03:00
|
|
|
mod_name.replace(Name(new_name, prefix=mod_name.get_prefix()))
|
2008-03-19 01:43:46 -03:00
|
|
|
elif bare_name:
|
|
|
|
bare_name = bare_name[0]
|
|
|
|
new_name = self.replace.get(bare_name.value)
|
|
|
|
if new_name:
|
2008-03-19 02:22:42 -03:00
|
|
|
bare_name.replace(Name(new_name, prefix=bare_name.get_prefix()))
|