mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Updated six to 1.10.0.
This commit is contained in:
		| @@ -29,12 +29,13 @@ import sys | ||||
| import types | ||||
|  | ||||
| __author__ = "Benjamin Peterson <benjamin@python.org>" | ||||
| __version__ = "1.9.0" | ||||
| __version__ = "1.10.0" | ||||
|  | ||||
|  | ||||
| # Useful for very coarse version differentiation. | ||||
| PY2 = sys.version_info[0] == 2 | ||||
| PY3 = sys.version_info[0] == 3 | ||||
| PY34 = sys.version_info[0:2] >= (3, 4) | ||||
|  | ||||
| if PY3: | ||||
|     string_types = str, | ||||
| @@ -57,6 +58,7 @@ else: | ||||
|     else: | ||||
|         # It's possible to have sizeof(long) != sizeof(Py_ssize_t). | ||||
|         class X(object): | ||||
|  | ||||
|             def __len__(self): | ||||
|                 return 1 << 31 | ||||
|         try: | ||||
| @@ -88,7 +90,7 @@ class _LazyDescr(object): | ||||
|  | ||||
|     def __get__(self, obj, tp): | ||||
|         result = self._resolve() | ||||
|         setattr(obj, self.name, result) # Invokes __set__. | ||||
|         setattr(obj, self.name, result)  # Invokes __set__. | ||||
|         try: | ||||
|             # This is a bit ugly, but it avoids running this again by | ||||
|             # removing this descriptor. | ||||
| @@ -160,12 +162,14 @@ class MovedAttribute(_LazyDescr): | ||||
|  | ||||
|  | ||||
| class _SixMetaPathImporter(object): | ||||
|  | ||||
|     """ | ||||
|     A meta path importer to import six.moves and its submodules. | ||||
|  | ||||
|     This class implements a PEP302 finder and loader. It should be compatible | ||||
|     with Python 2.5 and all existing versions of Python3 | ||||
|     """ | ||||
|  | ||||
|     def __init__(self, six_module_name): | ||||
|         self.name = six_module_name | ||||
|         self.known_modules = {} | ||||
| @@ -223,6 +227,7 @@ _importer = _SixMetaPathImporter(__name__) | ||||
|  | ||||
|  | ||||
| class _MovedItems(_LazyModule): | ||||
|  | ||||
|     """Lazy loading of moved objects""" | ||||
|     __path__ = []  # mark as package | ||||
|  | ||||
| @@ -234,8 +239,10 @@ _moved_attributes = [ | ||||
|     MovedAttribute("input", "__builtin__", "builtins", "raw_input", "input"), | ||||
|     MovedAttribute("intern", "__builtin__", "sys"), | ||||
|     MovedAttribute("map", "itertools", "builtins", "imap", "map"), | ||||
|     MovedAttribute("getcwd", "os", "os", "getcwdu", "getcwd"), | ||||
|     MovedAttribute("getcwdb", "os", "os", "getcwd", "getcwdb"), | ||||
|     MovedAttribute("range", "__builtin__", "builtins", "xrange", "range"), | ||||
|     MovedAttribute("reload_module", "__builtin__", "imp", "reload"), | ||||
|     MovedAttribute("reload_module", "__builtin__", "importlib" if PY34 else "imp", "reload"), | ||||
|     MovedAttribute("reduce", "__builtin__", "functools"), | ||||
|     MovedAttribute("shlex_quote", "pipes", "shlex", "quote"), | ||||
|     MovedAttribute("StringIO", "StringIO", "io"), | ||||
| @@ -245,7 +252,6 @@ _moved_attributes = [ | ||||
|     MovedAttribute("xrange", "__builtin__", "builtins", "xrange", "range"), | ||||
|     MovedAttribute("zip", "itertools", "builtins", "izip", "zip"), | ||||
|     MovedAttribute("zip_longest", "itertools", "itertools", "izip_longest", "zip_longest"), | ||||
|  | ||||
|     MovedModule("builtins", "__builtin__"), | ||||
|     MovedModule("configparser", "ConfigParser"), | ||||
|     MovedModule("copyreg", "copy_reg"), | ||||
| @@ -292,8 +298,13 @@ _moved_attributes = [ | ||||
|     MovedModule("urllib_robotparser", "robotparser", "urllib.robotparser"), | ||||
|     MovedModule("xmlrpc_client", "xmlrpclib", "xmlrpc.client"), | ||||
|     MovedModule("xmlrpc_server", "SimpleXMLRPCServer", "xmlrpc.server"), | ||||
|     MovedModule("winreg", "_winreg"), | ||||
| ] | ||||
| # Add windows specific modules. | ||||
| if sys.platform == "win32": | ||||
|     _moved_attributes += [ | ||||
|         MovedModule("winreg", "_winreg"), | ||||
|     ] | ||||
|  | ||||
| for attr in _moved_attributes: | ||||
|     setattr(_MovedItems, attr.name, attr) | ||||
|     if isinstance(attr, MovedModule): | ||||
| @@ -307,6 +318,7 @@ _importer._add_module(moves, "moves") | ||||
|  | ||||
|  | ||||
| class Module_six_moves_urllib_parse(_LazyModule): | ||||
|  | ||||
|     """Lazy loading of moved objects in six.moves.urllib_parse""" | ||||
|  | ||||
|  | ||||
| @@ -346,6 +358,7 @@ _importer._add_module(Module_six_moves_urllib_parse(__name__ + ".moves.urllib_pa | ||||
|  | ||||
|  | ||||
| class Module_six_moves_urllib_error(_LazyModule): | ||||
|  | ||||
|     """Lazy loading of moved objects in six.moves.urllib_error""" | ||||
|  | ||||
|  | ||||
| @@ -365,6 +378,7 @@ _importer._add_module(Module_six_moves_urllib_error(__name__ + ".moves.urllib.er | ||||
|  | ||||
|  | ||||
| class Module_six_moves_urllib_request(_LazyModule): | ||||
|  | ||||
|     """Lazy loading of moved objects in six.moves.urllib_request""" | ||||
|  | ||||
|  | ||||
| @@ -414,6 +428,7 @@ _importer._add_module(Module_six_moves_urllib_request(__name__ + ".moves.urllib. | ||||
|  | ||||
|  | ||||
| class Module_six_moves_urllib_response(_LazyModule): | ||||
|  | ||||
|     """Lazy loading of moved objects in six.moves.urllib_response""" | ||||
|  | ||||
|  | ||||
| @@ -434,6 +449,7 @@ _importer._add_module(Module_six_moves_urllib_response(__name__ + ".moves.urllib | ||||
|  | ||||
|  | ||||
| class Module_six_moves_urllib_robotparser(_LazyModule): | ||||
|  | ||||
|     """Lazy loading of moved objects in six.moves.urllib_robotparser""" | ||||
|  | ||||
|  | ||||
| @@ -451,6 +467,7 @@ _importer._add_module(Module_six_moves_urllib_robotparser(__name__ + ".moves.url | ||||
|  | ||||
|  | ||||
| class Module_six_moves_urllib(types.ModuleType): | ||||
|  | ||||
|     """Create a six.moves.urllib namespace that resembles the Python 3 namespace""" | ||||
|     __path__ = []  # mark as package | ||||
|     parse = _importer._get_module("moves.urllib_parse") | ||||
| @@ -521,6 +538,9 @@ if PY3: | ||||
|  | ||||
|     create_bound_method = types.MethodType | ||||
|  | ||||
|     def create_unbound_method(func, cls): | ||||
|         return func | ||||
|  | ||||
|     Iterator = object | ||||
| else: | ||||
|     def get_unbound_function(unbound): | ||||
| @@ -529,6 +549,9 @@ else: | ||||
|     def create_bound_method(func, obj): | ||||
|         return types.MethodType(func, obj, obj.__class__) | ||||
|  | ||||
|     def create_unbound_method(func, cls): | ||||
|         return types.MethodType(func, None, cls) | ||||
|  | ||||
|     class Iterator(object): | ||||
|  | ||||
|         def next(self): | ||||
| @@ -567,16 +590,16 @@ if PY3: | ||||
|     viewitems = operator.methodcaller("items") | ||||
| else: | ||||
|     def iterkeys(d, **kw): | ||||
|         return iter(d.iterkeys(**kw)) | ||||
|         return d.iterkeys(**kw) | ||||
|  | ||||
|     def itervalues(d, **kw): | ||||
|         return iter(d.itervalues(**kw)) | ||||
|         return d.itervalues(**kw) | ||||
|  | ||||
|     def iteritems(d, **kw): | ||||
|         return iter(d.iteritems(**kw)) | ||||
|         return d.iteritems(**kw) | ||||
|  | ||||
|     def iterlists(d, **kw): | ||||
|         return iter(d.iterlists(**kw)) | ||||
|         return d.iterlists(**kw) | ||||
|  | ||||
|     viewkeys = operator.methodcaller("viewkeys") | ||||
|  | ||||
| @@ -595,15 +618,13 @@ _add_doc(iterlists, | ||||
| if PY3: | ||||
|     def b(s): | ||||
|         return s.encode("latin-1") | ||||
|  | ||||
|     def u(s): | ||||
|         return s | ||||
|     unichr = chr | ||||
|     if sys.version_info[1] <= 1: | ||||
|         def int2byte(i): | ||||
|             return bytes((i,)) | ||||
|     else: | ||||
|         # This is about 2x faster than the implementation above on 3.2+ | ||||
|         int2byte = operator.methodcaller("to_bytes", 1, "big") | ||||
|     import struct | ||||
|     int2byte = struct.Struct(">B").pack | ||||
|     del struct | ||||
|     byte2int = operator.itemgetter(0) | ||||
|     indexbytes = operator.getitem | ||||
|     iterbytes = iter | ||||
| @@ -611,18 +632,25 @@ if PY3: | ||||
|     StringIO = io.StringIO | ||||
|     BytesIO = io.BytesIO | ||||
|     _assertCountEqual = "assertCountEqual" | ||||
|     _assertRaisesRegex = "assertRaisesRegex" | ||||
|     _assertRegex = "assertRegex" | ||||
|     if sys.version_info[1] <= 1: | ||||
|         _assertRaisesRegex = "assertRaisesRegexp" | ||||
|         _assertRegex = "assertRegexpMatches" | ||||
|     else: | ||||
|         _assertRaisesRegex = "assertRaisesRegex" | ||||
|         _assertRegex = "assertRegex" | ||||
| else: | ||||
|     def b(s): | ||||
|         return s | ||||
|     # Workaround for standalone backslash | ||||
|  | ||||
|     def u(s): | ||||
|         return unicode(s.replace(r'\\', r'\\\\'), "unicode_escape") | ||||
|     unichr = unichr | ||||
|     int2byte = chr | ||||
|  | ||||
|     def byte2int(bs): | ||||
|         return ord(bs[0]) | ||||
|  | ||||
|     def indexbytes(buf, i): | ||||
|         return ord(buf[i]) | ||||
|     iterbytes = functools.partial(itertools.imap, ord) | ||||
| @@ -650,7 +678,6 @@ def assertRegex(self, *args, **kwargs): | ||||
| if PY3: | ||||
|     exec_ = getattr(moves.builtins, "exec") | ||||
|  | ||||
|  | ||||
|     def reraise(tp, value, tb=None): | ||||
|         if value is None: | ||||
|             value = tp() | ||||
| @@ -671,7 +698,6 @@ else: | ||||
|             _locs_ = _globs_ | ||||
|         exec("""exec _code_ in _globs_, _locs_""") | ||||
|  | ||||
|  | ||||
|     exec_("""def reraise(tp, value, tb=None): | ||||
|     raise tp, value, tb | ||||
| """) | ||||
| @@ -699,13 +725,14 @@ if print_ is None: | ||||
|         fp = kwargs.pop("file", sys.stdout) | ||||
|         if fp is None: | ||||
|             return | ||||
|  | ||||
|         def write(data): | ||||
|             if not isinstance(data, basestring): | ||||
|                 data = str(data) | ||||
|             # If the file has an encoding, encode unicode with it. | ||||
|             if (isinstance(fp, file) and | ||||
|                 isinstance(data, unicode) and | ||||
|                 fp.encoding is not None): | ||||
|                     isinstance(data, unicode) and | ||||
|                     fp.encoding is not None): | ||||
|                 errors = getattr(fp, "errors", None) | ||||
|                 if errors is None: | ||||
|                     errors = "strict" | ||||
| @@ -748,6 +775,7 @@ if print_ is None: | ||||
|         write(end) | ||||
| if sys.version_info[:2] < (3, 3): | ||||
|     _print = print_ | ||||
|  | ||||
|     def print_(*args, **kwargs): | ||||
|         fp = kwargs.get("file", sys.stdout) | ||||
|         flush = kwargs.pop("flush", False) | ||||
| @@ -768,12 +796,14 @@ if sys.version_info[0:2] < (3, 4): | ||||
| else: | ||||
|     wraps = functools.wraps | ||||
|  | ||||
|  | ||||
| def with_metaclass(meta, *bases): | ||||
|     """Create a base class with a metaclass.""" | ||||
|     # This requires a bit of explanation: the basic idea is to make a dummy | ||||
|     # metaclass for one level of class instantiation that replaces itself with | ||||
|     # the actual metaclass. | ||||
|     class metaclass(meta): | ||||
|  | ||||
|         def __new__(cls, name, this_bases, d): | ||||
|             return meta(name, bases, d) | ||||
|     return type.__new__(metaclass, 'temporary_class', (), {}) | ||||
| @@ -830,7 +860,7 @@ if sys.meta_path: | ||||
|         # the six meta path importer, since the other six instance will have | ||||
|         # inserted an importer with different class. | ||||
|         if (type(importer).__name__ == "_SixMetaPathImporter" and | ||||
|             importer.name == __name__): | ||||
|                 importer.name == __name__): | ||||
|             del sys.meta_path[i] | ||||
|             break | ||||
|     del i, importer | ||||
|   | ||||
| @@ -6,6 +6,9 @@ Django 1.8.7 release notes | ||||
|  | ||||
| Django 1.8.7 fixes several bugs in 1.8.6. | ||||
|  | ||||
| Additionally, Django's vendored version of six, :mod:`django.utils.six`, has | ||||
| been upgraded to the latest release (1.10.0). | ||||
|  | ||||
| Bugfixes | ||||
| ======== | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user