This commit is contained in:
Inada Naoki 2018-11-30 16:28:41 +09:00
parent 93b5953eae
commit bbdfd4d92e

View file

@ -4,19 +4,19 @@ import sys
import struct import struct
import warnings import warnings
if sys.version_info[0] == 3:
PY3 = True if sys.version_info[0] == 2:
PY2 = True
int_types = (int, long)
def dict_iteritems(d):
return d.iteritems()
else:
PY2 = False
int_types = int int_types = int
Unicode = str unicode = str
xrange = range xrange = range
def dict_iteritems(d): def dict_iteritems(d):
return d.items() return d.items()
else:
PY3 = False
int_types = (int, long)
Unicode = unicode
def dict_iteritems(d):
return d.iteritems()
if sys.version_info < (3, 5): if sys.version_info < (3, 5):
# Ugly hack... # Ugly hack...
@ -97,7 +97,7 @@ def _get_data_from_buffer(obj):
view = memoryview(obj) view = memoryview(obj)
except TypeError: except TypeError:
# try to use legacy buffer protocol if 2.7, otherwise re-raise # try to use legacy buffer protocol if 2.7, otherwise re-raise
if not PY3: if PY2:
view = memoryview(buffer(obj)) view = memoryview(buffer(obj))
warnings.warn("using old buffer interface to unpack %s; " warnings.warn("using old buffer interface to unpack %s; "
"this leads to unpacking errors if slicing is used and " "this leads to unpacking errors if slicing is used and "
@ -639,7 +639,7 @@ class Unpacker(object):
ret = {} ret = {}
for _ in xrange(n): for _ in xrange(n):
key = self._unpack(EX_CONSTRUCT) key = self._unpack(EX_CONSTRUCT)
if self._strict_map_key and type(key) not in (Unicode, bytes): if self._strict_map_key and type(key) not in (unicode, bytes):
raise ValueError("%s is not allowed for map key" % str(type(key))) raise ValueError("%s is not allowed for map key" % str(type(key)))
ret[key] = self._unpack(EX_CONSTRUCT) ret[key] = self._unpack(EX_CONSTRUCT)
if self._object_hook is not None: if self._object_hook is not None:
@ -819,7 +819,7 @@ class Packer(object):
raise ValueError("%s is too large" % type(obj).__name__) raise ValueError("%s is too large" % type(obj).__name__)
self._pack_bin_header(n) self._pack_bin_header(n)
return self._buffer.write(obj) return self._buffer.write(obj)
if check(obj, Unicode): if check(obj, unicode):
if self._encoding is None: if self._encoding is None:
raise TypeError( raise TypeError(
"Can't encode unicode string: " "Can't encode unicode string: "
@ -1006,7 +1006,7 @@ class Packer(object):
def getbuffer(self): def getbuffer(self):
"""Return view of internal buffer.""" """Return view of internal buffer."""
if USING_STRINGBUILDER or not PY3: if USING_STRINGBUILDER or PY2:
return memoryview(self.bytes()) return memoryview(self.bytes())
else: else:
return self._buffer.getbuffer() return self._buffer.getbuffer()