mirror of
https://github.com/python/cpython.git
synced 2024-11-25 02:44:06 +08:00
d9dfaa9487
or dumping pickles with a 2.x-compatible protocol, in order to make data sharing and migration easier. This behaviour can be disabled using the new `fix_imports` optional argument.
82 lines
3.0 KiB
Python
82 lines
3.0 KiB
Python
# This module is used to map the old Python 2 names to the new names used in
|
|
# Python 3 for the pickle module. This needed to make pickle streams
|
|
# generated with Python 2 loadable by Python 3.
|
|
|
|
# This is a copy of lib2to3.fixes.fix_imports.MAPPING. We cannot import
|
|
# lib2to3 and use the mapping defined there, because lib2to3 uses pickle.
|
|
# Thus, this could cause the module to be imported recursively.
|
|
IMPORT_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',
|
|
'Tkconstants': 'tkinter.constants',
|
|
'Tix': 'tkinter.tix',
|
|
'ttk': 'tkinter.ttk',
|
|
'Tkinter': 'tkinter',
|
|
'markupbase': '_markupbase',
|
|
'_winreg': 'winreg',
|
|
'thread': '_thread',
|
|
'dummy_thread': '_dummy_thread',
|
|
'dbhash': 'dbm.bsd',
|
|
'dumbdbm': 'dbm.dumb',
|
|
'dbm': 'dbm.ndbm',
|
|
'gdbm': 'dbm.gnu',
|
|
'xmlrpclib': 'xmlrpc.client',
|
|
'DocXMLRPCServer': 'xmlrpc.server',
|
|
'SimpleXMLRPCServer': 'xmlrpc.server',
|
|
'httplib': 'http.client',
|
|
'htmlentitydefs' : 'html.entities',
|
|
'HTMLParser' : 'html.parser',
|
|
'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',
|
|
'whichdb': 'dbm',
|
|
'anydbm': 'dbm'
|
|
}
|
|
|
|
|
|
# This contains rename rules that are easy to handle. We ignore the more
|
|
# complex stuff (e.g. mapping the names in the urllib and types modules).
|
|
# These rules should be run before import names are fixed.
|
|
NAME_MAPPING = {
|
|
('__builtin__', 'xrange'): ('builtins', 'range'),
|
|
('__builtin__', 'reduce'): ('functools', 'reduce'),
|
|
('__builtin__', 'intern'): ('sys', 'intern'),
|
|
('__builtin__', 'unichr'): ('builtins', 'chr'),
|
|
('__builtin__', 'basestring'): ('builtins', 'str'),
|
|
('__builtin__', 'long'): ('builtins', 'int'),
|
|
('itertools', 'izip'): ('builtins', 'zip'),
|
|
('itertools', 'imap'): ('builtins', 'map'),
|
|
('itertools', 'ifilter'): ('builtins', 'filter'),
|
|
('itertools', 'ifilterfalse'): ('itertools', 'filterfalse'),
|
|
}
|
|
|
|
# Same, but for 3.x to 2.x
|
|
REVERSE_IMPORT_MAPPING = dict((v, k) for (k, v) in IMPORT_MAPPING.items())
|
|
REVERSE_NAME_MAPPING = dict((v, k) for (k, v) in NAME_MAPPING.items())
|