Updated six to 1.6.1.
This commit is contained in:
parent
bff77e2aa8
commit
2ec82c7387
|
@ -25,7 +25,7 @@ import sys
|
||||||
import types
|
import types
|
||||||
|
|
||||||
__author__ = "Benjamin Peterson <benjamin@python.org>"
|
__author__ = "Benjamin Peterson <benjamin@python.org>"
|
||||||
__version__ = "1.5.2"
|
__version__ = "1.6.1"
|
||||||
|
|
||||||
|
|
||||||
# Useful for very coarse version differentiation.
|
# Useful for very coarse version differentiation.
|
||||||
|
@ -83,7 +83,11 @@ class _LazyDescr(object):
|
||||||
self.name = name
|
self.name = name
|
||||||
|
|
||||||
def __get__(self, obj, tp):
|
def __get__(self, obj, tp):
|
||||||
result = self._resolve()
|
try:
|
||||||
|
result = self._resolve()
|
||||||
|
except ImportError:
|
||||||
|
# See the nice big comment in MovedModule.__getattr__.
|
||||||
|
raise AttributeError("%s could not be imported " % self.name)
|
||||||
setattr(obj, self.name, result) # Invokes __set__.
|
setattr(obj, self.name, result) # Invokes __set__.
|
||||||
# This is a bit ugly, but it avoids running this again.
|
# This is a bit ugly, but it avoids running this again.
|
||||||
delattr(obj.__class__, self.name)
|
delattr(obj.__class__, self.name)
|
||||||
|
@ -105,15 +109,22 @@ class MovedModule(_LazyDescr):
|
||||||
return _import_module(self.mod)
|
return _import_module(self.mod)
|
||||||
|
|
||||||
def __getattr__(self, attr):
|
def __getattr__(self, attr):
|
||||||
# Hack around the Django autoreloader. The reloader tries to get
|
# It turns out many Python frameworks like to traverse sys.modules and
|
||||||
# __file__ or __name__ of every module in sys.modules. This doesn't work
|
# try to load various attributes. This causes problems if this is a
|
||||||
# well if this MovedModule is for an module that is unavailable on this
|
# platform-specific module on the wrong platform, like _winreg on
|
||||||
# machine (like winreg on Unix systems). Thus, we pretend __file__ and
|
# Unixes. Therefore, we silently pretend unimportable modules do not
|
||||||
# __name__ don't exist if the module hasn't been loaded yet. See issues
|
# have any attributes. See issues #51, #53, #56, and #63 for the full
|
||||||
# #51 and #53.
|
# tales of woe.
|
||||||
if attr in ("__file__", "__name__") and self.mod not in sys.modules:
|
#
|
||||||
raise AttributeError
|
# First, if possible, avoid loading the module just to look at __file__,
|
||||||
_module = self._resolve()
|
# __name__, or __path__.
|
||||||
|
if (attr in ("__file__", "__name__", "__path__") and
|
||||||
|
self.mod not in sys.modules):
|
||||||
|
raise AttributeError(attr)
|
||||||
|
try:
|
||||||
|
_module = self._resolve()
|
||||||
|
except ImportError:
|
||||||
|
raise AttributeError(attr)
|
||||||
value = getattr(_module, attr)
|
value = getattr(_module, attr)
|
||||||
setattr(self, attr, value)
|
setattr(self, attr, value)
|
||||||
return value
|
return value
|
||||||
|
@ -222,6 +233,7 @@ _moved_attributes = [
|
||||||
MovedModule("urllib", __name__ + ".moves.urllib", __name__ + ".moves.urllib"),
|
MovedModule("urllib", __name__ + ".moves.urllib", __name__ + ".moves.urllib"),
|
||||||
MovedModule("urllib_robotparser", "robotparser", "urllib.robotparser"),
|
MovedModule("urllib_robotparser", "robotparser", "urllib.robotparser"),
|
||||||
MovedModule("xmlrpc_client", "xmlrpclib", "xmlrpc.client"),
|
MovedModule("xmlrpc_client", "xmlrpclib", "xmlrpc.client"),
|
||||||
|
MovedModule("xmlrpc_server", "xmlrpclib", "xmlrpc.server"),
|
||||||
MovedModule("winreg", "_winreg"),
|
MovedModule("winreg", "_winreg"),
|
||||||
]
|
]
|
||||||
for attr in _moved_attributes:
|
for attr in _moved_attributes:
|
||||||
|
@ -241,6 +253,7 @@ class Module_six_moves_urllib_parse(_LazyModule):
|
||||||
|
|
||||||
_urllib_parse_moved_attributes = [
|
_urllib_parse_moved_attributes = [
|
||||||
MovedAttribute("ParseResult", "urlparse", "urllib.parse"),
|
MovedAttribute("ParseResult", "urlparse", "urllib.parse"),
|
||||||
|
MovedAttribute("SplitResult", "urlparse", "urllib.parse"),
|
||||||
MovedAttribute("parse_qs", "urlparse", "urllib.parse"),
|
MovedAttribute("parse_qs", "urlparse", "urllib.parse"),
|
||||||
MovedAttribute("parse_qsl", "urlparse", "urllib.parse"),
|
MovedAttribute("parse_qsl", "urlparse", "urllib.parse"),
|
||||||
MovedAttribute("urldefrag", "urlparse", "urllib.parse"),
|
MovedAttribute("urldefrag", "urlparse", "urllib.parse"),
|
||||||
|
@ -254,6 +267,7 @@ _urllib_parse_moved_attributes = [
|
||||||
MovedAttribute("unquote", "urllib", "urllib.parse"),
|
MovedAttribute("unquote", "urllib", "urllib.parse"),
|
||||||
MovedAttribute("unquote_plus", "urllib", "urllib.parse"),
|
MovedAttribute("unquote_plus", "urllib", "urllib.parse"),
|
||||||
MovedAttribute("urlencode", "urllib", "urllib.parse"),
|
MovedAttribute("urlencode", "urllib", "urllib.parse"),
|
||||||
|
MovedAttribute("splitquery", "urllib", "urllib.parse"),
|
||||||
]
|
]
|
||||||
for attr in _urllib_parse_moved_attributes:
|
for attr in _urllib_parse_moved_attributes:
|
||||||
setattr(Module_six_moves_urllib_parse, attr.name, attr)
|
setattr(Module_six_moves_urllib_parse, attr.name, attr)
|
||||||
|
|
|
@ -5,4 +5,4 @@ Django 1.4.11 release notes
|
||||||
*Under development*
|
*Under development*
|
||||||
|
|
||||||
Django's vendored version of six, :mod:`django.utils.six`, has been upgraded to
|
Django's vendored version of six, :mod:`django.utils.six`, has been upgraded to
|
||||||
the latest release (1.5.2).
|
the latest release (1.6.1).
|
||||||
|
|
|
@ -5,7 +5,7 @@ Django 1.5.6 release notes
|
||||||
*Under development*
|
*Under development*
|
||||||
|
|
||||||
Django's vendored version of six, :mod:`django.utils.six`, has been upgraded to
|
Django's vendored version of six, :mod:`django.utils.six`, has been upgraded to
|
||||||
the latest release (1.5.2).
|
the latest release (1.6.1).
|
||||||
|
|
||||||
Bugfixes
|
Bugfixes
|
||||||
========
|
========
|
||||||
|
|
|
@ -26,3 +26,6 @@ several bugs in 1.6.2:
|
||||||
|
|
||||||
* Improved :func:`~django.utils.html.strip_tags` accuracy (but it still cannot
|
* Improved :func:`~django.utils.html.strip_tags` accuracy (but it still cannot
|
||||||
guarantee an HTML-safe result, as stated in the documentation).
|
guarantee an HTML-safe result, as stated in the documentation).
|
||||||
|
|
||||||
|
Additionally, Django's vendored version of six, :mod:`django.utils.six` has been
|
||||||
|
upgraded to the latest release (1.6.1).
|
||||||
|
|
Loading…
Reference in New Issue