summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick McLean <chutzpah@gentoo.org>2021-05-24 11:21:31 -0700
committerPatrick McLean <chutzpah@gentoo.org>2021-05-24 11:21:31 -0700
commit60eb1d1b367b61eb73875ef5fbb380079e7ce5c0 (patch)
tree1cb7e284ab8e34a7c12ab5e51ecbd791b705bdf0 /dev-python
parentmedia-sound/bluez-alsa: Added aptx support (diff)
downloadgentoo-60eb1d1b367b61eb73875ef5fbb380079e7ce5c0.tar.gz
gentoo-60eb1d1b367b61eb73875ef5fbb380079e7ce5c0.tar.bz2
gentoo-60eb1d1b367b61eb73875ef5fbb380079e7ce5c0.zip
dev-python/pysimdjson-4.0.0-r1: revbump, add patch to fix issue #82
Package-Manager: Portage-3.0.19, Repoman-3.0.3 Signed-off-by: Patrick McLean <chutzpah@gentoo.org>
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/pysimdjson/files/pysimdjson-4.0.0-error-types.patch53
-rw-r--r--dev-python/pysimdjson/pysimdjson-4.0.0-r1.ebuild (renamed from dev-python/pysimdjson/pysimdjson-4.0.0.ebuild)3
2 files changed, 55 insertions, 1 deletions
diff --git a/dev-python/pysimdjson/files/pysimdjson-4.0.0-error-types.patch b/dev-python/pysimdjson/files/pysimdjson-4.0.0-error-types.patch
new file mode 100644
index 000000000000..34b8f4aa9e29
--- /dev/null
+++ b/dev-python/pysimdjson/files/pysimdjson-4.0.0-error-types.patch
@@ -0,0 +1,53 @@
+commit 1145be6cac70ed065f2053977d470f3f771ac6a0
+Author: Tyler Kennedy <tk@tkte.ch>
+Date: Sun May 23 15:55:28 2021 -0400
+
+ Empty buffers now raise identical error to empty bytes. Closes #81.
+
+diff --git a/simdjson/csimdjson.pyx b/simdjson/csimdjson.pyx
+index 095a183..c278e08 100644
+--- a/simdjson/csimdjson.pyx
++++ b/simdjson/csimdjson.pyx
+@@ -478,6 +478,13 @@ cdef class Parser:
+ # type-specific APIs, but gives much greater compatibility.
+ data = src
+
++ if data.size == 0:
++ # If we were given a completely empty buffer, trying to access
++ # a stride in the next step will cause a (potentially
++ # confusing) IndexError. This isn't a very good error message,
++ # but it's identical to the one simdjson would have raised.
++ raise ValueError('Empty: no JSON found')
++
+ return element_to_primitive(
+ self,
+ dereference(self.c_parser).parse(
+diff --git a/tests/test_parser.py b/tests/test_parser.py
+index 88e7207..d3a28c7 100644
+--- a/tests/test_parser.py
++++ b/tests/test_parser.py
+@@ -1,3 +1,4 @@
++import io
+ import pathlib
+
+ import pytest
+@@ -32,6 +33,19 @@ def test_parse_str(parser):
+ assert doc.as_dict() == {'hello': 'world'}
+
+
++def test_parse_empty_buffer(parser):
++ """Ensure trying to parse an empty buffer returns an error consistent
++ with attempting to parse an empty bytestring."""
++ # Issue #81
++ with pytest.raises(ValueError) as bytes_exc:
++ parser.parse(b'')
++
++ with pytest.raises(ValueError) as buffer_exc:
++ parser.parse(io.BytesIO(b'').getbuffer())
++
++ assert str(bytes_exc.value) == str(buffer_exc.value)
++
++
+ def test_unicode_decode_error(parser):
+ """Ensure the parser raises encoding issues."""
+ with pytest.raises(UnicodeDecodeError):
diff --git a/dev-python/pysimdjson/pysimdjson-4.0.0.ebuild b/dev-python/pysimdjson/pysimdjson-4.0.0-r1.ebuild
index 3400cda568d5..165fcadc2520 100644
--- a/dev-python/pysimdjson/pysimdjson-4.0.0.ebuild
+++ b/dev-python/pysimdjson/pysimdjson-4.0.0-r1.ebuild
@@ -24,7 +24,8 @@ BDEPEND="
distutils_enable_tests pytest
PATCHES=(
- "${FILESDIR}"/${P}-unbundle.patch
+ "${FILESDIR}"/pysimdjson-4.0.0-unbundle.patch
+ "${FILESDIR}"/pysimdjson-4.0.0-error-types.patch
)
src_prepare() {