From 098a9cbe1c900ef3287bbbeb6897ff8d5c51240b Mon Sep 17 00:00:00 2001 From: "Liguros - Gitlab CI/CD [develop]" Date: Fri, 31 May 2024 19:41:43 +0000 Subject: Adding metadata --- .../rustworkx/files/rustworkx-0.14.2-numpy-2.patch | 134 +++++++++++++++++ dev-python/rustworkx/rustworkx-0.14.2-r1.ebuild | 159 +++++++++++++++++++++ dev-python/rustworkx/rustworkx-0.14.2.ebuild | 153 -------------------- 3 files changed, 293 insertions(+), 153 deletions(-) create mode 100644 dev-python/rustworkx/files/rustworkx-0.14.2-numpy-2.patch create mode 100644 dev-python/rustworkx/rustworkx-0.14.2-r1.ebuild delete mode 100644 dev-python/rustworkx/rustworkx-0.14.2.ebuild (limited to 'dev-python/rustworkx') 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 +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 +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-r1.ebuild b/dev-python/rustworkx/rustworkx-0.14.2-r1.ebuild new file mode 100644 index 000000000000..119633f39bf5 --- /dev/null +++ b/dev-python/rustworkx/rustworkx-0.14.2-r1.ebuild @@ -0,0 +1,159 @@ +# Copyright 2022-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_EXT=1 +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{8,9,10,11,12} ) + +CRATES=" + ahash@0.8.6 + alga@0.9.3 + allocator-api2@0.2.16 + approx@0.3.2 + autocfg@1.1.0 + bitflags@1.3.2 + cfg-if@1.0.0 + crossbeam-deque@0.8.5 + crossbeam-epoch@0.9.18 + crossbeam-utils@0.8.19 + either@1.9.0 + equivalent@1.0.1 + fixedbitset@0.4.2 + getrandom@0.2.12 + hashbrown@0.12.3 + hashbrown@0.14.3 + heck@0.4.1 + hermit-abi@0.3.4 + indexmap@1.9.3 + indexmap@2.1.0 + indoc@2.0.4 + itertools@0.10.5 + itertools@0.11.0 + itoa@1.0.10 + libc@0.2.152 + libm@0.2.8 + lock_api@0.4.11 + matrixmultiply@0.3.8 + memchr@2.7.1 + memoffset@0.9.0 + ndarray-stats@0.5.1 + ndarray@0.15.6 + noisy_float@0.2.0 + num-bigint@0.4.4 + num-complex@0.2.4 + num-complex@0.4.4 + num-integer@0.1.45 + num-traits@0.2.17 + num_cpus@1.16.0 + numpy@0.20.0 + once_cell@1.19.0 + parking_lot@0.12.1 + parking_lot_core@0.9.9 + petgraph@0.6.4 + ppv-lite86@0.2.17 + priority-queue@1.3.2 + proc-macro2@1.0.78 + pyo3-build-config@0.20.2 + pyo3-ffi@0.20.2 + pyo3-macros-backend@0.20.2 + pyo3-macros@0.20.2 + pyo3@0.20.2 + quick-xml@0.31.0 + quote@1.0.35 + rand@0.8.5 + rand_chacha@0.3.1 + rand_core@0.6.4 + rand_pcg@0.3.1 + rawpointer@0.2.1 + rayon-cond@0.3.0 + rayon-core@1.12.1 + rayon@1.8.1 + redox_syscall@0.4.1 + rustc-hash@1.1.0 + ryu@1.0.16 + scopeguard@1.2.0 + serde@1.0.195 + serde_derive@1.0.195 + serde_json@1.0.111 + smallvec@1.13.1 + sprs@0.11.1 + syn@2.0.48 + target-lexicon@0.12.13 + unicode-ident@1.0.12 + unindent@0.2.3 + version_check@0.9.4 + wasi@0.11.0+wasi-snapshot-preview1 + windows-targets@0.48.5 + windows_aarch64_gnullvm@0.48.5 + windows_aarch64_msvc@0.48.5 + windows_i686_gnu@0.48.5 + windows_i686_msvc@0.48.5 + windows_x86_64_gnu@0.48.5 + windows_x86_64_gnullvm@0.48.5 + windows_x86_64_msvc@0.48.5 + zerocopy-derive@0.7.32 + zerocopy@0.7.32 +" + +inherit cargo distutils-r1 + +DESCRIPTION="A high performance Python graph library implemented in Rust" +HOMEPAGE=" + https://github.com/Qiskit/rustworkx/ + https://pypi.org/project/rustworkx/ +" +SRC_URI=" + https://github.com/Qiskit/rustworkx/archive/${PV}.tar.gz + -> ${P}.gh.tar.gz + ${CARGO_CRATE_URIS} +" + +LICENSE="Apache-2.0" +# Dependent crate licenses +LICENSE+=" + Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 MIT + Unicode-DFS-2016 + || ( LGPL-3 MPL-2.0 ) +" +SLOT="0" +KEYWORDS="~amd64" + +RDEPEND=" + >=dev-python/numpy-1.16.0[${PYTHON_USEDEP}] +" +BDEPEND=" + dev-python/setuptools-rust[${PYTHON_USEDEP}] + test? ( + dev-python/fixtures[${PYTHON_USEDEP}] + dev-python/graphviz[${PYTHON_USEDEP}] + >=dev-python/networkx-2.5[${PYTHON_USEDEP}] + dev-python/stestr[${PYTHON_USEDEP}] + >=dev-python/testtools-2.5.0[${PYTHON_USEDEP}] + media-gfx/graphviz[gts] + ) +" + +# Libraries built with rust do not use CFLAGS and LDFLAGS. +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=( + # TODO: hangs + tests/retworkx_backwards_compat/visualization/test_mpl.py + tests/rustworkx_tests/visualization/test_mpl.py + ) + rm -rf rustworkx || die + epytest +} diff --git a/dev-python/rustworkx/rustworkx-0.14.2.ebuild b/dev-python/rustworkx/rustworkx-0.14.2.ebuild deleted file mode 100644 index fa67033c4d91..000000000000 --- a/dev-python/rustworkx/rustworkx-0.14.2.ebuild +++ /dev/null @@ -1,153 +0,0 @@ -# Copyright 2022-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -DISTUTILS_EXT=1 -DISTUTILS_USE_PEP517=setuptools -PYTHON_COMPAT=( python3_{8,9,10,11,12} ) - -CRATES=" - ahash@0.8.6 - alga@0.9.3 - allocator-api2@0.2.16 - approx@0.3.2 - autocfg@1.1.0 - bitflags@1.3.2 - cfg-if@1.0.0 - crossbeam-deque@0.8.5 - crossbeam-epoch@0.9.18 - crossbeam-utils@0.8.19 - either@1.9.0 - equivalent@1.0.1 - fixedbitset@0.4.2 - getrandom@0.2.12 - hashbrown@0.12.3 - hashbrown@0.14.3 - heck@0.4.1 - hermit-abi@0.3.4 - indexmap@1.9.3 - indexmap@2.1.0 - indoc@2.0.4 - itertools@0.10.5 - itertools@0.11.0 - itoa@1.0.10 - libc@0.2.152 - libm@0.2.8 - lock_api@0.4.11 - matrixmultiply@0.3.8 - memchr@2.7.1 - memoffset@0.9.0 - ndarray-stats@0.5.1 - ndarray@0.15.6 - noisy_float@0.2.0 - num-bigint@0.4.4 - num-complex@0.2.4 - num-complex@0.4.4 - num-integer@0.1.45 - num-traits@0.2.17 - num_cpus@1.16.0 - numpy@0.20.0 - once_cell@1.19.0 - parking_lot@0.12.1 - parking_lot_core@0.9.9 - petgraph@0.6.4 - ppv-lite86@0.2.17 - priority-queue@1.3.2 - proc-macro2@1.0.78 - pyo3-build-config@0.20.2 - pyo3-ffi@0.20.2 - pyo3-macros-backend@0.20.2 - pyo3-macros@0.20.2 - pyo3@0.20.2 - quick-xml@0.31.0 - quote@1.0.35 - rand@0.8.5 - rand_chacha@0.3.1 - rand_core@0.6.4 - rand_pcg@0.3.1 - rawpointer@0.2.1 - rayon-cond@0.3.0 - rayon-core@1.12.1 - rayon@1.8.1 - redox_syscall@0.4.1 - rustc-hash@1.1.0 - ryu@1.0.16 - scopeguard@1.2.0 - serde@1.0.195 - serde_derive@1.0.195 - serde_json@1.0.111 - smallvec@1.13.1 - sprs@0.11.1 - syn@2.0.48 - target-lexicon@0.12.13 - unicode-ident@1.0.12 - unindent@0.2.3 - version_check@0.9.4 - wasi@0.11.0+wasi-snapshot-preview1 - windows-targets@0.48.5 - windows_aarch64_gnullvm@0.48.5 - windows_aarch64_msvc@0.48.5 - windows_i686_gnu@0.48.5 - windows_i686_msvc@0.48.5 - windows_x86_64_gnu@0.48.5 - windows_x86_64_gnullvm@0.48.5 - windows_x86_64_msvc@0.48.5 - zerocopy-derive@0.7.32 - zerocopy@0.7.32 -" - -inherit cargo distutils-r1 - -DESCRIPTION="A high performance Python graph library implemented in Rust" -HOMEPAGE=" - https://github.com/Qiskit/rustworkx/ - https://pypi.org/project/rustworkx/ -" -SRC_URI=" - https://github.com/Qiskit/rustworkx/archive/${PV}.tar.gz - -> ${P}.gh.tar.gz - ${CARGO_CRATE_URIS} -" - -LICENSE="Apache-2.0" -# Dependent crate licenses -LICENSE+=" - Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 MIT - Unicode-DFS-2016 - || ( LGPL-3 MPL-2.0 ) -" -SLOT="0" -KEYWORDS="~amd64" - -RDEPEND=" - >=dev-python/numpy-1.16.0[${PYTHON_USEDEP}] -" -BDEPEND=" - dev-python/setuptools-rust[${PYTHON_USEDEP}] - test? ( - dev-python/fixtures[${PYTHON_USEDEP}] - dev-python/graphviz[${PYTHON_USEDEP}] - >=dev-python/networkx-2.5[${PYTHON_USEDEP}] - dev-python/stestr[${PYTHON_USEDEP}] - >=dev-python/testtools-2.5.0[${PYTHON_USEDEP}] - media-gfx/graphviz[gts] - ) -" - -# Libraries built with rust do not use CFLAGS and LDFLAGS. -QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/rustworkx/rustworkx.*\\.so" - -EPYTEST_XDIST=1 -distutils_enable_tests pytest - -python_test() { - local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 - local EPYTEST_DESELECT=( - # TODO: hangs - tests/retworkx_backwards_compat/visualization/test_mpl.py - tests/rustworkx_tests/visualization/test_mpl.py - ) - rm -rf rustworkx || die - epytest -} -- cgit v1.3.1