diff options
author | 2024-05-31 18:35:18 +0200 | |
---|---|---|
committer | 2024-05-31 19:20:59 +0200 | |
commit | 588d35a6787ee60e6f1d726c2dfa2cbd04371928 (patch) | |
tree | eeb513ba26216faf543ef7c11584c49a1ef5ac0a /dev-python/rustworkx | |
parent | media-libs/mesa: Disable intel-rt on x86 (diff) | |
download | gentoo-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.patch | 134 | ||||
-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=( |