summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorINADA Naoki <methane@users.noreply.github.com>2018-02-23 11:33:26 +0900
committerGitHub <noreply@github.com>2018-02-23 11:33:26 +0900
commit3ca8eff31dd1a8a6c867f2d490f8ca26cb840124 (patch)
treeb96cce5d71c066f2cc4deee741b3a19f3b4ed1e4
parent02c881c7cb402b37418a9bd9a3fa56daf673a71b (diff)
parent9455fccc5283abe59868c55ee3f4cedd5bf2d14b (diff)
downloadmsgpack-python-3ca8eff31dd1a8a6c867f2d490f8ca26cb840124.tar.gz
Revert "Move unpack() from each implementation to __init__." (#288)
This reverts commit da902f9c1d996fb461f1efef6487ef40d32d365a.
-rw-r--r--msgpack/__init__.py17
-rw-r--r--msgpack/_unpacker.pyx26
-rw-r--r--msgpack/fallback.py10
3 files changed, 39 insertions, 14 deletions
diff --git a/msgpack/__init__.py b/msgpack/__init__.py
index 70de97f..6c5ae53 100644
--- a/msgpack/__init__.py
+++ b/msgpack/__init__.py
@@ -19,13 +19,13 @@ class ExtType(namedtuple('ExtType', 'code data')):
import os
if os.environ.get('MSGPACK_PUREPYTHON'):
- from msgpack.fallback import Packer, unpackb, Unpacker
+ from msgpack.fallback import Packer, unpack, unpackb, Unpacker
else:
try:
from msgpack._packer import Packer
- from msgpack._unpacker import unpackb, Unpacker
+ from msgpack._unpacker import unpack, unpackb, Unpacker
except ImportError:
- from msgpack.fallback import Packer, unpackb, Unpacker
+ from msgpack.fallback import Packer, unpack, unpackb, Unpacker
def pack(o, stream, **kwargs):
@@ -46,17 +46,6 @@ def packb(o, **kwargs):
"""
return Packer(**kwargs).pack(o)
-
-def unpack(stream, **kwargs):
- """
- Unpack an object from `stream`.
-
- Raises `ExtraData` when `packed` contains extra bytes.
- See :class:`Unpacker` for options.
- """
- return unpackb(stream.read(), **kwargs)
-
-
# alias for compatibility to simplejson/marshal/pickle.
load = unpack
loads = unpackb
diff --git a/msgpack/_unpacker.pyx b/msgpack/_unpacker.pyx
index 25a7401..fb58490 100644
--- a/msgpack/_unpacker.pyx
+++ b/msgpack/_unpacker.pyx
@@ -211,6 +211,32 @@ def unpackb(object packed, object object_hook=None, object list_hook=None,
raise UnpackValueError("Unpack failed: error = %d" % (ret,))
+def unpack(object stream, object object_hook=None, object list_hook=None,
+ bint use_list=1, encoding=None, unicode_errors=None,
+ object_pairs_hook=None, ext_hook=ExtType,
+ Py_ssize_t max_str_len=2147483647, # 2**32-1
+ Py_ssize_t max_bin_len=2147483647,
+ Py_ssize_t max_array_len=2147483647,
+ Py_ssize_t max_map_len=2147483647,
+ Py_ssize_t max_ext_len=2147483647):
+ """
+ Unpack an object from `stream`.
+
+ Raises `ValueError` when `stream` has extra bytes.
+
+ See :class:`Unpacker` for options.
+ """
+ return unpackb(stream.read(), use_list=use_list,
+ object_hook=object_hook, object_pairs_hook=object_pairs_hook, list_hook=list_hook,
+ encoding=encoding, unicode_errors=unicode_errors, ext_hook=ext_hook,
+ max_str_len=max_str_len,
+ max_bin_len=max_bin_len,
+ max_array_len=max_array_len,
+ max_map_len=max_map_len,
+ max_ext_len=max_ext_len,
+ )
+
+
cdef class Unpacker(object):
"""Streaming unpacker.
diff --git a/msgpack/fallback.py b/msgpack/fallback.py
index 3609fd8..7e40686 100644
--- a/msgpack/fallback.py
+++ b/msgpack/fallback.py
@@ -100,6 +100,16 @@ def _get_data_from_buffer(obj):
return view
+def unpack(stream, **kwargs):
+ """
+ Unpack an object from `stream`.
+
+ Raises `ExtraData` when `packed` contains extra bytes.
+ See :class:`Unpacker` for options.
+ """
+ data = stream.read()
+ return unpackb(data, **kwargs)
+
def unpackb(packed, **kwargs):
"""