summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorCrucible <crucible@localhost>2026-10-10 21:31:15 -0500
committerCrucible <crucible@localhost>2026-10-10 21:31:15 -0500
commit170dbd8dd96efb51132a4957c7c58a21422297b8 (patch)
tree0fa8f38e5bafbb99366a3d381aef10a2e9e3aac5 /dev-python
parent1c95b7fb4baf8a490bb24816f3c3c437bcaa3209 (diff)
downloadsrcux-170dbd8dd96efb51132a4957c7c58a21422297b8.tar.gz
srcux-170dbd8dd96efb51132a4957c7c58a21422297b8.tar.xz
srcux-170dbd8dd96efb51132a4957c7c58a21422297b8.zip
Publish srcux candidate 0000000631-20261010-212918HEADdevelop
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/aiohttp/Manifest2
-rw-r--r--dev-python/aiohttp/aiohttp-3.14.5.ebuild156
-rw-r--r--dev-python/aioquic/Manifest1
-rw-r--r--dev-python/aioquic/aioquic-1.4.0.ebuild37
-rw-r--r--dev-python/jsonpatch/Manifest1
-rw-r--r--dev-python/jsonpatch/jsonpatch-1.35.ebuild43
-rw-r--r--dev-python/jsonpointer/Manifest2
-rw-r--r--dev-python/jsonpointer/jsonpointer-3.2.1.ebuild24
-rw-r--r--dev-python/numpy/Manifest3
-rw-r--r--dev-python/numpy/files/numpy-2.2.5-py314.patch298
-rw-r--r--dev-python/numpy/files/numpy-2.2.6-gcc16.patch14
-rw-r--r--dev-python/numpy/numpy-2.5.4.ebuild (renamed from dev-python/numpy/numpy-2.2.6.ebuild)200
-rw-r--r--dev-python/pillow/Manifest1
-rw-r--r--dev-python/pillow/pillow-12.2.0-r1.ebuild184
-rw-r--r--dev-python/pillow/pillow-12.2.0.ebuild176
-rw-r--r--dev-python/pyglet/Manifest1
-rw-r--r--dev-python/pyglet/pyglet-2.1.15.ebuild80
-rw-r--r--dev-python/pykka/Manifest1
-rw-r--r--dev-python/pykka/pykka-4.5.0.ebuild26
-rw-r--r--dev-python/pytest-env/Manifest4
-rw-r--r--dev-python/pytest-env/pytest-env-1.8.0.ebuild (renamed from dev-python/pytest-env/pytest-env-1.7.0.ebuild)7
21 files changed, 463 insertions, 798 deletions
diff --git a/dev-python/aiohttp/Manifest b/dev-python/aiohttp/Manifest
index a2ec83c7f1d1..809793a7d325 100644
--- a/dev-python/aiohttp/Manifest
+++ b/dev-python/aiohttp/Manifest
@@ -2,3 +2,5 @@ DIST aiohttp-3.14.3.tar.gz 7971213 BLAKE2B cdad9e58dd0b88ea1acf393237d7fd62fae8d
DIST aiohttp-3.14.3.tar.gz.provenance 9781 BLAKE2B dcf0d39420f1b17fa7d369d3033305a67457cd771e8d16170643589a09a887a2d42dff150dff3e0a3e5bcf5b94af54b8da8a7f40791d9bb2f4165222bd0cb336 SHA512 7e20f865b2a11e3aec9d4005f5f70cd116884868a10c1a49ab4eb7fe3efd30b0f00f6152087ca39115dd37cf9901f53618bf65cd1d4368963369928c6d924b88
DIST aiohttp-3.14.4.tar.gz 8077839 BLAKE2B d1d78d6fdbe41f3d97ab2d7383c40a9a83a91b4f84a7081c49d0caea359c6451494d7e02f8293b2b3310dedafacd31ce6f2bc07b65e3a9665ea8955a798b4b90 SHA512 5598c1e529dec29e6c19f447b596a6ddfb10927cfdf7b24e628b7eb1e73c3d9b2cab7e6c6bdf67cd3b7efb20756ff09fed9d94ef95242a0a761ba015aa492f2e
DIST aiohttp-3.14.4.tar.gz.provenance 9728 BLAKE2B bc76e1ee3b2954d73bfd233734c9fb0d8941a713bd459135895ac5cefc88cc142a04cda0bf7622785593bb65f19106aa5044a0d5a4b8ea2f97fec97f20571b34 SHA512 ac268c76a200f6afc1e1d4488c873f062b314021c0d772c35a1c65b63ac081472a9ac1b02bb8966b42303683ab79b5d2d0dc437c3a0597f20402b707bb5e9413
+DIST aiohttp-3.14.5.tar.gz 8078052 BLAKE2B 01b5fa08661e531b2977daaf58a55e0aa73504052911cb7967922f2868871c9bf8f72b00f5a07262b9223e046d202bf654c8f4105720f18af35357c6b61a02d9 SHA512 a85531e2ae963a4d6513a7d30ac67caad1ac7b7b4227d46623a872e47aac34d6b37f71ef81d4ed3ec17e7a8b311517c380c670016181374c792bff87216408dc
+DIST aiohttp-3.14.5.tar.gz.provenance 9565 BLAKE2B 3987d6f3b6a6e3ed0784fd6c49f9a56206acbd609f97cc1d2a46ff2d21a13a47e56ac08288a26c673562d7a6f0e98a65ca5d60da3f51b784ab23f2d9bd9e8f92 SHA512 b3b418857698067d4676bcd482215e600086523d5ec0becaeb298fe6fc7443b9730c81290cf1211948db38a2bac0bad9cd9443379019330b9eec75b4a9f3115d
diff --git a/dev-python/aiohttp/aiohttp-3.14.5.ebuild b/dev-python/aiohttp/aiohttp-3.14.5.ebuild
new file mode 100644
index 000000000000..77dd22bfa6f6
--- /dev/null
+++ b/dev-python/aiohttp/aiohttp-3.14.5.ebuild
@@ -0,0 +1,156 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYPI_VERIFY_REPO=https://github.com/aio-libs/aiohttp
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="HTTP client/server for asyncio"
+HOMEPAGE="
+ https://github.com/aio-libs/aiohttp/
+ https://pypi.org/project/aiohttp/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="+native-extensions test-rust"
+
+DEPEND="
+ native-extensions? (
+ net-libs/llhttp:=
+ )
+"
+RDEPEND="
+ ${DEPEND}
+ >=dev-python/aiodns-3.3.0[${PYTHON_USEDEP}]
+ >=dev-python/aiohappyeyeballs-2.5.0[${PYTHON_USEDEP}]
+ >=dev-python/aiosignal-1.4.0[${PYTHON_USEDEP}]
+ >=dev-python/attrs-17.3.0[${PYTHON_USEDEP}]
+ >=dev-python/brotlicffi-1.2[${PYTHON_USEDEP}]
+ >=dev-python/frozenlist-1.1.1[${PYTHON_USEDEP}]
+ >=dev-python/multidict-4.5.0[${PYTHON_USEDEP}]
+ >=dev-python/propcache-0.2.0[${PYTHON_USEDEP}]
+ >=dev-python/yarl-1.25.1[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/backports-zstd[${PYTHON_USEDEP}]
+ ' 3.12 3.13)
+ $(python_gen_cond_dep '
+ >=dev-python/typing-extensions-4.4[${PYTHON_USEDEP}]
+ ' 3.12)
+"
+BDEPEND="
+ >=dev-python/multidict-4.5.0[${PYTHON_USEDEP}]
+ native-extensions? (
+ >=dev-python/cython-3.1.1[${PYTHON_USEDEP}]
+ dev-python/pkgconfig[${PYTHON_USEDEP}]
+ )
+ test? (
+ dev-python/blockbuster[${PYTHON_USEDEP}]
+ dev-python/freezegun[${PYTHON_USEDEP}]
+ dev-python/isal[${PYTHON_USEDEP}]
+ dev-python/re-assert[${PYTHON_USEDEP}]
+ dev-python/time-machine[${PYTHON_USEDEP}]
+ dev-python/zlib-ng[${PYTHON_USEDEP}]
+ www-servers/gunicorn[${PYTHON_USEDEP}]
+ test-rust? (
+ dev-python/trustme[${PYTHON_USEDEP}]
+ )
+ )
+"
+
+DOCS=( CHANGES.rst CONTRIBUTORS.txt README.rst )
+
+EPYTEST_PLUGIN_LOAD_VIA_ENV=1
+EPYTEST_PLUGINS=( pytest-{mock,xdist} )
+EPYTEST_RERUNS=5
+: ${EPYTEST_TIMEOUT:=180}
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # unpin dependencies
+ sed -i -e 's:, < [0-9.]*::' pyproject.toml || die
+ # increase the timeout a little
+ sed -e '/abs=/s/0.001/0.01/' -i tests/test_helpers.py || die
+ sed -i -e 's:-Werror::' Makefile || die
+ # remove vendored llhttp
+ rm -r vendor || die
+}
+
+python_configure() {
+ # check for .install-cython, so that we do this only once
+ if [[ ! -f .install-cython && ${EPYTHON} != pypy3 ]] &&
+ use native-extensions
+ then
+ # force rehashing first
+ emake requirements/.hash/cython.txt.hash
+ > .update-pip || die
+ > .install-cython || die
+ emake cythonize
+ fi
+}
+
+python_compile() {
+ # implicitly disabled for pypy3
+ if [[ ${EPYTHON} == pypy3* ]] || ! use native-extensions; then
+ local -x AIOHTTP_NO_EXTENSIONS=1
+ else
+ local -x AIOHTTP_USE_SYSTEM_DEPS=1
+ fi
+
+ distutils-r1_python_compile
+}
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ # proxy is not packaged
+ tests/test_proxy_functional.py
+ # python_on_whales is not packaged
+ tests/autobahn/test_autobahn.py
+ # benchmarks
+ tests/test_benchmarks_client.py
+ tests/test_benchmarks_client_request.py
+ tests/test_benchmarks_client_ws.py
+ tests/test_benchmarks_cookiejar.py
+ tests/test_benchmarks_http_websocket.py
+ tests/test_benchmarks_http_writer.py
+ tests/test_benchmarks_web_fileresponse.py
+ tests/test_benchmarks_web_middleware.py
+ tests/test_benchmarks_web_response.py
+ tests/test_benchmarks_web_urldispatcher.py
+ )
+
+ local EPYTEST_DESELECT=(
+ # Internet
+ tests/test_client_session.py::test_client_session_timeout_zero
+ tests/test_connector.py::test_tcp_connector_ssl_shutdown_timeout_nonzero_passed
+ tests/test_connector.py::test_tcp_connector_ssl_shutdown_timeout_passed_to_create_connection
+ tests/test_connector.py::test_tcp_connector_ssl_shutdown_timeout_zero_not_passed
+ tests/test_client_functional.py::test_invalid_idna
+ # broken by irrelevant deprecation warnings
+ tests/test_circular_imports.py::test_no_warnings
+ # https://github.com/aio-libs/aiohttp/issues/11400#issuecomment-4168569526
+ # https://github.com/python/cpython/issues/145599
+ # https://github.com/python/cpython/pull/145600
+ tests/test_cookie_helpers.py::test_parse_set_cookie_headers_uses_unquote_with_octal
+ # some warnings
+ tests/test_multipart.py::TestPartReader::test_read_decode_compressed_exceeds_max_size
+ )
+
+ # upstream unconditionally blocks building C extensions
+ # on PyPy3 but the test suite needs an explicit switch
+ if [[ ${EPYTHON} == pypy3* ]] || ! use native-extensions; then
+ local -x AIOHTTP_NO_EXTENSIONS=1
+ fi
+
+ rm -rf aiohttp || die
+ epytest -m "not internal and not dev_mode"
+}
diff --git a/dev-python/aioquic/Manifest b/dev-python/aioquic/Manifest
index 3927c1429b57..234549c249a1 100644
--- a/dev-python/aioquic/Manifest
+++ b/dev-python/aioquic/Manifest
@@ -1,2 +1,3 @@
DIST aioquic-1.2.0.tar.gz 179891 BLAKE2B fcf7821a93c166c98cdb7e6e2eb3b80df65c1faa484268faa0fc1386bb59bdfffdf801a8de23c2a2d9dec826640ad75717b068b558081959089e9be7d414bca3 SHA512 6833a19e52ac702a3ae12fdfa3dcd3011125e38d9c16ae88881533f6c607d61c6eac43215eae80c75513d616432a98d124fc92545d63697159658e611af50ee9
DIST aioquic-1.3.0.tar.gz 181923 BLAKE2B cc15af13fc83510f041b8be53b8a19f6f9f95dfa0374d2cee8194350b72a160f1d885ae1ea4846fc46ea5b6cb6d3ec09315a130e4226db9d466e3f7b71650baf SHA512 149d46d5c3b7db26edb418569bec224f2e4c2ce419a0374a9241ea570d70cd09f0230c1fe5fd5ee73e1ff84adac41ab48dd15aa2f48d1b3b6c8caaa34b70c8fd
+DIST aioquic-1.4.0.tar.gz 184137 BLAKE2B 59cc3db143b01e8c1b0eabc5c54d10d27d735debe642f87c485f10d3421d018af5b35856f6eca12f6a5675a37a6d08ed4076fca0be64884879906e90d2f1ab60 SHA512 ff0cdaa44d74759bcc785e30529a737b967ca614dbbe7cb33735d9ca02d649c33d47f2d1f4a6ab4049f956c5f29196ac8bbd012e5af7a5ff6e4377d5a2a0c44a
diff --git a/dev-python/aioquic/aioquic-1.4.0.ebuild b/dev-python/aioquic/aioquic-1.4.0.ebuild
new file mode 100644
index 000000000000..b24cc0df20bf
--- /dev/null
+++ b/dev-python/aioquic/aioquic-1.4.0.ebuild
@@ -0,0 +1,37 @@
+# Copyright 2024-2026 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_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="An implementation of QUIC and HTTP/3"
+HOMEPAGE="
+ https://github.com/aiortc/aioquic/
+ https://pypi.org/project/aioquic/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+DEPEND="
+ dev-libs/openssl:=
+"
+RDEPEND="
+ ${DEPEND}
+ dev-python/certifi[${PYTHON_USEDEP}]
+ >=dev-python/cryptography-43.0.0[${PYTHON_USEDEP}]
+ <dev-python/pylsqpack-0.4.0[${PYTHON_USEDEP}]
+ >=dev-python/pylsqpack-0.3.3[${PYTHON_USEDEP}]
+ >=dev-python/pyopenssl-24[${PYTHON_USEDEP}]
+ >=dev-python/service-identity-24.1.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
diff --git a/dev-python/jsonpatch/Manifest b/dev-python/jsonpatch/Manifest
index ec18857c6f13..8f78bfb87a11 100644
--- a/dev-python/jsonpatch/Manifest
+++ b/dev-python/jsonpatch/Manifest
@@ -1,2 +1,3 @@
DIST python-json-patch-1.33.gh.tar.gz 28475 BLAKE2B 7d95ab23e09141cbe26618c91b12558d5fbfecda3e5b148d834753a364155d30859a9bdc3d321bdfcc5269f7e0170671524ae78f5fe65a8c97041bab3fb522b9 SHA512 0685f63949bee135b19d0962bdaab32ba97e02772b6650d885be57c09a2e89546222ebba1a4cf146b2f91027790b0a3ff2ea072d66dcebf9153aa601638bbfa2
DIST python-json-patch-1.34.gh.tar.gz 39356 BLAKE2B 57342b6f47099bce4f2f2d28f6db7ceb8e5e399f20d0ebeb1577fde3e206569f42dd6f0822fcddfbd15922ff82397468fa8fb807e81f79a22c494bcc0d52ef09 SHA512 503f07689f96369e43a6d689bcbf5763445f5e7f93a2ee5c409f1abc17d57ec06165e1458a31903bc67d740fd02ea135d95454b81bde22b895492438949abc89
+DIST python-json-patch-1.35.gh.tar.gz 49420 BLAKE2B d97ec8eddc656dd2b7f7b9fccf43e030368f96b9588c6383053e9e4ceffbc586f830d1266e4ff9521f2c83874a3b248382e36a8d40a9b376e1bd8dc0bf08659b SHA512 74e0ed5c45a7adb0519c587ce8ee76901ed3f77991bcf9687b9b7b9bf91773bdac3bcdb8c107a093307a4dba2b7b31df94f50b7410447ed498d392e8eba4d869
diff --git a/dev-python/jsonpatch/jsonpatch-1.35.ebuild b/dev-python/jsonpatch/jsonpatch-1.35.ebuild
new file mode 100644
index 000000000000..632a0da68c8c
--- /dev/null
+++ b/dev-python/jsonpatch/jsonpatch-1.35.ebuild
@@ -0,0 +1,43 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+MY_P=python-json-patch-${PV}
+DESCRIPTION="Apply JSON-Patches like http://tools.ietf.org/html/draft-pbryan-json-patch-04"
+HOMEPAGE="
+ https://github.com/stefankoegl/python-json-patch/
+ https://pypi.org/project/jsonpatch/
+"
+SRC_URI="
+ https://github.com/stefankoegl/python-json-patch/archive/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/jsonpointer-1.9[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ ${RDEPEND}
+ dev-python/hypothesis[${PYTHON_USEDEP}]
+ )
+"
+
+python_test() {
+ "${EPYTHON}" tests.py || die "Tests of tests.py fail with ${EPYTHON}"
+ "${EPYTHON}" ext_tests.py || die "Tests of ext_tests.py fail with ${EPYTHON}"
+ "${EPYTHON}" property_tests.py || die "Tests of property_tests.py fail with ${EPYTHON}"
+}
diff --git a/dev-python/jsonpointer/Manifest b/dev-python/jsonpointer/Manifest
index eec792554c04..12617515842a 100644
--- a/dev-python/jsonpointer/Manifest
+++ b/dev-python/jsonpointer/Manifest
@@ -1,3 +1,5 @@
DIST jsonpointer-3.1.1.tar.gz 9068 BLAKE2B 0fefab0619124600f3b870802653cf0afbbed36c18477a36e5c070a388d5f5d5290a24e97252859ac8c8f0624fea40ea94c0374a38f341b2aaf61b02c8dbe505 SHA512 9f932985ac404ab21d1e2c29b95bdc684a3d258dc2203bdb6c0192ccf6ba804809d297a0701f7d4fc32adb481f259e1c17e7bd7bf0198e76f19b4481b78056c5
DIST jsonpointer-3.2.0.tar.gz 11062 BLAKE2B cb39d9a8546f36f669d2ed17993552933c3393d7cf55489309c4346d6ba99c879bdd46a181429e7d61e409062b8c783628a1cd5d792fdae22a49fc0ea6076ea3 SHA512 b07a52c387f12e93285d86889de0b887b144ff91f700d53cd0e43bd7cbdb9c86d2c9cc732d982ff9460b449214231ed1ded2ab52bc184accd7f3a444f95cd875
DIST jsonpointer-3.2.0.tar.gz.provenance 10199 BLAKE2B 5d45c514c6aa8a28c2a9446fd423df7db733f5ffbfd274156ffb2a24d5aab108e8addbcb20a712bb870839b57f1863322dbb1531d3dc4c1e8887a113dff782b6 SHA512 7915c8aed80eb15a155e4e58c2b9b2fb74640d8d3e9bb3e56186c7e8d3dfbb5a32b5abc959fe1e53b8e3bc959365839cfa9de13c33320c3a6d2b8bf6729a0b5c
+DIST jsonpointer-3.2.1.tar.gz 11309 BLAKE2B f9ceb4585302147612ead295887370be942031541af80b42518e7cffc57b49e4efe29a97abe42df225ecb5ac5809fd8b3334f8478fc38895d7fd3a3ac442c240 SHA512 bfe4609bceba035020b2f50cb6472b892a144e7c5c3dfd29ccf80d81ef711cfdce78d161d4907598c78a8bd475b207b9478c103745c435217d5bd8e298738a2f
+DIST jsonpointer-3.2.1.tar.gz.provenance 10152 BLAKE2B 24bba7913585705f381cc46982d2d2ee8069f91c7d8572b6bb612d226e451cf5a24d7046e8993ec3d4453e6719eae3c8c20285dca563ec69d40c6a1980eedb23 SHA512 76bde2061833aee5fa4ccf68d16eb8f5d8ff35adf5f33c26222e71fa3be91a20a12a567c31a30dd696c0212b00e0570c188c52255d6cc57787b4f636359d071e
diff --git a/dev-python/jsonpointer/jsonpointer-3.2.1.ebuild b/dev-python/jsonpointer/jsonpointer-3.2.1.ebuild
new file mode 100644
index 000000000000..5091242d54b8
--- /dev/null
+++ b/dev-python/jsonpointer/jsonpointer-3.2.1.ebuild
@@ -0,0 +1,24 @@
+# Copyright 1999-2026 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/stefankoegl/python-json-pointer
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Identify specific nodes in a JSON document (according to draft 08)"
+HOMEPAGE="
+ https://github.com/stefankoegl/python-json-pointer/
+ https://pypi.org/project/jsonpointer/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
+
+python_test() {
+ "${EPYTHON}" tests.py || die "Tests fail with ${EPYTHON}"
+}
diff --git a/dev-python/numpy/Manifest b/dev-python/numpy/Manifest
index e1384911dfd6..f3959ac23b34 100644
--- a/dev-python/numpy/Manifest
+++ b/dev-python/numpy/Manifest
@@ -1,4 +1,3 @@
-DIST numpy-2.2.6.tar.gz 20276440 BLAKE2B 597ebbc72b2b3901bba4e0946f4f63ff13baf3b04d2f44d6e1ce8d05112f5d7191cb2e2f80e20006f0bc57a5a3f395fcc6003d9593e41b057394c12ad44f69f7 SHA512 00c82476c6cc8e68c4cd3210896172d91bdb52a46676931d173a3bbd772b29cebc8e819dfbbaf621eba9225fff3fa3f81426fe864d8812de4ff2975e7ac5c338
DIST numpy-2.4.6.tar.gz 20735807 BLAKE2B 8866cd9117365797a377278f0002930f0cae264bddbc9d0d7943907b6d54c80d7b0c7cc81263bfed0310e60754693c66d461ed7230ce457c30d9b6d3e50b27e7 SHA512 6e78c61a54bb89e202b0365440cef8f5dc948ac94eb39dfcd5af56a1ddce96ba8c7b4cd9b9c474be5f7642e7ec56cdc8eb238eb1871238911b94f9a90e2720ca
DIST numpy-2.4.6.tar.gz.provenance 9880 BLAKE2B ecfe5e7b5d53ac975d3ff69b3ea463be4495f7759b63a92a455be8c29b66931707c4ca8dc0fa8296ced2182246738c935814932d31649a624fbfb06ceaafb76c SHA512 724b0cc27b8120b62ef1aae8c8ed673cd2bf4c430ddddf56ff1550f9d80ecfbc499f3df4c0a3370fecf19691eb3057e48057bd10d4d25a875a1f2f6a512e5c2f
DIST numpy-2.5.1.tar.gz 20755553 BLAKE2B be71d9f5c615cbc6b59fe5ed8a1c346be654a813f811807a275dff371dd56279979dce6f2218c5d195ae17657994644a44a9afb2e9a1466e14404a9f64bedefb SHA512 cbb1f844bc7feb845de24c4951bc378b0d4d96a1ac7eaa9fe1f615aaf470f33c81e94fddbbd83f555b7d9248b5db60b641a4582b9f39b0f6d906f7a8acdd7add
@@ -7,3 +6,5 @@ DIST numpy-2.5.2.tar.gz 20773161 BLAKE2B 53f815c3bff9d5b9efc0dcda2ec5c4ce397402c
DIST numpy-2.5.2.tar.gz.provenance 10057 BLAKE2B f60196c4ff61d3a0016024a85bcf2b407a205fad007354d141b73e949fb3d3822697e4973216a30f83a17e551eb1374836224231780e5fbb3c0b714501f7d745 SHA512 1eb508fe4b3f5f1a3e68435efa2c87e81c25cf8bf77cca4a956909733abd16f5dbef9e7ae001db82abe9bacf467d7d1b0b1e92868c063cd8edaf1db6537f1daf
DIST numpy-2.5.3.tar.gz 20791231 BLAKE2B 37551f1d0066f06a402f6caf1a5c07a7aad255e7bf53402550fb08c19bd52af82e6cd3e4c547e87c2f431d9c803d2db1b0760a958bc1a0afeb0565b8c9393d72 SHA512 667ba01fc13669a8150b0b4797e6c6b953d27ce37d71f8dec02acd7050669fe9a461efc63e162d9732bc297deb3e5587675e40adbac923949da257a255f9b15b
DIST numpy-2.5.3.tar.gz.provenance 9824 BLAKE2B 1c8ad74e3558242cce309a5540a058397f5dfddee80e7cb0657eb6f34baf4055b9831b82fa139dcebd6f7649a847092707aa0cac1270069652ef438e4f5ea04f SHA512 0d3ad6886fd357fbf4b53b20ea2463ddac3957b95d0aed7e36b4100ff4d0bed0c0372697b37aab00859fc42823700e4badbde3cb3ddc7223393ed98826090122
+DIST numpy-2.5.4.tar.gz 20866315 BLAKE2B 0946c54c70141f847c9d3987097c9d306a44050ca3b3231d9c51aeeb3f3f9bafa058b75515927606bb214d19fd0e05f70d77b64e462d19d2398b9aa7b380ae98 SHA512 571fe3c6dbdf3ee6481965fd463b0cb661f96260db1014e230fa45cdd6a4825fe236b29b415b94f48501922899e0283ad04762fa095ac8038bbd9db3bc652440
+DIST numpy-2.5.4.tar.gz.provenance 10029 BLAKE2B 4434cb23a4ebd48180dc667632a780a2cd578745545f2beec7a53f566d1c6d3e59f5b91b49528bf8dce0be6c86f54978874ed242256ba8fd116738035a7c17d3 SHA512 13193c227c9aa1803806e05d64f15c0e88e2f358f91c33a930940435414c7ecbfd50ca0618c16b8c706696dabd733532ae75a72cf2e9cc23696cff8a9800b147
diff --git a/dev-python/numpy/files/numpy-2.2.5-py314.patch b/dev-python/numpy/files/numpy-2.2.5-py314.patch
deleted file mode 100644
index bdb0762e733c..000000000000
--- a/dev-python/numpy/files/numpy-2.2.5-py314.patch
+++ /dev/null
@@ -1,298 +0,0 @@
-From 57084ae28ed14f3bba89ab51104dd5521b7edb64 Mon Sep 17 00:00:00 2001
-From: Nathan Goldbaum <nathan.goldbaum@gmail.com>
-Date: Tue, 22 Apr 2025 15:31:14 -0600
-Subject: [PATCH] ENH: Support Python 3.14 (#28748)
-
-* MNT: use CPython internal APIs to hotfix temporary elision on 3.14
-
-This is based on a diff from Sam Gross, see
-https://github.com/numpy/numpy/issues/28681#issuecomment-2810661401
-
-* TST: use refcount deltas in tests that hardcode refcounts
-
-* TST: one more refcount test change I don't understand
-
-* TST: fix ResourceWarning
-
-* CI: add 3.14 and 3.14t linux CI
-
-* CI: try with setup-python instead of setup-uv
-
-* CI: fix 3.14t-dev cython install
-
-* Update numpy/_core/src/multiarray/temp_elide.c
-
-Co-authored-by: Ross Barnowski <rossbar@caltech.edu>
-
-* CI: drop linux 3.13t smoke test
-
-* TST: move refcount check inside with block
-
-* MNT: guard against a possible future PyPy 3.14
-
----------
-
-Co-authored-by: Ross Barnowski <rossbar@caltech.edu>
-
-MNT: add support for 3.14.0b1
----
- numpy/_core/src/multiarray/temp_elide.c | 19 +++++++++--
- numpy/_core/tests/test_dlpack.py | 8 ++---
- numpy/_core/tests/test_dtype.py | 3 +-
- numpy/_core/tests/test_indexing.py | 6 ++--
- numpy/_core/tests/test_item_selection.py | 8 +++--
- numpy/_core/tests/test_multiarray.py | 4 ++-
- numpy/_core/tests/test_nditer.py | 7 ++--
- numpy/_core/tests/test_regression.py | 43 +++++++++++-------------
- numpy/_core/tests/test_umath.py | 4 +--
- 9 files changed, 62 insertions(+), 40 deletions(-)
-
-diff --git a/numpy/_core/src/multiarray/temp_elide.c b/numpy/_core/src/multiarray/temp_elide.c
-index 662a2fa52b..9236476c42 100644
---- a/numpy/_core/src/multiarray/temp_elide.c
-+++ b/numpy/_core/src/multiarray/temp_elide.c
-@@ -109,6 +109,19 @@ find_addr(void * addresses[], npy_intp naddr, void * addr)
- return 0;
- }
-
-+static int
-+check_unique_temporary(PyObject *lhs)
-+{
-+#if PY_VERSION_HEX == 0x030E00A7 && !defined(PYPY_VERSION)
-+#error "NumPy is broken on CPython 3.14.0a7, please update to a newer version"
-+#elif PY_VERSION_HEX >= 0x030E00B1 && !defined(PYPY_VERSION)
-+ // see https://github.com/python/cpython/issues/133164
-+ return PyUnstable_Object_IsUniqueReferencedTemporary(lhs);
-+#else
-+ return 1;
-+#endif
-+}
-+
- static int
- check_callers(int * cannot)
- {
-@@ -295,7 +308,8 @@ can_elide_temp(PyObject *olhs, PyObject *orhs, int *cannot)
- !PyArray_CHKFLAGS(alhs, NPY_ARRAY_OWNDATA) ||
- !PyArray_ISWRITEABLE(alhs) ||
- PyArray_CHKFLAGS(alhs, NPY_ARRAY_WRITEBACKIFCOPY) ||
-- PyArray_NBYTES(alhs) < NPY_MIN_ELIDE_BYTES) {
-+ PyArray_NBYTES(alhs) < NPY_MIN_ELIDE_BYTES ||
-+ !check_unique_temporary(olhs)) {
- return 0;
- }
- if (PyArray_CheckExact(orhs) ||
-@@ -372,7 +386,8 @@ can_elide_temp_unary(PyArrayObject * m1)
- !PyArray_ISNUMBER(m1) ||
- !PyArray_CHKFLAGS(m1, NPY_ARRAY_OWNDATA) ||
- !PyArray_ISWRITEABLE(m1) ||
-- PyArray_NBYTES(m1) < NPY_MIN_ELIDE_BYTES) {
-+ PyArray_NBYTES(m1) < NPY_MIN_ELIDE_BYTES ||
-+ !check_unique_temporary((PyObject *)m1)) {
- return 0;
- }
- if (check_callers(&cannot)) {
-diff --git a/numpy/_core/tests/test_dlpack.py b/numpy/_core/tests/test_dlpack.py
-index 41dd724295..d273bd798e 100644
---- a/numpy/_core/tests/test_dlpack.py
-+++ b/numpy/_core/tests/test_dlpack.py
-@@ -22,9 +22,9 @@ class TestDLPack:
- def test_dunder_dlpack_refcount(self, max_version):
- x = np.arange(5)
- y = x.__dlpack__(max_version=max_version)
-- assert sys.getrefcount(x) == 3
-+ startcount = sys.getrefcount(x)
- del y
-- assert sys.getrefcount(x) == 2
-+ assert startcount - sys.getrefcount(x) == 1
-
- def test_dunder_dlpack_stream(self):
- x = np.arange(5)
-@@ -58,9 +58,9 @@ def test_strides_not_multiple_of_itemsize(self):
- def test_from_dlpack_refcount(self, arr):
- arr = arr.copy()
- y = np.from_dlpack(arr)
-- assert sys.getrefcount(arr) == 3
-+ startcount = sys.getrefcount(arr)
- del y
-- assert sys.getrefcount(arr) == 2
-+ assert startcount - sys.getrefcount(arr) == 1
-
- @pytest.mark.parametrize("dtype", [
- np.bool,
-diff --git a/numpy/_core/tests/test_dtype.py b/numpy/_core/tests/test_dtype.py
-index deeca5171c..759eefeb2a 100644
---- a/numpy/_core/tests/test_dtype.py
-+++ b/numpy/_core/tests/test_dtype.py
-@@ -1901,9 +1901,10 @@ class mytype:
- if HAS_REFCOUNT:
- # Create an array and test that memory gets cleaned up (gh-25949)
- o = object()
-+ startcount = sys.getrefcount(o)
- a = np.array([o], dtype=dt)
- del a
-- assert sys.getrefcount(o) == 2
-+ assert sys.getrefcount(o) == startcount
-
- def test_custom_structured_dtype_errors(self):
- class mytype:
-diff --git a/numpy/_core/tests/test_indexing.py b/numpy/_core/tests/test_indexing.py
-index f393c401cd..bb757cdf7e 100644
---- a/numpy/_core/tests/test_indexing.py
-+++ b/numpy/_core/tests/test_indexing.py
-@@ -1174,6 +1174,8 @@ def _compare_index_result(self, arr, index, mimic_get, no_copy):
- """Compare mimicked result to indexing result.
- """
- arr = arr.copy()
-+ if HAS_REFCOUNT:
-+ startcount = sys.getrefcount(arr)
- indexed_arr = arr[index]
- assert_array_equal(indexed_arr, mimic_get)
- # Check if we got a view, unless its a 0-sized or 0-d array.
-@@ -1184,9 +1186,9 @@ def _compare_index_result(self, arr, index, mimic_get, no_copy):
- if HAS_REFCOUNT:
- if no_copy:
- # refcount increases by one:
-- assert_equal(sys.getrefcount(arr), 3)
-+ assert_equal(sys.getrefcount(arr), startcount + 1)
- else:
-- assert_equal(sys.getrefcount(arr), 2)
-+ assert_equal(sys.getrefcount(arr), startcount)
-
- # Test non-broadcast setitem:
- b = arr.copy()
-diff --git a/numpy/_core/tests/test_item_selection.py b/numpy/_core/tests/test_item_selection.py
-index 5660ef583e..839127ecdb 100644
---- a/numpy/_core/tests/test_item_selection.py
-+++ b/numpy/_core/tests/test_item_selection.py
-@@ -50,19 +50,23 @@ def test_simple(self):
-
- def test_refcounting(self):
- objects = [object() for i in range(10)]
-+ if HAS_REFCOUNT:
-+ orig_rcs = [sys.getrefcount(o) for o in objects]
- for mode in ('raise', 'clip', 'wrap'):
- a = np.array(objects)
- b = np.array([2, 2, 4, 5, 3, 5])
- a.take(b, out=a[:6], mode=mode)
- del a
- if HAS_REFCOUNT:
-- assert_(all(sys.getrefcount(o) == 3 for o in objects))
-+ assert_(all(sys.getrefcount(o) == rc + 1
-+ for o, rc in zip(objects, orig_rcs)))
- # not contiguous, example:
- a = np.array(objects * 2)[::2]
- a.take(b, out=a[:6], mode=mode)
- del a
- if HAS_REFCOUNT:
-- assert_(all(sys.getrefcount(o) == 3 for o in objects))
-+ assert_(all(sys.getrefcount(o) == rc + 1
-+ for o, rc in zip(objects, orig_rcs)))
-
- def test_unicode_mode(self):
- d = np.arange(10)
-diff --git a/numpy/_core/tests/test_multiarray.py b/numpy/_core/tests/test_multiarray.py
-index 87508732d8..3f26578c85 100644
---- a/numpy/_core/tests/test_multiarray.py
-+++ b/numpy/_core/tests/test_multiarray.py
-@@ -6779,10 +6779,12 @@ def test_dot_3args(self):
- v = np.random.random_sample((16, 32))
-
- r = np.empty((1024, 32))
-+ if HAS_REFCOUNT:
-+ orig_refcount = sys.getrefcount(r)
- for i in range(12):
- dot(f, v, r)
- if HAS_REFCOUNT:
-- assert_equal(sys.getrefcount(r), 2)
-+ assert_equal(sys.getrefcount(r), orig_refcount)
- r2 = dot(f, v, out=None)
- assert_array_equal(r2, r)
- assert_(r is dot(f, v, out=r))
-diff --git a/numpy/_core/tests/test_nditer.py b/numpy/_core/tests/test_nditer.py
-index b0d911f24f..d6a9e42ae3 100644
---- a/numpy/_core/tests/test_nditer.py
-+++ b/numpy/_core/tests/test_nditer.py
-@@ -1126,9 +1126,10 @@ def test_iter_object_arrays_conversions():
- rc = sys.getrefcount(ob)
- for x in i:
- x[...] += 1
-- if HAS_REFCOUNT:
-- assert_(sys.getrefcount(ob) == rc-1)
-- assert_equal(a, np.arange(6)+98172489)
-+ if HAS_REFCOUNT:
-+ newrc = sys.getrefcount(ob)
-+ assert_(newrc == rc - 1)
-+ assert_equal(a, np.arange(6) + 98172489)
-
- def test_iter_common_dtype():
- # Check that the iterator finds a common data type correctly
-diff --git a/numpy/_core/tests/test_regression.py b/numpy/_core/tests/test_regression.py
-index 851ce324d7..eeb640659e 100644
---- a/numpy/_core/tests/test_regression.py
-+++ b/numpy/_core/tests/test_regression.py
-@@ -1586,29 +1586,26 @@ def test_take_refcount(self):
- def test_fromfile_tofile_seeks(self):
- # On Python 3, tofile/fromfile used to get (#1610) the Python
- # file handle out of sync
-- f0 = tempfile.NamedTemporaryFile()
-- f = f0.file
-- f.write(np.arange(255, dtype='u1').tobytes())
--
-- f.seek(20)
-- ret = np.fromfile(f, count=4, dtype='u1')
-- assert_equal(ret, np.array([20, 21, 22, 23], dtype='u1'))
-- assert_equal(f.tell(), 24)
--
-- f.seek(40)
-- np.array([1, 2, 3], dtype='u1').tofile(f)
-- assert_equal(f.tell(), 43)
--
-- f.seek(40)
-- data = f.read(3)
-- assert_equal(data, b"\x01\x02\x03")
--
-- f.seek(80)
-- f.read(4)
-- data = np.fromfile(f, dtype='u1', count=4)
-- assert_equal(data, np.array([84, 85, 86, 87], dtype='u1'))
--
-- f.close()
-+ with tempfile.NamedTemporaryFile() as f:
-+ f.write(np.arange(255, dtype='u1').tobytes())
-+
-+ f.seek(20)
-+ ret = np.fromfile(f, count=4, dtype='u1')
-+ assert_equal(ret, np.array([20, 21, 22, 23], dtype='u1'))
-+ assert_equal(f.tell(), 24)
-+
-+ f.seek(40)
-+ np.array([1, 2, 3], dtype='u1').tofile(f)
-+ assert_equal(f.tell(), 43)
-+
-+ f.seek(40)
-+ data = f.read(3)
-+ assert_equal(data, b"\x01\x02\x03")
-+
-+ f.seek(80)
-+ f.read(4)
-+ data = np.fromfile(f, dtype='u1', count=4)
-+ assert_equal(data, np.array([84, 85, 86, 87], dtype='u1'))
-
- def test_complex_scalar_warning(self):
- for tp in [np.csingle, np.cdouble, np.clongdouble]:
-diff --git a/numpy/_core/tests/test_umath.py b/numpy/_core/tests/test_umath.py
-index 4d56c785d5..d432e33412 100644
---- a/numpy/_core/tests/test_umath.py
-+++ b/numpy/_core/tests/test_umath.py
-@@ -269,9 +269,9 @@ class ArrSubclass(np.ndarray):
- pass
-
- arr = np.arange(10).view(ArrSubclass)
--
-+ orig_refcount = sys.getrefcount(arr)
- arr *= 1
-- assert sys.getrefcount(arr) == 2
-+ assert sys.getrefcount(arr) == orig_refcount
-
-
- class TestComparisons:
diff --git a/dev-python/numpy/files/numpy-2.2.6-gcc16.patch b/dev-python/numpy/files/numpy-2.2.6-gcc16.patch
deleted file mode 100644
index a297551ded05..000000000000
--- a/dev-python/numpy/files/numpy-2.2.6-gcc16.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-https://github.com/google/highway/issues/2577
-https://github.com/google/highway/commit/7cde540171a1718a9bdfa8f896d70e47eb0785d5
---- a/numpy/_core/src/highway/hwy/ops/set_macros-inl.h
-+++ b/numpy/_core/src/highway/hwy/ops/set_macros-inl.h
-@@ -141,7 +141,8 @@
- #define HWY_TARGET_STR_AVX2 \
- HWY_TARGET_STR_SSE4 ",avx,avx2" HWY_TARGET_STR_BMI2_FMA HWY_TARGET_STR_F16C
-
--#if HWY_COMPILER_GCC_ACTUAL >= 1400 || HWY_COMPILER_CLANG >= 1800
-+#if (HWY_COMPILER_GCC_ACTUAL >= 1400 && HWY_COMPILER_GCC_ACTUAL < 1600) || \
-+ HWY_COMPILER_CLANG >= 1800
- #define HWY_TARGET_STR_AVX3_VL512 ",evex512"
- #else
- #define HWY_TARGET_STR_AVX3_VL512
diff --git a/dev-python/numpy/numpy-2.2.6.ebuild b/dev-python/numpy/numpy-2.5.4.ebuild
index ab989c443b99..d22a019b6c54 100644
--- a/dev-python/numpy/numpy-2.2.6.ebuild
+++ b/dev-python/numpy/numpy-2.5.4.ebuild
@@ -1,10 +1,11 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_EXT=1
DISTUTILS_USE_PEP517=meson-python
+PYPI_VERIFY_REPO=https://github.com/numpy/numpy-release
PYTHON_COMPAT=( python3_{13..14} )
PYTHON_REQ_USE="threads(+)"
FORTRAN_NEEDED=lapack
@@ -18,23 +19,37 @@ HOMEPAGE="
https://pypi.org/project/numpy/
"
-LICENSE="BSD"
+LICENSE="BSD 0BSD MIT ZLIB CC0-1.0"
SLOT="0/2"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
+if [[ ${PV} != *_rc* ]]; then
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+fi
# +lapack because the internal fallbacks are pretty slow. Building without blas
# is barely supported anyway, see bug #914358.
-IUSE="big-endian +lapack"
+IUSE="big-endian +cpudetection index64 +lapack"
+
+# upstream-flag[:gentoo-flag]
+ARM_FLAGS=( neon{,-fp16} vfpv4 asimd{,hp,dp,fhm} sve )
+PPC_FLAGS=( vsx vsx2 vsx3 vsx4 )
+X86_FLAGS=(
+ avx2 avx512{bw,dq,vl} avx512_{bf16,bitalg,fp16,vbmi2} sse4_2
+)
+IUSE+="
+ ${ARM_FLAGS[*]/#/cpu_flags_arm_}
+ ${PPC_FLAGS[*]/#/cpu_flags_ppc_}
+ ${X86_FLAGS[*]/#/cpu_flags_x86_}
+"
RDEPEND="
lapack? (
- >=virtual/cblas-3.8
- >=virtual/lapack-3.8
+ >=virtual/cblas-3.8[index64(-)?]
+ >=virtual/lapack-3.8[index64(-)?]
)
"
BDEPEND="
${RDEPEND}
- >=dev-build/meson-1.1.0
- >=dev-python/cython-3.0.6[${PYTHON_USEDEP}]
+ >=dev-build/meson-1.5.2
+ >=dev-python/cython-3.1.0[${PYTHON_USEDEP}]
lapack? (
virtual/pkgconfig
)
@@ -43,9 +58,6 @@ BDEPEND="
>=dev-python/cffi-1.14.0[${PYTHON_USEDEP}]
' 'python*')
dev-python/charset-normalizer[${PYTHON_USEDEP}]
- >=dev-python/hypothesis-5.8.0[${PYTHON_USEDEP}]
- dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
- dev-python/pytest-timeout[${PYTHON_USEDEP}]
>=dev-python/pytz-2019.3[${PYTHON_USEDEP}]
)
"
@@ -55,52 +67,151 @@ QA_CONFIG_IMPL_DECL_SKIP=(
vrndq_f32
)
+EPYTEST_PLUGINS=( hypothesis pytest-timeout )
EPYTEST_XDIST=1
distutils_enable_tests pytest
-python_prepare_all() {
- local PATCHES=(
- # https://github.com/numpy/numpy/pull/28748
- # https://github.com/numpy/numpy/pull/28928
- "${FILESDIR}/${PN}-2.2.5-py314.patch"
- # https://github.com/google/highway/issues/2577
- # github.com/google/highway/commit/7cde540171a1718a9bdfa8f896d70e47eb0785d5
- "${FILESDIR}/${PN}-2.2.6-gcc16.patch"
- )
-
- # bug #922457
- filter-lto
- # https://github.com/numpy/numpy/issues/25004
- append-flags -fno-strict-aliasing
-
- distutils-r1_python_prepare_all
+has_all_x86() {
+ local flag
+ for flag; do
+ if ! use "cpu_flags_x86_${flag}"; then
+ return 1
+ fi
+ done
+ return 0
}
python_configure_all() {
+ local cpu_baseline=()
+ local map flag
+ case ${ARCH} in
+ arm)
+ # every flag implies the previous one
+ for map in NEON:neon NEON_FP16:neon-fp16 NEON_VFPV4:vfpv4; do
+ if ! use "cpu_flags_arm_${map#*:}"; then
+ break
+ fi
+ cpu_baseline+=( "${map%:*}" )
+ done
+ ;&
+ arm64)
+ # on 32-bit ARM, ASIMD implies all NEON* flags
+ # on 64-bit ARM, they are all linked together
+ if use arm64 ||
+ [[ ${cpu_baseline[@]} && ${cpu_baseline[-1]} == NEON_VFPV4 ]]
+ then
+ cpu_baseline+=( $(usev cpu_flags_arm_asimd ASIMD) )
+ fi
+
+ # these two imply ASIMD
+ if [[ ${cpu_baseline[@]} && ${cpu_baseline[-1]} == ASIMD ]]; then
+ for flag in dp hp; do
+ cpu_baseline+=(
+ $(usev "cpu_flags_arm_asimd${flag}" "ASIMD${flag^^}")
+ )
+ done
+ fi
+
+ # these two imply ASIMDHP
+ if [[ ${cpu_baseline[@]} && ${cpu_baseline[-1]} == ASIMDHP ]]; then
+ for flag in asimdfhm sve; do
+ cpu_baseline+=(
+ $(usev "cpu_flags_arm_${flag}" "${flag^^}")
+ )
+ done
+ fi
+ ;;
+ ppc64)
+ # every flag implies the previous one
+ for flag in '' 2 3 4; do
+ if ! use "cpu_flags_ppc_vsx${flag}"; then
+ break
+ fi
+ cpu_baseline+=( "VSX${flag}" )
+ done
+ ;;
+ amd64|x86)
+ # upstream combines multiple instructions into sets
+ local mapping=(
+ # for these, we just check the newest instruction set,
+ # since all earlier instruction sets imply it
+ "X86_V2=sse4_2"
+ "X86_V3=avx2"
+ # from here on, we check all features that were added
+ # in the lowest CPU supporting them all
+ # https://en.wikipedia.org/wiki/AVX-512
+ "X86_V4=avx512bw avx512dq avx512vl"
+ "AVX512_ICL=avx512_vbmi2 avx512_bitalg"
+ "AVX512_SPR=avx512_bf16 avx512_fp16"
+ )
+
+ local m
+ for m in "${mapping[@]}"; do
+ local feature=${m%=*}
+ local sets=${m#*=}
+
+ if has_all_x86 ${sets}; then
+ einfo "${feature} enabled: all of ${sets} enabled"
+ cpu_baseline+=( "${feature}" )
+ else
+ einfo "${feature} disabled: not all of ${sets} enabled"
+ break
+ fi
+ done
+ ;;
+ *)
+ cpu_baseline=MIN
+ ;;
+ esac
+
DISTUTILS_ARGS=(
-Dallow-noblas=$(usex !lapack true false)
- -Dblas=$(usev lapack cblas)
- -Dlapack=$(usev lapack lapack)
- # TODO: cpu-* options
+ -Duse-ilp64=$(usex index64 true false)
+ -Dblas=$(usev lapack $(usex index64 cblas64 cblas))
+ -Dlapack=$(usev lapack $(usex index64 lapack64 lapack))
+ -Dcpu-baseline="${cpu_baseline[*]}"
+ -Dcpu-baseline-detect=disabled
+ -Dcpu-dispatch="$(usev cpudetection MAX)"
)
+
+ # bug #922457
+ filter-lto
+ # https://github.com/numpy/numpy/issues/25004
+ append-flags -fno-strict-aliasing
}
python_test() {
+ # We run tests in parallel, so avoid having n^2 threads in lapack
+ # tests.
+ local -x BLIS_NUM_THREADS=1
+ local -x MKL_NUM_THREADS=1
+ local -x OMP_NUM_THREADS=1
+ local -x OPENBLAS_NUM_THREADS=1
+
+ # don't run tests that require more than 2 GiB of RAM (per process)
+ local -x NPY_AVAILABLE_MEM="2 GiB"
+
local EPYTEST_DESELECT=(
# Very disk-and-memory-hungry
- numpy/lib/tests/test_io.py::TestSaveTxt::test_large_zip
numpy/lib/tests/test_io.py::TestSavezLoad::test_closing_fid
numpy/lib/tests/test_io.py::TestSavezLoad::test_closing_zipfile_after_load
# Precision problems
numpy/_core/tests/test_umath_accuracy.py::TestAccuracy::test_validate_transcendentals
- # Runs the whole test suite recursively, that's just crazy
- numpy/core/tests/test_mem_policy.py::test_new_policy
-
numpy/typing/tests/test_typing.py
- # Uses huge amount of memory
- numpy/core/tests/test_mem_overlap.py
+
+ # Flaky, reruns don't help
+ numpy/f2py/tests/test_crackfortran.py
+ numpy/f2py/tests/test_data.py::TestData{,F77}::test_crackedlines
+ numpy/f2py/tests/test_f2py2e.py::test_gen_pyf
+ numpy/f2py/tests/test_f2py2e.py::test_gh22819_cli
+
+ # Broken by new setuptools
+ numpy/distutils/tests/test_fcompiler.py
+ numpy/distutils/tests/test_fcompiler_gnu.py
+ numpy/distutils/tests/test_fcompiler_intel.py
+ numpy/distutils/tests/test_fcompiler_nagfor.py
)
if [[ $(uname -m) == armv8l ]]; then
@@ -194,9 +305,22 @@ python_test() {
)
fi
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ case ${EPYTHON} in
+ pypy3.11)
+ EPYTEST_DESELECT+=(
+ numpy/_core/tests/test_regression.py::TestRegression::test_buffer_hashlib
+ numpy/random/tests/test_generator_mt19937.py::TestIntegers::test_repeatability
+ numpy/random/tests/test_generator_mt19937.py::TestRandomDist::test_choice_large_sample
+ numpy/random/tests/test_generator_mt19937.py::test_jumped
+ numpy/random/tests/test_random.py::TestRandint::test_repeatability
+ numpy/random/tests/test_randomstate.py::TestRandint::test_repeatability
+ numpy/random/tests/test_randomstate.py::test_integer_repeat
+ )
+ ;;
+ esac
+
cd "${BUILD_DIR}/install$(python_get_sitedir)" || die
- epytest -p rerunfailures --reruns=5
+ epytest
}
python_install_all() {
diff --git a/dev-python/pillow/Manifest b/dev-python/pillow/Manifest
index 9526b4cf8e4a..da0e6de2a325 100644
--- a/dev-python/pillow/Manifest
+++ b/dev-python/pillow/Manifest
@@ -1,3 +1,2 @@
-DIST pillow-12.2.0.gh.tar.gz 47057046 BLAKE2B 448a928cdaef49c21db4b0b61e2045610ff6bf6c9c52c7ab541d531205149b8a60aa02b1e286c7dc15dac98fa23a07a4c685f524df6e7592013b0914e65a8cc8 SHA512 cd66b5b033f82127934624c474aed55c014d10d5e7cc9455ea6a3470d1b7e9f0b94ad2c0a5f1559e01ce003fc179b01fee89aa1b51d78dff3f04927d8252a41e
DIST pillow-12.3.0.gh.tar.gz 47120631 BLAKE2B 52b795378340207c692c716a65f1c6687415096fc9fb599395dbeef2f55ee8cc6a8be1845f7c4ec01e1962ade62b30a445eacf1d2f57355a67052f54ce3e2586 SHA512 41453e23021fdb08ed9bf8b67a912f8217010840f99665e49465088e76c608fca78c2ca4dda3de8728ba9f8002c7e98231135669990d88758c5944afa0a13f64
DIST pillow-test-images-7077675d2cda485d63de4aefe0fefbf6f655c5a0.gh.tar.gz 57430276 BLAKE2B 6e8dcde60832004f5a0ea0e14024fdcd0b08cf0e225f27e39b7c2058582d6d5efe7fcaccb5bd28754affa6fe4125735fb4beeaa2075e6aceea0a998ebc0747fe SHA512 795f015c9b73a8c941fb5cd880b1ab36b24d38612db53367ab0e6c05dd1cdbfd47034decb7e36d7de940eeea1582d644ca7bee3b131577578692569c2c60c32b
diff --git a/dev-python/pillow/pillow-12.2.0-r1.ebuild b/dev-python/pillow/pillow-12.2.0-r1.ebuild
deleted file mode 100644
index 94156fc8087b..000000000000
--- a/dev-python/pillow/pillow-12.2.0-r1.ebuild
+++ /dev/null
@@ -1,184 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-# setuptools wrapper
-DISTUTILS_USE_PEP517=standalone
-PYTHON_COMPAT=( python3_{13..14} )
-PYTHON_REQ_USE='tk?,threads(+)'
-
-inherit distutils-r1 multiprocessing toolchain-funcs virtualx
-
-MY_PN=Pillow
-MY_P=${MY_PN}-${PV}
-
-# upstream always fetches from main
-TEST_IMAGE_COMMIT="7077675d2cda485d63de4aefe0fefbf6f655c5a0"
-
-DESCRIPTION="Python Imaging Library (fork)"
-HOMEPAGE="
- https://python-pillow.github.io/
- https://github.com/python-pillow/Pillow/
- https://pypi.org/project/pillow/
-"
-SRC_URI="
- https://github.com/python-pillow/Pillow/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
- test? (
- https://github.com/python-pillow/test-images/archive/${TEST_IMAGE_COMMIT}.tar.gz
- -> pillow-test-images-${TEST_IMAGE_COMMIT}.gh.tar.gz
- )
-"
-S=${WORKDIR}/${MY_P}
-
-LICENSE="HPND"
-SLOT="0"
-KEYWORDS="~alpha amd64 ~arm arm64 ppc ~ppc64 ~riscv x86"
-IUSE="avif examples imagequant +jpeg jpeg2k lcms raqm test tiff tk truetype webp xcb zlib"
-REQUIRED_USE="
- raqm? ( truetype )
- test? ( jpeg jpeg2k lcms tiff truetype )
-"
-RESTRICT="!test? ( test )"
-
-DEPEND="
- avif? ( media-libs/libavif:= )
- imagequant? ( media-gfx/libimagequant:= )
- jpeg? ( media-libs/libjpeg-turbo:= )
- jpeg2k? ( media-libs/openjpeg:2= )
- lcms? ( media-libs/lcms:2= )
- tiff? ( media-libs/tiff:=[jpeg,zlib] )
- truetype? (
- media-libs/freetype:2
- media-libs/harfbuzz:=
- raqm? ( media-libs/raqm:= )
- )
- webp? ( media-libs/libwebp:= )
- xcb? ( x11-libs/libxcb )
- zlib? ( virtual/zlib:= )
-"
-RDEPEND="
- ${DEPEND}
- dev-python/olefile[${PYTHON_USEDEP}]
-"
-BDEPEND="
- dev-python/pybind11[${PYTHON_USEDEP}]
- >=dev-python/setuptools-77[${PYTHON_USEDEP}]
- dev-python/wheel[${PYTHON_USEDEP}]
- virtual/pkgconfig
- test? (
- dev-python/defusedxml[${PYTHON_USEDEP}]
- dev-python/packaging[${PYTHON_USEDEP}]
- || (
- media-gfx/imagemagick[png]
- media-gfx/graphicsmagick[png]
- )
- )
-"
-
-EPYTEST_PLUGINS=( pytest-timeout )
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-src_prepare() {
- local PATCHES=(
- # https://github.com/python-pillow/pillow/pull/7634
- "${FILESDIR}/${PN}-10.2.0-cross.patch"
- )
-
- distutils-r1_src_prepare
-
- if use test; then
- mv "${WORKDIR}/test-images-${TEST_IMAGE_COMMIT}"/* \
- Tests/images || die
- fi
-
- # just in case
- rm -r src/thirdparty/{fribidi-shim,raqm} || die
-}
-
-usepil() {
- usex "${1}" enable disable
-}
-
-python_configure_all() {
- cat >> setup.cfg <<-EOF || die
- [build_ext]
- debug = True
- disable_platform_guessing = True
- $(usepil avif)_avif = True
- $(usepil imagequant)_imagequant = True
- $(usepil jpeg)_jpeg = True
- $(usepil jpeg2k)_jpeg2000 = True
- $(usepil lcms)_lcms = True
- $(usepil raqm)_raqm = True
- $(usepil tiff)_tiff = True
- $(usepil truetype)_freetype = True
- $(usepil webp)_webp = True
- $(usepil xcb)_xcb = True
- $(usepil zlib)_zlib = True
- EOF
-
- tc-export PKG_CONFIG
-
- export MAX_CONCURRENCY=$(makeopts_jobs)
- # For 32-bit, just cap at 4 jobs to avoid pybind11 allocating
- # like crazy (bug #970414).
- if [[ $(tc-get-ptr-size) == 4 ]]; then
- MAX_CONCURRENCY=$(( MAX_CONCURRENCY < 4 ? MAX_CONCURRENCY : 4 ))
- fi
-}
-
-src_test() {
- virtx distutils-r1_src_test
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # TODO (is clipboard unreliable in Xvfb?)
- Tests/test_imagegrab.py::TestImageGrab::test_grabclipboard
- # requires xz-utils[extra-filters]?
- Tests/test_file_libtiff.py::TestFileLibTiff::test_lzma
- )
-
- case ${EPYTHON} in
- pypy3.11)
- EPYTEST_DESELECT+=(
- Tests/test_imagefile.py::TestImageFile::test_parser
- Tests/test_file_pdf.py::test_pdf_append_to_bytesio
- )
- ;;
- esac
-
- case ${ARCH} in
- ppc)
- EPYTEST_DESELECT+=(
- # https://github.com/python-pillow/Pillow/issues/7008
- # (we've reverted the upstream patch because it was worse
- # than the original issue)
- Tests/test_file_libtiff.py::TestFileLibTiff::test_exif_ifd
- )
- ;;
- esac
-
- "${EPYTHON}" selftest.py --installed || die "selftest failed with ${EPYTHON}"
- # leak tests are fragile and broken under xdist
- # nonfatal implied by xvfb
- nonfatal epytest -k "not leak" || die "Tests failed with ${EPYTHON}"
-}
-
-python_install() {
- python_doheader src/libImaging/*.h
- distutils-r1_python_install
-}
-
-python_install_all() {
- if use examples ; then
- docinto example
- dodoc docs/example/*
- docompress -x /usr/share/doc/${PF}/example
- fi
- distutils-r1_python_install_all
-}
diff --git a/dev-python/pillow/pillow-12.2.0.ebuild b/dev-python/pillow/pillow-12.2.0.ebuild
deleted file mode 100644
index 5cf72382f102..000000000000
--- a/dev-python/pillow/pillow-12.2.0.ebuild
+++ /dev/null
@@ -1,176 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-# setuptools wrapper
-DISTUTILS_USE_PEP517=standalone
-PYTHON_COMPAT=( python3_{13..14} )
-PYTHON_REQ_USE='tk?,threads(+)'
-
-inherit distutils-r1 multiprocessing toolchain-funcs virtualx
-
-MY_PN=Pillow
-MY_P=${MY_PN}-${PV}
-
-# upstream always fetches from main
-TEST_IMAGE_COMMIT="7077675d2cda485d63de4aefe0fefbf6f655c5a0"
-
-DESCRIPTION="Python Imaging Library (fork)"
-HOMEPAGE="
- https://python-pillow.github.io/
- https://github.com/python-pillow/Pillow/
- https://pypi.org/project/pillow/
-"
-SRC_URI="
- https://github.com/python-pillow/Pillow/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
- test? (
- https://github.com/python-pillow/test-images/archive/${TEST_IMAGE_COMMIT}.tar.gz
- -> pillow-test-images-${TEST_IMAGE_COMMIT}.gh.tar.gz
- )
-"
-S=${WORKDIR}/${MY_P}
-
-LICENSE="HPND"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
-IUSE="avif examples imagequant +jpeg jpeg2k lcms test tiff tk truetype webp xcb zlib"
-REQUIRED_USE="test? ( jpeg jpeg2k lcms tiff truetype )"
-RESTRICT="!test? ( test )"
-
-DEPEND="
- avif? ( media-libs/libavif:= )
- imagequant? ( media-gfx/libimagequant:= )
- jpeg? ( media-libs/libjpeg-turbo:= )
- jpeg2k? ( media-libs/openjpeg:2= )
- lcms? ( media-libs/lcms:2= )
- tiff? ( media-libs/tiff:=[jpeg,zlib] )
- truetype? (
- media-libs/freetype:2=
- media-libs/harfbuzz:=
- )
- webp? ( media-libs/libwebp:= )
- xcb? ( x11-libs/libxcb )
- zlib? ( virtual/zlib:= )
-"
-RDEPEND="
- ${DEPEND}
- dev-python/olefile[${PYTHON_USEDEP}]
-"
-BDEPEND="
- dev-python/pybind11[${PYTHON_USEDEP}]
- >=dev-python/setuptools-77[${PYTHON_USEDEP}]
- dev-python/wheel[${PYTHON_USEDEP}]
- virtual/pkgconfig
- test? (
- dev-python/defusedxml[${PYTHON_USEDEP}]
- dev-python/packaging[${PYTHON_USEDEP}]
- || (
- media-gfx/imagemagick[png]
- media-gfx/graphicsmagick[png]
- )
- )
-"
-
-EPYTEST_PLUGINS=( pytest-timeout )
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-src_prepare() {
- local PATCHES=(
- # https://github.com/python-pillow/pillow/pull/7634
- "${FILESDIR}/${PN}-10.2.0-cross.patch"
- )
-
- distutils-r1_src_prepare
-
- if use test; then
- mv "${WORKDIR}/test-images-${TEST_IMAGE_COMMIT}"/* \
- Tests/images || die
- fi
-}
-
-usepil() {
- usex "${1}" enable disable
-}
-
-python_configure_all() {
- cat >> setup.cfg <<-EOF || die
- [build_ext]
- debug = True
- disable_platform_guessing = True
- $(usepil avif)_avif = True
- $(usepil truetype)_freetype = True
- $(usepil jpeg)_jpeg = True
- $(usepil jpeg2k)_jpeg2000 = True
- $(usepil lcms)_lcms = True
- $(usepil tiff)_tiff = True
- $(usepil imagequant)_imagequant = True
- $(usepil webp)_webp = True
- $(usepil xcb)_xcb = True
- $(usepil zlib)_zlib = True
- EOF
- if use truetype; then
- # these dependencies are implicitly disabled by USE=-truetype
- # and we can't pass both disable_* and vendor_*
- # https://bugs.gentoo.org/935124
- cat >> setup.cfg <<-EOF || die
- vendor_raqm = False
- vendor_fribidi = False
- EOF
- fi
-
- tc-export PKG_CONFIG
-
- export MAX_CONCURRENCY=$(makeopts_jobs)
- # For 32-bit, just cap at 4 jobs to avoid pybind11 allocating
- # like crazy (bug #970414).
- if [[ $(tc-get-ptr-size) == 4 ]]; then
- MAX_CONCURRENCY=$(( MAX_CONCURRENCY < 4 ? MAX_CONCURRENCY : 4 ))
- fi
-}
-
-src_test() {
- virtx distutils-r1_src_test
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # TODO (is clipboard unreliable in Xvfb?)
- Tests/test_imagegrab.py::TestImageGrab::test_grabclipboard
- # requires xz-utils[extra-filters]?
- Tests/test_file_libtiff.py::TestFileLibTiff::test_lzma
- )
-
- case ${ARCH} in
- ppc)
- EPYTEST_DESELECT+=(
- # https://github.com/python-pillow/Pillow/issues/7008
- # (we've reverted the upstream patch because it was worse
- # than the original issue)
- Tests/test_file_libtiff.py::TestFileLibTiff::test_exif_ifd
- )
- ;;
- esac
-
- "${EPYTHON}" selftest.py --installed || die "selftest failed with ${EPYTHON}"
- # leak tests are fragile and broken under xdist
- # nonfatal implied by xvfb
- nonfatal epytest -k "not leak" || die "Tests failed with ${EPYTHON}"
-}
-
-python_install() {
- python_doheader src/libImaging/*.h
- distutils-r1_python_install
-}
-
-python_install_all() {
- if use examples ; then
- docinto example
- dodoc docs/example/*
- docompress -x /usr/share/doc/${PF}/example
- fi
- distutils-r1_python_install_all
-}
diff --git a/dev-python/pyglet/Manifest b/dev-python/pyglet/Manifest
index 7a78076d9aa9..3c856d533553 100644
--- a/dev-python/pyglet/Manifest
+++ b/dev-python/pyglet/Manifest
@@ -1,2 +1 @@
-DIST pyglet-2.1.15.tar.gz 6597005 BLAKE2B ef975a397aecc3e432a05bb448d9f498b026914b4c3bc987859f094bb955685b6c29cfc3de303ef8dbc167537b18efa86812300b3cf7458ed3346f66e19760ab SHA512 37187e7383ed69e8e95884a18c09cd292501f9fe8dce1782f9a99915a2d8fdbe810682362c209720c13b01b578633a548d54a3c93167e68d1cf6b6421b14b1fc
DIST pyglet-2.1.16.tar.gz 6598246 BLAKE2B a6613e1d2c69d6be44ea4f8e301be8b9366eb7fbe4c3097b52c2ab868ad799bd1c0e862325edf8c180f69237da80de74f965d82b69d3d12abe8e8a0de25f020d SHA512 2e3e216d06ffd8eb2c5a12c9b0c5d78fac50ced7cd58fc84e73f0cd65d148125fd990c0a71d9a890657e9554660b5c960d7a3e25252bf44f7d395334d9e7d8e1
diff --git a/dev-python/pyglet/pyglet-2.1.15.ebuild b/dev-python/pyglet/pyglet-2.1.15.ebuild
deleted file mode 100644
index f0026eeccee2..000000000000
--- a/dev-python/pyglet/pyglet-2.1.15.ebuild
+++ /dev/null
@@ -1,80 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=flit-core
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 pypi virtualx xdg-utils
-
-MY_P=${P/_/.}
-DESCRIPTION="Cross-platform windowing and multimedia library for Python"
-HOMEPAGE="
- https://pyglet.org/
- https://github.com/pyglet/pyglet/
- https://pypi.org/project/pyglet/
-"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~loong ~ppc64 ~riscv x86"
-IUSE="examples image +sound"
-
-RDEPEND="
- virtual/glu
- virtual/opengl
- image? (
- || (
- dev-python/pillow[${PYTHON_USEDEP}]
- x11-libs/gtk+:2
- )
- )
- sound? (
- || (
- media-libs/libpulse
- media-libs/openal
- )
- )
-"
-# ffmpeg? ( media-libs/avbin-bin )
-BDEPEND="
- test? (
- dev-python/pillow[${PYTHON_USEDEP}]
- media-libs/fontconfig
- x11-base/xorg-server[-minimal]
- )
-"
-
-EPYTEST_PLUGINS=()
-distutils_enable_tests pytest
-
-src_test() {
- virtx distutils-r1_src_test
-}
-
-python_test() {
- xdg_environment_reset
-
- local EPYTEST_DESELECT=(
- # lacking device/server permissions
- tests/unit/media/test_listener.py::test_openal_listener
- tests/unit/media/test_listener.py::test_pulse_listener
- # fragile to system load
- tests/unit/media/test_player.py::PlayerTestCase::test_pause_resume
- tests/unit/test_clock_freq.py::test_elapsed_time_between_tick
- )
-
- # Specify path to avoid running interactive tests
- # We could add in integration tests, but they're slow
- nonfatal epytest tests/unit || die "Tests failed with ${EPYTHON}"
-}
-
-python_install_all() {
- if use examples; then
- dodoc -r examples
- docompress -x /usr/share/doc/${PF}/examples
- fi
-
- distutils-r1_python_install_all
-}
diff --git a/dev-python/pykka/Manifest b/dev-python/pykka/Manifest
index 50db5cd40627..12dfec5dea40 100644
--- a/dev-python/pykka/Manifest
+++ b/dev-python/pykka/Manifest
@@ -1 +1,2 @@
DIST pykka-4.4.2.gh.tar.gz 50174 BLAKE2B b484218bb2da9a90a93d88f7c5ab3cb2dd20183cf300423627cbcc022bd6f4b29bdf71f1745416243d10db02837df06f73e7fb70487b7aabcb8a59a5bcec554c SHA512 8c704ed2770e61373f5455f77d7eb03c875c31304dd3404a01c54263d3e61c53e21c55b4c9242cb5fd5afd1e41e4486ddea775789abb79590446269fa57212de
+DIST pykka-4.5.0.gh.tar.gz 53200 BLAKE2B 19b3029321e8512b05d49e2573cb088a1fedd2648cbf166b64ca275cb50ac901d7c9f27e9c6b840be2f0603735a9c4922c7bb296b4495aeeae4cb864b3712174 SHA512 4e03e68f306898b577671a10917b3268675822b40d9f5a876b60a71a003ca9d3fdbb4a2448b180a5313636d6246a9636618de06a02aa572e959ef215a4ec1dbf
diff --git a/dev-python/pykka/pykka-4.5.0.ebuild b/dev-python/pykka/pykka-4.5.0.ebuild
new file mode 100644
index 000000000000..873bcb08520f
--- /dev/null
+++ b/dev-python/pykka/pykka-4.5.0.ebuild
@@ -0,0 +1,26 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="A Python implementation of the actor model"
+HOMEPAGE="
+ https://github.com/jodal/pykka/
+ https://pypi.org/project/pykka/
+"
+SRC_URI="
+ https://github.com/jodal/pykka/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+
+EPYTEST_PLUGINS=( pytest-mock )
+distutils_enable_tests pytest
diff --git a/dev-python/pytest-env/Manifest b/dev-python/pytest-env/Manifest
index 4c5e0235520b..f39ef17e84ff 100644
--- a/dev-python/pytest-env/Manifest
+++ b/dev-python/pytest-env/Manifest
@@ -1,4 +1,4 @@
-DIST pytest_env-1.7.0.tar.gz 16408 BLAKE2B ff03e9124d518523018e699205b7629dde5e8c72a1392a0ff215cd9abb890bfce8917c9bdc95746423205df3c37513b739fab40a39a1175e755cbeb6374e9167 SHA512 071eead1a149ae1a3fb219e8573a8faa5f185550bff8d2216d56b3a69e71dc34385cf8a6fc771352a82b3e25a3d7311fd92c65c91ebf1e8022095ade5e2052b4
-DIST pytest_env-1.7.0.tar.gz.provenance 9812 BLAKE2B 864808526fd573d78c2552b5716f44143d1b1de8c02a5e0a9b98c817365e10e55075f96ab59da456d2c20de697a4b32dec53edcb232936250a8b56af5613b494 SHA512 26233daa7206e899b8baf36a3590bc2ef0a7d8fb2931e01d8555c51a8a6c9aadd1dc92b4271298665adec65038f19b29c1ac8b070c262a9494b06fa9bbae2827
DIST pytest_env-1.7.1.tar.gz 17091 BLAKE2B 64b726da3660c87456a52d89b25b32be3bd3c0d08df31a8f0f5eabc73ea9d539a057a9d9594a0150bf221bec8a8c816d5fdc5903e319e1c6b2f637eb9a64c0e0 SHA512 d51e3bbff89f27cc082a4459c64ef46e9c97f33188d048200c18d866bc282949a361de63fbf291c22b238b1eac078a8945eb1cfb65dac6ca495084e2e0df5e02
DIST pytest_env-1.7.1.tar.gz.provenance 9767 BLAKE2B 4a0563d9fdff25824fc5e0f6be2ec53b8ad226719100b325bb251c6a6797098bcba13dbe001440cd2223749188dff61e227d7eca936541d5a0a8404b287f0ef5 SHA512 1f25f4f74de81a53a9eb141ab56bfdce0757bbf1d19d776e25810b96f39acb3b1928670fbac2663a6bf4beb275cb01810e2811611c236afc4f3dc4501af36aec
+DIST pytest_env-1.8.0.tar.gz 17363 BLAKE2B 63d9dce217ee3136c9ff2877f616a78567c5f9055cee63c1f8415bfcae9135dde5977a56dd5794458f36e341b2834650f6e17c4325b1fd07d5478c3a638d5f6f SHA512 7f48da79caa364fa5a8581952a895dbbcfcfa7e42e0e8160bfa273ac654f0b91fa46cbd2ec08d58561f8a58cacf3eb6f62adb548a5eaf4dd6415f2b9b49fec52
+DIST pytest_env-1.8.0.tar.gz.provenance 9592 BLAKE2B a57b4704368963923000af291e77c60f267732b10c4f114ec391294724cf405045ca95954ba841f37edcdd909822a5ccb3d8502267db6e54e55f8911cb2b8d77 SHA512 a9aee2bdbe1ceb4fb27ab57bf644d5a49307a9c7f6d32e98f90d437c463d517062176d36b8c09b8f802c6f28e3ce12506bac79943491bf22ea63ed27f4788184
diff --git a/dev-python/pytest-env/pytest-env-1.7.0.ebuild b/dev-python/pytest-env/pytest-env-1.8.0.ebuild
index 53377984e1c8..7ff67d64ea2b 100644
--- a/dev-python/pytest-env/pytest-env-1.7.0.ebuild
+++ b/dev-python/pytest-env/pytest-env-1.8.0.ebuild
@@ -17,12 +17,13 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~hppa ~ppc ppc64 ~riscv x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~x86"
RDEPEND="
- >=dev-python/python-dotenv-1.2.2[${PYTHON_USEDEP}]
- >=dev-python/pytest-9.0.2[${PYTHON_USEDEP}]
+ >=dev-python/python-dotenv-1.2.4[${PYTHON_USEDEP}]
+ >=dev-python/pytest-9.1.1[${PYTHON_USEDEP}]
"
+
BDEPEND="
>=dev-python/hatch-vcs-0.3[${PYTHON_USEDEP}]
"