summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2024-05-31 18:35:18 +0200
committerMichał Górny <mgorny@gentoo.org>2024-05-31 19:20:59 +0200
commit588d35a6787ee60e6f1d726c2dfa2cbd04371928 (patch)
treeeeb513ba26216faf543ef7c11584c49a1ef5ac0a /dev-python/rustworkx
parentmedia-libs/mesa: Disable intel-rt on x86 (diff)
downloadgentoo-588d35a6787ee60e6f1d726c2dfa2cbd04371928.tar.gz
gentoo-588d35a6787ee60e6f1d726c2dfa2cbd04371928.tar.bz2
gentoo-588d35a6787ee60e6f1d726c2dfa2cbd04371928.zip
dev-python/rustworkx: Backport numpy-2 fixes
Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'dev-python/rustworkx')
-rw-r--r--dev-python/rustworkx/files/rustworkx-0.14.2-numpy-2.patch134
-rw-r--r--dev-python/rustworkx/rustworkx-0.14.2-r1.ebuild (renamed from dev-python/rustworkx/rustworkx-0.14.2.ebuild)6
2 files changed, 140 insertions, 0 deletions
diff --git a/dev-python/rustworkx/files/rustworkx-0.14.2-numpy-2.patch b/dev-python/rustworkx/files/rustworkx-0.14.2-numpy-2.patch
new file mode 100644
index 000000000000..8abf8027ccfa
--- /dev/null
+++ b/dev-python/rustworkx/files/rustworkx-0.14.2-numpy-2.patch
@@ -0,0 +1,134 @@
+From 4934a14448444832d96de6f230fd72d33d2f862c Mon Sep 17 00:00:00 2001
+From: Jake Lishman <jake.lishman@ibm.com>
+Date: Fri, 5 Apr 2024 14:51:11 +0100
+Subject: [PATCH] Fix test suite for Numpy 2 (#1156)
+
+The only change needed was a now-removed alias. Also fix a typo in a
+test file's name that otherwise took me literally 6 goes to type even
+with tab completion.
+---
+ tests/digraph/test_adjacency_matrix.py | 8 ++++----
+ ...test_adjencency_matrix.py => test_adjacency_matrix.py} | 8 ++++----
+ 2 files changed, 8 insertions(+), 8 deletions(-)
+ rename tests/graph/{test_adjencency_matrix.py => test_adjacency_matrix.py} (98%)
+
+diff --git a/tests/digraph/test_adjacency_matrix.py b/tests/digraph/test_adjacency_matrix.py
+index 38d998559..7b85a31ef 100644
+--- a/tests/digraph/test_adjacency_matrix.py
++++ b/tests/digraph/test_adjacency_matrix.py
+@@ -153,10 +153,10 @@ def test_random_graph_float_dtype(self):
+
+ def test_non_zero_null(self):
+ input_matrix = np.array(
+- [[np.Inf, 1, np.Inf], [1, np.Inf, 1], [np.Inf, 1, np.Inf]],
++ [[np.inf, 1, np.inf], [1, np.inf, 1], [np.inf, 1, np.inf]],
+ dtype=np.float64,
+ )
+- graph = rustworkx.PyDiGraph.from_adjacency_matrix(input_matrix, null_value=np.Inf)
++ graph = rustworkx.PyDiGraph.from_adjacency_matrix(input_matrix, null_value=np.inf)
+ adj_matrix = rustworkx.adjacency_matrix(graph, float)
+ expected_matrix = np.array(
+ [[0.0, 1.0, 0.0], [1.0, 0.0, 1.0], [0.0, 1.0, 0.0]],
+@@ -231,10 +231,10 @@ def test_random_graph_complex_dtype(self):
+
+ def test_non_zero_null(self):
+ input_matrix = np.array(
+- [[np.Inf, 1, np.Inf], [1, np.Inf, 1], [np.Inf, 1, np.Inf]],
++ [[np.inf, 1, np.inf], [1, np.inf, 1], [np.inf, 1, np.inf]],
+ dtype=np.complex128,
+ )
+- graph = rustworkx.PyDiGraph.from_complex_adjacency_matrix(input_matrix, null_value=np.Inf)
++ graph = rustworkx.PyDiGraph.from_complex_adjacency_matrix(input_matrix, null_value=np.inf)
+ expected = [
+ (0, 1, 1 + 0j),
+ (1, 0, 1 + 0j),
+diff --git a/tests/graph/test_adjencency_matrix.py b/tests/graph/test_adjacency_matrix.py
+similarity index 98%
+rename from tests/graph/test_adjencency_matrix.py
+rename to tests/graph/test_adjacency_matrix.py
+index d303c7550..4944ea418 100644
+--- a/tests/graph/test_adjencency_matrix.py
++++ b/tests/graph/test_adjacency_matrix.py
+@@ -165,10 +165,10 @@ def test_graph_to_digraph_adjacency_matrix(self):
+
+ def test_non_zero_null(self):
+ input_matrix = np.array(
+- [[np.Inf, 1, np.Inf], [1, np.Inf, 1], [np.Inf, 1, np.Inf]],
++ [[np.inf, 1, np.inf], [1, np.inf, 1], [np.inf, 1, np.inf]],
+ dtype=np.float64,
+ )
+- graph = rustworkx.PyGraph.from_adjacency_matrix(input_matrix, null_value=np.Inf)
++ graph = rustworkx.PyGraph.from_adjacency_matrix(input_matrix, null_value=np.inf)
+ adj_matrix = rustworkx.adjacency_matrix(graph, float)
+ expected_matrix = np.array([[0, 1, 0], [1, 0, 1], [0, 1, 0]], dtype=np.float64)
+ self.assertTrue(np.array_equal(adj_matrix, expected_matrix))
+@@ -231,10 +231,10 @@ def test_random_graph_complex_dtype(self):
+
+ def test_non_zero_null(self):
+ input_matrix = np.array(
+- [[np.Inf, 1, np.Inf], [1, np.Inf, 1], [np.Inf, 1, np.Inf]],
++ [[np.inf, 1, np.inf], [1, np.inf, 1], [np.inf, 1, np.inf]],
+ dtype=np.complex128,
+ )
+- graph = rustworkx.PyGraph.from_complex_adjacency_matrix(input_matrix, null_value=np.Inf)
++ graph = rustworkx.PyGraph.from_complex_adjacency_matrix(input_matrix, null_value=np.inf)
+ expected = [
+ (0, 1, 1 + 0j),
+ (1, 2, 1 + 0j),
+From a6c9849e61228be20158dee03fe687456cbb3022 Mon Sep 17 00:00:00 2001
+From: Matthew Treinish <mtreinish@kortar.org>
+Date: Fri, 26 Apr 2024 20:42:45 -0400
+Subject: [PATCH] Relax numpy upper version cap (#1172)
+
+* Relax numpy upper version cap
+
+In #1012 we added an upper version cap to numpy to prevent it from
+installing numpy 2.0 before we confirmed that rustworkx was compatible
+with it. Now that numpy 2.0.0rc1 has been released we're able to confirm
+that rustworkx works fine with numpy 2.0. This commit raises the upper
+bound on the numpy version to < 3 to enable installing numpy 2.0 with
+rustworkx.
+
+* Handle new __array__ API in numpy 2.0
+
+While we didn't have any test coverage for this looking at the numpy 2.0
+migration guide one thing we'll have to handle is the new copy kwarg on
+array:
+
+https://numpy.org/devdocs/numpy_2_0_migration_guide.html#adapting-to-changes-in-the-copy-keyword
+
+This commit updates the sole use of __array__ we have on custom sequence
+return types so that if copy=False is passed in we raise a ValueError.
+Additionally, the dtype handling is done directly in the rustworkx code
+now to ensure we don't have any issues with numpy 2.0.
+
+* Fix __array__ stubs
+
+* Update src/iterators.rs
+
+* Pin ruff to 0.4.1
+
+---------
+
+Co-authored-by: Ivan Carvalho <8753214+IvanIsCoding@users.noreply.github.com>
+---
+ .github/workflows/main.yml | 2 +-
+ rustworkx/rustworkx.pyi | 2 +-
+ setup.py | 2 +-
+ src/iterators.rs | 28 ++++++++++++++++++++++------
+ tests/test_custom_return_types.py | 10 ++++++++++
+ 5 files changed, 35 insertions(+), 9 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 82a390d7e..40bf25ca8 100644
+--- a/setup.py
++++ b/setup.py
+@@ -28,7 +28,7 @@ def readme():
+ PKG_NAME = os.getenv("RUSTWORKX_PKG_NAME", "rustworkx")
+ PKG_VERSION = "0.15.0"
+ PKG_PACKAGES = ["rustworkx", "rustworkx.visualization"]
+-PKG_INSTALL_REQUIRES = ["numpy>=1.16.0,<2"]
++PKG_INSTALL_REQUIRES = ["numpy>=1.16.0,<3"]
+ RUST_EXTENSIONS = [RustExtension("rustworkx.rustworkx", "Cargo.toml",
+ binding=Binding.PyO3, debug=rustworkx_debug)]
+ RUST_OPTS ={"bdist_wheel": {"py_limited_api": "cp38"}}
diff --git a/dev-python/rustworkx/rustworkx-0.14.2.ebuild b/dev-python/rustworkx/rustworkx-0.14.2-r1.ebuild
index 7e40a54f5d64..7f9ec72bc304 100644
--- a/dev-python/rustworkx/rustworkx-0.14.2.ebuild
+++ b/dev-python/rustworkx/rustworkx-0.14.2-r1.ebuild
@@ -141,6 +141,12 @@ QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/rustworkx/rustworkx.*\\.so"
EPYTEST_XDIST=1
distutils_enable_tests pytest
+PATCHES=(
+ # https://github.com/Qiskit/rustworkx/pull/1156
+ # part of https://github.com/Qiskit/rustworkx/pull/1172
+ "${FILESDIR}/${P}-numpy-2.patch"
+)
+
python_test() {
local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
local EPYTEST_DESELECT=(