s/precise_mode/strict_types/

This commit is contained in:
INADA Naoki 2015-11-10 03:30:11 +09:00
parent e9a47cbd35
commit cbdf3c339a

View file

@ -55,7 +55,7 @@ cdef class Packer(object):
Convert unicode to bytes with this encoding. (default: 'utf-8') Convert unicode to bytes with this encoding. (default: 'utf-8')
:param str unicode_errors: :param str unicode_errors:
Error handler for encoding unicode. (default: 'strict') Error handler for encoding unicode. (default: 'strict')
:param bool precise_mode: :param bool strict_types:
If set to true, types will be checked to be exact. Derived classes If set to true, types will be checked to be exact. Derived classes
from serializeable types will not be serialized and will be from serializeable types will not be serialized and will be
treated as unsupported type and forwarded to default. treated as unsupported type and forwarded to default.
@ -77,7 +77,7 @@ cdef class Packer(object):
cdef object _berrors cdef object _berrors
cdef char *encoding cdef char *encoding
cdef char *unicode_errors cdef char *unicode_errors
cdef bint precise_mode cdef bint strict_types
cdef bool use_float cdef bool use_float
cdef bint autoreset cdef bint autoreset
@ -91,11 +91,11 @@ cdef class Packer(object):
def __init__(self, default=None, encoding='utf-8', unicode_errors='strict', def __init__(self, default=None, encoding='utf-8', unicode_errors='strict',
use_single_float=False, bint autoreset=1, bint use_bin_type=0, use_single_float=False, bint autoreset=1, bint use_bin_type=0,
bint precise_mode=0): bint strict_types=0):
""" """
""" """
self.use_float = use_single_float self.use_float = use_single_float
self.precise_mode = precise_mode self.strict_types = strict_types
self.autoreset = autoreset self.autoreset = autoreset
self.pk.use_bin_type = use_bin_type self.pk.use_bin_type = use_bin_type
if default is not None: if default is not None:
@ -131,7 +131,7 @@ cdef class Packer(object):
cdef dict d cdef dict d
cdef size_t L cdef size_t L
cdef int default_used = 0 cdef int default_used = 0
cdef bint precise = self.precise_mode cdef bint strict_types = self.strict_types
if nest_limit < 0: if nest_limit < 0:
raise PackValueError("recursion limit exceeded.") raise PackValueError("recursion limit exceeded.")
@ -139,12 +139,12 @@ cdef class Packer(object):
while True: while True:
if o is None: if o is None:
ret = msgpack_pack_nil(&self.pk) ret = msgpack_pack_nil(&self.pk)
elif PyBool_Check(o) if precise else isinstance(o, bool): elif PyBool_Check(o) if strict_types else isinstance(o, bool):
if o: if o:
ret = msgpack_pack_true(&self.pk) ret = msgpack_pack_true(&self.pk)
else: else:
ret = msgpack_pack_false(&self.pk) ret = msgpack_pack_false(&self.pk)
elif PyLong_CheckExact(o) if precise else PyLong_Check(o): elif PyLong_CheckExact(o) if strict_types else PyLong_Check(o):
# PyInt_Check(long) is True for Python 3. # PyInt_Check(long) is True for Python 3.
# So we should test long before int. # So we should test long before int.
try: try:
@ -161,17 +161,17 @@ cdef class Packer(object):
continue continue
else: else:
raise raise
elif PyInt_CheckExact(o) if precise else PyInt_Check(o): elif PyInt_CheckExact(o) if strict_types else PyInt_Check(o):
longval = o longval = o
ret = msgpack_pack_long(&self.pk, longval) ret = msgpack_pack_long(&self.pk, longval)
elif PyFloat_CheckExact(o) if precise else PyFloat_Check(o): elif PyFloat_CheckExact(o) if strict_types else PyFloat_Check(o):
if self.use_float: if self.use_float:
fval = o fval = o
ret = msgpack_pack_float(&self.pk, fval) ret = msgpack_pack_float(&self.pk, fval)
else: else:
dval = o dval = o
ret = msgpack_pack_double(&self.pk, dval) ret = msgpack_pack_double(&self.pk, dval)
elif PyBytes_CheckExact(o) if precise else PyBytes_Check(o): elif PyBytes_CheckExact(o) if strict_types else PyBytes_Check(o):
L = len(o) L = len(o)
if L > (2**32)-1: if L > (2**32)-1:
raise ValueError("bytes is too large") raise ValueError("bytes is too large")
@ -179,7 +179,7 @@ cdef class Packer(object):
ret = msgpack_pack_bin(&self.pk, L) ret = msgpack_pack_bin(&self.pk, L)
if ret == 0: if ret == 0:
ret = msgpack_pack_raw_body(&self.pk, rawval, L) ret = msgpack_pack_raw_body(&self.pk, rawval, L)
elif PyUnicode_CheckExact(o) if precise else PyUnicode_Check(o): elif PyUnicode_CheckExact(o) if strict_types else PyUnicode_Check(o):
if not self.encoding: if not self.encoding:
raise TypeError("Can't encode unicode string: no encoding is specified") raise TypeError("Can't encode unicode string: no encoding is specified")
o = PyUnicode_AsEncodedString(o, self.encoding, self.unicode_errors) o = PyUnicode_AsEncodedString(o, self.encoding, self.unicode_errors)
@ -202,7 +202,7 @@ cdef class Packer(object):
if ret != 0: break if ret != 0: break
ret = self._pack(v, nest_limit-1) ret = self._pack(v, nest_limit-1)
if ret != 0: break if ret != 0: break
elif not precise and PyDict_Check(o): elif not strict_types and PyDict_Check(o):
L = len(o) L = len(o)
if L > (2**32)-1: if L > (2**32)-1:
raise ValueError("dict is too large") raise ValueError("dict is too large")
@ -222,7 +222,7 @@ cdef class Packer(object):
raise ValueError("EXT data is too large") raise ValueError("EXT data is too large")
ret = msgpack_pack_ext(&self.pk, longval, L) ret = msgpack_pack_ext(&self.pk, longval, L)
ret = msgpack_pack_raw_body(&self.pk, rawval, L) ret = msgpack_pack_raw_body(&self.pk, rawval, L)
elif PyList_CheckExact(o) if precise else (PyTuple_Check(o) or PyList_Check(o)): elif PyList_CheckExact(o) if strict_types else (PyTuple_Check(o) or PyList_Check(o)):
L = len(o) L = len(o)
if L > (2**32)-1: if L > (2**32)-1:
raise ValueError("list is too large") raise ValueError("list is too large")