summaryrefslogtreecommitdiff
path: root/dev-python/jsonpickle
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python/jsonpickle')
-rw-r--r--dev-python/jsonpickle/Manifest3
-rw-r--r--dev-python/jsonpickle/files/jsonpickle-3.2.1-numpy-2.patch157
-rw-r--r--dev-python/jsonpickle/jsonpickle-3.2.1.ebuild73
3 files changed, 233 insertions, 0 deletions
diff --git a/dev-python/jsonpickle/Manifest b/dev-python/jsonpickle/Manifest
index 15f72a07472c..fe3ca61d1195 100644
--- a/dev-python/jsonpickle/Manifest
+++ b/dev-python/jsonpickle/Manifest
@@ -1,3 +1,6 @@
+AUX jsonpickle-3.2.1-numpy-2.patch 5555 BLAKE2B 229c066ffe452be155e45811814af3df2ae66d89ef3de8dab2982066b053c99eca2f72b64d26a5d9b9536fa753c48caa8d1a4d141ab228cb620a226cd766e1d8 SHA512 e3437d1cfd9a31a18cb2b9c40d85d48a833486c9ad6410f2420ff97097b2b63b9fe11692ea2f87a78ba7b31ae8013ba4bf58db1fc493d0e58451b4cf718fd4e0
DIST jsonpickle-3.0.4.gh.tar.gz 260847 BLAKE2B ba990a59276463b66401cc9fdad2c91dfd18a172fa1cb2f0b89cbeb1a280360f6e1d5bf7cc3ec94069b1d05e4eb11d3fc52a594542f31ead220622aa01e0df99 SHA512 e6ad7ae30cc4d56323b612fcf599109828fcf76acfba266a1bed850a633603edc8829f29d8981659460a9941531d6735375a03775c9d7bd51c210edbf7414b1c
+DIST jsonpickle-3.2.1.gh.tar.gz 319730 BLAKE2B 5309e5d22253844119ce97eecbea3070a69ea20cfdf56fe9021fca470603cddd0ba2e7af1e86bd4830f33b59cf3ab4dd426ae4d0b1dee30af51f8219de68698e SHA512 b3e53b88b5d26178cc0bf6c4da2688c3187adcfb1800bc6a19bfc4ca86eb6f0fd1a0ab899598bf3e75adf20ef930d555756e57de7bf41a2c0c446facf18d1523
EBUILD jsonpickle-3.0.4.ebuild 1663 BLAKE2B 17497842cd181b16e6681fe8667a714225fdbc931036dd5ee263afa0599239386427bb060d2ee2badb3c599c79a5030803d57cdb8748b25cb4ae4c29d5e27c0c SHA512 640b794f5f8c1995ce1688a9f68124de6e6f6f730e4de375b2b5e52e9c9e40004b5072f364e82190554f9902b0ef71b5340ef610fe47d31c5d0d52efe7f91d80
+EBUILD jsonpickle-3.2.1.ebuild 1777 BLAKE2B 05f3bca8725e1dfdb1e47c8928527343eb90c086b17189f41662ad1d468d3c56f5addca31bc17972c9eecc8488e0651eff365399e6c5f0dd0dd2ffd2cb913d79 SHA512 24d6e8eb2bb7f06266eba81e3b3a0b442119c8ad497bfbc968f17e23024d904373739ebbe19f81367c0f8259a78e443623adf089d993110f5247bb6ed8fc4b5c
MISC metadata.xml 412 BLAKE2B a7e746abd8b45415ecdbccbde1b65ba9f1fa9fe7ce353411681c2a3de046878e990aad20849ee561a56ad3208bd5071d7b5e5b3c767fd71b7c44d2e8412d349b SHA512 dc52df78fdfe9024e695aae3d2bf22bed7162e1f2a528a288056b68022ebbc400b0a3a2f3e9c2155ee57e66d77a4f7a3f6f67188fb13ee15f200212ac6809a31
diff --git a/dev-python/jsonpickle/files/jsonpickle-3.2.1-numpy-2.patch b/dev-python/jsonpickle/files/jsonpickle-3.2.1-numpy-2.patch
new file mode 100644
index 000000000000..6fdc989d990e
--- /dev/null
+++ b/dev-python/jsonpickle/files/jsonpickle-3.2.1-numpy-2.patch
@@ -0,0 +1,157 @@
+From 0ab3cf0ffcdb364a8a75e71acfb267e5aaabc0a0 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
+Date: Mon, 10 Jun 2024 03:55:47 +0200
+Subject: [PATCH 1/2] Fix data types in tests for NumPy 2
+
+Fix a number of test compatibility issues with NumPy 2. That is:
+
+- replace `np.float_` with `np.float64`,
+- replace `np.complex_` with `np.complex128`,
+- remove `np.unicode_` as equivalent to `np.str_`.
+
+The LHS types are also aliases to the RHS types in NumPy 1.x, so this
+is NFC on NumPy 1.x. These aliases were removed in 2.x, so the code
+needs to be updated for tests to pass on NumPy 2.x.
+---
+ tests/numpy_test.py | 7 ++-----
+ tests/pandas_test.py | 13 +++++--------
+ 2 files changed, 7 insertions(+), 13 deletions(-)
+
+diff --git a/tests/numpy_test.py b/tests/numpy_test.py
+index e271725..dd50d5e 100644
+--- a/tests/numpy_test.py
++++ b/tests/numpy_test.py
+@@ -32,9 +32,7 @@ def test_dtype_roundtrip():
+ dtypes = [
+ np.int_,
+ np.int32,
+- np.float_,
+ np.float64,
+- np.complex_,
+ np.complex128,
+ np.str_,
+ np.object_,
+@@ -86,15 +84,14 @@ def test_generic_roundtrip():
+ values = [
+ np.int_(1),
+ np.int32(-2),
+- np.float_(2.5),
++ np.float64(2.5),
+ np.nan,
+ -np.inf,
+ np.inf,
+ np.datetime64('2014-01-01'),
+ np.str_('foo'),
+- np.unicode_('bar'),
+ np.object_({'a': 'b'}),
+- np.complex_(1 - 2j),
++ np.complex128(1 - 2j),
+ ]
+ for value in values:
+ decoded = roundtrip(value)
+diff --git a/tests/pandas_test.py b/tests/pandas_test.py
+index 532563f..414bd65 100644
+--- a/tests/pandas_test.py
++++ b/tests/pandas_test.py
+@@ -34,14 +34,13 @@ def test_series_roundtrip():
+ ser = pd.Series(
+ {
+ 'an_int': np.int_(1),
+- 'a_float': np.float_(2.5),
++ 'a_float': np.float64(2.5),
+ 'a_nan': np.nan,
+ 'a_minus_inf': -np.inf,
+ 'an_inf': np.inf,
+ 'a_str': np.str_('foo'),
+- 'a_unicode': np.unicode_('bar'),
+ 'date': np.datetime64('2014-01-01'),
+- 'complex': np.complex_(1 - 2j),
++ 'complex': np.complex128(1 - 2j),
+ # TODO: the following dtypes are not currently supported.
+ # 'object': np.object_({'a': 'b'}),
+ }
+@@ -54,14 +53,13 @@ def test_dataframe_roundtrip():
+ df = pd.DataFrame(
+ {
+ 'an_int': np.int_([1, 2, 3]),
+- 'a_float': np.float_([2.5, 3.5, 4.5]),
++ 'a_float': np.float64([2.5, 3.5, 4.5]),
+ 'a_nan': np.array([np.nan] * 3),
+ 'a_minus_inf': np.array([-np.inf] * 3),
+ 'an_inf': np.array([np.inf] * 3),
+ 'a_str': np.str_('foo'),
+- 'a_unicode': np.unicode_('bar'),
+ 'date': np.array([np.datetime64('2014-01-01')] * 3, dtype="datetime64[s]"),
+- 'complex': np.complex_([1 - 2j, 2 - 1.2j, 3 - 1.3j]),
++ 'complex': np.complex128([1 - 2j, 2 - 1.2j, 3 - 1.3j]),
+ # TODO: the following dtypes are not currently supported.
+ # 'object': np.object_([{'a': 'b'}]*3),
+ }
+@@ -76,12 +74,11 @@ def test_multindex_dataframe_roundtrip():
+ 'idx_lvl0': ['a', 'b', 'c'],
+ 'idx_lvl1': np.int_([1, 1, 2]),
+ 'an_int': np.int_([1, 2, 3]),
+- 'a_float': np.float_([2.5, 3.5, 4.5]),
++ 'a_float': np.float64([2.5, 3.5, 4.5]),
+ 'a_nan': np.array([np.nan] * 3),
+ 'a_minus_inf': np.array([-np.inf] * 3),
+ 'an_inf': np.array([np.inf] * 3),
+ 'a_str': np.str_('foo'),
+- 'a_unicode': np.unicode_('bar'),
+ }
+ )
+ df = df.set_index(['idx_lvl0', 'idx_lvl1'])
+
+From 8bc2bdd42bc111d90edbcef8005640d5a51627bf Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
+Date: Mon, 10 Jun 2024 04:02:17 +0200
+Subject: [PATCH 2/2] Fix `newbyteorder()` use for NumPy 2.x
+
+Replace the `arr.newbyteorder()` use with:
+
+ arr.view(arr.dtype.newbyteorder())
+
+as suggested in the exception that's raised when the tests are run
+in NumPy 2.x. With this change, the code works both with NumPy 1.x
+and NumPy 2.x.
+---
+ tests/numpy_test.py | 24 ++++++++++++++----------
+ 1 file changed, 14 insertions(+), 10 deletions(-)
+
+diff --git a/tests/numpy_test.py b/tests/numpy_test.py
+index dd50d5e..2e6725b 100644
+--- a/tests/numpy_test.py
++++ b/tests/numpy_test.py
+@@ -306,18 +306,22 @@ def test_immutable():
+ def test_byteorder():
+ """Test the byteorder for text and binary encodings"""
+ # small arr is stored as text
+- a = np.arange(10).newbyteorder()
+- b = a[:].newbyteorder()
+- _a, _b = roundtrip([a, b])
+- npt.assert_array_equal(a, _a)
+- npt.assert_array_equal(b, _b)
++ a = np.arange(10)
++ av = a.view(a.dtype.newbyteorder())
++ b = a[:]
++ bv = b.view(b.dtype.newbyteorder())
++ _av, _bv = roundtrip([av, bv])
++ npt.assert_array_equal(av, _av)
++ npt.assert_array_equal(bv, _bv)
+
+ # bigger arr is stored as binary
+- a = np.arange(100).newbyteorder()
+- b = a[:].newbyteorder()
+- _a, _b = roundtrip([a, b])
+- npt.assert_array_equal(a, _a)
+- npt.assert_array_equal(b, _b)
++ a = np.arange(100)
++ av = a.view(a.dtype.newbyteorder())
++ b = a[:]
++ bv = b.view(b.dtype.newbyteorder())
++ _av, _bv = roundtrip([av, bv])
++ npt.assert_array_equal(av, _av)
++ npt.assert_array_equal(bv, _bv)
+
+
+ def test_zero_dimensional_array():
diff --git a/dev-python/jsonpickle/jsonpickle-3.2.1.ebuild b/dev-python/jsonpickle/jsonpickle-3.2.1.ebuild
new file mode 100644
index 000000000000..155b209d25ad
--- /dev/null
+++ b/dev-python/jsonpickle/jsonpickle-3.2.1.ebuild
@@ -0,0 +1,73 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..12} )
+
+inherit distutils-r1 optfeature
+
+DESCRIPTION="Python library for serializing any arbitrary object graph into JSON"
+HOMEPAGE="
+ https://github.com/jsonpickle/jsonpickle/
+ https://pypi.org/project/jsonpickle/
+"
+SRC_URI="
+ https://github.com/jsonpickle/jsonpickle/archive/refs/tags/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86 ~amd64-linux ~x86-linux"
+
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ dev-python/feedparser[${PYTHON_USEDEP}]
+ dev-python/gmpy[${PYTHON_USEDEP}]
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/pandas[${PYTHON_USEDEP}]
+ dev-python/simplejson[${PYTHON_USEDEP}]
+ dev-python/sqlalchemy[${PYTHON_USEDEP}]
+ dev-python/ujson[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ local PATCHES=(
+ # https://github.com/jsonpickle/jsonpickle/pull/512
+ "${FILESDIR}/${P}-numpy-2.patch"
+ )
+
+ distutils-r1_python_prepare_all
+
+ sed -i -e 's:--cov::' pytest.ini || die
+ export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
+}
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ # unpackaged bson dependency
+ tests/bson_test.py
+ )
+
+ if ! has_version "dev-python/gmpy[${PYTHON_USEDEP}]"; then
+ EPYTEST_IGNORE+=( jsonpickle/ext/gmpy.py )
+ fi
+ if ! has_version "dev-python/pandas[${PYTHON_USEDEP}]"; then
+ EPYTEST_IGNORE+=( jsonpickle/ext/pandas.py )
+ fi
+
+ epytest
+}
+
+pkg_postinst() {
+ # Unpackaged optional backends: yajl, demjson
+ optfeature "encoding numpy-based data" dev-python/numpy
+ optfeature "encoding pandas objects" dev-python/pandas
+ optfeature "fast JSON backend" dev-python/simplejson
+}