Index: third_party/gsutil/third_party/boto/boto/vendored/six.py |
diff --git a/third_party/six/six.py b/third_party/gsutil/third_party/boto/boto/vendored/six.py |
similarity index 87% |
copy from third_party/six/six.py |
copy to third_party/gsutil/third_party/boto/boto/vendored/six.py |
index ffa3fe166ad0357732556eee9640c87ba47cf909..55f5c3bfe39cae68006a3304d910de040d89316e 100644 |
--- a/third_party/six/six.py |
+++ b/third_party/gsutil/third_party/boto/boto/vendored/six.py |
@@ -1,6 +1,6 @@ |
"""Utilities for writing code that runs on Python 2 and 3""" |
-# Copyright (c) 2010-2015 Benjamin Peterson |
+# Copyright (c) 2010-2014 Benjamin Peterson |
# |
# Permission is hereby granted, free of charge, to any person obtaining a copy |
# of this software and associated documentation files (the "Software"), to deal |
@@ -20,16 +20,13 @@ |
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
# SOFTWARE. |
-from __future__ import absolute_import |
- |
import functools |
-import itertools |
import operator |
import sys |
import types |
__author__ = "Benjamin Peterson <benjamin@python.org>" |
-__version__ = "1.9.0" |
+__version__ = "1.7.2" |
# Useful for very coarse version differentiation. |
@@ -89,12 +86,8 @@ class _LazyDescr(object): |
def __get__(self, obj, tp): |
result = self._resolve() |
setattr(obj, self.name, result) # Invokes __set__. |
- try: |
- # This is a bit ugly, but it avoids running this again by |
- # removing this descriptor. |
- delattr(obj.__class__, self.name) |
- except AttributeError: |
- pass |
+ # This is a bit ugly, but it avoids running this again. |
+ delattr(obj.__class__, self.name) |
return result |
@@ -232,12 +225,10 @@ _moved_attributes = [ |
MovedAttribute("filter", "itertools", "builtins", "ifilter", "filter"), |
MovedAttribute("filterfalse", "itertools", "itertools", "ifilterfalse", "filterfalse"), |
MovedAttribute("input", "__builtin__", "builtins", "raw_input", "input"), |
- MovedAttribute("intern", "__builtin__", "sys"), |
MovedAttribute("map", "itertools", "builtins", "imap", "map"), |
MovedAttribute("range", "__builtin__", "builtins", "xrange", "range"), |
MovedAttribute("reload_module", "__builtin__", "imp", "reload"), |
MovedAttribute("reduce", "__builtin__", "functools"), |
- MovedAttribute("shlex_quote", "pipes", "shlex", "quote"), |
MovedAttribute("StringIO", "StringIO", "io"), |
MovedAttribute("UserDict", "UserDict", "collections"), |
MovedAttribute("UserList", "UserList", "collections"), |
@@ -257,7 +248,6 @@ _moved_attributes = [ |
MovedModule("html_parser", "HTMLParser", "html.parser"), |
MovedModule("http_client", "httplib", "http.client"), |
MovedModule("email_mime_multipart", "email.MIMEMultipart", "email.mime.multipart"), |
- MovedModule("email_mime_nonmultipart", "email.MIMENonMultipart", "email.mime.nonmultipart"), |
MovedModule("email_mime_text", "email.MIMEText", "email.mime.text"), |
MovedModule("email_mime_base", "email.MIMEBase", "email.mime.base"), |
MovedModule("BaseHTTPServer", "BaseHTTPServer", "http.server"), |
@@ -291,7 +281,7 @@ _moved_attributes = [ |
MovedModule("urllib", __name__ + ".moves.urllib", __name__ + ".moves.urllib"), |
MovedModule("urllib_robotparser", "robotparser", "urllib.robotparser"), |
MovedModule("xmlrpc_client", "xmlrpclib", "xmlrpc.client"), |
- MovedModule("xmlrpc_server", "SimpleXMLRPCServer", "xmlrpc.server"), |
+ MovedModule("xmlrpc_server", "xmlrpclib", "xmlrpc.server"), |
MovedModule("winreg", "_winreg"), |
] |
for attr in _moved_attributes: |
@@ -327,13 +317,6 @@ _urllib_parse_moved_attributes = [ |
MovedAttribute("unquote_plus", "urllib", "urllib.parse"), |
MovedAttribute("urlencode", "urllib", "urllib.parse"), |
MovedAttribute("splitquery", "urllib", "urllib.parse"), |
- MovedAttribute("splittag", "urllib", "urllib.parse"), |
- MovedAttribute("splituser", "urllib", "urllib.parse"), |
- MovedAttribute("uses_fragment", "urlparse", "urllib.parse"), |
- MovedAttribute("uses_netloc", "urlparse", "urllib.parse"), |
- MovedAttribute("uses_params", "urlparse", "urllib.parse"), |
- MovedAttribute("uses_query", "urlparse", "urllib.parse"), |
- MovedAttribute("uses_relative", "urlparse", "urllib.parse"), |
] |
for attr in _urllib_parse_moved_attributes: |
setattr(Module_six_moves_urllib_parse, attr.name, attr) |
@@ -559,12 +542,6 @@ if PY3: |
def iterlists(d, **kw): |
return iter(d.lists(**kw)) |
- |
- viewkeys = operator.methodcaller("keys") |
- |
- viewvalues = operator.methodcaller("values") |
- |
- viewitems = operator.methodcaller("items") |
else: |
def iterkeys(d, **kw): |
return iter(d.iterkeys(**kw)) |
@@ -578,12 +555,6 @@ else: |
def iterlists(d, **kw): |
return iter(d.iterlists(**kw)) |
- viewkeys = operator.methodcaller("viewkeys") |
- |
- viewvalues = operator.methodcaller("viewvalues") |
- |
- viewitems = operator.methodcaller("viewitems") |
- |
_add_doc(iterkeys, "Return an iterator over the keys of a dictionary.") |
_add_doc(itervalues, "Return an iterator over the values of a dictionary.") |
_add_doc(iteritems, |
@@ -610,9 +581,6 @@ if PY3: |
import io |
StringIO = io.StringIO |
BytesIO = io.BytesIO |
- _assertCountEqual = "assertCountEqual" |
- _assertRaisesRegex = "assertRaisesRegex" |
- _assertRegex = "assertRegex" |
else: |
def b(s): |
return s |
@@ -625,35 +593,19 @@ else: |
return ord(bs[0]) |
def indexbytes(buf, i): |
return ord(buf[i]) |
- iterbytes = functools.partial(itertools.imap, ord) |
+ def iterbytes(buf): |
+ return (ord(byte) for byte in buf) |
import StringIO |
StringIO = BytesIO = StringIO.StringIO |
- _assertCountEqual = "assertItemsEqual" |
- _assertRaisesRegex = "assertRaisesRegexp" |
- _assertRegex = "assertRegexpMatches" |
_add_doc(b, """Byte literal""") |
_add_doc(u, """Text literal""") |
-def assertCountEqual(self, *args, **kwargs): |
- return getattr(self, _assertCountEqual)(*args, **kwargs) |
- |
- |
-def assertRaisesRegex(self, *args, **kwargs): |
- return getattr(self, _assertRaisesRegex)(*args, **kwargs) |
- |
- |
-def assertRegex(self, *args, **kwargs): |
- return getattr(self, _assertRegex)(*args, **kwargs) |
- |
- |
if PY3: |
exec_ = getattr(moves.builtins, "exec") |
def reraise(tp, value, tb=None): |
- if value is None: |
- value = tp() |
if value.__traceback__ is not tb: |
raise value.with_traceback(tb) |
raise value |
@@ -677,21 +629,6 @@ else: |
""") |
-if sys.version_info[:2] == (3, 2): |
- exec_("""def raise_from(value, from_value): |
- if from_value is None: |
- raise value |
- raise value from from_value |
-""") |
-elif sys.version_info[:2] > (3, 2): |
- exec_("""def raise_from(value, from_value): |
- raise value from from_value |
-""") |
-else: |
- def raise_from(value, from_value): |
- raise value |
- |
- |
print_ = getattr(moves.builtins, "print", None) |
if print_ is None: |
def print_(*args, **kwargs): |
@@ -746,22 +683,13 @@ if print_ is None: |
write(sep) |
write(arg) |
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) |
- _print(*args, **kwargs) |
- if flush and fp is not None: |
- fp.flush() |
_add_doc(reraise, """Reraise an exception.""") |
if sys.version_info[0:2] < (3, 4): |
- def wraps(wrapped, assigned=functools.WRAPPER_ASSIGNMENTS, |
- updated=functools.WRAPPER_UPDATES): |
+ def wraps(wrapped): |
def wrapper(f): |
- f = functools.wraps(wrapped, assigned, updated)(f) |
+ f = functools.wraps(wrapped)(f) |
f.__wrapped__ = wrapped |
return f |
return wrapper |
@@ -770,56 +698,46 @@ else: |
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. |
+ # 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. Because of internal type checks |
+ # we also need to make sure that we downgrade the custom metaclass |
+ # for one level to something closer to type (that's why __call__ and |
+ # __init__ comes back from type etc.). |
class metaclass(meta): |
+ __call__ = type.__call__ |
+ __init__ = type.__init__ |
def __new__(cls, name, this_bases, d): |
+ if this_bases is None: |
+ return type.__new__(cls, name, (), d) |
return meta(name, bases, d) |
- return type.__new__(metaclass, 'temporary_class', (), {}) |
+ return metaclass('temporary_class', None, {}) |
def add_metaclass(metaclass): |
"""Class decorator for creating a class with a metaclass.""" |
def wrapper(cls): |
orig_vars = cls.__dict__.copy() |
+ orig_vars.pop('__dict__', None) |
+ orig_vars.pop('__weakref__', None) |
slots = orig_vars.get('__slots__') |
if slots is not None: |
if isinstance(slots, str): |
slots = [slots] |
for slots_var in slots: |
orig_vars.pop(slots_var) |
- orig_vars.pop('__dict__', None) |
- orig_vars.pop('__weakref__', None) |
return metaclass(cls.__name__, cls.__bases__, orig_vars) |
return wrapper |
- |
-def python_2_unicode_compatible(klass): |
- """ |
- A decorator that defines __unicode__ and __str__ methods under Python 2. |
- Under Python 3 it does nothing. |
- |
- To support Python 2 and 3 with a single code base, define a __str__ method |
- returning text and apply this decorator to the class. |
- """ |
- if PY2: |
- if '__str__' not in klass.__dict__: |
- raise ValueError("@python_2_unicode_compatible cannot be applied " |
- "to %s because it doesn't define __str__()." % |
- klass.__name__) |
- klass.__unicode__ = klass.__str__ |
- klass.__str__ = lambda self: self.__unicode__().encode('utf-8') |
- return klass |
- |
- |
# Complete the moves implementation. |
# This code is at the end of this module to speed up module loading. |
# Turn this module into a package. |
__path__ = [] # required for PEP 302 and PEP 451 |
__package__ = __name__ # see PEP 366 @ReservedAssignment |
-if globals().get("__spec__") is not None: |
+try: |
__spec__.submodule_search_locations = [] # PEP 451 @UndefinedVariable |
+except NameError: |
+ pass |
# Remove other six meta path importers, since they cause problems. This can |
# happen if six is removed from sys.modules and then reloaded. (Setuptools does |
# this for some reason.) |