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.45.ebuild53
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.43.45.ebuild67
-rw-r--r--dev-python/btrfs/btrfs-15.ebuild2
-rw-r--r--dev-python/btrfs/files/15-setup.patch32
-rw-r--r--dev-python/build/Manifest1
-rw-r--r--dev-python/build/build-1.5.1.ebuild78
-rw-r--r--dev-python/cfn-lint/Manifest2
-rw-r--r--dev-python/cfn-lint/cfn-lint-1.53.0.ebuild60
-rw-r--r--dev-python/cmd2/Manifest1
-rw-r--r--dev-python/cmd2/cmd2-4.1.1.ebuild59
-rw-r--r--dev-python/diskcache/diskcache-5.6.3.ebuild2
-rw-r--r--dev-python/django-auth-ldap/django-auth-ldap-5.3.0.ebuild2
-rw-r--r--dev-python/django-polymorphic/Manifest1
-rw-r--r--dev-python/django-polymorphic/django-polymorphic-4.11.6.ebuild59
-rw-r--r--dev-python/django-registration/django-registration-5.2.1.ebuild2
-rw-r--r--dev-python/django-sortedm2m/django-sortedm2m-4.0.0.ebuild2
-rw-r--r--dev-python/django-template-partials/django-template-partials-25.3.ebuild4
-rw-r--r--dev-python/django/Manifest4
-rw-r--r--dev-python/django/django-5.2.15.ebuild100
-rw-r--r--dev-python/django/django-5.2.16.ebuild8
-rw-r--r--dev-python/django/django-6.0.6.ebuild100
-rw-r--r--dev-python/django/django-6.0.7.ebuild8
-rw-r--r--dev-python/django/files/django-6.0.7-py315.patch285
-rw-r--r--dev-python/docker/Manifest1
-rw-r--r--dev-python/docker/docker-7.2.0.ebuild57
-rw-r--r--dev-python/httpx/files/httpx-0.27.0-opt-trio.patch17
-rw-r--r--dev-python/lazy-object-proxy/lazy-object-proxy-1.12.0.ebuild27
-rw-r--r--dev-python/mistune/Manifest2
-rw-r--r--dev-python/mistune/mistune-3.3.3.ebuild23
-rw-r--r--dev-python/peewee/Manifest1
-rw-r--r--dev-python/peewee/peewee-4.1.2.ebuild83
-rw-r--r--dev-python/plotly/Manifest1
-rw-r--r--dev-python/plotly/plotly-6.9.0.ebuild110
-rw-r--r--dev-python/pydata-sphinx-theme/Manifest2
-rw-r--r--dev-python/pydata-sphinx-theme/pydata-sphinx-theme-0.20.0.ebuild52
-rw-r--r--dev-python/pygobject/pygobject-3.56.3.ebuild2
-rw-r--r--dev-python/pypugjs/Manifest1
-rw-r--r--dev-python/pypugjs/pypugjs-6.0.2.ebuild53
-rw-r--r--dev-python/python-neutronclient/Manifest1
-rw-r--r--dev-python/python-neutronclient/python-neutronclient-13.0.0.ebuild72
-rw-r--r--dev-python/sabctools/Manifest1
-rw-r--r--dev-python/sabctools/sabctools-9.6.1.ebuild40
-rw-r--r--dev-python/scikit-build-core/Manifest2
-rw-r--r--dev-python/scikit-build-core/scikit-build-core-1.0.2.ebuild52
-rw-r--r--dev-python/tpm2-pytss/files/tpm2-pytss-2.3.0-cryptography-fix-support-for-cryptography-47.patch46
-rw-r--r--dev-python/tpm2-pytss/tpm2-pytss-2.3.0-r3.ebuild (renamed from dev-python/tpm2-pytss/tpm2-pytss-2.3.0-r2.ebuild)19
-rw-r--r--dev-python/xarray/Manifest2
-rw-r--r--dev-python/xarray/xarray-2026.7.0.ebuild156
50 files changed, 1459 insertions, 298 deletions
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index 4d365e6a14d1..cf7b49dee636 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -6,3 +6,4 @@ DIST boto3-1.43.40.gh.tar.gz 1175361 BLAKE2B cb24a2dd76debf1b3b2d759d020b2cf1724
DIST boto3-1.43.41.gh.tar.gz 1176299 BLAKE2B 25ddfdcf9b0e5fdb96ad5af8d78bef74d7e8ed41a506bfc13f257fb5dfd725c7fe40e5bead8f20b760c110cac72363161be1cf03ec64d8b3107b0251e32a6362 SHA512 11efe41cf581d7fd94c8f12a7456408a8965789bad044a7c79c44661dd109238c2ec9a6632537c3331c759150324de7280c3771ce506f44b26a7cce92e6c867f
DIST boto3-1.43.42.gh.tar.gz 1177879 BLAKE2B 43471c8748c366198e5336548959a16f970750c7a6136296352731d6126334d5d11b2762a8115adfee4d4e2f1c1f3e53b2d35020a1868e6a3031e3d3024ae19e SHA512 e6054e484c26e0701aa63a41a09e22e9308e1470aba895fb82fd639d71057512d096083209648c99ee95b1c900a89f5ab639d826d1ef33fb5725be2a2bb9d24d
DIST boto3-1.43.44.gh.tar.gz 1179130 BLAKE2B f6bbeebb51b901d115d3e2127a656650a4ed4d8176bf7cd7b0937a1f1470ff1fc70fa2565383ac057c01064feddb5441dc5c191db5c0ec1804cedb03875e48ac SHA512 d8d1579d3e90e5905dce1cc9cdcd9801a2a597be33840fac18d55b7f95d3912a72f45d6950a4e9e3917ac8a0e113a50358205d8697a20a10b9061f758615c80d
+DIST boto3-1.43.45.gh.tar.gz 1179757 BLAKE2B f6650039a290d5cdedce0376f0ec77f4c55289629f1569ed0343df2c1f5ca7918e9233911c5892cad8be307757e9b0b123b55e1c541103239f91bcac47fe5ed0 SHA512 7a6af5f46b3e4cdba3f3797488d1100c52116c09001dee642b1fe54affa3d0a8d83861a0f61bb25a5ebfd43da0fc4e6ddb1e9ca005db8d6b7c9a3741c8d64ddf
diff --git a/dev-python/boto3/boto3-1.43.45.ebuild b/dev-python/boto3/boto3-1.43.45.ebuild
new file mode 100644
index 000000000000..93fbbe6dd59b
--- /dev/null
+++ b/dev-python/boto3/boto3-1.43.45.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_{13..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.19.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 b4e700caddc8..aa5ac27665e7 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -6,3 +6,4 @@ DIST botocore-1.43.40.gh.tar.gz 16621912 BLAKE2B 87339ac693df7e8753b8a7463a93aea
DIST botocore-1.43.41.gh.tar.gz 16629580 BLAKE2B d8e01dbfbf2e3e890b44b9197e1959500256a5863d63b2c04a675f0dfd6ede3a3a961998f5f4dea62d868b11189f52e708f22680a74f3bb716a598a0c53e0dc2 SHA512 672411cc3030b95a98d9e3b0110a276e81fe3b1f0762213ededa8da93dd486bd2d15a9aec3ae76b9c2fbcea118a6512e49ac15f11a7367ad781ab29fa1eb68e4
DIST botocore-1.43.42.gh.tar.gz 16663349 BLAKE2B b215c60797e01bb32523b075d1aa15f5ceab48791eb6271092583b206c4a59451b6cdc4a214c97b564010090688f2c8032766fcbb97b5380e32b1d41ba3cc962 SHA512 18d159d62999946ef957ece6f44e44108296efe933f25e3295b9f9a2be8b8891e740ddb8fbac21a9a2808777d3a71426b48977e85e45e53c30c116b64eced49c
DIST botocore-1.43.44.gh.tar.gz 16672858 BLAKE2B de2dc295be6016486eb2afece5708e5e7b5cbde68f89bc6d24de4f129406d029852c3864ec215a69a7c279c676f3624835ebbada59ccb048d4d27ab850242c8e SHA512 ed0a90b23ba6de8ea209e81fcfa8f230f94ac606d92f6832a4a0c3c318b8f470703dcdd89cf6c7437ea481dc6cb25120b4b7db143f3a0622b9b4f6df6fc6cecc
+DIST botocore-1.43.45.gh.tar.gz 16675335 BLAKE2B 397f1f2e3c604c4eab0de2116e81a94905664e79d06accde77aed84b377b1895a200a5686017fff48d56c7e2f3f3f85a5a2b99e54e7ef5799c7e0291efa0e6a6 SHA512 1186b00138f4d0b9f07bc615da7e6f4cdd2ab35f707176523ba3fcd5d08ca010dd662b6631ddcad711916182a2f2b306185a5fe519e08474a84dd4137e0b23d6
diff --git a/dev-python/botocore/botocore-1.43.45.ebuild b/dev-python/botocore/botocore-1.43.45.ebuild
new file mode 100644
index 000000000000..a3a161f78545
--- /dev/null
+++ b/dev-python/botocore/botocore-1.43.45.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_{13..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/btrfs/btrfs-15.ebuild b/dev-python/btrfs/btrfs-15.ebuild
index e985ee0c7124..fba877e1c098 100644
--- a/dev-python/btrfs/btrfs-15.ebuild
+++ b/dev-python/btrfs/btrfs-15.ebuild
@@ -25,6 +25,8 @@ SLOT="0"
KEYWORDS="amd64"
IUSE="examples"
+PATCHES=( "${FILESDIR}"/15-setup.patch )
+
python_install_all() {
if use examples; then
# skip symlink meant for development
diff --git a/dev-python/btrfs/files/15-setup.patch b/dev-python/btrfs/files/15-setup.patch
new file mode 100644
index 000000000000..418ecbf8720f
--- /dev/null
+++ b/dev-python/btrfs/files/15-setup.patch
@@ -0,0 +1,32 @@
+https://github.com/knorrie/python-btrfs/issues/55
+https://github.com/knorrie/python-btrfs/commit/7d27aa6665bd38ad05b6eb990dd3bfd5394ee37f
+
+From: Hans van Kranenburg <hans@knorrie.org>
+Date: Sun, 10 May 2026 10:59:27 +0200
+Subject: [PATCH] setup.py: convert license classifier to SPDX
+
+setuptools >75.6.0 wants to see the license type specified differently.
+Use SPDX identifier instead of the now unused field in classifiers.
+
+Thanks Holger Hoffstätte, for reporting.
+---
+ setup.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index 744bf26..25ca48a 100644
+--- a/setup.py
++++ b/setup.py
+@@ -56,11 +56,11 @@ def get_version():
+ 'Development Status :: 5 - Production/Stable',
+ 'Intended Audience :: Developers',
+ 'Intended Audience :: System Administrators',
+- 'License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)',
+ 'Programming Language :: Python :: 3 :: Only',
+ 'Programming Language :: Python :: Implementation :: CPython',
+ 'Operating System :: POSIX :: Linux',
+ 'Topic :: System :: Filesystems',
+ 'Topic :: System :: Systems Administration',
+ ],
++ license='LGPL-3.0-or-later',
+ )
diff --git a/dev-python/build/Manifest b/dev-python/build/Manifest
index d51f06339120..c82de5156a4f 100644
--- a/dev-python/build/Manifest
+++ b/dev-python/build/Manifest
@@ -1,2 +1,3 @@
DIST build-1.4.4.gh.tar.gz 95523 BLAKE2B f8f9247d4fbc27930a578fb4f0abba1e24af3e546f9b8af4fdef12e1d7c782b78805c917cbad77a9e8d2de9bd3e86613c8dc4a08fd5421e5d46dea948a3b8bdc SHA512 e296ad08b28b29e1233799ef25ad54265a19ced4c1c09db178776907d8ecc81f18d3f6bcc0f2197b250e5791e8c46362ba23a6a2ca455cab9d9dd308e4a8fc59
DIST build-1.5.0.gh.tar.gz 95863 BLAKE2B 58bd95373d424cc06a4cb32da7d3e58743d0a5b1b59f92887ceb5d432d0f84ca92d3ba1e32c77580161c24b6f245103ddde2c674633e49f3a7a6f742e19e59ed SHA512 25f69c82047698e802feaf162a1ee334d32f83689ace3e2116d2329a10310b3bcfc6f2e42242d875f4781dffb364c95112819eb2bdaaecc0ebd4b9c00a94b99b
+DIST build-1.5.1.gh.tar.gz 119395 BLAKE2B bcf8d2e9abb06e8bda1e39667a3e29d562821fb2015ddcb6569de82e6a790c16f5a429a8cc2c58685287666d7759e462426168cbd65c28709fb967f713542e34 SHA512 d1ef87a2559ff29c0de4436ca2b9ed4e1f27660f81673afd40318586ff8fee581dc85936a00bf4b1afef8160746c0378a6a99c6c6887d64772450adc8387b2a3
diff --git a/dev-python/build/build-1.5.1.ebuild b/dev-python/build/build-1.5.1.ebuild
new file mode 100644
index 000000000000..d770a2a28362
--- /dev/null
+++ b/dev-python/build/build-1.5.1.ebuild
@@ -0,0 +1,78 @@
+# Copyright 2022-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit-core
+PYTHON_TESTED=( python3_{13..14} )
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+MY_P=${P/_p/.post}
+DESCRIPTION="A simple, correct PEP517 package builder"
+HOMEPAGE="
+ https://pypi.org/project/build/
+ https://github.com/pypa/build/
+"
+SRC_URI="
+ https://github.com/pypa/build/archive/${PV/_p/.post}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="test test-rust"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/packaging-24.0[${PYTHON_USEDEP}]
+ dev-python/pyproject-hooks[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ >=dev-python/setuptools-scm-6[${PYTHON_USEDEP}]
+ test? (
+ ${RDEPEND}
+ $(python_gen_cond_dep '
+ >=dev-python/filelock-3[${PYTHON_USEDEP}]
+ >=dev-python/pip-22.3[${PYTHON_USEDEP}]
+ dev-python/pytest[${PYTHON_USEDEP}]
+ >=dev-python/pytest-mock-2[${PYTHON_USEDEP}]
+ >=dev-python/pytest-rerunfailures-9.1[${PYTHON_USEDEP}]
+ >=dev-python/pytest-xdist-1.34[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-56.0.0[${PYTHON_USEDEP}]
+ >=dev-python/virtualenv-20.36.1[${PYTHON_USEDEP}]
+ >=dev-python/wheel-0.36.0[${PYTHON_USEDEP}]
+ test-rust? (
+ !s390? ( !sparc? ( >=dev-python/uv-0.1.18 ) )
+ )
+ ' "${PYTHON_TESTED[@]}")
+ )
+"
+
+python_test() {
+ if ! has "${EPYTHON/./_}" "${PYTHON_TESTED[@]}"; then
+ einfo "Skipping tests on ${EPYTHON}"
+ return
+ fi
+
+ local EPYTEST_DESELECT=(
+ # broken by uv being installed outside venv
+ tests/test_env.py::test_external_uv_detection_success
+ # Internet
+ 'tests/test_main.py::test_main_sdist_input_end_to_end[False]'
+ )
+
+ if ! has_version "dev-python/uv"; then
+ EPYTEST_DESELECT+=(
+ tests/test_env.py::test_uv_impl_install_cmd_well_formed
+ 'tests/test_env.py::test_venv_creation[uv-venv+uv-None]'
+ )
+ fi
+
+ local EPYTEST_PLUGINS=( pytest-{mock,rerunfailures} )
+ local EPYTEST_XDIST=1
+ epytest -m "not network"
+}
diff --git a/dev-python/cfn-lint/Manifest b/dev-python/cfn-lint/Manifest
index e0e84228591c..8483f6d4ab46 100644
--- a/dev-python/cfn-lint/Manifest
+++ b/dev-python/cfn-lint/Manifest
@@ -2,3 +2,5 @@ DIST cfn_lint-1.51.5.tar.gz 4114038 BLAKE2B 21932e73fdc81b2d8485ccb06dc7e527951a
DIST cfn_lint-1.51.5.tar.gz.provenance 10032 BLAKE2B 9e5830cdbb37342a07349ae71816a93abf1e943f91c836cfef6ceb39cf1b735373530b68418b0501488c92e338b493a09028e365fd6aed048ccc0e4958a6e863 SHA512 ca84d91a9860a2d4967fa431a134c92ed65e2bf304ed0b7b54763c04bcde16f5873baef0a3ce550bb58e5d308259660f62acaa0768ba494e7860f16e35a288ec
DIST cfn_lint-1.52.1.tar.gz 4487553 BLAKE2B 7424bb7e2f02d9c825db9c2dcbd0b7601baee7fd828b32458c8f18b12b97a1d0f2752ffbb16c7d4b779b488d2b86521864561cfa51122b489342463e277c7fe7 SHA512 3d10dd41165708b2c27d7aa75d2177e270ebd3da92543b17f164e12e3b07dd188cb781fcc73be272741cdb9f4dae95ec01bf699c62f6f62b800495c90d52dc44
DIST cfn_lint-1.52.1.tar.gz.provenance 10005 BLAKE2B 9745d99328ace70220263a5298f41d95f49d192fbef8130a4052681af0a06e18d57e25ad7922e4f93a535fd9b2ead070eb3b7f652a870c74d8a60e84bad3aea7 SHA512 166ff9ec2ceef4fa4bcb8b9b152a8423e976d9192bb3c7cb1621c620bbfdda4949ef3780b802fae278078853776eef47ef0b53ed39f571962b9cb54b6d64a356
+DIST cfn_lint-1.53.0.tar.gz 4517403 BLAKE2B 931000db6a89629932269e24f9269e950b43331b284ed62f7961d6039595b1adeb59c60327035d29f7b02bf7ae8b7283e5003e83df08b1d394eed794cd829eec SHA512 2237556bf0c5b5cd761899430225c885b6c10ee00e62c52d5ad9a945a316d66db1cdd14c7ed67e9a4dad3d71d70e915a7d3e45e5e3a2bb1d47ee42e4987dafd3
+DIST cfn_lint-1.53.0.tar.gz.provenance 10173 BLAKE2B d1fcc344b818f36e27305edb1c8669d898fcfb7ea989830b22bc05eba7f1f857cfd0ab909b159dd8bb6809920ae40db4157ef0c902bb4ae2966e460d3eedefaf SHA512 bf5330f59b9cb267c9453a3760ffa8a222bc50b9791c614112137a8eb888b77229f4c65c609949c0a145b632a49ac43331e737cd46f0b0a765099505821f71d6
diff --git a/dev-python/cfn-lint/cfn-lint-1.53.0.ebuild b/dev-python/cfn-lint/cfn-lint-1.53.0.ebuild
new file mode 100644
index 000000000000..85f616e39f72
--- /dev/null
+++ b/dev-python/cfn-lint/cfn-lint-1.53.0.ebuild
@@ -0,0 +1,60 @@
+# 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_{13..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.111.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
+ # crashes on 3.12+, probably pygraphviz
+ test/unit/module/test_api.py::TestLintByConfig::test_graph
+ # scripts missing from sdist
+ test/unit/module/maintenance/test_update_specs_from_pricing.py
+ )
+
+ # from tox.ini
+ local -x AWS_DEFAULT_REGION=us-east-1
+ epytest test/unit
+}
diff --git a/dev-python/cmd2/Manifest b/dev-python/cmd2/Manifest
index 087b65502232..e2c68260ef8a 100644
--- a/dev-python/cmd2/Manifest
+++ b/dev-python/cmd2/Manifest
@@ -2,3 +2,4 @@ DIST cmd2-2.6.2.tar.gz 592373 BLAKE2B 917ecd684c60c0a6c1b273ef52fa1e317f71522dfd
DIST cmd2-3.5.1.tar.gz 707325 BLAKE2B 5fd287a1a984c425cc7fdb3ef6c1f709b4af470b3280e715bcbad8200b52d5f8d698716eb540a9c9603ed090e2394b3aac319aaf80afc652459c127d968020bc SHA512 30414090390c1087173d2a259b5af2dc12228ab16892ea8617ec4168882565ebeef7e76a2c86b6e614fe45e3e454f74c49b633358b5da84d57365e7e70432054
DIST cmd2-4.0.0.tar.gz 813155 BLAKE2B b9b61d8a2e302f2acaee8420077f48d92728e910a73bbba9195600ed1dc7c4695abcdec5f0a08928798d24f83b333de076bc9f7d4c281c5cd502d1fd05be752b SHA512 a1df4bb215a098e2902826ff4686ec10664a4b9d8e0433c6103ba395f325ae56d8c4fa2d83d770b4cc9e4c1e5b456fa03a6bac6af9b7f8398a5fc61394cf15f7
DIST cmd2-4.1.0.tar.gz 849590 BLAKE2B c737f00ce542cefb2cde94fc07c0b7c09e00d7756bc0e14889a48b7ec785fad3c0109aa27ca3047f9d2ac8ae1e93ecbd8ef7ca268acd8230089edce3d4d3f16c SHA512 f688d8c66021fc347d86b2a00bfe7f65813f11295eb1ba4bdf4d1b12cc5fe00a1cf14189dec49f5681ba46870b60f1aecdc86c88a7cf59b453dcf88343cda0b6
+DIST cmd2-4.1.1.tar.gz 850451 BLAKE2B 61cbe7954a3de634be97cfc5da61025f2144da222d80e4b3e527668a3d97b48b07966d27df1f670aa30c64738844cf36bfa6c79ad9a4aeda916a3526c33dd746 SHA512 c087c83167abeb99f24b369a9af910ca47686f5f4dec7db61f4e49653c375b048c9c6f6fe33dc113ab48264225bcc784a02776086df7e8bb029fdd59b933cf51
diff --git a/dev-python/cmd2/cmd2-4.1.1.ebuild b/dev-python/cmd2/cmd2-4.1.1.ebuild
new file mode 100644
index 000000000000..dadcd6a482d2
--- /dev/null
+++ b/dev-python/cmd2/cmd2-4.1.1.ebuild
@@ -0,0 +1,59 @@
+# 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 optfeature virtualx pypi
+
+DESCRIPTION="Extra features for standard library's cmd module"
+HOMEPAGE="
+ https://github.com/python-cmd2/cmd2/
+ https://pypi.org/project/cmd2/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc64 ~riscv ~s390 ~x86"
+
+RDEPEND="
+ >=dev-python/prompt-toolkit-3.0.52[${PYTHON_USEDEP}]
+ >=dev-python/pyperclip-1.8.2[${PYTHON_USEDEP}]
+ >=dev-python/rich-15.0.0[${PYTHON_USEDEP}]
+ >=dev-python/rich-argparse-1.7.2[${PYTHON_USEDEP}]
+"
+# pyperclip uses clipboard backends in the following preference order:
+# pygtk, xclip, xsel, klipper, qtpy, pyqt5, pyqt4.
+# klipper is known to be broken in Xvfb, and therefore causes test
+# failures. to avoid them, we must ensure that one of the backends
+# preferred to it is available (i.e. xclip or xsel).
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ || (
+ x11-misc/xclip
+ x11-misc/xsel
+ )
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-mock )
+EPYTEST_RERUNS=5
+distutils_enable_tests pytest
+
+src_test() {
+ # tests rely on very specific text wrapping...
+ local -x COLUMNS=80
+ virtx distutils-r1_src_test
+}
+
+python_test() {
+ # TODO: tests_isolated?
+ nonfatal epytest -o addopts= tests || die
+}
+
+pkg_postinst() {
+ optfeature "IPython shell integration" dev-python/ipython
+}
diff --git a/dev-python/diskcache/diskcache-5.6.3.ebuild b/dev-python/diskcache/diskcache-5.6.3.ebuild
index ba556b606c74..b3b4f132bd61 100644
--- a/dev-python/diskcache/diskcache-5.6.3.ebuild
+++ b/dev-python/diskcache/diskcache-5.6.3.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/django-auth-ldap/django-auth-ldap-5.3.0.ebuild b/dev-python/django-auth-ldap/django-auth-ldap-5.3.0.ebuild
index a6ac4fd309f9..0e3cb83fecda 100644
--- a/dev-python/django-auth-ldap/django-auth-ldap-5.3.0.ebuild
+++ b/dev-python/django-auth-ldap/django-auth-ldap-5.3.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/django-polymorphic/Manifest b/dev-python/django-polymorphic/Manifest
index 3ec6a971a632..46a63711e0cd 100644
--- a/dev-python/django-polymorphic/Manifest
+++ b/dev-python/django-polymorphic/Manifest
@@ -1 +1,2 @@
DIST django-polymorphic-4.11.5.gh.tar.gz 405422 BLAKE2B 39d7b5b1f3d905b41a70c9fb0ee58913eeec7082b89ae4a895f201196cbec07d43d3b3a3889ccbf10e1fb73ed37c34942ec050c6c168aa7fd2793bf0bc4c5afa SHA512 17426c4dd859892335612961f7d672264142b7e1ac89c087f4c19abf4a1df603b36843ed8879f7b5aa4f9ed803f8490c31d76968769171b597dcb15270c1e5a2
+DIST django-polymorphic-4.11.6.gh.tar.gz 410488 BLAKE2B ea1b049a2bd2d44287accdbfb76aabf3faee737c2cfaf8ceeabe9ff79639a552dc9a40913101ab2fafdf5e59dab831e1d32ef53eb4463ab8966b986fbc60573b SHA512 daf19896f7a78ba01c4d2f8a6220657b4dc4a24ab185e28df41aabd9d7af7b6eb63fb0519ef3f4b369665c5b9503b6bd037d6fa188904b035074f4635c21a509
diff --git a/dev-python/django-polymorphic/django-polymorphic-4.11.6.ebuild b/dev-python/django-polymorphic/django-polymorphic-4.11.6.ebuild
new file mode 100644
index 000000000000..3395c394f2ff
--- /dev/null
+++ b/dev-python/django-polymorphic/django-polymorphic-4.11.6.ebuild
@@ -0,0 +1,59 @@
+# 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="Seamless Polymorphic Inheritance for Django Models"
+HOMEPAGE="
+ https://github.com/django-commons/django-polymorphic/
+ https://pypi.org/project/django-polymorphic/
+"
+SRC_URI="
+ https://github.com/django-commons/django-polymorphic/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ >=dev-python/django-4.2[$PYTHON_USEDEP]
+ >=dev-python/typing-extensions-4.12.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ $(python_gen_impl_dep sqlite)
+ ${RDEPEND}
+ dev-python/dj-database-url[${PYTHON_USEDEP}]
+ >=dev-python/packaging-24.2[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{django,mock} )
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ # requires playwright
+ src/polymorphic/tests/test_admin.py
+ # some of them require playwright, others break subsequent tests
+ src/polymorphic/tests/examples
+ # require django-test-migrations
+ src/polymorphic/tests/test_migration_managers.py
+ src/polymorphic/tests/test_migrations
+ src/polymorphic/tests/test_serialization.py
+ )
+ local EPYTEST_DESELECT=(
+ # require django-extra-views
+ src/polymorphic/tests/test_missing_coverage.py::TestPolymorphicFormSetMixin
+ )
+
+ rm -f conftest.py || die
+ epytest -o addopts=
+}
diff --git a/dev-python/django-registration/django-registration-5.2.1.ebuild b/dev-python/django-registration/django-registration-5.2.1.ebuild
index 02d8994bef34..550bec58945a 100644
--- a/dev-python/django-registration/django-registration-5.2.1.ebuild
+++ b/dev-python/django-registration/django-registration-5.2.1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2023-2025 Gentoo Authors
+# Copyright 2023-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/django-sortedm2m/django-sortedm2m-4.0.0.ebuild b/dev-python/django-sortedm2m/django-sortedm2m-4.0.0.ebuild
index 9b15fb568273..5147a2733ed8 100644
--- a/dev-python/django-sortedm2m/django-sortedm2m-4.0.0.ebuild
+++ b/dev-python/django-sortedm2m/django-sortedm2m-4.0.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/django-template-partials/django-template-partials-25.3.ebuild b/dev-python/django-template-partials/django-template-partials-25.3.ebuild
index bded78faf9ba..ef887d736597 100644
--- a/dev-python/django-template-partials/django-template-partials-25.3.ebuild
+++ b/dev-python/django-template-partials/django-template-partials-25.3.ebuild
@@ -1,9 +1,9 @@
-# Copyright 2025 Gentoo Authors
+# Copyright 2025-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
-DISTUTILS_USE_PEP517=flit
+DISTUTILS_USE_PEP517=flit-core
PYTHON_COMPAT=( python3_{13..14} )
inherit distutils-r1 pypi
diff --git a/dev-python/django/Manifest b/dev-python/django/Manifest
index 55dcf212c66f..0b050c11ad74 100644
--- a/dev-python/django/Manifest
+++ b/dev-python/django/Manifest
@@ -1,8 +1,4 @@
-DIST Django-5.2.15.checksum.txt 2678 BLAKE2B 0b7491d214b65731b3d4ca6b9f7628456b520abf96bfbba47daee1e038c58ae485cea7605463cc3902fe92417af93c8cb5ade0ccb3e0804abf98ddbbc3598960 SHA512 ea4588b01a5a0abb8a340bc0fbda7ede35a5ee835c02d4490999f582a1a56df7bffb9f3c5aa8461a2b84f193daee046a6467d980bc011a14918d5709830d438b
DIST Django-5.2.16.checksum.txt 2615 BLAKE2B d40332f538f509e60fb1f781fdd5f2994e4accda853f24dd6c82c0f289596a4458e567baf278489cecc13df3d9ae05ff1f5c349851c17aee25702ff44067a92e SHA512 6137ce7318f052de4750147eeaae0ae7ba6e10bc796fa257f01059f30039f3c3a5ad9db44a330948146bf1b272a9a6cec0428afafa17d5f4686aac2791663b65
-DIST Django-6.0.6.checksum.txt 2667 BLAKE2B ccd5eca7611836d94bf85c6636d7d8adf794aaa6624edc1f051cbffe6b8ebec84166ccf65c8e9ad771fdf6505e5a75e8079092519867f6b8077badccadb0e481 SHA512 d8d0ae636d3f63d46e0b4a922f24abb5ccb97074a07cedc8f195b051342c262f7190c954c36b966089980e562424efff9342a3d6e8913e622f260d7130c86aa9
DIST Django-6.0.7.checksum.txt 2604 BLAKE2B 2e119945d7bc98eb7363d3996168bf3d408563694caa4102dadd6650e98a00cf40f7560b1d0b0e6ee7e8266adeb7f762631e0670bf5be305d9a3add5ed85be7b SHA512 c51adb820ba8c14787b7c6ea5ab63556f1acd78c121db91d35f73ee275ce00ec91abda68aff027685fbcef09c8713e04d8fa091a30231a621f5d009c67d9a600
-DIST django-5.2.15.tar.gz 10873669 BLAKE2B 8ecd4b927ddce91a4e0b6d069824798b79098a43832072f8cef84c877bc0b237d25ae761452a5131d350eca4afe9dab5dd1c3e0fbb1af8d5c5ce6e88076341c8 SHA512 ac222ce040bd55dc580bfbc38d5c35802960fcd90070271f2f990f3a2f8c429c837b511fce1c45ef2d21ad518fdd47c26a6486a8f4696f3f2e9ee9e114421a3c
DIST django-5.2.16.tar.gz 10890894 BLAKE2B b2424a35e3d1f9fd964ded7c3e5fd8c517686c1a004b3507fb61ac9a6fd2002343975c4126068b109e78bea8a4e545dc6a2c97dd53f8b9128e04b6c0249406ea SHA512 7925e20a35f261c05db6666522420e1f0fbc34a6097ecd4b80e82a4b05e1e5cf0e595355c93a2c15e7d7dbe469fbef152518b747b9389807c99b73886dd00a5f
-DIST django-6.0.6.tar.gz 10905525 BLAKE2B 129a68d95c31159df5072a95725184784feb310c8e2389d687eb3a50ed066365fc3c981f936a399c3b570b18a3def442220a915a91bc8de1c602a04a0a9e7b2f SHA512 0e8d651d2efa1c368b2177ae48e3a3e17656ab28d1655a3b561acac88558c1db66160461e79b2ef6d589fb589e1afa90e63c5f51d28a215c4abb91de1299f01b
DIST django-6.0.7.tar.gz 10921299 BLAKE2B c37cee606d77faa96da298d4331fdd9803c56d45f18f29f271234cb7670055c1cf1abb40230837767cd120ba5c46b7dd030f50f3c1d16be7f8b252ea6b1ab143 SHA512 c9566b26b31d1f6a10de99621e8e9d8e0be1c6b33c643fad00c46f8a2049c7fa47a38b7a9fe51605ee41c0d8a14c27a3ff6bc771910190daf473fe05379690db
diff --git a/dev-python/django/django-5.2.15.ebuild b/dev-python/django/django-5.2.15.ebuild
deleted file mode 100644
index a9c65577d416..000000000000
--- a/dev-python/django/django-5.2.15.ebuild
+++ /dev/null
@@ -1,100 +0,0 @@
-# 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} )
-PYTHON_REQ_USE='sqlite?,threads(+)'
-
-inherit bash-completion-r1 distutils-r1 multiprocessing optfeature verify-sig
-
-DESCRIPTION="High-level Python web framework"
-HOMEPAGE="
- https://www.djangoproject.com/
- https://github.com/django/django/
- https://pypi.org/project/Django/
-"
-SRC_URI="
- https://media.djangoproject.com/releases/$(ver_cut 1-2)/${P}.tar.gz
- verify-sig? ( https://media.djangoproject.com/pgp/${P^}.checksum.txt )
-"
-
-LICENSE="BSD"
-# admin fonts: Roboto (media-fonts/roboto)
-LICENSE+=" Apache-2.0"
-# admin icons, jquery, xregexp.js
-LICENSE+=" MIT"
-SLOT="0/$(ver_cut 1-2)"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86 ~x64-macos"
-IUSE="doc sqlite test"
-RESTRICT="!test? ( test )"
-
-RDEPEND="
- <dev-python/asgiref-4[${PYTHON_USEDEP}]
- >=dev-python/asgiref-3.8.1[${PYTHON_USEDEP}]
- >=dev-python/sqlparse-0.3.1[${PYTHON_USEDEP}]
- sys-libs/timezone-data
-"
-BDEPEND="
- test? (
- $(python_gen_impl_dep sqlite)
- ${RDEPEND}
- >=dev-python/docutils-0.19[${PYTHON_USEDEP}]
- >=dev-python/jinja2-2.11.0[${PYTHON_USEDEP}]
- dev-python/numpy[${PYTHON_USEDEP}]
- dev-python/pillow[webp,${PYTHON_USEDEP}]
- dev-python/pyyaml[${PYTHON_USEDEP}]
- >=dev-python/selenium-4.8.0[${PYTHON_USEDEP}]
- >=dev-python/tblib-1.5.0[${PYTHON_USEDEP}]
- sys-devel/gettext
- )
- verify-sig? ( >=sec-keys/openpgp-keys-django-20241002 )
-"
-
-PATCHES=(
- "${FILESDIR}"/django-4.0-bashcomp.patch
- # d55979334dcefdb11626220000bec97ade09df07
- "${FILESDIR}"/django-5.2.7-py314.patch
-)
-
-distutils_enable_sphinx docs --no-autodoc
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/django.asc
-
-src_unpack() {
- if use verify-sig; then
- cd "${DISTDIR}" || die
- verify-sig_verify_signed_checksums \
- "${P^}.checksum.txt" sha256 "${P}.tar.gz"
- cd "${WORKDIR}" || die
- fi
-
- default
-}
-
-python_test() {
- # Tests have non-standard assumptions about PYTHONPATH,
- # and don't work with ${BUILD_DIR}/lib.
- PYTHONPATH=. "${EPYTHON}" tests/runtests.py --settings=test_sqlite \
- -v2 --parallel="${EPYTEST_JOBS:-$(makeopts_jobs)}" ||
- die "Tests fail with ${EPYTHON}"
-}
-
-python_install_all() {
- newbashcomp extras/django_bash_completion ${PN}-admin
- bashcomp_alias ${PN}-admin django-admin.py
-
- distutils-r1_python_install_all
-}
-
-pkg_postinst() {
- optfeature_header "Additional Backend support can be enabled via:"
- optfeature "MySQL backend support" dev-python/mysqlclient
- optfeature "PostgreSQL backend support" dev-python/psycopg:0
- optfeature_header
- optfeature "GEO Django" "sci-libs/gdal[geos]"
- optfeature "Memcached support" dev-python/pylibmc dev-python/python-memcached
- optfeature "ImageField Support" dev-python/pillow
- optfeature "Password encryption" dev-python/bcrypt
-}
diff --git a/dev-python/django/django-5.2.16.ebuild b/dev-python/django/django-5.2.16.ebuild
index b0422ac0daef..bb3edcdefc2e 100644
--- a/dev-python/django/django-5.2.16.ebuild
+++ b/dev-python/django/django-5.2.16.ebuild
@@ -26,7 +26,7 @@ LICENSE+=" Apache-2.0"
# admin icons, jquery, xregexp.js
LICENSE+=" MIT"
SLOT="0/$(ver_cut 1-2)"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86 ~x64-macos"
IUSE="doc sqlite test"
RESTRICT="!test? ( test )"
@@ -56,6 +56,12 @@ PATCHES=(
"${FILESDIR}"/django-4.0-bashcomp.patch
# d55979334dcefdb11626220000bec97ade09df07
"${FILESDIR}"/django-5.2.7-py314.patch
+ # based on upstream commits:
+ # b1a65eac7c09250d36e12464fc8fff2a401246b6
+ # ed13a58bf63df94508c8a0fe779da0b6a2bc26bb
+ # e7f539f813bd56a71ca3c1fbf379f47691002086
+ # plus my own fixes
+ "${FILESDIR}"/django-6.0.7-py315.patch
)
distutils_enable_sphinx docs --no-autodoc
diff --git a/dev-python/django/django-6.0.6.ebuild b/dev-python/django/django-6.0.6.ebuild
deleted file mode 100644
index c68dd7757e2f..000000000000
--- a/dev-python/django/django-6.0.6.ebuild
+++ /dev/null
@@ -1,100 +0,0 @@
-# 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} )
-PYTHON_REQ_USE='sqlite?,threads(+)'
-
-inherit bash-completion-r1 distutils-r1 multiprocessing optfeature verify-sig
-
-MY_P=${P/_}
-DESCRIPTION="High-level Python web framework"
-HOMEPAGE="
- https://www.djangoproject.com/
- https://github.com/django/django/
- https://pypi.org/project/Django/
-"
-SRC_URI="
- https://media.djangoproject.com/releases/$(ver_cut 1-2)/${MY_P}.tar.gz
- verify-sig? ( https://media.djangoproject.com/pgp/${MY_P^}.checksum.txt )
-"
-S=${WORKDIR}/${MY_P}
-
-LICENSE="BSD"
-# admin fonts: Roboto (media-fonts/roboto)
-LICENSE+=" Apache-2.0"
-# admin icons, jquery, xregexp.js
-LICENSE+=" MIT"
-SLOT="0/$(ver_cut 1-2)"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86 ~x64-macos"
-IUSE="doc sqlite test"
-RESTRICT="!test? ( test )"
-
-RDEPEND="
- <dev-python/asgiref-4[${PYTHON_USEDEP}]
- >=dev-python/asgiref-3.9.1[${PYTHON_USEDEP}]
- >=dev-python/sqlparse-0.5.0[${PYTHON_USEDEP}]
- sys-libs/timezone-data
-"
-BDEPEND="
- test? (
- $(python_gen_impl_dep sqlite)
- ${RDEPEND}
- >=dev-python/docutils-0.19[${PYTHON_USEDEP}]
- >=dev-python/jinja2-2.11.0[${PYTHON_USEDEP}]
- dev-python/numpy[${PYTHON_USEDEP}]
- dev-python/pillow[webp,${PYTHON_USEDEP}]
- dev-python/pyyaml[${PYTHON_USEDEP}]
- >=dev-python/selenium-4.8.0[${PYTHON_USEDEP}]
- >=dev-python/tblib-1.5.0[${PYTHON_USEDEP}]
- sys-devel/gettext
- )
- verify-sig? ( >=sec-keys/openpgp-keys-django-20240807 )
-"
-
-PATCHES=(
- "${FILESDIR}"/django-4.0-bashcomp.patch
-)
-
-distutils_enable_sphinx docs --no-autodoc
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/django.asc
-
-src_unpack() {
- if use verify-sig; then
- cd "${DISTDIR}" || die
- verify-sig_verify_signed_checksums \
- "${MY_P^}.checksum.txt" sha256 "${MY_P}.tar.gz"
- cd "${WORKDIR}" || die
- fi
-
- default
-}
-
-python_test() {
- # Tests have non-standard assumptions about PYTHONPATH,
- # and don't work with ${BUILD_DIR}/lib.
- PYTHONPATH=. "${EPYTHON}" tests/runtests.py --settings=test_sqlite \
- -v2 --parallel="${EPYTEST_JOBS:-$(makeopts_jobs)}" ||
- die "Tests fail with ${EPYTHON}"
-}
-
-python_install_all() {
- newbashcomp extras/django_bash_completion django-admin
- bashcomp_alias django-admin django-admin.py
-
- distutils-r1_python_install_all
-}
-
-pkg_postinst() {
- optfeature_header "Additional Backend support can be enabled via:"
- optfeature "MySQL backend support" dev-python/mysqlclient
- optfeature "PostgreSQL backend support" dev-python/psycopg:0
- optfeature_header
- optfeature "GEO Django" "sci-libs/gdal[geos]"
- optfeature "Memcached support" dev-python/pylibmc dev-python/python-memcached
- optfeature "ImageField Support" dev-python/pillow
- optfeature "Password encryption" dev-python/bcrypt
-}
diff --git a/dev-python/django/django-6.0.7.ebuild b/dev-python/django/django-6.0.7.ebuild
index 6344772aa325..a6bd7557d822 100644
--- a/dev-python/django/django-6.0.7.ebuild
+++ b/dev-python/django/django-6.0.7.ebuild
@@ -28,7 +28,7 @@ LICENSE+=" Apache-2.0"
# admin icons, jquery, xregexp.js
LICENSE+=" MIT"
SLOT="0/$(ver_cut 1-2)"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86 ~x64-macos"
IUSE="doc sqlite test"
RESTRICT="!test? ( test )"
@@ -56,6 +56,12 @@ BDEPEND="
PATCHES=(
"${FILESDIR}"/django-4.0-bashcomp.patch
+ # based on upstream commits:
+ # b1a65eac7c09250d36e12464fc8fff2a401246b6
+ # ed13a58bf63df94508c8a0fe779da0b6a2bc26bb
+ # e7f539f813bd56a71ca3c1fbf379f47691002086
+ # plus my own fixes
+ "${FILESDIR}"/django-6.0.7-py315.patch
)
distutils_enable_sphinx docs --no-autodoc
diff --git a/dev-python/django/files/django-6.0.7-py315.patch b/dev-python/django/files/django-6.0.7-py315.patch
new file mode 100644
index 000000000000..1aed43fb1947
--- /dev/null
+++ b/dev-python/django/files/django-6.0.7-py315.patch
@@ -0,0 +1,285 @@
+diff --git a/AUTHORS b/AUTHORS
+index 7ec645c8eb..53486d8f83 100644
+--- a/AUTHORS
++++ b/AUTHORS
+@@ -593,6 +593,7 @@ answer newbie questions, and generally made Django that much better:
+ Karderio <karderio@gmail.com>
+ Karen Tracey <kmtracey@gmail.com>
+ Karol Sikora <elektrrrus@gmail.com>
++ Kasey Steinhauer <kstein257@gmail.com>
+ Kasun Herath <kasunh01@gmail.com>
+ Katherine “Kati” Michel <kthrnmichel@gmail.com>
+ Kathryn Killebrew <kathryn.killebrew@gmail.com>
+diff --git a/django/contrib/admin/templatetags/base.py b/django/contrib/admin/templatetags/base.py
+index 3f8290d3b1..94b2011c3c 100644
+--- a/django/contrib/admin/templatetags/base.py
++++ b/django/contrib/admin/templatetags/base.py
+@@ -1,7 +1,7 @@
+ from inspect import getfullargspec
+
+ from django.template.library import InclusionNode, parse_bits
+-from django.utils.inspect import lazy_annotations
++from django.utils.inspect import getfullargspec
+
+
+ class InclusionAdminNode(InclusionNode):
+@@ -12,10 +12,9 @@ class InclusionAdminNode(InclusionNode):
+
+ def __init__(self, parser, token, func, template_name, takes_context=True):
+ self.template_name = template_name
+- with lazy_annotations():
+- params, varargs, varkw, defaults, kwonly, kwonly_defaults, _ = (
+- getfullargspec(func)
+- )
++ params, varargs, varkw, defaults, kwonly, kwonly_defaults, _ = getfullargspec(
++ func
++ )
+ bits = token.split_contents()
+ args, kwargs = parse_bits(
+ parser,
+diff --git a/django/template/base.py b/django/template/base.py
+index 9d75111e42..526a5f9ecf 100644
+--- a/django/template/base.py
++++ b/django/template/base.py
+@@ -60,7 +60,7 @@ from django.template.context import BaseContext
+ from django.utils.deprecation import django_file_prefixes
+ from django.utils.formats import localize
+ from django.utils.html import conditional_escape
+-from django.utils.inspect import lazy_annotations, signature
++from django.utils.inspect import getfullargspec, signature
+ from django.utils.regex_helper import _lazy_re_compile
+ from django.utils.safestring import SafeData, SafeString, mark_safe
+ from django.utils.text import get_text_list, smart_split, unescape_string_literal
+@@ -826,8 +826,7 @@ class FilterExpression:
+ # Check to see if a decorator is providing the real function.
+ func = inspect.unwrap(func)
+
+- with lazy_annotations():
+- args, _, _, defaults, _, _, _ = inspect.getfullargspec(func)
++ args, _, _, defaults, _, _, _ = getfullargspec(func)
+ alen = len(args)
+ dlen = len(defaults or [])
+ # Not enough OR Too many
+diff --git a/django/template/library.py b/django/template/library.py
+index 27af7a6969..a645717935 100644
+--- a/django/template/library.py
++++ b/django/template/library.py
+@@ -1,10 +1,10 @@
+ from collections.abc import Iterable
+ from functools import wraps
+ from importlib import import_module
+-from inspect import getfullargspec, unwrap
++from inspect import unwrap
+
+ from django.utils.html import conditional_escape
+-from django.utils.inspect import lazy_annotations
++from django.utils.inspect import getfullargspec
+
+ from .base import Node, Template, token_kwargs
+ from .exceptions import TemplateSyntaxError
+@@ -111,16 +111,15 @@ class Library:
+ """
+
+ def dec(func):
+- with lazy_annotations():
+- (
+- params,
+- varargs,
+- varkw,
+- defaults,
+- kwonly,
+- kwonly_defaults,
+- _,
+- ) = getfullargspec(unwrap(func))
++ (
++ params,
++ varargs,
++ varkw,
++ defaults,
++ kwonly,
++ kwonly_defaults,
++ _,
++ ) = getfullargspec(unwrap(func))
+ function_name = name or func.__name__
+
+ @wraps(func)
+@@ -167,16 +166,15 @@ class Library:
+
+ def dec(func):
+ nonlocal end_name
+- with lazy_annotations():
+- (
+- params,
+- varargs,
+- varkw,
+- defaults,
+- kwonly,
+- kwonly_defaults,
+- _,
+- ) = getfullargspec(unwrap(func))
++ (
++ params,
++ varargs,
++ varkw,
++ defaults,
++ kwonly,
++ kwonly_defaults,
++ _,
++ ) = getfullargspec(unwrap(func))
+ function_name = name or func.__name__
+
+ if end_name is None:
+@@ -251,16 +249,15 @@ class Library:
+ """
+
+ def dec(func):
+- with lazy_annotations():
+- (
+- params,
+- varargs,
+- varkw,
+- defaults,
+- kwonly,
+- kwonly_defaults,
+- _,
+- ) = getfullargspec(unwrap(func))
++ (
++ params,
++ varargs,
++ varkw,
++ defaults,
++ kwonly,
++ kwonly_defaults,
++ _,
++ ) = getfullargspec(unwrap(func))
+ function_name = name or func.__name__
+
+ @wraps(func)
+diff --git a/django/utils/inspect.py b/django/utils/inspect.py
+index a04669fc11..1b4d5733fd 100644
+--- a/django/utils/inspect.py
++++ b/django/utils/inspect.py
+@@ -3,16 +3,17 @@ import inspect
+ import threading
+ from contextlib import contextmanager
+
+-from django.utils.version import PY314
++from django.utils.version import PY314, PY315
+
+ if PY314:
+ import annotationlib
+
+- lock = threading.Lock()
+- safe_signature_from_callable = functools.partial(
+- inspect._signature_from_callable,
+- annotation_format=annotationlib.Format.FORWARDREF,
+- )
++ if not PY315:
++ lock = threading.Lock()
++ safe_signature_from_callable = functools.partial(
++ inspect._signature_from_callable,
++ annotation_format=annotationlib.Format.FORWARDREF,
++ )
+
+
+ @functools.lru_cache(maxsize=512)
+@@ -106,12 +107,12 @@ def lazy_annotations():
+ compatibility with Python 3.14+ deferred evaluation, patch the module-level
+ helper to provide the annotation_format that we are using elsewhere.
+
+- This private helper could be removed when there is an upstream solution for
+- https://github.com/python/cpython/issues/141560.
++ This private helper should only be used for Python 3.14, as
++ https://github.com/python/cpython/issues/141560 was fixed in 3.15.
+
+ This context manager is not reentrant.
+ """
+- if not PY314:
++ if PY315 or not PY314:
+ yield
+ return
+ with lock:
+@@ -123,6 +124,22 @@ def lazy_annotations():
+ inspect._signature_from_callable = original_helper
+
+
++def getfullargspec(*args, annotation_format=None, **kwargs):
++ """
++ A wrapper around inspect.getfullargspec that leaves deferred annotations
++ unevaluated on Python 3.14+, since they are not used in our case.
++ """
++ if PY315:
++ return inspect.getfullargspec(
++ *args, **kwargs, annotation_format=annotationlib.Format.FORWARDREF
++ )
++ if PY314:
++ with lazy_annotations():
++ return inspect.getfullargspec(*args, **kwargs)
++ else:
++ return inspect.getfullargspec(*args, **kwargs)
++
++
+ def signature(obj):
+ """
+ A wrapper around inspect.signature that leaves deferred annotations
+diff --git a/django/utils/version.py b/django/utils/version.py
+index 2bb650ac89..9f694070c5 100644
+--- a/django/utils/version.py
++++ b/django/utils/version.py
+@@ -20,6 +20,7 @@ PY311 = sys.version_info >= (3, 11)
+ PY312 = sys.version_info >= (3, 12)
+ PY313 = sys.version_info >= (3, 13)
+ PY314 = sys.version_info >= (3, 14)
++PY315 = sys.version_info >= (3, 15)
+
+
+ def get_version(version=None):
+diff --git a/tests/admin_scripts/tests.py b/tests/admin_scripts/tests.py
+index 0c27194568..9dc8f16013 100644
+--- a/tests/admin_scripts/tests.py
++++ b/tests/admin_scripts/tests.py
+@@ -38,7 +38,7 @@ from django.db.migrations.recorder import MigrationRecorder
+ from django.test import LiveServerTestCase, SimpleTestCase, TestCase, override_settings
+ from django.test.utils import captured_stderr, captured_stdout
+ from django.urls import path
+-from django.utils.version import PY313, get_docs_version
++from django.utils.version import PY313, PY315, get_docs_version
+ from django.views.static import serve
+
+ from . import urls
+@@ -2446,10 +2446,17 @@ class Discovery(SimpleTestCase):
+
+ class CommandDBOptionChoiceTests(SimpleTestCase):
+ def test_invalid_choice_db_option(self):
+- expected_error = (
+- r"Error: argument --database: invalid choice: 'deflaut' "
+- r"\(choose from '?default'?, '?other'?\)"
+- )
++ if PY315:
++ expected_error = (
++ r"Error: argument --database: invalid choice: 'deflaut', "
++ r"maybe you meant 'default'\? "
++ r"\(choose from '?default'?, '?other'?\)"
++ )
++ else:
++ expected_error = (
++ r"Error: argument --database: invalid choice: 'deflaut' "
++ r"\(choose from '?default'?, '?other'?\)"
++ )
+ args = [
+ "changepassword",
+ "createsuperuser",
+diff --git a/tests/utils_tests/test_html.py b/tests/utils_tests/test_html.py
+index 7e1a90cc93..91561a8de8 100644
+--- a/tests/utils_tests/test_html.py
++++ b/tests/utils_tests/test_html.py
+@@ -131,9 +131,6 @@ class TestUtilsHtml(SimpleTestCase):
+ (3, 10): (3, 10, 19),
+ (3, 9): (3, 9, 24),
+ }
+- htmlparser_fixed_security = (
+- sys.version_info >= min_fixed_security[sys.version_info[:2]]
+- )
+ # Similarly, there was a fix for terminating incomplete entities. See:
+ # https://github.com/python/cpython/commit/95296a9d
+ min_fixed_incomplete_entities = {
diff --git a/dev-python/docker/Manifest b/dev-python/docker/Manifest
index 1e77cd1696ad..4d881e4c4726 100644
--- a/dev-python/docker/Manifest
+++ b/dev-python/docker/Manifest
@@ -1 +1,2 @@
DIST docker-py-7.1.0.gh.tar.gz 253282 BLAKE2B 82eba285c1ea61956005dd0a9bfb66864fd30119a4b4c384d0d4350edeb331004d66bcdba6f20ec56ff48590b4a29a7b0fb07c6db6ecadfe96830337c37a535a SHA512 3dd73f2c3f3e92863496ef8277f481e64484e0e85a64dffe4e3287836823e4b118a5c8e73b2540e7188a0b755cd3f237ccc868a5bfb81d3bff1142fbb33755cb
+DIST docker-py-7.2.0.gh.tar.gz 255679 BLAKE2B 1a1d32ceb56f74a5c81f2e6fea5e6def76d442f79489c10ce2a7f8cac40fcc6089dcb049c31406ccd43267b7c45114fd751a762812e03aaacfe38f728cd1a422 SHA512 a4baaaf7850a51d7ca4ae71084b9bfa9d8f65bef3e1ba9d739f86aefac6319ca87d71e081d049f6bfa1e7ceec70395bcf309904aa316c911f7998b043aeb98bd
diff --git a/dev-python/docker/docker-7.2.0.ebuild b/dev-python/docker/docker-7.2.0.ebuild
new file mode 100644
index 000000000000..1e44770838d6
--- /dev/null
+++ b/dev-python/docker/docker-7.2.0.ebuild
@@ -0,0 +1,57 @@
+# 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
+
+MY_P=docker-py-${PV}
+DESCRIPTION="Python client for Docker"
+HOMEPAGE="
+ https://github.com/docker/docker-py/
+ https://pypi.org/project/docker/
+"
+SRC_URI="
+ https://github.com/docker/docker-py/archive/${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/requests-2.26.0[${PYTHON_USEDEP}]
+ >=dev-python/urllib3-1.26.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ >=dev-python/paramiko-2.4.3[${PYTHON_USEDEP}]
+ >=dev-python/websocket-client-1.3.0[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_sphinx docs \
+ 'dev-python/myst-parser'
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+src_prepare() {
+ # localhost has a better chance of being in /etc/hosts
+ sed -e 's:socket[.]gethostname():"localhost":' \
+ -i tests/unit/api_test.py || die
+
+ distutils-r1_src_prepare
+
+ export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
+}
+
+python_test() {
+ local -x TZ=UTC
+ epytest tests/unit
+}
diff --git a/dev-python/httpx/files/httpx-0.27.0-opt-trio.patch b/dev-python/httpx/files/httpx-0.27.0-opt-trio.patch
deleted file mode 100644
index 6c2c9e67255f..000000000000
--- a/dev-python/httpx/files/httpx-0.27.0-opt-trio.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-diff --git a/tests/concurrency.py b/tests/concurrency.py
-index a8ed558..d5ce803 100644
---- a/tests/concurrency.py
-+++ b/tests/concurrency.py
-@@ -5,11 +5,11 @@ Async environment-agnostic concurrency utilities that are only used in tests.
- import asyncio
-
- import sniffio
--import trio
-
-
- async def sleep(seconds: float) -> None:
- if sniffio.current_async_library() == "trio":
-+ import trio
- await trio.sleep(seconds) # pragma: no cover
- else:
- await asyncio.sleep(seconds)
diff --git a/dev-python/lazy-object-proxy/lazy-object-proxy-1.12.0.ebuild b/dev-python/lazy-object-proxy/lazy-object-proxy-1.12.0.ebuild
index 174f912e1e99..38970afe2d98 100644
--- a/dev-python/lazy-object-proxy/lazy-object-proxy-1.12.0.ebuild
+++ b/dev-python/lazy-object-proxy/lazy-object-proxy-1.12.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -31,15 +31,28 @@ distutils_enable_tests pytest
python_prepare_all() {
distutils-r1_python_prepare_all
- # No need to benchmark
- sed \
- -e '/benchmark/s:test_:_&:g' \
- -e '/pytest.mark.benchmark/d' \
- -i tests/test_lazy_object_proxy.py || die
-
if use native-extensions; then
unset SETUPPY_FORCE_PURE
else
export SETUPPY_FORCE_PURE=1
fi
}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # benchmarks
+ tests/test_lazy_object_proxy.py::test_perf
+ tests/test_lazy_object_proxy.py::test_proto
+ )
+
+ case ${EPYTHON} in
+ python3.15*)
+ EPYTEST_DESELECT+=(
+ tests/test_async_py3.py::test_await_12
+ tests/test_async_py3.py::test_await_13
+ tests/test_async_py3.py::test_await_5
+ )
+ esac
+
+ epytest -o strict_markers=False
+}
diff --git a/dev-python/mistune/Manifest b/dev-python/mistune/Manifest
index a827e5426a2a..aae90e39b37a 100644
--- a/dev-python/mistune/Manifest
+++ b/dev-python/mistune/Manifest
@@ -4,3 +4,5 @@ DIST mistune-3.3.1.tar.gz 111268 BLAKE2B 1d606bd52b94467198ca6db16affb57db8790c6
DIST mistune-3.3.1.tar.gz.provenance 9690 BLAKE2B e1225f9203d27b3ac072211f32483b1532a2ca4738b377a40a9d3c0133ecdc118d74946c170947f5e00f93e3acb3e162afa107417174bfba3b96c471548e12b7 SHA512 cd2441f40eacab200d853f7c32c134ecf91f5a5621b08b824be57db116ca50767ed4bd85264f09f5af0ad467dcf481472f418c6dc0140897baf976113276534e
DIST mistune-3.3.2.tar.gz 111284 BLAKE2B 113653fc6ce675cfe104cdfff8f8ca863a599fc676c3c7fc1da56d054dcf9e00fb12e8e35db9b69a5b393f02b0a09a1c9bee3a09768cae96aaeb8110c67ae3f2 SHA512 b1889c4de9619710bbe5fd0382a341d4794b1d1f88e9a217580a7c6e2db4d2291c57b6c0885e6635ae4e75b39df16b4019dc90e1f925beb7a6baa76690adc975
DIST mistune-3.3.2.tar.gz.provenance 9627 BLAKE2B 359a1b64f5e92d1febb2961d3d36354cd06c059c682f4bee6bb78b83b7143bc340748b6494ffa1cf61762d4b266dab66ce53a8383d15b431d660fd1bd44e6f02 SHA512 69e1fc198912e2318f6c2d8e93ab203a74c976cbc57733f4b525c769c8a9c80fce38ee70d5ead98969e157a7555ed8c95ec8493fbab891ee4b8ad28d7ad81514
+DIST mistune-3.3.3.tar.gz 115363 BLAKE2B b1808f9c206fac6b1606f2df7c4fe023d5623202cad5e9d76d23fc614f23ead7f7eb3a45f0ccdb71e31564348ae71795e5609cafc80b47ea6901fba1a343e60d SHA512 0f3c3172ceae06577585c54d9b8c03a74d5e802a14b44aff984ef3ec3134b58738c693e74759ec66fedb1d3e18e556ef68c8c7a7b66b6feadf7854eb13a4dafd
+DIST mistune-3.3.3.tar.gz.provenance 9768 BLAKE2B 68fbb2263cb4f6b23eabc9cbc6c83c4595b11102b5aaad758dc2be57d1bea1f21a93d51a5882e6249cf5b18a286cd91ebe7e01f9910a4148c49465065eb189c0 SHA512 c7b1feee3901c2e913f364ca5f2e1cb67428233e1ab26527b4846ed6d2f29dde1f60198ed463fe79141ddc28d4d07b1ac90be31feb42dac8932c1711a80c2cb7
diff --git a/dev-python/mistune/mistune-3.3.3.ebuild b/dev-python/mistune/mistune-3.3.3.ebuild
new file mode 100644
index 000000000000..785e0815b9d6
--- /dev/null
+++ b/dev-python/mistune/mistune-3.3.3.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/lepture/mistune
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="The fastest markdown parser in pure Python"
+HOMEPAGE="
+ https://github.com/lepture/mistune/
+ https://pypi.org/project/mistune/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/peewee/Manifest b/dev-python/peewee/Manifest
index 3f1467f0aca7..96393edbeb01 100644
--- a/dev-python/peewee/Manifest
+++ b/dev-python/peewee/Manifest
@@ -4,3 +4,4 @@ DIST peewee-4.0.8.gh.tar.gz 1001592 BLAKE2B 4b2328fa31aab3315511ce4320008d56e518
DIST peewee-4.0.9.gh.tar.gz 1002262 BLAKE2B 456af69c3d57d2e8344080cf40845163c9d0a9bd6b4a418940adc28ed388aea7faad8e3759973b23fcc8fb0e27e6a88c40b953081825f8a7acf6f8eb64c91894 SHA512 dd68b9e38dca84eff67c90f1f78cd6d59713c18b73faa8e2a36fa1b343e2e1f154a0dd57415803b763fd7368a151eb08c30312c72d1c2db665f7941a99a0ad8c
DIST peewee-4.1.0.gh.tar.gz 1002833 BLAKE2B 65d8317829f59aa67b2650bd8e690e99f291d0bb8383a5945b16387c0c6a313236ec0b9654e8c81faf868208b41e4776d1d5dc1b2ce220aefd5215c4bed8b4a8 SHA512 c24e46e339b84e68db86efb2a39bc4c15a6620dd91c6c28ecf982bcf74499febdc878707bc35cfe49dbee960ab88d2162032cfd57057adcf212da8119910d747
DIST peewee-4.1.1.gh.tar.gz 1035158 BLAKE2B 653ce44483664b81563b8e755ffc54cbf1295e932881c8c89df3f09c06e9fcc74a3544a6e6eaa400090c43bb3485a96aab8c99e8ec1e2be596491bc6a86eb915 SHA512 5d2451f791b6221418269f6c3fd87dd4f374d665f8d960e28763db8bcc45f690d75c935dc89c6b5a350b58bdf899155d0a32bc6e720d50db1731152fba9fdd62
+DIST peewee-4.1.2.gh.tar.gz 1046776 BLAKE2B 8a66ea828ad669db4d20cce089e485f75b9f792bc94fea8a1a1d46f9391e062f89c33cb2e7a34aae84645580967c586d4efff067d1aa4d7cfd6cc1da01fe90e9 SHA512 4a384817a8b3a146ac818b7327cc1ef4a02c0322409353ac29f64d9c66e1e6eeebb226db67fa6e4754662e82307b0abaa57b7526faa4dc7d90d911b8cc3094e9
diff --git a/dev-python/peewee/peewee-4.1.2.ebuild b/dev-python/peewee/peewee-4.1.2.ebuild
new file mode 100644
index 000000000000..354b1a91f483
--- /dev/null
+++ b/dev-python/peewee/peewee-4.1.2.ebuild
@@ -0,0 +1,83 @@
+# 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
+PYTHON_COMPAT=( python3_{13..14} )
+PYTHON_REQ_USE="sqlite"
+
+inherit distutils-r1
+
+DESCRIPTION="Small Python ORM"
+HOMEPAGE="
+ https://github.com/coleifer/peewee/
+ https://pypi.org/project/peewee/
+"
+SRC_URI="
+ https://github.com/coleifer/peewee/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+IUSE="examples +native-extensions test"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+ native-extensions? ( dev-db/sqlite:3= )
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ native-extensions? (
+ dev-python/cython[${PYTHON_USEDEP}]
+ )
+ test? (
+ dev-db/postgresql
+ dev-python/psycopg:0[${PYTHON_USEDEP}]
+ sys-libs/timezone-data
+ )
+"
+
+distutils_enable_sphinx docs \
+ dev-python/sphinx-rtd-theme
+
+src_prepare() {
+ default
+
+ # disable test failing on postgres 16
+ sed -e 's/test_timeout/_&/' -i tests/sqliteq.py || die
+}
+
+src_compile() {
+ if ! use native-extensions; then
+ local -x NO_SQLITE=1
+ fi
+
+ distutils-r1_src_compile
+}
+
+src_test() {
+ initdb -D "${T}"/pgsql || die
+ pg_ctl -w -D "${T}"/pgsql start -o "-h '' -k '${T}'" || die
+ createdb -h "${T}" peewee_test || die
+ psql -h "${T}" peewee_test -c 'create extension hstore;' || die
+
+ local -x PEEWEE_PSQL_HOST="${T}"
+ distutils-r1_src_test
+
+ pg_ctl -w -D "${T}"/pgsql stop || die
+}
+
+python_test() {
+ "${EPYTHON}" runtests.py -v 2 || die "tests failed under ${EPYTHON}"
+}
+
+python_install_all() {
+ use examples && DOCS=( examples/ )
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/plotly/Manifest b/dev-python/plotly/Manifest
index 66a6f82836bc..3d2d71230755 100644
--- a/dev-python/plotly/Manifest
+++ b/dev-python/plotly/Manifest
@@ -1 +1,2 @@
DIST plotly.py-6.8.0.gh.tar.gz 10539690 BLAKE2B d76f29669cc393bc8e842a95182f876b15d869cf75dff6ecdd7c4bc01de2239f6d3bcecf2e2a29171fead59e1cbac38820caa7ad9632b3b8d9fda4cbba528be0 SHA512 8be8a6f2cd6ba94bc18130524853679ce8f58d3b220eed06e508dc147209e94df51da68a9b8934288caddcbdf82ef93c3b50ad9c563a7298726383634c7e5ec4
+DIST plotly.py-6.9.0.gh.tar.gz 10539701 BLAKE2B 9bc7856d14acc8bac28c3981967485d51a741d948c275ccb0d7cc6462273d2a68cb74104eb54db98899e6890423bbd066b612804bc59f3657ac7611a4a1fd109 SHA512 6c302391beaa81c389ab574a700b3269cc517b1fc81552f57bb12f0d8c283c0757fba6bca2582a02bd29c98697e94900af3805288b42ff70904f7d54c51ada9e
diff --git a/dev-python/plotly/plotly-6.9.0.ebuild b/dev-python/plotly/plotly-6.9.0.ebuild
new file mode 100644
index 000000000000..8e0e8fb4c131
--- /dev/null
+++ b/dev-python/plotly/plotly-6.9.0.ebuild
@@ -0,0 +1,110 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+DISTUTILS_USE_PEP517=hatchling
+
+inherit distutils-r1
+
+MY_P=plotly.py-${PV/_}
+DESCRIPTION="Browser-based graphing library for Python"
+HOMEPAGE="
+ https://plotly.com/python/
+ https://github.com/plotly/plotly.py/
+ https://pypi.org/project/plotly/
+"
+SRC_URI="
+ https://github.com/plotly/plotly.py/archive/refs/tags/v${PV/_}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S="${WORKDIR}/${MY_P}"
+# The tests are not included in the PyPI tarball, to use the GitHub tarball
+# we have to skip npm, which means that the resulting install will
+# unfortunately lack the jupyterlab extension.
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+RDEPEND="
+ >=dev-python/narwhals-1.15.1[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/jupyter[${PYTHON_USEDEP}]
+ dev-python/jupyterlab[${PYTHON_USEDEP}]
+ dev-python/matplotlib[${PYTHON_USEDEP}]
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/pandas[${PYTHON_USEDEP}]
+ dev-python/pillow[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ dev-python/pytz[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/scikit-image[${PYTHON_USEDEP}]
+ dev-python/scipy[${PYTHON_USEDEP}]
+ dev-python/statsmodels[${PYTHON_USEDEP}]
+ dev-python/xarray[${PYTHON_USEDEP}]
+ )
+"
+
+# There are sphinx docs but we are missing a bunch of dependencies.
+# distutils_enable_sphinx ../../../doc/apidoc
+
+EPYTEST_PLUGINS=()
+# xdist is causing pretty nasty race conditions here
+distutils_enable_tests pytest
+
+EPYTEST_IGNORE=(
+ # requires polars
+ tests/test_optional/test_px
+
+ # requires kaleido
+ tests/test_optional/test_kaleido/test_kaleido.py
+)
+
+EPYTEST_DESELECT=(
+ # requires polars
+ 'tests/test_plotly_utils/validators/test_fig_deepcopy.py::test_deepcopy_dataframe[polars]'
+
+ # require anywidgets
+ 'tests/test_io/test_to_from_json.py::test_from_json_output_type[FigureWidget-FigureWidget0]'
+ 'tests/test_io/test_to_from_json.py::test_from_json_output_type[FigureWidget-FigureWidget1]'
+ 'tests/test_io/test_to_from_json.py::test_read_json_from_filelike[FigureWidget-FigureWidget0]'
+ 'tests/test_io/test_to_from_json.py::test_read_json_from_filelike[FigureWidget-FigureWidget1]'
+ 'tests/test_io/test_to_from_json.py::test_read_json_from_pathlib[FigureWidget-FigureWidget0]'
+ 'tests/test_io/test_to_from_json.py::test_read_json_from_pathlib[FigureWidget-FigureWidget1]'
+ 'tests/test_io/test_to_from_json.py::test_read_json_from_file_string[FigureWidget-FigureWidget0]'
+ 'tests/test_io/test_to_from_json.py::test_read_json_from_file_string[FigureWidget-FigureWidget1]'
+
+ # minor matplotlib incompatibility
+ plotly/matplotlylib/mplexporter/tests/test_basic.py::test_legend_dots
+ plotly/matplotlylib/mplexporter/tests/test_utils.py::test_linestyle
+
+ # fails in non-isolated env
+ test_init/test_dependencies_not_imported.py::test_dependencies_not_imported
+ test_init/test_lazy_imports.py::test_lazy_imports
+
+ # TODO
+ 'tests/test_plotly_utils/validators/test_colorscale_validator.py::test_acceptance_named[Inferno_r]'
+
+ # numpy 2.4
+ tests/test_optional/test_figure_factory/test_figure_factory.py::TestViolin::test_violin_fig
+ tests/test_optional/test_utils/test_utils.py::TestJSONEncoder::test_encode_customdata_datetime_homogeneous_dataframe
+ tests/test_optional/test_utils/test_utils.py::TestJSONEncoder::test_encode_customdata_datetime_series
+ tests/test_optional/test_utils/test_utils.py::TestJSONEncoder::test_numpy_datetime64
+)
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # stop installing junk "js" package
+ sed -i -e '/used by Jupyter extension/d' pyproject.toml || die
+}
+
+src_configure() {
+ # Do not try to fetch stuff with npm
+ export SKIP_NPM=1
+}
diff --git a/dev-python/pydata-sphinx-theme/Manifest b/dev-python/pydata-sphinx-theme/Manifest
index 26d039878a83..98ff62e52ac8 100644
--- a/dev-python/pydata-sphinx-theme/Manifest
+++ b/dev-python/pydata-sphinx-theme/Manifest
@@ -1,4 +1,6 @@
DIST pydata-sphinx-theme-0.18.0.gh.tar.gz 5000514 BLAKE2B 3c44cce6131dc5b4fa8db2161fce3b05dd9929457651edf6c74affeffc3a231b1f7718a2c5e8ee724c77d1f295c58a610fadc31446610801e5319fffb5921584 SHA512 ecd6d9e138007ca7c42807d3fad9d275abc1531f3360beeae18d8b960825a2704de1c136c6bc49e74f82a7bf29094fcee5c43da551d6b99831b4f8e82156dcfd
DIST pydata-sphinx-theme-0.19.0.gh.tar.gz 5000939 BLAKE2B 591572b2421812a943faa9d991916dcce034d36bdda414a47dbfd158edad48eee6082432fe64d0b70de75b47d087236ead374039d7fb282d9a203bf045de9185 SHA512 04cd626facb2f83a4518eb9279654d16d3e8e255d6037571a915047a680ff1c710402a97afc884a1cc73ba2db97673d342066aa11f3580c70055b5cff6ecc942
+DIST pydata-sphinx-theme-0.20.0.gh.tar.gz 5000413 BLAKE2B 8ca799f14f02cf9ce213662e2a6fd08c4cc83e96a63f192e58b27b2fea387f9ddd881dff3ca07fa7b8dc5049b2110e42a6cc480e254878d419975cc1a50a7b39 SHA512 1f0f9a0aee7901345e54db4715c07a16d8507819c14093fefa18a2c5b1e2685fa5c907b37361045d7302221e82f04fe0e1e4a05f182fcc2c8c89c5adbfd45351
DIST pydata_sphinx_theme-0.18.0-py3-none-any.whl 6200747 BLAKE2B d18565462011b51eff6b58370ded7567c0099a260464e89fdea3e6bcb266fb102c41c70e7ea1d3e11da832b2deab876071c4578b8844bc0567bfff2776a61011 SHA512 882f8826e0d3bf5076083808c678e0d560c7a2fb076b320481cb8845882dd267f42338a3a4f4faced8ceb51740847e45bd6452f79ac4e3f0a09c37850c0bcfbe
DIST pydata_sphinx_theme-0.19.0-py3-none-any.whl 6201132 BLAKE2B 0a4ed0b9182400d6362cde32f4cb5e319979ab63efa57a1e5bb4a01b31e894b20c78804a010384d4d0c9e0fb49a510bce538cca3a2731c1a9b5021fc88591abd SHA512 a93d58be7ad004aed61eb6737e8bdc51a724cb67335351dba8a8ca7ad7f5e62ff78499e9cb9e98a66d023ca376fdba4cae9338e8462b54b0a7c9f69ee7b34ffb
+DIST pydata_sphinx_theme-0.20.0-py3-none-any.whl 6201166 BLAKE2B 0595c8e40296a25b74282df03d94685425e6d09c6781280f1056a553438c7d9e11f4deb530b468c613f85c8158aaf54eb92b2908c36cb9d6c9ef779138eac85a SHA512 956914905da2ec4d3e1c88ff192fb02776c60e7dbbec29fa6b5622a0ae64cff2b4dd6f64ac4e11c0282a221d55a27a8a10d96e198a178abd9dbaf1c4f88d39c7
diff --git a/dev-python/pydata-sphinx-theme/pydata-sphinx-theme-0.20.0.ebuild b/dev-python/pydata-sphinx-theme/pydata-sphinx-theme-0.20.0.ebuild
new file mode 100644
index 000000000000..adbcb06cf235
--- /dev/null
+++ b/dev-python/pydata-sphinx-theme/pydata-sphinx-theme-0.20.0.ebuild
@@ -0,0 +1,52 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=standalone
+PYPI_NO_NORMALIZE=1
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+MY_P=${P/_/}
+DESCRIPTION="Bootstrap-based Sphinx theme from the PyData community"
+HOMEPAGE="
+ https://github.com/pydata/pydata-sphinx-theme/
+ https://pypi.org/project/pydata-sphinx-theme/
+"
+SRC_URI="
+ https://github.com/pydata/pydata-sphinx-theme/archive/v${PV/_/}.tar.gz
+ -> ${P}.gh.tar.gz
+ $(pypi_wheel_url)
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="BSD-with-disclosure"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ dev-python/accessible-pygments[${PYTHON_USEDEP}]
+ dev-python/babel[${PYTHON_USEDEP}]
+ dev-python/beautifulsoup4[${PYTHON_USEDEP}]
+ dev-python/docutils[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.7[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ <dev-python/sphinx-10[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-8.2[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=( pytest-{datadir,regressions} )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # Requires sphinx-intl
+ 'tests/test_build.py::test_translations'
+)
+
+python_compile() {
+ distutils_wheel_install "${BUILD_DIR}/install" \
+ "${DISTDIR}/$(pypi_wheel_name)"
+}
diff --git a/dev-python/pygobject/pygobject-3.56.3.ebuild b/dev-python/pygobject/pygobject-3.56.3.ebuild
index f88e649643cc..ca2daa7f33ff 100644
--- a/dev-python/pygobject/pygobject-3.56.3.ebuild
+++ b/dev-python/pygobject/pygobject-3.56.3.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="LGPL-2.1+"
SLOT="3"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ~ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos ~x64-solaris"
IUSE="+cairo test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/pypugjs/Manifest b/dev-python/pypugjs/Manifest
index 8f9a8ad3b783..1344d35674b0 100644
--- a/dev-python/pypugjs/Manifest
+++ b/dev-python/pypugjs/Manifest
@@ -1,2 +1 @@
-DIST pypugjs-6.0.2.gh.tar.gz 70319 BLAKE2B 8f32d986e8d56da195eae4998291b2ae1719d1dff7b4b2125713f775bc3214f725dfe19a813d8d3241d97237585b325f7db2cde13bee01008e870193f1e1db2a SHA512 a26f0a29dcc7edccfff104cbe567d60ec4df8b8001b309193f0c58aadfdf4a7f94ae969b586b8df6cb704d3b2afad4793d269fa5f1f148c16d81ecd1c24c4eac
DIST pypugjs-6.0.3.gh.tar.gz 70856 BLAKE2B 53821105315e652d94b0add995e062eebed07e59979e74e5119ada5c5ef0bcd068491174aee281b9b5c1cc60ecfa54cfb5a58679847e6f107c00629b8f48ce09 SHA512 4abbb2c0809d122a75d10940a473c1f952c0cda10f7efba204db45d54001a86cde27d152b48ff685068e4184607ca3d54f5d82ddc651d12384f3be3cd07c2166
diff --git a/dev-python/pypugjs/pypugjs-6.0.2.ebuild b/dev-python/pypugjs/pypugjs-6.0.2.ebuild
deleted file mode 100644
index 031ee999044a..000000000000
--- a/dev-python/pypugjs/pypugjs-6.0.2.ebuild
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright 1999-2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=poetry
-PYTHON_COMPAT=( python3_{13..14} )
-
-inherit distutils-r1 optfeature
-
-DESCRIPTION="Pug (Jade) syntax adapter for Django, Jinja2 and Mako templates"
-HOMEPAGE="
- https://github.com/kakulukia/pypugjs/
- https://pypi.org/project/pypugjs/
-"
-SRC_URI="
- https://github.com/kakulukia/pypugjs/archive/v${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="amd64 ~arm64 ~riscv"
-
-RDEPEND="
- >=dev-python/six-1.17.0[${PYTHON_USEDEP}]
- >=dev-python/charset-normalizer-3.4.4[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- >=dev-python/django-4.2.25[${PYTHON_USEDEP}]
- >=dev-python/flask-2.3.3[${PYTHON_USEDEP}]
- >=dev-python/jinja2-3.1.6[${PYTHON_USEDEP}]
- >=dev-python/mako-1.3.10[${PYTHON_USEDEP}]
- >=dev-python/tornado-6.5.2[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=( pytest-asyncio )
-distutils_enable_tests pytest
-
-src_prepare() {
- # poetry nonsense
- sed -i -e 's:\^:>=:' pyproject.toml || die
- distutils-r1_src_prepare
-}
-
-pkg_postinst() {
- optfeature "converting to Django output" dev-python/django
- optfeature "converting to Jinja2 output" dev-python/jinja2
- optfeature "converting to Mako output" dev-python/mako
- optfeature "converting to Tornado output" dev-python/tornado
-}
diff --git a/dev-python/python-neutronclient/Manifest b/dev-python/python-neutronclient/Manifest
index 98de232b972d..4f20e49dbd12 100644
--- a/dev-python/python-neutronclient/Manifest
+++ b/dev-python/python-neutronclient/Manifest
@@ -1 +1,2 @@
DIST python_neutronclient-12.0.0.tar.gz 185697 BLAKE2B 18e21a98eef52f487796a6d4a517d1468bf7140f49426cb2b7e70dcff7245d47565944b5981f29ca2bbfda35a8d2c872639064b04369780b07f43a3074cff908 SHA512 e85793c58cd55974be6fe215d9b08d1776111c523e0dcf3d5c93718cb7d8387e0dc91714971adcdd21e33f9d4fb583640f46a7700a506c76fc16f6493c1628da
+DIST python_neutronclient-13.0.0.tar.gz 179680 BLAKE2B 544b7d07d7062ad4634fc2dc8d4213dbb05681497fb891bb047fe05cc109e4f9aaf0e6a31ef82330348b3df30fb4b271e20cfce385b7b85a8cb454ad41c72764 SHA512 76873f4e523fd0514ee34a8b61656dd2c95b62fc19ed5d6a68462d751bf5c178e8674b1b3a4125a540de1bab5c6b97210b02c2a6164a4dbf6276183c7f087c50
diff --git a/dev-python/python-neutronclient/python-neutronclient-13.0.0.ebuild b/dev-python/python-neutronclient/python-neutronclient-13.0.0.ebuild
new file mode 100644
index 000000000000..ae0ee770f050
--- /dev/null
+++ b/dev-python/python-neutronclient/python-neutronclient-13.0.0.ebuild
@@ -0,0 +1,72 @@
+# 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 pypi
+
+DESCRIPTION="A client for the OpenStack Quantum API"
+HOMEPAGE="
+ https://opendev.org/openstack/python-neutronclient/
+ https://github.com/openstack/python-neutronclient/
+ https://pypi.org/project/python-neutronclient/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/pbr-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/cliff-3.4.0[${PYTHON_USEDEP}]
+ >=dev-python/debtcollector-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/netaddr-0.7.18[${PYTHON_USEDEP}]
+ >=dev-python/openstacksdk-1.5.0[${PYTHON_USEDEP}]
+ >=dev-python/osc-lib-1.8.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-i18n-3.15.3[${PYTHON_USEDEP}]
+ >=dev-python/oslo-log-3.36.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-serialization-2.19.1[${PYTHON_USEDEP}]
+ >=dev-python/oslo-utils-3.33.0[${PYTHON_USEDEP}]
+ >=dev-python/keystoneauth1-3.8.0[${PYTHON_USEDEP}]
+ >=dev-python/python-keystoneclient-3.8.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.14.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ >=dev-python/pbr-2.1.0[${PYTHON_USEDEP}]
+ test? (
+ dev-python/bandit[${PYTHON_USEDEP}]
+ dev-python/fixtures[${PYTHON_USEDEP}]
+ dev-python/oslotest[${PYTHON_USEDEP}]
+ dev-python/python-openstackclient[${PYTHON_USEDEP}]
+ dev-python/requests-mock[${PYTHON_USEDEP}]
+ dev-python/testtools[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests unittest
+
+src_prepare() {
+ # Needs osprofile
+ rm neutronclient/tests/unit/test_http.py || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ # functional tests require cloud instance access
+ eunittest -b neutronclient.tests.unit
+}
+
+python_install() {
+ distutils-r1_python_install
+ # stupid stupid stupid
+ local SITEDIR="${D}$(python_get_sitedir)" || die
+ cd "${SITEDIR}" || die
+ local egg=( python_neutronclient*.dist-info )
+ [[ -d ${egg[0]} ]] || die "python_quantumclient*.dist-info not found"
+ ln -s "${egg[0]}" "${egg[0]/neutron/quantum}" || die
+ ln -s neutronclient quantumclient || die
+ ln -s neutron quantumclient/quantum || die
+}
diff --git a/dev-python/sabctools/Manifest b/dev-python/sabctools/Manifest
index c71542cac956..4074b65dfec7 100644
--- a/dev-python/sabctools/Manifest
+++ b/dev-python/sabctools/Manifest
@@ -4,3 +4,4 @@ DIST sabctools-9.4.1.gh.tar.gz 9732977 BLAKE2B bafe308baa5057c10237015f84630d9e6
DIST sabctools-9.5.0.gh.tar.gz 9734930 BLAKE2B a559bf35f73bf5811754e2280d6d5fa8f2914d1b22bc726b3adfb73c5c2cd29df2b777ee3a3295f86f5d7e828b491ab49136a62d191553fcb43cdf7b213661de SHA512 15d164dd8f4883e2d6132398b5cf5f01570a5271c1437b335bdf5beb664a928068b18c0345698b7a4eb6addec902dbc4a2d1bffaac4b431d449ffe9d415bc3c6
DIST sabctools-9.5.1.gh.tar.gz 9734907 BLAKE2B c0067d436f4ae3b815a751e01e7e4c3e624a687cc64d36d99682d086ea8eafc188e20a5ccba0f731f5142a9a783c71368c0545a09355c92c7148401064f72a9b SHA512 aba629a4b939a3fac791dbb1b34352832656e56b976dc41f48c9ef548e3a659a1bc4ed5e4f9a8353e1ed19e7f23adaeb1e28d0778f83e9fe02762b04e6f0768a
DIST sabctools-9.6.0.gh.tar.gz 9734920 BLAKE2B dc0fc31d68ceede63359690cc22ac85e8c6a105d43d3749287ca21d27cd35fa584c5d5d7ae39f7fa8320b151a2ece82f2600abd3e1fbc519937eaacffa7172d8 SHA512 9c289c5a07c20baf0ae784bd1824985aa8a17a7f305b1e989577e2e8a079b06084323155e17ae838e9c13834c451ef6c5cd65c3d0b04674a8a949c9d1bf7c289
+DIST sabctools-9.6.1.gh.tar.gz 9735291 BLAKE2B 0b68b435a95bd58f0a586972eaae2b9b7fb12c985929ec18f4404a1030e516b1b7818eb2c519edf93657d77f204bc63519815edfbb1ac6ad960a4c9fc6e67e3f SHA512 26212b9264185ae4136c63452734f890e755b12f73cb4a634ce7f4dee1a400bbb5ec613754a39dd9e1d3e6b56f800fbff47c7ac669f0b9a51fd161e5d3ae0137
diff --git a/dev-python/sabctools/sabctools-9.6.1.ebuild b/dev-python/sabctools/sabctools-9.6.1.ebuild
new file mode 100644
index 000000000000..ec27e59ca3a8
--- /dev/null
+++ b/dev-python/sabctools/sabctools-9.6.1.ebuild
@@ -0,0 +1,40 @@
+# 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
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+MY_PN="sabctools"
+MY_P="${MY_PN}-${PV}"
+
+DESCRIPTION="Module providing raw yEnc encoding/decoding for SABnzbd"
+HOMEPAGE="
+ https://github.com/sabnzbd/sabctools/
+ https://pypi.org/project/sabctools/
+"
+SRC_URI="
+ https://github.com/sabnzbd/${MY_PN}/archive/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+BDEPEND="
+ test? (
+ dev-python/chardet[${PYTHON_USEDEP}]
+ dev-python/portend[${PYTHON_USEDEP}]
+ )
+"
+
+DOCS=( README.md doc/yenc-draft.1.3.txt )
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/scikit-build-core/Manifest b/dev-python/scikit-build-core/Manifest
index 574b5f50c486..3127518cc8c4 100644
--- a/dev-python/scikit-build-core/Manifest
+++ b/dev-python/scikit-build-core/Manifest
@@ -4,3 +4,5 @@ DIST scikit_build_core-1.0.0.tar.gz 466325 BLAKE2B 96436dc6b37ef6cbaf979e5ef5b38
DIST scikit_build_core-1.0.0.tar.gz.provenance 10105 BLAKE2B 6c00ce6d5944529cce68c0513608096d1c2411a66bcb86192215ee244f5a2100e7257ee248c7e85f4d2a329ab3e6f7f45b4c8211b767bfc66b01e89a8ed0b39f SHA512 d44767f3b547e856a45ac66d227db7a1b6b8bcb038028da3b5a52f4bf6059cffb9117c3a9876d7dfc3e97e9e73e351edce7a3ec26fcc7800ad25dde421ef929d
DIST scikit_build_core-1.0.1.tar.gz 468128 BLAKE2B 7b2ba289a5e79a8b1a71432e3ebabad093274c953c957d3c324ce864d8cb25b269156878dbc183ecf167452939f7bc8ad57d0d7768f8079a4de6ba903ab4de11 SHA512 4651484d1783ad9bd9946bd71fc70002371c16dbf8df0f6fa87d3d498061eb05583e1e825601d48d0e1ebf512e7f9ae308666b84dcc333e9461793f09ef74655
DIST scikit_build_core-1.0.1.tar.gz.provenance 9823 BLAKE2B 93694a5ed43fcc0cee035a2c19a39da00531a1f1e9a30983061b018ecbf971d142915b3e4e7baa7feda85b5c3ed6cdc641a79c4b5515447d800d8e7f36b6c382 SHA512 9dfdf575d24f80cae3f534a7a1e5334f1cf60867a09e747afba8bf56c534f48b64ee5d97aa77af6e1c076c9d180ff52a90adaa381195fcd1dec48693c4696e33
+DIST scikit_build_core-1.0.2.tar.gz 469825 BLAKE2B 11abd8868155e046a0c25b1b2596e2993cd13749c94b236005366e8eb8fbe7fe8b4a6965e54e5b2322a633602cf19d820dec2b2c90015cbc01962ed84ff1cf0b SHA512 9c2986e755b1ac1ace4c77033053084494551b9a41fbae5896f4a9cb9491e68bada713723b454c9a27c1abae214cc0de834c78805c2d8fb55d58ab95114a0b3d
+DIST scikit_build_core-1.0.2.tar.gz.provenance 10011 BLAKE2B c1c9d40f30db12f204447fa487c79ec5aaf2b6361d1a39bc4dfeb4d2188ff6b2f60294d7d3396630c6bb5c3071d29cfa4a5a5c77d9c66a56add636ca322b7fc1 SHA512 e68f3c66e62ab402d5eca861e7711cad3726e33d7378a79c0dbd3b78f31b0ead88d41928669f6cedfbf7372d7e00265e2344a1e6f59d093c0d75ba056efe13d9
diff --git a/dev-python/scikit-build-core/scikit-build-core-1.0.2.ebuild b/dev-python/scikit-build-core/scikit-build-core-1.0.2.ebuild
new file mode 100644
index 000000000000..96f33014caf2
--- /dev/null
+++ b/dev-python/scikit-build-core/scikit-build-core-1.0.2.ebuild
@@ -0,0 +1,52 @@
+# Copyright 2023-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYPI_VERIFY_REPO=https://github.com/scikit-build/scikit-build-core
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Build backend for CMake based projects"
+HOMEPAGE="
+ https://github.com/scikit-build/scikit-build-core/
+ https://pypi.org/project/scikit-build-core/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
+
+# we always want [pyproject] extra
+RDEPEND="
+ app-alternatives/ninja
+ dev-build/cmake
+ >=dev-python/packaging-23.2[${PYTHON_USEDEP}]
+ >=dev-python/pathspec-0.12.0[${PYTHON_USEDEP}]
+ >=dev-python/pyproject-metadata-0.5[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ dev-python/build[${PYTHON_USEDEP}]
+ >=dev-python/cattrs-22.2.0[${PYTHON_USEDEP}]
+ dev-python/fastjsonschema[${PYTHON_USEDEP}]
+ dev-python/pybind11[${PYTHON_USEDEP}]
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-subprocess )
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ # needs unpackaged validate_pyproject
+ tests/test_schema.py
+ )
+
+ epytest -m "not isolated and not network"
+}
diff --git a/dev-python/tpm2-pytss/files/tpm2-pytss-2.3.0-cryptography-fix-support-for-cryptography-47.patch b/dev-python/tpm2-pytss/files/tpm2-pytss-2.3.0-cryptography-fix-support-for-cryptography-47.patch
new file mode 100644
index 000000000000..65197b39940d
--- /dev/null
+++ b/dev-python/tpm2-pytss/files/tpm2-pytss-2.3.0-cryptography-fix-support-for-cryptography-47.patch
@@ -0,0 +1,46 @@
+From 5d15cad4bde28902a4becb8e2a8e915aba8abbd0 Mon Sep 17 00:00:00 2001
+From: Erik Larsson <who+github@cnackers.org>
+Date: Sun, 26 Apr 2026 11:50:55 +0200
+Subject: [PATCH 1/4] cryptography: fix support for cryptography 47.
+
+The abstract classes now require deepcopy support, so add that.
+
+Signed-off-by: Erik Larsson <who+github@cnackers.org>
+---
+ src/tpm2_pytss/cryptography.py | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+diff --git a/src/tpm2_pytss/cryptography.py b/src/tpm2_pytss/cryptography.py
+index 5b8432c..20dc34b 100644
+--- a/src/tpm2_pytss/cryptography.py
++++ b/src/tpm2_pytss/cryptography.py
+@@ -263,6 +263,14 @@ class tpm_rsa_private_key(rsa.RSAPrivateKey):
+ ectx=self._ectx, handle=self._handle, session=self._session
+ )
+
++ def __deepcopy__(self, memo: dict) -> "tpm_rsa_private_key":
++ """Retuns a copy of the private key.
++
++ Notes:
++ This behaves as a shallow copy as we don't copy the ESAPI context.
++ """
++ return self.__copy__()
++
+
+ class tpm_ecc_private_key(ec.EllipticCurvePrivateKey):
+ """Interface to a TPM ECC key for use with the cryptography module.
+@@ -440,3 +448,11 @@ class tpm_ecc_private_key(ec.EllipticCurvePrivateKey):
+ return tpm_ecc_private_key(
+ ectx=self._ectx, handle=self._handle, session=self._session
+ )
++
++ def __deepcopy__(self, memo: dict) -> "tpm_ecc_private_key":
++ """Retuns a copy of the private key.
++
++ Notes:
++ This behaves as a shallow copy as we don't copy the ESAPI context.
++ """
++ return self.__copy__()
+--
+2.54.0
+
diff --git a/dev-python/tpm2-pytss/tpm2-pytss-2.3.0-r2.ebuild b/dev-python/tpm2-pytss/tpm2-pytss-2.3.0-r3.ebuild
index d9960672485f..966f0df0dbad 100644
--- a/dev-python/tpm2-pytss/tpm2-pytss-2.3.0-r2.ebuild
+++ b/dev-python/tpm2-pytss/tpm2-pytss-2.3.0-r3.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -29,7 +29,7 @@ DEPEND="
RDEPEND="${DEPEND}
dev-python/cffi[${PYTHON_USEDEP}]
dev-python/asn1crypto[${PYTHON_USEDEP}]
- dev-python/cryptography[${PYTHON_USEDEP}]
+ >=dev-python/cryptography-47[${PYTHON_USEDEP}]
dev-python/pycparser[${PYTHON_USEDEP}]
dev-python/pyyaml[${PYTHON_USEDEP}]
"
@@ -41,12 +41,17 @@ BDEPEND="
PATCHES=(
"${FILESDIR}/${PN}-2.3.0-preprocess-as-C99.patch"
"${FILESDIR}/${PN}-2.3.0-use-CC-enviromental-variable.patch"
- # https://github.com/tpm2-software/tpm2-pytss/pull/643
- "${FILESDIR}/${P}-cryptography-45.patch"
+ "${FILESDIR}/${PN}-2.3.0-cryptography-45.patch"
+ "${FILESDIR}/${PN}-2.3.0-cryptography-fix-support-for-cryptography-47.patch"
)
+RESTRICT="!test? ( test )"
export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
-EPYTEST_PLUGINS=()
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
+python_test() {
+ local EPYTEST_DESELECT=(
+ # Current tpm2-tss specified a newer revision that the one tested for
+ test/test_encoding.py::ToolsTest::test_tools_decode_tpml_tagged_tpm_property
+ )
+ epytest
+}
diff --git a/dev-python/xarray/Manifest b/dev-python/xarray/Manifest
index 3c9c706c459d..b39177420b28 100644
--- a/dev-python/xarray/Manifest
+++ b/dev-python/xarray/Manifest
@@ -2,3 +2,5 @@ DIST xarray-2026.2.0.tar.gz 3111388 BLAKE2B d6dd10fb4e19c29a37c6ce3a4a68a80257dd
DIST xarray-2026.2.0.tar.gz.provenance 9725 BLAKE2B 4d7f17796fec575acc58eac98d6b9310cf3c67eccc361ac02f7170b005de247b6f45f60ebb0ebb67a8b984a53610925f86a18c3b4a88e999e83db8224bde2e63 SHA512 c5fda63b6790ed87293bbe95ea1f5ea223fc51f8518b9f545832f64979c7dbd3446604e22434978d5d564161a13c5a959ccc6f72a9ed336e268a8b5071dcd8c8
DIST xarray-2026.4.0.tar.gz 3132311 BLAKE2B 813374c3f0d5fdda30ab28a6c3d22f4c45d0732dedfb5dc15eb09ce4d3473cab963bb02aa5c77e013337891a3c657294d211943a673d04de1a123f3bfda5db46 SHA512 f70fc78978f255a413b61a113b2e9e5da15e2fcd5c290ec81b112bd6bb0cb8e55aacde684dc756bd1f6087970ac3c85c602a883fa149ff5ff0013c3f3cb32cd1
DIST xarray-2026.4.0.tar.gz.provenance 9447 BLAKE2B 0e9dd86e6d23f35c054c40b21e19c8ea309de73b6543980487cc25f9b93a56a714a1d37dba7c698b0d7ed47eb77eb26aff535d3f0d6e166050b5d8df9aff4c1b SHA512 76facef3f3d2a8cf8d10f75b0ee6842ee9ebb9db689b41db49cdbc74f40505878e8705ce0fba3a109dbd5925b4c331175ea8db5f11a9fe621ca6f5036564eaf8
+DIST xarray-2026.7.0.tar.gz 3145348 BLAKE2B b3ca423036b5262ea47054a66368e6ae78b9427f1dda3bcfeef6b694b7078662cc2c2408f452c9da2e29abc647c29ed0e26cc4e6f867864c2a25099395dfaccd SHA512 3a4b10edc57f02ee07c4bfda494d845b42e434e8ea34a8cf835be40bda897c0337865986f6a541d64b528e8d5d898faae18ea5af28b003c4e84530f99a9cbeda
+DIST xarray-2026.7.0.tar.gz.provenance 9964 BLAKE2B 6ea402c569d18d93dccff0c89927c4069794eb430d7e285862eca42fd7af4e0985fac4ab6fba9ab9d6fca8fc41ed50584f307f735fc58ffe042382e62feac6e0 SHA512 de91805a18a3e944a323c9abc658a87fa0aedd38f1e8bfa2d1bb70100c43671849f81b55d7fdc95755c1e8eb318b765b0731367837f5531aa8dfcff739ad6d52
diff --git a/dev-python/xarray/xarray-2026.7.0.ebuild b/dev-python/xarray/xarray-2026.7.0.ebuild
new file mode 100644
index 000000000000..4e961221ab4c
--- /dev/null
+++ b/dev-python/xarray/xarray-2026.7.0.ebuild
@@ -0,0 +1,156 @@
+# 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/pydata/xarray
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="N-D labeled arrays and datasets in Python"
+HOMEPAGE="
+ https://xarray.pydata.org/
+ https://github.com/pydata/xarray/
+ https://pypi.org/project/xarray/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+IUSE="big-endian"
+
+RDEPEND="
+ >=dev-python/numpy-1.26[${PYTHON_USEDEP}]
+ >=dev-python/pandas-2.2[${PYTHON_USEDEP}]
+ >=dev-python/packaging-24.2[${PYTHON_USEDEP}]
+"
+# note: most of the test dependencies are optional
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ dev-python/bottleneck[${PYTHON_USEDEP}]
+ dev-python/cftime[${PYTHON_USEDEP}]
+ dev-python/matplotlib[${PYTHON_USEDEP}]
+ !riscv? ( !x86? (
+ >=dev-python/netcdf4-1.6.0[bzip2,szip,${PYTHON_USEDEP}]
+ ) )
+ dev-python/toolz[${PYTHON_USEDEP}]
+ !hppa? ( >=dev-python/scipy-1.15[${PYTHON_USEDEP}] )
+ )
+"
+
+EPYTEST_PLUGINS=( hypothesis pytest-asyncio )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+ # indirect pin, sigh
+ sed -i -e '/numpy/d' pyproject.toml || die
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # TODO: these fail with filter errors even if netcdf4 is built
+ # with blosc/zstd support
+ 'xarray/tests/test_backends.py::TestNetCDF4Data::test_compression_encoding[zstd]'
+ 'xarray/tests/test_backends.py::TestNetCDF4Data::test_compression_encoding[blosc_lz]'
+ 'xarray/tests/test_backends.py::TestNetCDF4Data::test_compression_encoding[blosc_lz4]'
+ 'xarray/tests/test_backends.py::TestNetCDF4Data::test_compression_encoding[blosc_lz4hc]'
+ 'xarray/tests/test_backends.py::TestNetCDF4Data::test_compression_encoding[blosc_zlib]'
+ 'xarray/tests/test_backends.py::TestNetCDF4Data::test_compression_encoding[blosc_zstd]'
+ # requires h5netcdf package
+ xarray/tests/test_backends_datatree.py::TestNetCDF4DatatreeIO::test_open_datatree_specific_group
+ # NotImplementedError, seriously?
+ xarray/tests/test_backends.py::TestGenericNetCDF4InMemory::test_roundtrip_group_via_memoryview
+ )
+
+ if has_version ">=dev-python/numpy-2.4[${PYTHON_USEDEP}]" ; then
+ EPYTEST_DESELECT+=(
+ # TODO
+ xarray/tests/test_dataarray.py::TestDataArray::test_curvefit_helpers
+ xarray/tests/test_variable.py::TestIndexVariable::test_concat_periods
+ )
+ fi
+
+ if ! has_version ">=dev-python/scipy-1.4[${PYTHON_USEDEP}]" ; then
+ EPYTEST_DESELECT+=(
+ 'xarray/tests/test_missing.py::test_interpolate_na_2d[coords1]'
+ )
+
+ if ! has_version "dev-python/scipy[${PYTHON_USEDEP}]" ; then
+ EPYTEST_DESELECT+=(
+ xarray/tests/test_calendar_ops.py::test_interp_calendar
+ )
+ fi
+ fi
+
+ if use big-endian ; then
+ EPYTEST_DESELECT+=(
+ # Appears to be a numpy issue in display? See bug #916460.
+ 'xarray/tests/test_coding_times.py::test_roundtrip_datetime64_nanosecond_precision[1677-09-21T00:12:43.145224193-ns-int64-20-True]'
+ 'xarray/tests/test_coding_times.py::test_roundtrip_datetime64_nanosecond_precision[1970-09-21T00:12:44.145224808-ns-float64-1e+30-True]'
+ 'xarray/tests/test_coding_times.py::test_roundtrip_datetime64_nanosecond_precision[1677-09-21T00:12:43.145225216-ns-float64--9.223372036854776e+18-True]'
+ 'xarray/tests/test_coding_times.py::test_roundtrip_datetime64_nanosecond_precision[1677-09-21T00:12:43.145224193-ns-int64-None-False]'
+ 'xarray/tests/test_coding_times.py::test_roundtrip_datetime64_nanosecond_precision[1677-09-21T00:12:43.145225-us-int64-None-False]'
+ 'xarray/tests/test_coding_times.py::test_roundtrip_datetime64_nanosecond_precision[1970-01-01T00:00:01.000001-us-int64-None-False]'
+ 'xarray/tests/test_coding_times.py::test_roundtrip_datetime64_nanosecond_precision[1677-09-21T00:21:52.901038080-ns-float32-20.0-True]'
+ )
+ fi
+
+ if [[ ${ABI} != *64* ]]; then
+ EPYTEST_DESELECT+=(
+ # these tests hardcode object sizes for 64-bit arches
+ # https://github.com/pydata/xarray/issues/9127
+ xarray/tests/test_dataarray.py::TestDataArray::test_repr_multiindex
+ xarray/tests/test_dataarray.py::TestDataArray::test_repr_multiindex_long
+ xarray/tests/test_dataset.py::TestDataset::test_repr
+ xarray/tests/test_dataset.py::TestDataset::test_repr_multiindex
+ xarray/tests/test_datatree.py::TestRepr::test_doc_example
+ xarray/tests/test_datatree.py::TestRepr::test_repr_truncates_nodes
+ xarray/tests/test_formatting.py::test_array_repr_dtypes_unix
+
+ # converting timestamps into ns, causing an overflow
+ xarray/tests/test_cftimeindex.py::test_asi8
+ xarray/tests/test_coding_times.py::test_decode_cf_time_bounds
+ xarray/tests/test_coding_times.py::test_use_cftime_false_standard_calendar_in_range
+ xarray/tests/test_coding_times.py::test_decode_cf_datetime_non_standard_units
+
+ # https://github.com/pydata/xarray/issues/10956
+ 'xarray/tests/test_coding_times.py::test_decode_timedelta_via_units[decode_timedelta=False]'
+ xarray/tests/test_dataset.py::TestDataset::test_to_and_from_dataframe
+ xarray/tests/test_formatting.py::TestFormatting::test_diff_datatree_repr_equals
+ xarray/tests/test_formatting.py::test_repr_pandas_multi_index
+ 'xarray/tests/test_groupby.py::TestDataArrayGroupBy::test_groupby_reduce_keep_attrs[False-False]'
+ 'xarray/tests/test_groupby.py::TestDataArrayGroupBy::test_groupby_reduce_keep_attrs[False-True]'
+ 'xarray/tests/test_groupby.py::TestDataArrayGroupBy::test_groupby_reduce_keep_attrs[None-False]'
+ 'xarray/tests/test_groupby.py::TestDataArrayGroupBy::test_groupby_reduce_keep_attrs[None-True]'
+ 'xarray/tests/test_groupby.py::TestDataArrayGroupBy::test_groupby_reduce_keep_attrs[True-False]'
+ 'xarray/tests/test_groupby.py::TestDataArrayGroupBy::test_groupby_reduce_keep_attrs[True-True]'
+ xarray/tests/test_groupby.py::test_groupby_reduce_dimension_error
+ xarray/tests/test_namedarray.py::test_fake_target_chunksize_cftime
+ 'xarray/tests/test_namedarray.py::test_fake_target_chunksize[input_array0-1024-int64]'
+ xarray/tests/test_strategies.py::TestReduction::test_mean
+ xarray/tests/test_variable.py::TestVariable::test_reduce_keepdims
+ )
+ fi
+
+ case ${ARCH} in
+ arm64)
+ EPYTEST_DESELECT+=(
+ 'xarray/tests/test_backends.py::TestNetCDF4Data::test_roundtrip_mask_and_scale[dtype0-create_unsigned_false_masked_scaled_data-create_encoded_unsigned_false_masked_scaled_data]'
+ 'xarray/tests/test_backends.py::TestNetCDF4Data::test_roundtrip_mask_and_scale[dtype1-create_unsigned_false_masked_scaled_data-create_encoded_unsigned_false_masked_scaled_data]'
+ )
+ ;;
+ esac
+
+ if ! has_version "dev-python/seaborn[${PYTHON_USEDEP}]"; then
+ EPYTEST_DESELECT+=(
+ xarray/tests/test_plot.py::TestContour::test_colors
+ )
+ fi
+
+ epytest -o addopts=
+}