| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 | # flake8: noqa# This whole file is full of lint errorsimport functoolsimport operatorimport systry:    import builtinsexcept ImportError:    import __builtin__ as builtinsPY2 = sys.version_info[0] == 2WIN = sys.platform.startswith("win")_identity = lambda x: xif PY2:    unichr = unichr    text_type = unicode    string_types = (str, unicode)    integer_types = (int, long)    iterkeys = lambda d, *args, **kwargs: d.iterkeys(*args, **kwargs)    itervalues = lambda d, *args, **kwargs: d.itervalues(*args, **kwargs)    iteritems = lambda d, *args, **kwargs: d.iteritems(*args, **kwargs)    iterlists = lambda d, *args, **kwargs: d.iterlists(*args, **kwargs)    iterlistvalues = lambda d, *args, **kwargs: d.iterlistvalues(*args, **kwargs)    int_to_byte = chr    iter_bytes = iter    import collections as collections_abc    exec("def reraise(tp, value, tb=None):\n raise tp, value, tb")    def fix_tuple_repr(obj):        def __repr__(self):            cls = self.__class__            return "%s(%s)" % (                cls.__name__,                ", ".join(                    "%s=%r" % (field, self[index])                    for index, field in enumerate(cls._fields)                ),            )        obj.__repr__ = __repr__        return obj    def implements_iterator(cls):        cls.next = cls.__next__        del cls.__next__        return cls    def implements_to_string(cls):        cls.__unicode__ = cls.__str__        cls.__str__ = lambda x: x.__unicode__().encode("utf-8")        return cls    def native_string_result(func):        def wrapper(*args, **kwargs):            return func(*args, **kwargs).encode("utf-8")        return functools.update_wrapper(wrapper, func)    def implements_bool(cls):        cls.__nonzero__ = cls.__bool__        del cls.__bool__        return cls    from itertools import imap, izip, ifilter    range_type = xrange    from StringIO import StringIO    from cStringIO import StringIO as BytesIO    NativeStringIO = BytesIO    def make_literal_wrapper(reference):        return _identity    def normalize_string_tuple(tup):        """Normalizes a string tuple to a common type. Following Python 2        rules, upgrades to unicode are implicit.        """        if any(isinstance(x, text_type) for x in tup):            return tuple(to_unicode(x) for x in tup)        return tup    def try_coerce_native(s):        """Try to coerce a unicode string to native if possible. Otherwise,        leave it as unicode.        """        try:            return to_native(s)        except UnicodeError:            return s    wsgi_get_bytes = _identity    def wsgi_decoding_dance(s, charset="utf-8", errors="replace"):        return s.decode(charset, errors)    def wsgi_encoding_dance(s, charset="utf-8", errors="replace"):        if isinstance(s, bytes):            return s        return s.encode(charset, errors)    def to_bytes(x, charset=sys.getdefaultencoding(), errors="strict"):        if x is None:            return None        if isinstance(x, (bytes, bytearray, buffer)):            return bytes(x)        if isinstance(x, unicode):            return x.encode(charset, errors)        raise TypeError("Expected bytes")    def to_native(x, charset=sys.getdefaultencoding(), errors="strict"):        if x is None or isinstance(x, str):            return x        return x.encode(charset, errors)else:    unichr = chr    text_type = str    string_types = (str,)    integer_types = (int,)    iterkeys = lambda d, *args, **kwargs: iter(d.keys(*args, **kwargs))    itervalues = lambda d, *args, **kwargs: iter(d.values(*args, **kwargs))    iteritems = lambda d, *args, **kwargs: iter(d.items(*args, **kwargs))    iterlists = lambda d, *args, **kwargs: iter(d.lists(*args, **kwargs))    iterlistvalues = lambda d, *args, **kwargs: iter(d.listvalues(*args, **kwargs))    int_to_byte = operator.methodcaller("to_bytes", 1, "big")    iter_bytes = functools.partial(map, int_to_byte)    import collections.abc as collections_abc    def reraise(tp, value, tb=None):        if value.__traceback__ is not tb:            raise value.with_traceback(tb)        raise value    fix_tuple_repr = _identity    implements_iterator = _identity    implements_to_string = _identity    implements_bool = _identity    native_string_result = _identity    imap = map    izip = zip    ifilter = filter    range_type = range    from io import StringIO, BytesIO    NativeStringIO = StringIO    _latin1_encode = operator.methodcaller("encode", "latin1")    def make_literal_wrapper(reference):        if isinstance(reference, text_type):            return _identity        return _latin1_encode    def normalize_string_tuple(tup):        """Ensures that all types in the tuple are either strings        or bytes.        """        tupiter = iter(tup)        is_text = isinstance(next(tupiter, None), text_type)        for arg in tupiter:            if isinstance(arg, text_type) != is_text:                raise TypeError(                    "Cannot mix str and bytes arguments (got %s)" % repr(tup)                )        return tup    try_coerce_native = _identity    wsgi_get_bytes = _latin1_encode    def wsgi_decoding_dance(s, charset="utf-8", errors="replace"):        return s.encode("latin1").decode(charset, errors)    def wsgi_encoding_dance(s, charset="utf-8", errors="replace"):        if isinstance(s, text_type):            s = s.encode(charset)        return s.decode("latin1", errors)    def to_bytes(x, charset=sys.getdefaultencoding(), errors="strict"):        if x is None:            return None        if isinstance(x, (bytes, bytearray, memoryview)):  # noqa            return bytes(x)        if isinstance(x, str):            return x.encode(charset, errors)        raise TypeError("Expected bytes")    def to_native(x, charset=sys.getdefaultencoding(), errors="strict"):        if x is None or isinstance(x, str):            return x        return x.decode(charset, errors)def to_unicode(    x, charset=sys.getdefaultencoding(), errors="strict", allow_none_charset=False):    if x is None:        return None    if not isinstance(x, bytes):        return text_type(x)    if charset is None and allow_none_charset:        return x    return x.decode(charset, errors)try:    from os import fspathexcept ImportError:    # Python < 3.6    # https://www.python.org/dev/peps/pep-0519/#backwards-compatibility    def fspath(path):        return path.__fspath__() if hasattr(path, "__fspath__") else path
 |