summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/boto3/Manifest1
-rw-r--r--dev-python/boto3/boto3-1.43.20.ebuild53
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.43.20.ebuild67
-rw-r--r--dev-python/cbor2/Manifest2
-rw-r--r--dev-python/cbor2/cbor2-6.1.2.ebuild72
-rw-r--r--dev-python/cfn-lint/Manifest2
-rw-r--r--dev-python/cfn-lint/cfn-lint-1.51.3.ebuild64
-rw-r--r--dev-python/doit/doit-0.37.0.ebuild7
-rw-r--r--dev-python/numpy/Manifest2
-rw-r--r--dev-python/numpy/numpy-2.5.0_rc1.ebuild329
-rw-r--r--dev-python/pyqt6/files/pyqt6-6.11.0-qt6.12.patch21
-rw-r--r--dev-python/pyqt6/pyqt6-6.11.0.ebuild6
-rw-r--r--dev-python/snowballstemmer/Manifest2
-rw-r--r--dev-python/snowballstemmer/snowballstemmer-3.1.1.ebuild23
-rw-r--r--dev-python/translate-toolkit/translate-toolkit-3.19.11.ebuild2
-rw-r--r--dev-python/webob/Manifest1
-rw-r--r--dev-python/webob/webob-1.8.10.ebuild42
18 files changed, 694 insertions, 3 deletions
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index a8523351fbc1..5bf5e2c46e89 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -6,5 +6,6 @@ DIST boto3-1.43.17.gh.tar.gz 1149899 BLAKE2B 156dca381b1d0900c9191852081ba81f8d1
DIST boto3-1.43.18.gh.tar.gz 1151413 BLAKE2B 81013f13acbc4e1c154b62b63163b8034cc122b0c66d8213af81fe046f72a759b329126bf28ec261156e6e459d5283ab61e4965375b0b8264d5aed98396f019b SHA512 9a6eac48ffd61872a0a30ce2142b7e94eb4eefeae932eb0e7273f89f574e20a9bad4dc9a789a60ecfa552ab907df46423cffb1cdf2c1804ebd6b3578c3330f26
DIST boto3-1.43.19.gh.tar.gz 1151877 BLAKE2B 2e0841161be1264af7314127ef7ca145a374dff3ec0e5ac5b00d9ee38076300f40ecfc06881084dec3325d3d85f71aa562b3327ec63fb726715995b64b194d90 SHA512 91cc620b226736b763abc8e7790c763485a53d5175a6f981d50cd3780106f794d1f09e009a4c236dd3c02f9177d9f189daba97b4bfeb1535139f63f14966d8ff
DIST boto3-1.43.2.gh.tar.gz 1133320 BLAKE2B 21890b9f6629ec5af1da155d767a6117beada74550c292ba07d6900666bef39722740493e343a4770cf7f8adbb0030462d9e41366daee4c2bc17c391f14153f2 SHA512 b807ff1e6133285f6f64a83e328b7522f18d2de63838e9d6d70b982f44316b63aed90ddf3cbc12c6c32967c35807c0ef548d647588cd76c09a363e4de0c9b1e0
+DIST boto3-1.43.20.gh.tar.gz 1153608 BLAKE2B 14c74c4983763e063110c401406a7023ec4a26e12442d083c85f5757067a3b2a9f2c8def2547e8328de8dbcc372007bc2e782b0efdb1b0ffa584262e47c26a4a SHA512 ce9c0abc4278141549fb98c073f5f3e16d708207129953181546c53ff0c222ce63cf717efb2b5c727de6ee19817abc97561e5b03c3c81b6e76466bafddbb51b7
DIST boto3-1.43.6.gh.tar.gz 1137408 BLAKE2B 11a92806102c847f0072394f726a56c84f2378f9b75394d3b23f9357a35dd8ae2794149d7d20c0b4f0ba64a14e4234606ac49b846320e770b20eca51c9f53790 SHA512 e51787a036386af77a77f39ef1b857bf1fa6a6a106694ae0f6fd07097420fb1a01ad14037e55a8279c1aa8968c64becede89ef3ecbd5bd43c4af0f30f4e5cae5
DIST boto3-1.43.9.gh.tar.gz 1141698 BLAKE2B 37721c03d15d8cc7d290dcf9e56c5a83d480379514b0504a5164ab0dcec1211f3df001a966562f5f69e94325ccd42bc0da787121c68b75419fa45913feb5a4e6 SHA512 a130960634934428ab43845f69a2997638077c3bf856e12b00637dcd995dd835ad0a01eedd0a25d003d7c3e4515077c5ff19f90d289f5fe3c8bf5d837a629d09
diff --git a/dev-python/boto3/boto3-1.43.20.ebuild b/dev-python/boto3/boto3-1.43.20.ebuild
new file mode 100644
index 000000000000..b489b3507093
--- /dev/null
+++ b/dev-python/boto3/boto3-1.43.20.ebuild
@@ -0,0 +1,53 @@
+# 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_{12..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="The AWS SDK for Python"
+HOMEPAGE="
+ https://github.com/boto/boto3/
+ https://pypi.org/project/boto3/
+"
+SRC_URI="
+ https://github.com/boto/boto3/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
+ >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
+ >=dev-python/s3transfer-0.18.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # don't lock versions to narrow ranges
+ sed -e '/botocore/ d' \
+ -e '/jmespath/ d' \
+ -e '/s3transfer/ d' \
+ -i setup.py || die
+
+ # do not rely on bundled deps in botocore (sic!)
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/botocore/Manifest b/dev-python/botocore/Manifest
index 473d3651ff5c..6c3d4504987f 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -6,5 +6,6 @@ DIST botocore-1.43.17.gh.tar.gz 16365343 BLAKE2B b2ad485869dd06882eb5286a379d0ae
DIST botocore-1.43.18.gh.tar.gz 16377376 BLAKE2B 4eb2808f4aa3b2b64f9d4b5d2df19c0dfbcc461da6588e10e939bfca794426460b28a306f2c4c3a1e9065b8c7299011b0dd035229b9d4bda67f9a51a1994d5ab SHA512 ce6506bd52fbc16127f7300c3f09c99320462de15036c66d89c65cf6533c94f0cc7b4153055a79ec36bf295af5206009517de1cb654f22d19a7426d34a2fb78e
DIST botocore-1.43.19.gh.tar.gz 16389618 BLAKE2B e6a7fa90e34505f40d780d44e0d99ee5b408f8c47204a13a02a10984fe7753941724599cd78ed1b63c45bf22eba35945b6127e5ac8cffd7765c45d2fe808ccef SHA512 9d58dc82d27cc9c74f2a65138203492825b3b311d08e22c33620ff2c33ec0701082072a5b573e4a609bfd5d8f66f36620dea9f36f4cf92cd79d773b6e5951a68
DIST botocore-1.43.2.gh.tar.gz 16233880 BLAKE2B f35f27344dd853b1c6e7c1049d501f034c378149ccff13ebffafa054a1f76d56f54104046804e6957f533c0db7aa49c4249af8820ad9d382e522b1c1149de65d SHA512 72cc8eaf651b0634af1d023098994db3dc8d879f8c685e75c226935010d5dee08da00577a5192d68bb0c23c928efc9573820c74f468e79594ddc1f6e96e89e61
+DIST botocore-1.43.20.gh.tar.gz 16407359 BLAKE2B 75ebcbd2952672e445fcd00755dd8da50036da029f9d74daf6f972c78a3663f8beb39f104b7ffa093238bc0d317af59d9c8c8e904c4e3838204714584e2278b3 SHA512 6c45b08a1c2552c9f129c6ba16356facfbe60cba3d3aef7fb76b7bfadeefe0529d34ab6578fbc20e4d861a98ac1e324dfedd0cdacb23d392adf35696d10cbf56
DIST botocore-1.43.6.gh.tar.gz 16273836 BLAKE2B 42049eda3d77066f53733fb4a7df1cbc4e0c7b5e7b2f6398ded8917935935ec7fcae1dd029156eba1eaaf16a73bea6ffe2983b39036552a34b17934985f8a002 SHA512 771d17792bf1c8e75028dcd0fb618ee52fb7c0a57fe2560f564d136cfe17ecdcb1f7185486a10ef60ce80ceb0d446c518e3b2e93facf52e736030b764e8c254b
DIST botocore-1.43.9.gh.tar.gz 16299354 BLAKE2B fcb35ec47d892c36c319a14e62ffedec51fe48ad68beeb2e527c3f282647a5f980a182c8d66ff12a69a45e4c137f1f486b0056345cfeb2c1e52b03b76df5015c SHA512 20033802430564aa77607a0c042511c7831c75f92240da388aaf036d90969f5560b9cb5dbb01f590b95cc9a2039557fd3f540fd6c4170104d732d033e142c08a
diff --git a/dev-python/botocore/botocore-1.43.20.ebuild b/dev-python/botocore/botocore-1.43.20.ebuild
new file mode 100644
index 000000000000..c5e7c0693777
--- /dev/null
+++ b/dev-python/botocore/botocore-1.43.20.ebuild
@@ -0,0 +1,67 @@
+# 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_{12..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Low-level, data-driven core of boto 3"
+HOMEPAGE="
+ https://github.com/boto/botocore/
+ https://pypi.org/project/botocore/
+"
+SRC_URI="
+ https://github.com/boto/botocore/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+RDEPEND="
+ <dev-python/jmespath-2[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ >=dev-python/urllib3-1.25.4[${PYTHON_USEDEP}]
+"
+# unbundled packages
+RDEPEND+="
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/six[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/jsonschema[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ # unpin deps
+ sed -i -e "s:>=.*':':" setup.py || die
+
+ # unbundle deps
+ rm -r botocore/vendored || die
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # rely on bundled six
+ tests/functional/test_six_imports.py::test_no_bare_six_imports
+ tests/functional/test_six_threading.py::test_six_thread_safety
+ )
+
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/cbor2/Manifest b/dev-python/cbor2/Manifest
index db73111ea09a..e9b5a0334a01 100644
--- a/dev-python/cbor2/Manifest
+++ b/dev-python/cbor2/Manifest
@@ -8,6 +8,8 @@ DIST cbor2-6.1.0.tar.gz 85870 BLAKE2B eb2d6b699d9294242acd1c626fb7e5c9f5dcb67d19
DIST cbor2-6.1.0.tar.gz.provenance 9625 BLAKE2B 106dc7b9667c195bd6934ee6c824c46f8290608a1e212d533c4dccc5e25c531a47caf1cd3babb8d093588a5118e5c72c5141df8037a92020738053dde650ffd2 SHA512 62e3cf64344be19ff1192cc748c28f276c1b02c2bd4bbe92b10636c752b68b453ec0e018e8a940bd9c1b2d36278e8bee158373a495498ab8c75195d698a16878
DIST cbor2-6.1.1.tar.gz 86297 BLAKE2B 433a3b0d194eeca03158281216395d523d88155ecc01e415875c35fdb6b0c4900acdb2f5bdbe71cb792f1059743d7fc6040c9b190be30779dcf1496589e45f8c SHA512 0066671ae72229e415f857432cb352a5e6895aa0502e843e8442c93f3135ecd6acc2bf73172298b6e7714691f1965c5ac85232648588cc95971a75b035f84953
DIST cbor2-6.1.1.tar.gz.provenance 9296 BLAKE2B c66d939f064649f7eae974870e11fefc00f577fd867b5c4774c8828ae21a982388f2aee60a6a227b14289b76ac50fcf93e6b6d1c0590df66eec86fa409811da2 SHA512 16bbd212dd36330380e3cd3e09cf70a4d6df9cf8704de8b0d5f2d3b6e46f649d4559b13fe465418469bae4b0af1464099fb0904fab24e78118bfc2ed62b2ca6e
+DIST cbor2-6.1.2.tar.gz 86760 BLAKE2B a432aab05df5c1049925e5601e773ac7dc770710ecbe6e08617376625e97d50d6344b25ea88db42b46780821b7ba8633b06dc42650b86f3287245e7edf88768b SHA512 9e9f55d0e8dc6a913d316384563eb7da62e1e7cef97df3bcb104934567a94c41de3a8716633205cb5ed5eec593415a05c5b3b6d074ba2b8b1ec17c65294edd7b
+DIST cbor2-6.1.2.tar.gz.provenance 9696 BLAKE2B de5fef7b5b7d54268a00cb8ef7299a83712806ee5f51330fbcb99b7d973a646e5bd12d21f0bd39eee932227120ec07e683c29f7ed0614a6f5b37643434a3dd2a SHA512 6be8e65d2abbc6055940a39c47286ddd3e7eedc6b9af4b5dad8fbbc3d37390fe8f60e3745febecc37ebfb6d801bb87d5e44ec666223056d86c3d01a1eec66283
DIST cfg-if-1.0.4.crate 9360 BLAKE2B beadbfb273ee97cbb6e3740891fbace57511399ad203459b66b397587d794677a9515cde4e9ec4320c3795518bf1551d72b9a889f8ac4b225168f493288b7c19 SHA512 176e04df7ba783b7143bb84397b777f5c5a1305c08a5c3a218d4a66830620be89ed68992ba27686165bcd3fb2f34b2daf80b2a1d4b481ecc267c988e84d28e9d
DIST crunchy-0.2.4.crate 3887 BLAKE2B f957597c82795eb10d43a6a98f7575e19b9484dcdf9fe35ac79ce406035d5d467021a0c563dcfe8f717e800b6bf532fcd72cc11be47e084405e16219b88e67b1 SHA512 72ecadb6c8558dcbf3cbc3a34bcefbf292e42999e7af6f59b9804e1233d87f6f65802b157f346a64cd7d2dc1a92564d5481211b081ba5ea170ecdb06dff9dd0b
DIST half-2.7.1.crate 61040 BLAKE2B bd78abf71b1b0ae219d2293f8edd5084fa630150016c95786d0af38a898d2775ff73ce848c4b2bbf02c2ea2dc8a610b2e045df78892d2b1de28981e8033625a7 SHA512 f47cc8bfb4c754a8585d4e8eca1a35039dc0879e87e59acb72e91bf2d33eca8c4f8dd17b3a56e8953bcba62cb08122120866e9d4b3ab9f008847d86a5f81716d
diff --git a/dev-python/cbor2/cbor2-6.1.2.ebuild b/dev-python/cbor2/cbor2-6.1.2.ebuild
new file mode 100644
index 000000000000..c58b1b35b83a
--- /dev/null
+++ b/dev-python/cbor2/cbor2-6.1.2.ebuild
@@ -0,0 +1,72 @@
+# 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/agronholm/cbor2
+PYTHON_COMPAT=( python3_{12..14} )
+
+RUST_MIN_VER="1.85.0"
+CRATES="
+ autocfg@1.5.0
+ bigdecimal@0.4.10
+ cfg-if@1.0.4
+ crunchy@0.2.4
+ half@2.7.1
+ heck@0.5.0
+ libc@0.2.182
+ libm@0.2.16
+ num-bigint@0.4.6
+ num-integer@0.1.46
+ num-traits@0.2.19
+ once_cell@1.21.3
+ portable-atomic@1.13.1
+ proc-macro2@1.0.106
+ pyo3-build-config@0.28.2
+ pyo3-ffi@0.28.2
+ pyo3-macros-backend@0.28.2
+ pyo3-macros@0.28.2
+ pyo3@0.28.2
+ quote@1.0.44
+ syn@2.0.117
+ target-lexicon@0.13.5
+ unicode-ident@1.0.24
+ zerocopy-derive@0.8.40
+ zerocopy@0.8.40
+"
+
+inherit cargo distutils-r1 pypi
+
+DESCRIPTION="CBOR (de)serializer with extensive tag support"
+HOMEPAGE="
+ https://github.com/agronholm/cbor2/
+ https://pypi.org/project/cbor2/
+"
+SRC_URI+="
+ ${CARGO_CRATE_URIS}
+"
+
+LICENSE="MIT"
+# Dependent crate licenses
+LICENSE+=" Apache-2.0-with-LLVM-exceptions MIT Unicode-3.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+BDEPEND="
+ >=dev-python/setuptools-61[${PYTHON_USEDEP}]
+ dev-python/setuptools-rust[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-scm-6.4[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=( hypothesis )
+distutils_enable_tests pytest
+
+# Files built without CFLAGS/LDFLAGS, acceptable for rust
+QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/cbor2/_cbor2.*.so"
+
+src_unpack() {
+ pypi_src_unpack
+ cargo_src_unpack
+}
diff --git a/dev-python/cfn-lint/Manifest b/dev-python/cfn-lint/Manifest
index 33d1b970ce38..349e2500cdc8 100644
--- a/dev-python/cfn-lint/Manifest
+++ b/dev-python/cfn-lint/Manifest
@@ -6,3 +6,5 @@ DIST cfn_lint-1.51.1.tar.gz 4142083 BLAKE2B e182736243ef60fce02d0c5f150a986c857b
DIST cfn_lint-1.51.1.tar.gz.provenance 10054 BLAKE2B 69543bc495c01f826aaad69c02b523fb4e27ff2cd14e088f7e397793e7dc1aa65407d1ece1b349dcc14d2b07d405a0ea614c1703ac0bd1a3c8ea4074653f03a2 SHA512 134cab13677dec78f0da9ea6fe6719796f0f5aaffcd90531a9150cbb35e7efc3217bd15bf8c0f179e8b0e59f6b5fa107237eab2cd59cabb9879327c372007aaa
DIST cfn_lint-1.51.2.tar.gz 4145007 BLAKE2B 1f782cddbba2b28ef6723059a8bab251592bcab09aa27280733d1633ba6523929c418a8b45bb90910a65f2540faf44e51eeee1a5ad8fd94db6b49d9aec027d26 SHA512 865a9fcb0b935aeaf25cb7f4469a2265c31f03d9e6f2707407fde2b2f712c9a0ed762fd4362a8a75445636e8d3aece9d6c529de21efde055d4d6d8c3da66a840
DIST cfn_lint-1.51.2.tar.gz.provenance 10177 BLAKE2B 44e10c7815a1de6da3a1ea9c14946c5e9e1f80b2030dc4ef749d12a15725a4a0d2bb6c24236dc6ca5c3c3aea5ccbe00673279926def6767d7c15e379ad9805d0 SHA512 15e76d38e6dbcebb196af6abc2d98be9bfa9c92383dc49a1b5f236b327e4f83c835e880bf727e73c3e676fe205b0ddb6bed569874b556375c2006c977824fc09
+DIST cfn_lint-1.51.3.tar.gz 4155028 BLAKE2B 545b321d12f33736773490b6e60a62ee8046a29ca2c0e231d9e895cdc2623126892a4787dd5c97c8489c166f14028647cccd3cd29d826a58f1c9cf1cf0e21e3e SHA512 b2f5b78a7b1badfe8f84dfed010042ee1cae2f5137e3840e8d83b5f9ae7de9ff4c1fee2bc4e26046cfd3fde8638626e062533ff053c55b9a3120c572d50b8ae3
+DIST cfn_lint-1.51.3.tar.gz.provenance 10240 BLAKE2B 3a84b9e84086a244660d2998d40b96160a87b0a985df3423efe87cd7f786c78e7347f741dc7dc70f6d0f621f5b0936193d8a5f52d12ee4e28995c75815aaa181 SHA512 8736cfa8f830c88dbab41396635a233253fb82d02159e2d59442ea35aad94562488ab04bfbf2ae0fd9d8ec4c2850fd70907ae74b8e0b16552d48ff166f9a8cff
diff --git a/dev-python/cfn-lint/cfn-lint-1.51.3.ebuild b/dev-python/cfn-lint/cfn-lint-1.51.3.ebuild
new file mode 100644
index 000000000000..a2a7c78c8ad0
--- /dev/null
+++ b/dev-python/cfn-lint/cfn-lint-1.51.3.ebuild
@@ -0,0 +1,64 @@
+# 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/aws-cloudformation/cfn-lint
+PYTHON_COMPAT=( python3_{12..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="CloudFormation Linter"
+HOMEPAGE="
+ https://github.com/aws-cloudformation/cfn-lint/
+ https://pypi.org/project/cfn-lint/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/aws-sam-translator-1.110.0[${PYTHON_USEDEP}]
+ dev-python/jsonpatch[${PYTHON_USEDEP}]
+ >=dev-python/jschema-to-python-1.2.3[${PYTHON_USEDEP}]
+ <dev-python/jsonschema-5[${PYTHON_USEDEP}]
+ >=dev-python/jsonschema-3.0[${PYTHON_USEDEP}]
+ dev-python/junit-xml[${PYTHON_USEDEP}]
+ <dev-python/networkx-4[${PYTHON_USEDEP}]
+ >=dev-python/pyyaml-6.0.3[${PYTHON_USEDEP}]
+ >=dev-python/regex-2021.7.1[${PYTHON_USEDEP}]
+ >=dev-python/sarif-om-1.0.4[${PYTHON_USEDEP}]
+ >=dev-python/sympy-1.14.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ >=dev-python/setuptools-77.0.3[${PYTHON_USEDEP}]
+ test? (
+ dev-python/defusedxml[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # different line wrapping somehow
+ test/unit/module/template/test_template.py::TestTemplate::test_build_graph
+ # requires git repo
+ test/unit/module/maintenance/test_update_documentation.py::TestUpdateDocumentation::test_update_docs
+ # TODO: suddenly started failing in older versions too
+ # https://github.com/aws-cloudformation/cfn-lint/issues/4207
+ test/integration/test_good_templates.py
+ test/unit/module/override/test_exclude.py::TestExclude::test_success_run
+ test/unit/module/test_api.py::TestLintFile::test_good_template
+ test/unit/module/test_rules_collections.py::TestRulesCollection::test_success_run
+ # crashes on 3.12+, probably pygraphviz
+ test/unit/module/test_api.py::TestLintByConfig::test_graph
+ )
+
+ # from tox.ini
+ local -x AWS_DEFAULT_REGION=us-east-1
+ epytest
+}
diff --git a/dev-python/doit/doit-0.37.0.ebuild b/dev-python/doit/doit-0.37.0.ebuild
index 272446d30bef..2b46f1da18c7 100644
--- a/dev-python/doit/doit-0.37.0.ebuild
+++ b/dev-python/doit/doit-0.37.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 arm64 ~riscv x86"
RDEPEND="
dev-python/cloudpickle[${PYTHON_USEDEP}]
@@ -41,6 +41,11 @@ src_prepare() {
-e '/sphinx_reredirects/d' \
-i doc/conf.py || die
+ # Disable xdist to avoid issues if pytest-xdist is installed.
+ sed \
+ -e 's/from xdist import plugin/raise ImportError()/' \
+ -i tests/conftest.py || die
+
distutils-r1_src_prepare
}
diff --git a/dev-python/numpy/Manifest b/dev-python/numpy/Manifest
index 73a1eec1f58f..d59136a4a550 100644
--- a/dev-python/numpy/Manifest
+++ b/dev-python/numpy/Manifest
@@ -5,3 +5,5 @@ DIST numpy-2.4.5.tar.gz 20735669 BLAKE2B 93a3484f39974893c34cc51f6073e3f1c1a4bf4
DIST numpy-2.4.5.tar.gz.provenance 9739 BLAKE2B 273d39dedf54f896f82e2cc6f1631282a0a0ac79c9c281d0935714879e949f3cb628f3b506a56e87a182cfff51c15c9c76dc4a20c1841278ff118260fe04d87f SHA512 52e0f67b2b8b379169a5486ec179026234d01fa96bcb604be6736f131d0423247be5a3b7be5aac9c7b2ea7df60e26c02cfe6949e211f150cc41d5017776e6328
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.0rc1.tar.gz 20610894 BLAKE2B f92c6ec4b7350aa806c07d131e87f4b8a3e68c8adb4dc634805ec9a66ddcefbf19e592ec024827cdb06a33f27ed6a44a7247b11a0d07a8ee94cdeb039b61eeea SHA512 7a0120682346e943120d01c3d14792d5ae167237942b85feedf9ec3ab91e927f9fd781f1f94c7b5fe3ae8d9111e29764e4e7a106981d9f048139a6fdbe8f2df2
+DIST numpy-2.5.0rc1.tar.gz.provenance 9967 BLAKE2B afd23bfe7721098fcda17ad52ff6e2dc85b16aaacf6ab6c515a2ffe09cd57f6f7593f38fef972a5a184c3598a61ab4e5d7fe36a3ce9aabf596cab02db565266d SHA512 ec6da12aa3f277f0a2c79e23552372ff3334b117f5ce19c02cd664e422b084a5401d87a58cbfb18197173da235babd8f01bee6d485f3553b2a59d4a279ae7e34
diff --git a/dev-python/numpy/numpy-2.5.0_rc1.ebuild b/dev-python/numpy/numpy-2.5.0_rc1.ebuild
new file mode 100644
index 000000000000..563a0f8c865d
--- /dev/null
+++ b/dev-python/numpy/numpy-2.5.0_rc1.ebuild
@@ -0,0 +1,329 @@
+# 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_{12..14} )
+PYTHON_REQ_USE="threads(+)"
+FORTRAN_NEEDED=lapack
+
+inherit distutils-r1 flag-o-matic fortran-2 pypi
+
+DESCRIPTION="Fast array and numerical python library"
+HOMEPAGE="
+ https://numpy.org/
+ https://github.com/numpy/numpy/
+ https://pypi.org/project/numpy/
+"
+
+LICENSE="BSD 0BSD MIT ZLIB CC0-1.0"
+SLOT="0/2"
+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 +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[index64(-)?]
+ >=virtual/lapack-3.8[index64(-)?]
+ )
+"
+BDEPEND="
+ ${RDEPEND}
+ >=dev-build/meson-1.5.2
+ >=dev-python/cython-3.0.6[${PYTHON_USEDEP}]
+ lapack? (
+ virtual/pkgconfig
+ )
+ test? (
+ $(python_gen_cond_dep '
+ >=dev-python/cffi-1.14.0[${PYTHON_USEDEP}]
+ ' 'python*')
+ dev-python/charset-normalizer[${PYTHON_USEDEP}]
+ >=dev-python/pytz-2019.3[${PYTHON_USEDEP}]
+ )
+"
+
+QA_CONFIG_IMPL_DECL_SKIP=(
+ # https://bugs.gentoo.org/925367
+ vrndq_f32
+)
+
+EPYTEST_PLUGINS=( hypothesis pytest-timeout )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+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${flags}"; 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)
+ -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::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
+
+ numpy/typing/tests/test_typing.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
+ # Degenerate case of arm32 chroot on arm64, bug #774108
+ EPYTEST_DESELECT+=(
+ numpy/_core/tests/test_cpu_features.py::Test_ARM_Features::test_features
+ )
+ fi
+
+ case ${ARCH} in
+ arm)
+ EPYTEST_DESELECT+=(
+ # TODO: warnings
+ numpy/_core/tests/test_umath.py::TestSpecialFloats::test_unary_spurious_fpexception
+
+ # TODO
+ numpy/_core/tests/test_function_base.py::TestLinspace::test_denormal_numbers
+ numpy/f2py/tests/test_kind.py::TestKind::test_real
+ numpy/f2py/tests/test_kind.py::TestKind::test_quad_precision
+
+ # require too much memory
+ 'numpy/_core/tests/test_multiarray.py::TestDot::test_huge_vectordot[complex128]'
+ 'numpy/_core/tests/test_multiarray.py::TestDot::test_huge_vectordot[float64]'
+ )
+ ;;
+ hppa)
+ EPYTEST_DESELECT+=(
+ # https://bugs.gentoo.org/942689
+ "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype[int]"
+ "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype[float]"
+ "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype_bytes_str_equivalence[datetime64]"
+ "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype_bytes_str_equivalence[timedelta64]"
+ "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype_bytes_str_equivalence[<f]"
+ "numpy/_core/tests/test_dtype.py::TestPickling::test_pickle_dtype[dt28]"
+ numpy/f2py/tests/test_kind.py::TestKind::test_real
+ numpy/f2py/tests/test_kind.py::TestKind::test_quad_precision
+ numpy/tests/test_ctypeslib.py::TestAsArray::test_reference_cycles
+ numpy/tests/test_ctypeslib.py::TestAsArray::test_segmentation_fault
+ numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_scalar
+ numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_subarray
+ numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_structure
+ numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_structure_aligned
+ numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_union
+ numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_padded_union
+ )
+ ;;
+ ppc|x86)
+ EPYTEST_DESELECT+=(
+ # require too much memory
+ 'numpy/_core/tests/test_multiarray.py::TestDot::test_huge_vectordot[complex128]'
+ 'numpy/_core/tests/test_multiarray.py::TestDot::test_huge_vectordot[float64]'
+ )
+ ;;
+ esac
+
+ if [[ ${CHOST} == powerpc64le-* ]]; then
+ EPYTEST_DESELECT+=(
+ # long double thingy
+ numpy/_core/tests/test_scalarprint.py::TestRealScalars::test_ppc64_ibm_double_double128
+ )
+ fi
+
+ if use big-endian; then
+ EPYTEST_DESELECT+=(
+ # ppc64 and sparc
+ numpy/linalg/tests/test_linalg.py::TestDet::test_generalized_sq_cases
+ numpy/linalg/tests/test_linalg.py::TestDet::test_sq_cases
+ "numpy/f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f77[s1]"
+ "numpy/f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f77[t1]"
+ "numpy/f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f90[s1]"
+ "numpy/f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f90[t1]"
+ )
+ fi
+
+ if ! has_version -b "~${CATEGORY}/${P}[${PYTHON_USEDEP}]" ; then
+ # depends on importing numpy.random from system namespace
+ EPYTEST_DESELECT+=(
+ 'numpy/random/tests/test_extending.py::test_cython'
+ )
+ fi
+
+ if has_version ">=dev-python/setuptools-74[${PYTHON_USEDEP}]"; then
+ # msvccompiler removal
+ EPYTEST_DESELECT+=(
+ numpy/tests/test_public_api.py::test_all_modules_are_expected_2
+ numpy/tests/test_public_api.py::test_api_importable
+ )
+ EPYTEST_IGNORE+=(
+ numpy/distutils/tests/test_mingw32ccompiler.py
+ numpy/distutils/tests/test_system_info.py
+ )
+ fi
+
+ 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
+}
+
+python_install_all() {
+ local DOCS=( LICENSE.txt README.md THANKS.txt )
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/pyqt6/files/pyqt6-6.11.0-qt6.12.patch b/dev-python/pyqt6/files/pyqt6-6.11.0-qt6.12.patch
new file mode 100644
index 000000000000..1147e23e2a41
--- /dev/null
+++ b/dev-python/pyqt6/files/pyqt6-6.11.0-qt6.12.patch
@@ -0,0 +1,21 @@
+Quick fix to build with (still unrleeased) Qt 6.12.0.
+--- a/sip/QtCore/QtCoremod.sip
++++ b/sip/QtCore/QtCoremod.sip
+@@ -23,5 +23,5 @@
+ %Module(name=PyQt6.QtCore, call_super_init=True, default_VirtualErrorHandler=PyQt6, keyword_arguments="Optional", use_limited_api=True, py_ssize_t_clean=True)
+
+-%Timeline {Qt_6_0_0 Qt_6_1_0 Qt_6_2_0 Qt_6_3_0 Qt_6_4_0 Qt_6_5_0 Qt_6_6_0 Qt_6_7_0 Qt_6_8_0 Qt_6_9_0 Qt_6_10_0 Qt_6_11_0}
++%Timeline {Qt_6_0_0 Qt_6_1_0 Qt_6_2_0 Qt_6_3_0 Qt_6_4_0 Qt_6_5_0 Qt_6_6_0 Qt_6_7_0 Qt_6_8_0 Qt_6_9_0 Qt_6_10_0 Qt_6_11_0 Qt_6_12_0}
+
+ %Platforms {Android iOS Linux macOS WebAssembly Windows}
+--- a/sip/QtCore/qcoreevent.sip
++++ b/sip/QtCore/qcoreevent.sip
+@@ -201,6 +201,8 @@
+ TabletTrackingChange,
+ GraphicsSceneLeave,
++%If (- Qt_6_12_0)
+ EnterEditFocus,
+ LeaveEditFocus,
++%End
+ %If (Qt_6_6_0 -)
+ DevicePixelRatioChange,
diff --git a/dev-python/pyqt6/pyqt6-6.11.0.ebuild b/dev-python/pyqt6/pyqt6-6.11.0.ebuild
index 45fd28c07b3c..8bd32130547c 100644
--- a/dev-python/pyqt6/pyqt6-6.11.0.ebuild
+++ b/dev-python/pyqt6/pyqt6-6.11.0.ebuild
@@ -5,7 +5,7 @@ EAPI=8
DISTUTILS_EXT=1
DISTUTILS_USE_PEP517=sip
-PYTHON_COMPAT=( python3_{11..14} )
+PYTHON_COMPAT=( python3_{12..14} )
inherit distutils-r1 flag-o-matic multiprocessing pypi qmake-utils
# can work with older Qt depending on the features the ebuild enables,
@@ -98,6 +98,10 @@ BDEPEND="
dbus? ( virtual/pkgconfig )
"
+PATCHES=(
+ "${FILESDIR}"/${PN}-6.11.0-qt6.12.patch
+)
+
src_prepare() {
default
diff --git a/dev-python/snowballstemmer/Manifest b/dev-python/snowballstemmer/Manifest
index ce24a24c008e..95743d4fe925 100644
--- a/dev-python/snowballstemmer/Manifest
+++ b/dev-python/snowballstemmer/Manifest
@@ -1,2 +1,4 @@
DIST snowballstemmer-3.0.1.tar.gz 105575 BLAKE2B 68515d35b8aa8ad9f80e2fb37c483f6fe15951796413553e543b7cd4dfc2da37107766e8c96662498b63f019b5dfc62288f026d5465613d740421e41d00f2b99 SHA512 a9590da2b0be4b93a7500b337a63cf2039ff01a6da309ddb9462961c309b4763d4dfc925965a62376a9f3b41a05bb634d6472f1e2ee07e53b38f8542e7eada82
DIST snowballstemmer-3.1.0.tar.gz 122523 BLAKE2B 12b91ea7aa3811272e0b6cb305912a913fa871f8cd5650659e27d73921a9319deec326c9a5dc8bc642961fd03e94b600b3f89b525f5a0454c0de41c023548764 SHA512 02d3022c76c3e6da37c599b9a58855e538ce5bddf0533c4b32ffeb44e426cbf998f20746c9563a5e05956c3118ce985a5129573f4342bdc94ed2dc1d1d62214d
+DIST snowballstemmer-3.1.1.tar.gz 123314 BLAKE2B 95d416b7875e61cce37c987fc7c1359031019c45314c14dca32bc11a1249284b9c8cd040823f29e0da62fd9d2ef9365b50c55f98c2648a4e909e3c4d08328ddb SHA512 a36320c5c21b91137b6924025edac292891d3141a12cfe84fb1ee44f19980eeb35494bebf6c8cb9879c9633e06e27aa73f850157fbc074e926713ad47368b269
+DIST snowballstemmer-3.1.1.tar.gz.provenance 9789 BLAKE2B 0ab22bd283a737c8fad74cbd8dd8d25546b58ce953000ef1060f3ff332bf31c33036c86d100b6451fb1fd41ca61821721128aacf0a659cce729a6c5673dda85b SHA512 0e9d24f96a6e108321c95b7c44a5c8f57cd9543aac214a6802e6c369754ac6673d2c088aa2e7dff27d4e4f10793c5546d1fa0a7d2dc7f7b03202c1cc649e000e
diff --git a/dev-python/snowballstemmer/snowballstemmer-3.1.1.ebuild b/dev-python/snowballstemmer/snowballstemmer-3.1.1.ebuild
new file mode 100644
index 000000000000..030214d184bf
--- /dev/null
+++ b/dev-python/snowballstemmer/snowballstemmer-3.1.1.ebuild
@@ -0,0 +1,23 @@
+# 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/snowballstem/snowball
+PYTHON_COMPAT=( python3_{12..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Stemmer algorithms generated from Snowball algorithms"
+HOMEPAGE="
+ https://snowballstem.org/
+ https://github.com/snowballstem/snowball/
+ https://pypi.org/project/snowballstemmer/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos ~x64-solaris"
+
+distutils_enable_tests import-check
diff --git a/dev-python/translate-toolkit/translate-toolkit-3.19.11.ebuild b/dev-python/translate-toolkit/translate-toolkit-3.19.11.ebuild
index 47c6253c2c51..306b6ccb2c77 100644
--- a/dev-python/translate-toolkit/translate-toolkit-3.19.11.ebuild
+++ b/dev-python/translate-toolkit/translate-toolkit-3.19.11.ebuild
@@ -23,7 +23,7 @@ S="${WORKDIR}"/${MY_P}
LICENSE="GPL-2"
SLOT="0"
-KEYWORDS="~amd64"
+KEYWORDS="~amd64 ~arm64 ~x86"
IUSE="+html +ical +ini +subtitles +yaml"
RDEPEND="
diff --git a/dev-python/webob/Manifest b/dev-python/webob/Manifest
index 3f01fe45d047..701c3b0d37b3 100644
--- a/dev-python/webob/Manifest
+++ b/dev-python/webob/Manifest
@@ -1 +1,2 @@
+DIST webob-1.8.10.tar.gz 280796 BLAKE2B fc70c3f60bc9b1d0b75ef7665c8b5ce9f6ec394fa23a840fe0658b3f782a2f899f7ae83d78c70084a377a368f2bb8576bf2d45f56df1985560488b7b0b80b363 SHA512 a37333d95763b24cd6d435e4dd59a18a8cb3c10c23075d6c79114654c84f38b9e41b36d868e4e3200fba93774529f6f4506b29a04411acaa90a2d14cc668a7ed
DIST webob-1.8.9.tar.gz 279775 BLAKE2B 1442fb0cac7a5a55582956a89b998beb8b7e0cc75a7b09e8767ca2064c60a51102a5f8d08cd3d854c560f38448bea439acffa096b392811ba8941b9fa543e539 SHA512 ed5d91f864572b4bbeaa2aa6ada98285d597f83bc14613e62defb6fd6617986aa63534f0962d8045866471f8dfa09c803a5f2105efb84e5f618db6eeb804b9a1
diff --git a/dev-python/webob/webob-1.8.10.ebuild b/dev-python/webob/webob-1.8.10.ebuild
new file mode 100644
index 000000000000..0173050ebf96
--- /dev/null
+++ b/dev-python/webob/webob-1.8.10.ebuild
@@ -0,0 +1,42 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_PN="WebOb"
+PYTHON_COMPAT=( python3_{12..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="WSGI request and response object"
+HOMEPAGE="
+ https://webob.org/
+ https://github.com/Pylons/webob/
+ https://pypi.org/project/WebOb/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+
+RDEPEND="
+ $(python_gen_cond_dep '
+ >=dev-python/legacy-cgi-2.6[${PYTHON_USEDEP}]
+ ' 3.{13..14})
+"
+
+distutils_enable_sphinx docs 'dev-python/alabaster'
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_test() {
+ if [[ ${EPYTHON} == python3.14* ]] ; then
+ EPYTEST_DESELECT+=(
+ # https://github.com/Pylons/webob/issues/479
+ tests/test_in_wsgiref.py::test_interrupted_request
+ )
+ fi
+
+ epytest
+}