fallback: Remove old buffer protocol support (#384)

This commit is contained in:
Inada Naoki 2019-12-05 20:47:20 +09:00 committed by GitHub
parent 9f4b2d53b7
commit de320488ae
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 19 deletions

View file

@ -111,21 +111,7 @@ def _check_type_strict(obj, t, type=type, tuple=tuple):
def _get_data_from_buffer(obj): def _get_data_from_buffer(obj):
try: view = memoryview(obj)
view = memoryview(obj)
except TypeError:
# try to use legacy buffer protocol if 2.7, otherwise re-raise
if PY2:
view = memoryview(buffer(obj))
warnings.warn(
"using old buffer interface to unpack %s; "
"this leads to unpacking errors if slicing is used and "
"will be removed in a future version" % type(obj),
RuntimeWarning,
stacklevel=3,
)
else:
raise
if view.itemsize != 1: if view.itemsize != 1:
raise ValueError("cannot unpack from multi-byte object") raise ValueError("cannot unpack from multi-byte object")
return view return view

View file

@ -1,17 +1,17 @@
#!/usr/bin/env python #!/usr/bin/env python
# coding: utf-8 # coding: utf-8
import sys
import pytest
from msgpack import packb, unpackb from msgpack import packb, unpackb
@pytest.mark.skipif(sys.version_info[0] == 2, reason="Python 2 is not supported")
def test_unpack_buffer(): def test_unpack_buffer():
from array import array from array import array
buf = array("b") buf = array("b")
try: buf.frombytes(packb((b"foo", b"bar")))
buf.frombytes(packb((b"foo", b"bar")))
except AttributeError: # PY2
buf.fromstring(packb((b"foo", b"bar")))
obj = unpackb(buf, use_list=1) obj = unpackb(buf, use_list=1)
assert [b"foo", b"bar"] == obj assert [b"foo", b"bar"] == obj