summaryrefslogtreecommitdiff
path: root/six.py
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2010-11-24 19:17:26 -0600
committerBenjamin Peterson <benjamin@python.org>2010-11-24 19:17:26 -0600
commit1e1456b7c4aa0ac2df39bc1bfd4569ef36c06d0f (patch)
treed39af8dfcfc6d42d55ecd7bb25e73a10f4a7b120 /six.py
parentfd8ff98b80fca7325c4465bd9dd90460179eb3c9 (diff)
downloadsix-1e1456b7c4aa0ac2df39bc1bfd4569ef36c06d0f.tar.gz
expose api for adding things to six.moves
Diffstat (limited to 'six.py')
-rw-r--r--six.py101
1 files changed, 60 insertions, 41 deletions
diff --git a/six.py b/six.py
index 44748d5..69e78b1 100644
--- a/six.py
+++ b/six.py
@@ -52,10 +52,10 @@ class _LazyDescr(object):
return result
-class _Module(_LazyDescr):
+class MovedModule(_LazyDescr):
def __init__(self, name, old, new=None):
- super(_Module, self).__init__(name)
+ super(MovedModule, self).__init__(name)
if PY3:
if new is None:
new = name
@@ -67,10 +67,10 @@ class _Module(_LazyDescr):
return _import_module(self.mod)
-class _Attribute(_LazyDescr):
+class MovedAttribute(_LazyDescr):
def __init__(self, name, old_mod, new_mod, old_attr=None, new_attr=None):
- super(_Attribute, self).__init__(name)
+ super(MovedAttribute, self).__init__(name)
if PY3:
if new_mod is None:
new_mod = name
@@ -98,43 +98,46 @@ class _MovedItems(types.ModuleType):
_moved_attributes = [
- _Attribute("cStringIO", "cStringIO", "io", "StringIO"),
- _Attribute("reload_module", "__builtin__", "imp", "reload"),
- _Attribute("reduce", "__builtin__", "functools"),
- _Attribute("StringIO", "StringIO", "io"),
- _Attribute("xrange", "__builtin__", "builtins", "xrange", "range"),
-
- _Module("builtins", "__builtin__"),
- _Module("configparser", "ConfigParser"),
- _Module("copyreg", "copy_reg"),
- _Module("http_cookiejar", "cookielib", "http.cookiejar"),
- _Module("http_cookies", "Cookie", "http.cookies"),
- _Module("html_entities", "htmlentitydefs", "html.entities"),
- _Module("html_parser", "HTMLParser", "html.parser"),
- _Module("http_client", "httplib", "http.client"),
- _Module("BaseHTTPServer", "BaseHTTPServer", "http.server"),
- _Module("CGIHTTPServer", "CGIHTTPServer", "http.server"),
- _Module("SimpleHTTPServer", "SimpleHTTPServer", "http.server"),
- _Module("cPickle", "cPickle", "pickle"),
- _Module("queue", "Queue"),
- _Module("reprlib", "repr"),
- _Module("socketserver", "SocketServer"),
- _Module("tkinter", "Tkinter"),
- _Module("tkinter_dialog", "Dialog", "tkinter.dialog"),
- _Module("tkinter_filedialog", "FileDialog", "tkinter.filedialog"),
- _Module("tkinter_scrolledtext", "ScrolledText", "tkinter.scrolledtext"),
- _Module("tkinter_simpledialog", "SimpleDialog", "tkinter.simpledialog"),
- _Module("tkinter_tix", "Tix", "tkinter.tix"),
- _Module("tkinter_constants", "Tkconstants", "tkinter.constants"),
- _Module("tkinter_dnd", "Tkdnd", "tkinter.dnd"),
- _Module("tkinter_colorchooser", "tkColorChooser", "tkinter.colorchooser"),
- _Module("tkinter_commondialog", "tkCommonDialog", "tkinter.commondialog"),
- _Module("tkinter_tkfiledialog", "tkFileDialog", "tkinter.filedialog"),
- _Module("tkinter_font", "tkFont", "tkinter.font"),
- _Module("tkinter_messagebox", "tkMessageBox", "tkinter.messagebox"),
- _Module("tkinter_tksimpledialog", "tkSimpleDialog", "tkinter.simpledialog"),
- _Module("urllib_robotparser", "robotparser", "urllib.robotparser"),
- _Module("winreg", "_winreg"),
+ MovedAttribute("cStringIO", "cStringIO", "io", "StringIO"),
+ MovedAttribute("reload_module", "__builtin__", "imp", "reload"),
+ MovedAttribute("reduce", "__builtin__", "functools"),
+ MovedAttribute("StringIO", "StringIO", "io"),
+ MovedAttribute("xrange", "__builtin__", "builtins", "xrange", "range"),
+
+ MovedModule("builtins", "__builtin__"),
+ MovedModule("configparser", "ConfigParser"),
+ MovedModule("copyreg", "copy_reg"),
+ MovedModule("http_cookiejar", "cookielib", "http.cookiejar"),
+ MovedModule("http_cookies", "Cookie", "http.cookies"),
+ MovedModule("html_entities", "htmlentitydefs", "html.entities"),
+ MovedModule("html_parser", "HTMLParser", "html.parser"),
+ MovedModule("http_client", "httplib", "http.client"),
+ MovedModule("BaseHTTPServer", "BaseHTTPServer", "http.server"),
+ MovedModule("CGIHTTPServer", "CGIHTTPServer", "http.server"),
+ MovedModule("SimpleHTTPServer", "SimpleHTTPServer", "http.server"),
+ MovedModule("cPickle", "cPickle", "pickle"),
+ MovedModule("queue", "Queue"),
+ MovedModule("reprlib", "repr"),
+ MovedModule("socketserver", "SocketServer"),
+ MovedModule("tkinter", "Tkinter"),
+ MovedModule("tkinter_dialog", "Dialog", "tkinter.dialog"),
+ MovedModule("tkinter_filedialog", "FileDialog", "tkinter.filedialog"),
+ MovedModule("tkinter_scrolledtext", "ScrolledText", "tkinter.scrolledtext"),
+ MovedModule("tkinter_simpledialog", "SimpleDialog", "tkinter.simpledialog"),
+ MovedModule("tkinter_tix", "Tix", "tkinter.tix"),
+ MovedModule("tkinter_constants", "Tkconstants", "tkinter.constants"),
+ MovedModule("tkinter_dnd", "Tkdnd", "tkinter.dnd"),
+ MovedModule("tkinter_colorchooser", "tkColorChooser",
+ "tkinter.colorchooser"),
+ MovedModule("tkinter_commondialog", "tkCommonDialog",
+ "tkinter.commondialog"),
+ MovedModule("tkinter_tkfiledialog", "tkFileDialog", "tkinter.filedialog"),
+ MovedModule("tkinter_font", "tkFont", "tkinter.font"),
+ MovedModule("tkinter_messagebox", "tkMessageBox", "tkinter.messagebox"),
+ MovedModule("tkinter_tksimpledialog", "tkSimpleDialog",
+ "tkinter.simpledialog"),
+ MovedModule("urllib_robotparser", "robotparser", "urllib.robotparser"),
+ MovedModule("winreg", "_winreg"),
]
for attr in _moved_attributes:
setattr(_MovedItems, attr.name, attr)
@@ -143,6 +146,22 @@ del attr
moves = sys.modules["six.moves"] = _MovedItems("moves")
+def add_move(move):
+ """Add an item to six.moves."""
+ setattr(_MovedItems, move.name, move)
+
+
+def remove_move(name):
+ """Remove item from six.moves."""
+ try:
+ delattr(_MovedItems, name)
+ except AttributeError:
+ try:
+ del moves.__dict__[name]
+ except KeyError:
+ raise AttributeError("no such move, %r" % (name,))
+
+
if PY3:
_meth_func = "__func__"
_meth_self = "__self__"