From ad502e0a96847dccfb164b8e3e2c373f89684d45 Mon Sep 17 00:00:00 2001 From: Krzesimir Nowak Date: Thu, 5 Mar 2026 13:55:41 +0100 Subject: [PATCH] dev-python/networkx: Add from Gentoo It's from Gentoo commit 2d25fad95cbaa525c8945d8e582c749d49524f49. Signed-off-by: Krzesimir Nowak --- .../dev-python/networkx/Manifest | 5 ++ .../networkx/files/networkx-3.5-py314.patch | 53 +++++++++++++++ .../dev-python/networkx/metadata.xml | 24 +++++++ .../networkx/networkx-3.5-r1.ebuild | 64 +++++++++++++++++++ .../dev-python/networkx/networkx-3.6.1.ebuild | 60 +++++++++++++++++ .../dev-python/networkx/networkx-3.6.ebuild | 60 +++++++++++++++++ 6 files changed, 266 insertions(+) create mode 100644 sdk_container/src/third_party/portage-stable/dev-python/networkx/Manifest create mode 100644 sdk_container/src/third_party/portage-stable/dev-python/networkx/files/networkx-3.5-py314.patch create mode 100644 sdk_container/src/third_party/portage-stable/dev-python/networkx/metadata.xml create mode 100644 sdk_container/src/third_party/portage-stable/dev-python/networkx/networkx-3.5-r1.ebuild create mode 100644 sdk_container/src/third_party/portage-stable/dev-python/networkx/networkx-3.6.1.ebuild create mode 100644 sdk_container/src/third_party/portage-stable/dev-python/networkx/networkx-3.6.ebuild diff --git a/sdk_container/src/third_party/portage-stable/dev-python/networkx/Manifest b/sdk_container/src/third_party/portage-stable/dev-python/networkx/Manifest new file mode 100644 index 0000000000..5a8f8f9243 --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/dev-python/networkx/Manifest @@ -0,0 +1,5 @@ +DIST networkx-3.5.tar.gz 2471065 BLAKE2B 575ac0a6e9741f0ad23396ff089cb360d43fc80f1c5a1fcb69e824c3673aba1aae5c2413020b049bcfecb68045984452eb02aefce1d523bd00d589eb26d8ae0f SHA512 9c060385913cfe67126e71eb9e53c032faa51c9609336ce78333d22e5f73078eb5b4826e0709cae0bd448fef2a5b2fb6f4c29be28c70d34a936d1cf6a00e83a1 +DIST networkx-3.6.1.tar.gz 2517025 BLAKE2B 4419ae5377fa6d4c4e058e96f481207c6091edc4b2e15c5f1c96d15e1a298b54c99a3f2fc5788469269db703db75b7bcff72fdddc08835a875170fa151b7a574 SHA512 d3ccbdf15b93facf71c8f0f508b85204f77273af1180e885a2bde79631237f7f08a4521a88a52b599b179df94e2b58916cc2ee21be20d893a8d6a0f86d9a3a30 +DIST networkx-3.6.1.tar.gz.provenance 9627 BLAKE2B 0a983dd076324896c372504a666dc491cdc0f84280d1d0cd7e26f46d0cd9526310caf1397e40ce547643d1e3df39a3a5144d8de45c44f4e350ad6146119fbfeb SHA512 b0be00d2310d8df60bdaa9554026a8aeb8930f90095bae8c3f5536fe7badee0002370c8ac03aea4f1e53381ab20d9faece5e74744373966cd472a5d6e64d5da8 +DIST networkx-3.6.tar.gz 2511464 BLAKE2B d677f4850dc396d447d10086a8adef59c1455286702158fd5fef7417accb3529980a65ee52a935aed20723d61eee99ba88b22ab0fc45970d48f97934a99dccec SHA512 a2864f7896e3b20d2dc24744494ffa14ff5aa6ffa938c5b49937236706ec193f0777cda3cbb2993f4dbf51137a0aed8246af0c2d900385222cd32e917d6b5c64 +DIST networkx-3.6.tar.gz.provenance 9491 BLAKE2B 6cb089d2da3b5313d6df63e2503202ed80a3f30a71aeb9c198da3c2b62ecb21f78c11b9e5b55750c9a85ca430c8ed3096cb59c822c07455ecacde9825228fdcf SHA512 68795022a1c9cb288ecf478c14aec713b17081b2de1056cb7278887fadbd7f66cf555e01ad838f808414a1740a083dc3f372791dde00af3a0330093019d02c6f diff --git a/sdk_container/src/third_party/portage-stable/dev-python/networkx/files/networkx-3.5-py314.patch b/sdk_container/src/third_party/portage-stable/dev-python/networkx/files/networkx-3.5-py314.patch new file mode 100644 index 0000000000..4b109fd9ac --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/dev-python/networkx/files/networkx-3.5-py314.patch @@ -0,0 +1,53 @@ +From 5487e923e39f526fe12a74d7399e5153f06698a4 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= +Date: Tue, 3 Jun 2025 09:54:33 +0200 +Subject: [PATCH] Use type checks in `generators/lattice.py` for Py3.14 compat + +Replace the `TypeError` catching in `networkx/generators/lattice.py` +with explicit type checks to make the code more reliable and fix it for +Python 3.14. Catching the exception immediately does not work +in the second instance, because the code is constructing a generator, +and apparently Python 3.14 does not evaluate the `p in periodic` +expression until the generator is actually iterated over. Given that +the function expects either an iterable or a `bool`, explicitly checking +for `bool` should both be more readable and more reliable. + +The alternative would be to replace the generator with a list +comprehension that would be evaluated immediately. However, +the explicit type check seems to be a cleaner solution to the problem. +--- + networkx/generators/lattice.py | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/networkx/generators/lattice.py b/networkx/generators/lattice.py +index 95e520d2c..3b0900ea1 100644 +--- a/networkx/generators/lattice.py ++++ b/networkx/generators/lattice.py +@@ -67,10 +67,10 @@ def grid_2d_graph(m, n, periodic=False, create_using=None): + G.add_edges_from(((i, j), (pi, j)) for pi, i in pairwise(rows) for j in cols) + G.add_edges_from(((i, j), (i, pj)) for i in rows for pj, j in pairwise(cols)) + +- try: +- periodic_r, periodic_c = periodic +- except TypeError: ++ if isinstance(periodic, bool): + periodic_r = periodic_c = periodic ++ else: ++ periodic_r, periodic_c = periodic + + if periodic_r and len(rows) > 2: + first = rows[0] +@@ -129,10 +129,10 @@ def grid_graph(dim, periodic=False): + if not dim: + return empty_graph(0) + +- try: +- func = (cycle_graph if p else path_graph for p in periodic) +- except TypeError: ++ if isinstance(periodic, bool): + func = repeat(cycle_graph if periodic else path_graph) ++ else: ++ func = (cycle_graph if p else path_graph for p in periodic) + + G = next(func)(dim[0]) + for current_dim in dim[1:]: diff --git a/sdk_container/src/third_party/portage-stable/dev-python/networkx/metadata.xml b/sdk_container/src/third_party/portage-stable/dev-python/networkx/metadata.xml new file mode 100644 index 0000000000..226da59e47 --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/dev-python/networkx/metadata.xml @@ -0,0 +1,24 @@ + + + + + python@gentoo.org + Python + + + NetworkX is a Python-based package for the creation, manipulation, and + study of the structure, dynamics, and functions of complex networks. + The structure of a graph or network is encoded in the edges (connections, + links, ties, arcs, bonds) between nodes (vertices, sites, actors). If + unqualified, by graph we mean a simple undirected graph, i.e. no + self-loops and no multiple edges are allowed. By a network we usually + mean a graph with weights (fields, properties) on nodes and/or edges. + The potential audience for NetworkX includes: mathematicians, physicists, + biologists, computer scientists, social scientists. + + + + networkx + networkx/networkx + + diff --git a/sdk_container/src/third_party/portage-stable/dev-python/networkx/networkx-3.5-r1.ebuild b/sdk_container/src/third_party/portage-stable/dev-python/networkx/networkx-3.5-r1.ebuild new file mode 100644 index 0000000000..8fd2a20fd3 --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/dev-python/networkx/networkx-3.5-r1.ebuild @@ -0,0 +1,64 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +PYTHON_FULLY_TESTED=( python3_{11..13} ) +PYTHON_COMPAT=( "${PYTHON_FULLY_TESTED[@]}" python3_14 ) + +inherit distutils-r1 optfeature pypi virtualx + +DESCRIPTION="Python tools to manipulate graphs and complex networks" +HOMEPAGE=" + https://networkx.org/ + https://github.com/networkx/networkx/ + https://pypi.org/project/networkx/ +" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="amd64 arm arm64 ~loong ~ppc64 ~riscv ~sparc x86 ~x64-macos" + +BDEPEND=" + test? ( + >=dev-python/lxml-4.6[${PYTHON_USEDEP}] + $(python_gen_cond_dep ' + >=dev-python/matplotlib-3.8[${PYTHON_USEDEP}] + >=dev-python/numpy-1.25[${PYTHON_USEDEP}] + >=dev-python/scipy-1.11.2[${PYTHON_USEDEP}] + ' "${PYTHON_FULLY_TESTED[@]}") + ) +" + +EPYTEST_XDIST=1 +distutils_enable_tests pytest + +PATCHES=( + # minimal fix for https://github.com/networkx/networkx/issues/8091 + "${FILESDIR}/${P}-py314.patch" +) + +src_test() { + virtx distutils-r1_src_test +} + +python_test() { + local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 + # virtx implies nonfatal + nonfatal epytest || die +} + +src_install() { + distutils-r1_src_install + # those examples use various assets and pre-compressed files + docompress -x /usr/share/doc/${PF}/examples +} + +pkg_postinst() { + optfeature "recommended dependencies" "dev-python/matplotlib dev-python/numpy dev-python/pandas dev-python/scipy" + optfeature "graph drawing and graph layout algorithms" "dev-python/pygraphviz dev-python/pydot" + optfeature "YAML format reading and writing" "dev-python/pyyaml" + optfeature "shapefile format reading and writing" "sci-libs/gdal[python]" + optfeature "GraphML XML format" "dev-python/lxml" +} diff --git a/sdk_container/src/third_party/portage-stable/dev-python/networkx/networkx-3.6.1.ebuild b/sdk_container/src/third_party/portage-stable/dev-python/networkx/networkx-3.6.1.ebuild new file mode 100644 index 0000000000..ef129a1ace --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/dev-python/networkx/networkx-3.6.1.ebuild @@ -0,0 +1,60 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +PYPI_VERIFY_REPO=https://github.com/networkx/networkx +PYTHON_FULLY_TESTED=( python3_{11..14} ) +PYTHON_COMPAT=( "${PYTHON_FULLY_TESTED[@]}" ) + +inherit distutils-r1 optfeature pypi virtualx + +DESCRIPTION="Python tools to manipulate graphs and complex networks" +HOMEPAGE=" + https://networkx.org/ + https://github.com/networkx/networkx/ + https://pypi.org/project/networkx/ +" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~sparc ~x86 ~x64-macos" + +BDEPEND=" + test? ( + >=dev-python/lxml-4.6[${PYTHON_USEDEP}] + $(python_gen_cond_dep ' + >=dev-python/matplotlib-3.8[${PYTHON_USEDEP}] + >=dev-python/numpy-1.25[${PYTHON_USEDEP}] + >=dev-python/scipy-1.11.2[${PYTHON_USEDEP}] + ' "${PYTHON_FULLY_TESTED[@]}") + ) +" + +EPYTEST_PLUGINS=() +EPYTEST_XDIST=1 +distutils_enable_tests pytest + +src_test() { + virtx distutils-r1_src_test +} + +python_test() { + # virtx implies nonfatal + nonfatal epytest || die +} + +src_install() { + distutils-r1_src_install + # those examples use various assets and pre-compressed files + docompress -x /usr/share/doc/${PF}/examples +} + +pkg_postinst() { + optfeature "recommended dependencies" "dev-python/matplotlib dev-python/numpy dev-python/pandas dev-python/scipy" + optfeature "graph drawing and graph layout algorithms" "dev-python/pygraphviz dev-python/pydot" + optfeature "YAML format reading and writing" "dev-python/pyyaml" + optfeature "shapefile format reading and writing" "sci-libs/gdal[python]" + optfeature "GraphML XML format" "dev-python/lxml" +} diff --git a/sdk_container/src/third_party/portage-stable/dev-python/networkx/networkx-3.6.ebuild b/sdk_container/src/third_party/portage-stable/dev-python/networkx/networkx-3.6.ebuild new file mode 100644 index 0000000000..ef129a1ace --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/dev-python/networkx/networkx-3.6.ebuild @@ -0,0 +1,60 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +PYPI_VERIFY_REPO=https://github.com/networkx/networkx +PYTHON_FULLY_TESTED=( python3_{11..14} ) +PYTHON_COMPAT=( "${PYTHON_FULLY_TESTED[@]}" ) + +inherit distutils-r1 optfeature pypi virtualx + +DESCRIPTION="Python tools to manipulate graphs and complex networks" +HOMEPAGE=" + https://networkx.org/ + https://github.com/networkx/networkx/ + https://pypi.org/project/networkx/ +" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~sparc ~x86 ~x64-macos" + +BDEPEND=" + test? ( + >=dev-python/lxml-4.6[${PYTHON_USEDEP}] + $(python_gen_cond_dep ' + >=dev-python/matplotlib-3.8[${PYTHON_USEDEP}] + >=dev-python/numpy-1.25[${PYTHON_USEDEP}] + >=dev-python/scipy-1.11.2[${PYTHON_USEDEP}] + ' "${PYTHON_FULLY_TESTED[@]}") + ) +" + +EPYTEST_PLUGINS=() +EPYTEST_XDIST=1 +distutils_enable_tests pytest + +src_test() { + virtx distutils-r1_src_test +} + +python_test() { + # virtx implies nonfatal + nonfatal epytest || die +} + +src_install() { + distutils-r1_src_install + # those examples use various assets and pre-compressed files + docompress -x /usr/share/doc/${PF}/examples +} + +pkg_postinst() { + optfeature "recommended dependencies" "dev-python/matplotlib dev-python/numpy dev-python/pandas dev-python/scipy" + optfeature "graph drawing and graph layout algorithms" "dev-python/pygraphviz dev-python/pydot" + optfeature "YAML format reading and writing" "dev-python/pyyaml" + optfeature "shapefile format reading and writing" "sci-libs/gdal[python]" + optfeature "GraphML XML format" "dev-python/lxml" +}