summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-01-03 18:52:36 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-01-03 18:52:36 +0000
commit5a043a384ea1e13a03a405e3a730ab73491ff84b (patch)
treeeace8aa67e461e39d2349dc1be9f82c933d92447 /dev-python
parentfc4021d91ad5f7af6988bf0def46a3856c4a1b52 (diff)
downloadbaldeagleos-repo-5a043a384ea1e13a03a405e3a730ab73491ff84b.tar.gz
baldeagleos-repo-5a043a384ea1e13a03a405e3a730ab73491ff84b.tar.xz
baldeagleos-repo-5a043a384ea1e13a03a405e3a730ab73491ff84b.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/boto3/Manifest1
-rw-r--r--dev-python/boto3/boto3-1.35.91.ebuild53
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.35.91.ebuild67
-rw-r--r--dev-python/django-tables2/Manifest3
-rw-r--r--dev-python/django-tables2/django-tables2-2.7.0.ebuild55
-rw-r--r--dev-python/django-tables2/django-tables2-2.7.5.ebuild (renamed from dev-python/django-tables2/django-tables2-2.7.1.ebuild)4
-rw-r--r--dev-python/gitdb/Manifest1
-rw-r--r--dev-python/gitdb/gitdb-4.0.12.ebuild65
-rw-r--r--dev-python/gitpython/Manifest3
-rw-r--r--dev-python/gitpython/gitpython-3.1.44.ebuild84
-rw-r--r--dev-python/google-api-python-client/Manifest1
-rw-r--r--dev-python/google-api-python-client/google-api-python-client-2.157.0.ebuild50
-rw-r--r--dev-python/inline-snapshot/Manifest1
-rw-r--r--dev-python/inline-snapshot/inline-snapshot-0.18.2.ebuild62
-rw-r--r--dev-python/nbconvert/Manifest1
-rw-r--r--dev-python/nbconvert/nbconvert-7.16.5.ebuild80
-rw-r--r--dev-python/openstackdocstheme/Manifest1
-rw-r--r--dev-python/openstackdocstheme/openstackdocstheme-3.4.1.ebuild29
-rw-r--r--dev-python/pillow/Manifest1
-rw-r--r--dev-python/pillow/pillow-11.1.0.ebuild147
-rw-r--r--dev-python/pytest-asyncio/Manifest1
-rw-r--r--dev-python/pytest-asyncio/pytest-asyncio-0.25.1.ebuild44
-rw-r--r--dev-python/ruamel-yaml/Manifest2
-rw-r--r--dev-python/ruamel-yaml/ruamel-yaml-0.18.8.ebuild (renamed from dev-python/ruamel-yaml/ruamel-yaml-0.17.40.ebuild)4
-rw-r--r--dev-python/sphinx-autodoc-typehints/Manifest1
-rw-r--r--dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.0.0.ebuild44
-rw-r--r--dev-python/uv/Manifest2
-rw-r--r--dev-python/uv/uv-0.5.14.ebuild170
-rw-r--r--dev-python/virtualenv/Manifest1
-rw-r--r--dev-python/virtualenv/virtualenv-20.28.1.ebuild118
-rw-r--r--dev-python/xcffib/Manifest1
-rw-r--r--dev-python/xcffib/xcffib-1.6.0.ebuild42
33 files changed, 1078 insertions, 62 deletions
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index 0aaed38c8360..a6617f673181 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -1,3 +1,4 @@
DIST boto3-1.35.81.gh.tar.gz 913534 BLAKE2B aab88ae95d4c93c8f54042ef2b3ec9defdafa4d9dd4dfb57ff1da896254bbc0d1ac8c4583b8870cc8cc814366f9ef79d67d69d45b0f373878d1c22dba465e523 SHA512 fcbc31295a94983620405dbaa0f32eee2149619cf113658c2955fe84ca541cb93e8d6d637d8d7b322e6b7252bfc390b4aff77b99af3978267c64cfa5effef1f3
DIST boto3-1.35.86.gh.tar.gz 917880 BLAKE2B 9ebf2ff2d8674013f6edead87ff92c649e977ff942fd50dfe80da4ac7a00f812735ff38791e5572b442524d335a838f4cb16fa0cc2bf54e51ef5932cb4639bf2 SHA512 4daa945a64381aca49175211b40893bf05ec733a92ab8b972c3c3e53cfd29ac8ca142c7903ee49ba75097bdf10f7a7b36d35ff0f8cb1501b12149c9f6dffdb65
DIST boto3-1.35.90.gh.tar.gz 918672 BLAKE2B a875ee6f59cac2a5f085719fed71090f8d717071dc7e2941075d12d3d98bd9850283c157a9176e890f67dfb78f68cd9f3942e0c8515629f70fa9cd9090eac837 SHA512 ab19a1fc324fb151cf781ac8de306af67edceb7190c6970e296c1f6dfc59e66da6c056a84aefbbe2509c7acb33ca3da81ad58736217ad45ccc16490eb4d96fc2
+DIST boto3-1.35.91.gh.tar.gz 919505 BLAKE2B bb241cf6b37fc3ae76437d1ccbb5077536b32e01daf7a1be6add18a4fa7c5e2663017c41c0edbfe9fc3b2313402480ff6a59fd405e9847320fac1699eefa4397 SHA512 46b325015d30613a894808aa93a3920f116fecb643668562d3e5c7dda6b6e5f7421f16cab5167004f104c97c21f0d127b893aa448587cb64e1ce32ec4576dbc2
diff --git a/dev-python/boto3/boto3-1.35.91.ebuild b/dev-python/boto3/boto3-1.35.91.ebuild
new file mode 100644
index 000000000000..121459c7c328
--- /dev/null
+++ b/dev-python/boto3/boto3-1.35.91.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+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 ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ >=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
+ >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
+ >=dev-python/s3transfer-0.10.0[${PYTHON_USEDEP}]
+"
+
+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() {
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/botocore/Manifest b/dev-python/botocore/Manifest
index 647c84999626..5d0bc84ad964 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -1,3 +1,4 @@
DIST botocore-1.35.81.gh.tar.gz 14142565 BLAKE2B f0c5c284f5f0964841ab0f84f278fa574b696df614d5602856065c83971bf366449b7ccb12fbf15c3bb734d894e6eb49be89e5dae3000bd8fd8913d2f465c5e6 SHA512 7b67d6f1dc31369afc3a4ebf109682b9365b59fe46635ef92b0e8adcaa16fbcaf7e1350a13537149dd0a55b60a57534a18d9f4e8bbb28663e8b2e427ece20819
DIST botocore-1.35.86.gh.tar.gz 14177900 BLAKE2B 7b80010dca6496eceedf8598f195ac80d4416c0f2032f931586a1db2ec100185e8c9591d6d42f549fb9a579b295178aee293c4b317717b4e9264d9adc54fb2c5 SHA512 28185963f5a3a937bddcd47a3afc13fab16b32ec092bfa7b6c007ff77cfe5e0ead1b253f708ff9077638185173034d484abee0d49f97475a88dfb00fad0c31c2
DIST botocore-1.35.90.gh.tar.gz 14180996 BLAKE2B d3b39e375d33af6515649c9be4b783e6dc7717ffc29460f83507ba392ae4b77a55811e07b7a0fc732e9d5d24b7bd0d1dee450ae7c62ef535c7f70d79936cb186 SHA512 8814eb1c435f753195f5189d21bb60ae29ccc007f16cd451bea0fc7650b6c5daf1c94e07e04d95b3c320974b2dcf27520aa3ab6b56b1351b22d137312d9dc3c2
+DIST botocore-1.35.91.gh.tar.gz 14185588 BLAKE2B 801124dc9a996a8e28341a3154dfea8dcb39b56da50a92bd57293023147c4f312f552eb658546abd74a66b7eb1be76a9cc6c2b31ec4fa1d1e1871d6b8e85d832 SHA512 047b3a742596ee956722f0a24faea41ce550f2dec4f0746791f545cd12c96c3e056f13d83f1f830aa57fc1e2325b5d4855a41fe89f5c89ceb6d0bce1dbde470d
diff --git a/dev-python/botocore/botocore-1.35.91.ebuild b/dev-python/botocore/botocore-1.35.91.ebuild
new file mode 100644
index 000000000000..27c19bdb74d8
--- /dev/null
+++ b/dev-python/botocore/botocore-1.35.91.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+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 ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+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_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
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/django-tables2/Manifest b/dev-python/django-tables2/Manifest
index a9e0cae3448b..2415090e620e 100644
--- a/dev-python/django-tables2/Manifest
+++ b/dev-python/django-tables2/Manifest
@@ -1,3 +1,2 @@
-DIST django-tables2-2.7.0.gh.tar.gz 431811 BLAKE2B 2a6a9d74fa50bab049b9b85fc4a2d39b5a54b0fbbcd51f86f2b196e51bd1a1ef36ccc032db13f7cde4f836419a2d92248571b4fb985a8aefb3be2bb740856a2b SHA512 9666dad152d995ef7772881ace4bb83fc41aca1675e0cc116791e4fbfb970de600bd8cc2310b5694558b11e479dea2fc84584a669f6a8127a4bb0a354d24e39a
-DIST django-tables2-2.7.1.gh.tar.gz 432168 BLAKE2B b23940aaa6c0bade140d9342179ed776e413ac081ae25f4f0a73a9ac2613f7e8bef8e672fc9fcaedbff56268aca0616a19304d0ce79f93961be67e465ea548eb SHA512 74d74f987c8b8347e505c3672e08b37ec5b5a1865a7ff6f394ff4ab5a2f2410356207466994bbe03e20f5c4340f0b212e7b40f95038f47df36760f7256e126ca
DIST django-tables2-2.7.4.gh.tar.gz 432112 BLAKE2B 9327506570115f8bfdce95a753327d3ce94d6b9b03c250ee141c368fb872c0778f6b194aae9518abcdf8c3e53ea522ee7690ab86460694a86624d1d2572b0f98 SHA512 19437869dabf5376eb243aa6529c3e70b4448248c021d3bf8e64865bcdac0d21c5fbc91e5fb0891ee449c04c735f84a68916e15ce3149f3a4d7c05b4866ba705
+DIST django-tables2-2.7.5.gh.tar.gz 432318 BLAKE2B fc762afeba6332f61a48fb4f404e261dd483661b880e7baefe39593f4f0ca34e11326214c8f6b4d4eaa53c425793e6d07c73f039f0366c4e60f9d4b0588d3cde SHA512 b85bba6f1674497036e1c0c1ae5f05c241d951670501f2ca78aa62f1f278b455b9bde04f9f877a9972f92451ea1b296b39052da0da43f624bc270c787441e48a
diff --git a/dev-python/django-tables2/django-tables2-2.7.0.ebuild b/dev-python/django-tables2/django-tables2-2.7.0.ebuild
deleted file mode 100644
index f168e564faf0..000000000000
--- a/dev-python/django-tables2/django-tables2-2.7.0.ebuild
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
-
-inherit distutils-r1
-
-DESCRIPTION="Table/data-grid framework for Django"
-HOMEPAGE="
- https://pypi.org/project/django-tables2/
- https://github.com/jieter/django-tables2/
-"
-SRC_URI="
- https://github.com/jieter/django-tables2/archive/v${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="BSD-2"
-SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
-IUSE="test"
-RESTRICT="!test? ( test )"
-
-RDEPEND="
- >=dev-python/django-3.2[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- ${RDEPEND}
- dev-python/django-filter[${PYTHON_USEDEP}]
- dev-python/lxml[${PYTHON_USEDEP}]
- || (
- (
- >=dev-python/django-4.2[${PYTHON_USEDEP}]
- dev-python/psycopg:*[${PYTHON_USEDEP}]
- )
- dev-python/psycopg:2[${PYTHON_USEDEP}]
- )
- dev-python/pytz[${PYTHON_USEDEP}]
- )
-"
-
-src_prepare() {
- # these tests require tablib
- rm tests/test_export.py tests/test_templatetags.py || die
-
- distutils-r1_src_prepare
-}
-
-python_test() {
- "${EPYTHON}" manage.py test -v 2 tests || die
-}
diff --git a/dev-python/django-tables2/django-tables2-2.7.1.ebuild b/dev-python/django-tables2/django-tables2-2.7.5.ebuild
index fca077508000..94a7d3a13ff5 100644
--- a/dev-python/django-tables2/django-tables2-2.7.1.ebuild
+++ b/dev-python/django-tables2/django-tables2-2.7.5.ebuild
@@ -1,9 +1,9 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
-DISTUTILS_USE_PEP517=setuptools
+DISTUTILS_USE_PEP517=hatchling
PYTHON_COMPAT=( python3_{9,10,11,12,13} )
inherit distutils-r1
diff --git a/dev-python/gitdb/Manifest b/dev-python/gitdb/Manifest
index 12b6ea50c6d3..c542131a2650 100644
--- a/dev-python/gitdb/Manifest
+++ b/dev-python/gitdb/Manifest
@@ -1 +1,2 @@
DIST gitdb-4.0.11.tar.gz 394469 BLAKE2B a79caf7def6094f1c99ff8621d7a01a9bc438e3ff54c73e5e9f598fada892e0209334edf73415476e31aef1cd0cd344fba6c8fe11c80cc157fdef5b9d2cda292 SHA512 024256481c553cd8e4b7fb0c0adc735aa6485c396e43aba73873cd4ad950ca686c3df7000a85acd1ac4f09db3f6ab613018739d24a8a69b4708150c171acf13d
+DIST gitdb-4.0.12.tar.gz 394684 BLAKE2B 5176e65a3991c2d2bfc925995029b4d8f35ec7206ff0b60400b82ffb20c2e4b8a15d6494c7841c18e642a17ec42491bd44fa8052469e48bfbd3ee3dc7f99c2c4 SHA512 10891c05dd238094b6b62ff0346529af98c1110eabc3c26992afb6cd767b938291a1e1ff6dc2c33423cbcf11c0a8daf0718232a20522c06a40fb5113a64a7b6a
diff --git a/dev-python/gitdb/gitdb-4.0.12.ebuild b/dev-python/gitdb/gitdb-4.0.12.ebuild
new file mode 100644
index 000000000000..37013196b3fa
--- /dev/null
+++ b/dev-python/gitdb/gitdb-4.0.12.ebuild
@@ -0,0 +1,65 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="GitDB is a pure-Python git object database"
+HOMEPAGE="
+ https://github.com/gitpython-developers/gitdb/
+ https://pypi.org/project/gitdb/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/smmap-3.0.1[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-vcs/git
+ )
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ # unpin deps
+ sed -i -e 's:,<[0-9.]*::' setup.py || die
+ distutils-r1_src_prepare
+}
+
+src_test() {
+ local i
+
+ mkdir "${T}"/repo || die
+ cd "${T}"/repo || die
+
+ for (( i = 0; i < 2500; ++i )); do
+ echo "${i}" > file"${i}" || die
+ done
+
+ git init || die
+ git config user.email "you@example.com" || die
+ git config user.name "Your Name" || die
+ git add -A || die
+ git commit -q -m ".." || die
+ git clone --bare "${T}"/repo "${T}"/repo.git || die
+ cd "${S}" || die
+
+ distutils-r1_src_test
+}
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ gitdb/test/performance
+ )
+ local -x GITDB_TEST_GIT_REPO_BASE="${T}"/repo.git
+ epytest
+}
diff --git a/dev-python/gitpython/Manifest b/dev-python/gitpython/Manifest
index 7e514497ee52..99e81a809a0f 100644
--- a/dev-python/gitpython/Manifest
+++ b/dev-python/gitpython/Manifest
@@ -1,4 +1,7 @@
DIST GitPython-3.1.43.gitbundle 10674326 BLAKE2B c430e6fec138077502dce16a1a100459c30134af7865a2e228646791465a7176ee3ef4db5cc83081f56b5e9877aeb4ba7e54b0526d6c2f594520335db4b48e9e SHA512 8c4b2fdf2e382393420bee1cb19929171d72e72669ac3ef96ff112119d803775aae92a14908b9bd51873f102ab85dfadd940b0789da6179b0f99354ae4b6d469
DIST GitPython-3.1.43.tar.gz 214149 BLAKE2B bc95520b839a43b88571678d7dadd3998a613a4e4f5b0e59f8740add7794767db2820e2d68a98940976ed27fa57b6e487895b1f3d2894b55f1d7f4e06757a461 SHA512 c193418bbb6ebb4f202c4f6aa95b731acf319d6560db176aa7126cf848a1f11eea9f432c4ff6812e8ddb5f8386b1fa5e10335fbf170f3ec3ac5fd2dcde783415
+DIST GitPython-3.1.44.gitbundle 10877475 BLAKE2B bb699c221be259d0be53cf9b0a8e62191547dda2dee911406b14ce753f92748dabe5827adf86a5e5a373f6113daa8d5c93490208bc7250589a37379debd42f93 SHA512 b20ac8f691e57283d0167ee0d021d559153e51fef1ae64811624e3efb96620566ed8625d6bfd0d17a6ea385534de78c60c34aaa4a9bf8416bd45da36e196ee43
DIST gitdb-4.0.11.gitbundle 1620355 BLAKE2B 8095193318d4262b8ebb04f35a0500eda8757057ed472dbaaece53e6afa6227e2b2c02a2be5daa5e4c0cc43dcbb5046555407d3d7c8dbed0bc5c415515032b8d SHA512 17e404b335a3c081f4058aeba5c57e5697a580f8ad7a280fde868968cf48f5a0852bfa45019eab730279582c0c536f8204e973d93af09da05908477329d73360
+DIST gitdb-4.0.12.gitbundle 1627457 BLAKE2B 2fb730fb72f682bac9a71a2b70af6ed476f69d57e00b323e669550793bcc330bd4b71575e0d0f008ed58f39e5beb622213ce2a10df6f512f1f5536b72c77871a SHA512 2fc619f511e373ad2ee51a108057e3a558dbfd68cbd7632244d7fd7914ed5fce99c182de5542264273de642e6e7680ee9b54a6da95224c562f43cf65e325db56
+DIST gitpython-3.1.44.tar.gz 214196 BLAKE2B e51d50bdfaf7a96d58f744dd632439ae7d0001df25af00a732a292970ec5666e7efe167ecf4b83c32ce8f1717e465fee419405d44a3963004bd5e04461fe86c2 SHA512 ad87a76510c980cce1cf24eb1097a11d3f44833708556af6ae46d7a3e5fe6610f6a9d00e03e2e03fc0b48bb1d4d546a854c574d99e46f364478d0264abc1d076
DIST smmap-5.0.1.gitbundle 362567 BLAKE2B 72c8b48ad3250a33b94218c145c02033dee84c1da5f1eea57983a58699262d51844be675330d95c7d64924b6aeaacd4b0a57e9a5acad3be184aaad62102202e7 SHA512 9ca8386bfec25d1562cdf1c2ee85f7edb15fd3f44ecd1abbef738979f12b82f0b0f39a06589203a39f89518d981d7129e35f64f2d855cd162cd964bdd87c8d18
diff --git a/dev-python/gitpython/gitpython-3.1.44.ebuild b/dev-python/gitpython/gitpython-3.1.44.ebuild
new file mode 100644
index 000000000000..b8c17c56986a
--- /dev/null
+++ b/dev-python/gitpython/gitpython-3.1.44.ebuild
@@ -0,0 +1,84 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_PN=GitPython
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_REQ_USE="threads(+)"
+
+inherit distutils-r1 pypi
+
+TEST_P=GitPython-${PV}
+GITDB_P=gitdb-4.0.12
+SMMAP_P=smmap-5.0.1
+
+DESCRIPTION="Library used to interact with Git repositories"
+HOMEPAGE="
+ https://github.com/gitpython-developers/GitPython/
+ https://pypi.org/project/GitPython/
+"
+SRC_URI+="
+ test? (
+ https://dev.gentoo.org/~mgorny/dist/${TEST_P}.gitbundle
+ https://dev.gentoo.org/~mgorny/dist/${GITDB_P}.gitbundle
+ https://dev.gentoo.org/~mgorny/dist/${SMMAP_P}.gitbundle
+ )
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ dev-vcs/git
+ >=dev-python/gitdb-4.0.1[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ >=dev-python/ddt-1.1.1[${PYTHON_USEDEP}]
+ dev-python/pytest-mock[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+ ' 3.10)
+ )
+"
+
+distutils_enable_tests pytest
+
+src_test() {
+ git config --global user.email "travis@ci.com" || die
+ git config --global user.name "Travis Runner" || die
+
+ git clone "${DISTDIR}/${TEST_P}.gitbundle" "${T}"/test || die
+ git clone "${DISTDIR}/${GITDB_P}.gitbundle" \
+ "${T}"/test/git/ext/gitdb || die
+ git clone "${DISTDIR}/${SMMAP_P}.gitbundle" \
+ "${T}"/test/git/ext/gitdb/gitdb/ext/smmap || die
+
+ cd "${T}"/test || die
+ git rev-parse HEAD > .git/refs/remotes/origin/master || die
+ # this tries to fetch again
+ sed -i -e '/git submodule/d' init-tests-after-clone.sh || die
+ TRAVIS=1 ./init-tests-after-clone.sh || die
+ cat test/fixtures/.gitconfig >> ~/.gitconfig || die
+
+ distutils-r1_src_test
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # performance tests are unreliable by design
+ test/performance
+ # unimportant and problematic
+ test/test_installation.py
+ # Internet
+ test/test_quick_doc.py::QuickDoc::test_cloned_repo_object
+ # TODO
+ test/test_submodule.py::TestSubmodule::test_base_rw
+ test/test_submodule.py::TestSubmodule::test_root_module
+ )
+
+ epytest -o addopts= test
+}
diff --git a/dev-python/google-api-python-client/Manifest b/dev-python/google-api-python-client/Manifest
index 0b35522f164e..73c2b627719a 100644
--- a/dev-python/google-api-python-client/Manifest
+++ b/dev-python/google-api-python-client/Manifest
@@ -1,2 +1,3 @@
DIST google_api_python_client-2.155.0.tar.gz 12195015 BLAKE2B f9c82244881b131dd022b7fd817c9fae28d4be6c6a1410e5e674d050e66b1361182515b6a220eef988ab4fdfa62e4cbf13de58e699672b3382a5449380c422e9 SHA512 1b2101d93178aa0507dcb2d8fb70c0ec29d547b87a7572508f56c87f8877b6c795f494c7f7f020df72d9e2b96083d135dfddd0ad80bb9d317189598fca9192f8
DIST google_api_python_client-2.156.0.tar.gz 12230345 BLAKE2B 9ce77dc4fd962bf24a8046678c4c21501218dd1f3a356b364bb6940f564f9aa7e6d99c77db9b5e7fea271a17b10726a668f07dec6ec344bad5cad98a1975a107 SHA512 c29debb48f8504eb6316ec465613e87b083429344a9e74f4f52d07f6edf47b017a7f0b539557de4ca575ead3dda1d4b0579faf483102fab407c15386277d5078
+DIST google_api_python_client-2.157.0.tar.gz 12275652 BLAKE2B 9410a8b7a726c94286f9ded13091cf59d8de7238c184969f0f7cdb9330f9e6e278b2953d70cf91fa2e74b62314f02ae5372ac661a04c426ac813cec651fdacbd SHA512 3ff7078c8ccb80d84cbe8df3eefb15f5a5c986285ab6e7b06e0b49962b96f25655fc618ae15416af2c33744673c36058ffcc9df3cc1b31fb78d4dd0f053a5d19
diff --git a/dev-python/google-api-python-client/google-api-python-client-2.157.0.ebuild b/dev-python/google-api-python-client/google-api-python-client-2.157.0.ebuild
new file mode 100644
index 000000000000..b2220fafe3ef
--- /dev/null
+++ b/dev-python/google-api-python-client/google-api-python-client-2.157.0.ebuild
@@ -0,0 +1,50 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Google API Client for Python"
+HOMEPAGE="
+ https://github.com/googleapis/google-api-python-client/
+ https://pypi.org/project/google-api-python-client/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ >=dev-python/httplib2-0.15[${PYTHON_USEDEP}]
+ <dev-python/httplib2-1[${PYTHON_USEDEP}]
+ >=dev-python/google-api-core-2.3.1[${PYTHON_USEDEP}]
+ >=dev-python/google-auth-1.35.0[${PYTHON_USEDEP}]
+ >=dev-python/google-auth-httplib2-0.1.0[${PYTHON_USEDEP}]
+ >=dev-python/uritemplate-3.0.0[${PYTHON_USEDEP}]
+ <dev-python/uritemplate-5[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/mock[${PYTHON_USEDEP}]
+ dev-python/pandas[${PYTHON_USEDEP}]
+ dev-python/parameterized[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # require Internet access (and credentials)
+ tests/test_discovery.py::DiscoveryErrors::test_credentials_and_credentials_file_mutually_exclusive
+ tests/test_discovery.py::DiscoveryFromDocument::test_api_endpoint_override_from_client_options_mapping_object
+ tests/test_discovery.py::Universe::test_client_options_universe_configured_with_mtls
+ tests/test_discovery.py::Universe::test_universe_env_var_configured_with_mtls
+ )
+
+ epytest tests
+}
diff --git a/dev-python/inline-snapshot/Manifest b/dev-python/inline-snapshot/Manifest
index cce86fcca321..07adecd7bd7c 100644
--- a/dev-python/inline-snapshot/Manifest
+++ b/dev-python/inline-snapshot/Manifest
@@ -1,2 +1,3 @@
DIST inline_snapshot-0.17.1.tar.gz 223166 BLAKE2B 119d14f075cd3ca27fea6f1e8a50f680a87cc62cd0568ba48462a63accf8708c88a2087b975fad56ed6ba0800d5a811af641baf09b28e875f6a5e7623add155b SHA512 a3e8a2be31aad87e6a45b74d2af5112911b94de7188b7a95d30513fc2328d573723485be13aca8d5cd71054ec315fa0a0bcfa75d7cce0e6ec80068b0fe25295c
DIST inline_snapshot-0.18.1.tar.gz 225403 BLAKE2B abf8465856f655bb08c307a455bed011a4c9f9f1ecabe620a47deed1bcbfa028f29f883511da97fc035de43ca2015cd37b8a3589db911fcbb09149dd5e11810d SHA512 3497b8dc651057aebe96295ac10d5b6ca764841b1a0b2e4e0838bb303965d1b385c24d050771e51b1fd607ba5cb6f68f9e23d43e809f3a6008f84df9a168b6b3
+DIST inline_snapshot-0.18.2.tar.gz 225777 BLAKE2B 45a08224c8ec94e052c6fe1393ad9b12c7227b9208ef591f323b15baf1622866fcfc7c91167fa8d352dae895e140348df4b3e492c52e441c2b8799e7f53f7ca5 SHA512 6b370ee0a717834f361b712ee71434362a44e92688df298572a801bbf384d69bd37816b2aa1e701f77d72149fff2ec5da9fceb24980af15de807973451e161c9
diff --git a/dev-python/inline-snapshot/inline-snapshot-0.18.2.ebuild b/dev-python/inline-snapshot/inline-snapshot-0.18.2.ebuild
new file mode 100644
index 000000000000..e12c0ff91780
--- /dev/null
+++ b/dev-python/inline-snapshot/inline-snapshot-0.18.2.ebuild
@@ -0,0 +1,62 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Create and update inline snapshots in your Python tests"
+HOMEPAGE="
+ https://15r10nk.github.io/inline-snapshot/
+ https://github.com/15r10nk/inline-snapshot/
+ https://pypi.org/project/inline-snapshot/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/asttokens-2.0.5[${PYTHON_USEDEP}]
+ >=dev-python/black-23.3.0[${PYTHON_USEDEP}]
+ >=dev-python/click-8.1.4[${PYTHON_USEDEP}]
+ >=dev-python/executing-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/rich-13.7.1[${PYTHON_USEDEP}]
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/tomli-2.0.0[${PYTHON_USEDEP}]
+ ' 3.10)
+"
+BDEPEND="
+ test? (
+ dev-python/attrs[${PYTHON_USEDEP}]
+ >=dev-python/dirty-equals-0.7.0[${PYTHON_USEDEP}]
+ >=dev-python/hypothesis-6.75.5[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/mypy[${PYTHON_USEDEP}]
+ ' 'python*')
+ >=dev-python/pydantic-2[${PYTHON_USEDEP}]
+ >=dev-python/pytest-freezer-0.4.8[${PYTHON_USEDEP}]
+ >=dev-python/pytest-mock-3.14.0[${PYTHON_USEDEP}]
+ >=dev-python/pytest-subtests-0.11.0[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # requires pyright
+ 'tests/test_typing.py::test_typing[pyright]'
+ )
+
+ local -x COLUMNS=80
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local -x PYTEST_PLUGINS=inline_snapshot.pytest_plugin,pytest_freezer,pytest_subtests.plugin,xdist.plugin
+ local -x PYTHONPATH=${S}/src
+ epytest -p pytest_mock
+}
diff --git a/dev-python/nbconvert/Manifest b/dev-python/nbconvert/Manifest
index 9e8b0cc1e577..19ac8166a969 100644
--- a/dev-python/nbconvert/Manifest
+++ b/dev-python/nbconvert/Manifest
@@ -1 +1,2 @@
DIST nbconvert-7.16.4.tar.gz 854422 BLAKE2B f04a8fbffde70e08736d13a3db3278c9248f742b27688eb56760b9ff46c58aec63aa05a4cff256e5929009c3f76d760ce71209f3c49b40af374f06b073ddd661 SHA512 f9793ce89f18530492e1e9aeba3759ac6ae8aa8e0459be52928689a58b0d816128d275bdf9061ec9f33a047e0b6c8d4d83e5a81da556700e0add48374f15fcd8
+DIST nbconvert-7.16.5.tar.gz 856367 BLAKE2B d1b44e2665a4a96c2d7a78c986b93c5e9e5e12bc984f20735a03e1fb28d81b43cc7b1d6ebf0a8dad56b470e5e683c672f096c9fd98d22852f5c8fe94a9c2ce44 SHA512 703ed3e33efc2a42c8bde84829b82a8e9ef2313c1766bfc0ab642743173ade642d4a796afa9ef489ba2f58bd75fc0ce6e50009676e2ef1d3848967ddf775f861
diff --git a/dev-python/nbconvert/nbconvert-7.16.5.ebuild b/dev-python/nbconvert/nbconvert-7.16.5.ebuild
new file mode 100644
index 000000000000..d66830d0e044
--- /dev/null
+++ b/dev-python/nbconvert/nbconvert-7.16.5.ebuild
@@ -0,0 +1,80 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi virtualx
+
+DESCRIPTION="Converting Jupyter Notebooks"
+HOMEPAGE="
+ https://nbconvert.readthedocs.io/
+ https://github.com/jupyter/nbconvert/
+ https://pypi.org/project/nbconvert/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ dev-python/beautifulsoup4[${PYTHON_USEDEP}]
+ dev-python/bleach[${PYTHON_USEDEP}]
+ dev-python/defusedxml[${PYTHON_USEDEP}]
+ >=dev-python/jinja2-3.0[${PYTHON_USEDEP}]
+ >=dev-python/jupyter-core-4.7[${PYTHON_USEDEP}]
+ dev-python/jupyterlab-pygments[${PYTHON_USEDEP}]
+ >=dev-python/markupsafe-2.0[${PYTHON_USEDEP}]
+ <dev-python/mistune-4[${PYTHON_USEDEP}]
+ >=dev-python/nbclient-0.5.0[${PYTHON_USEDEP}]
+ >=dev-python/nbformat-5.7[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ >=dev-python/pandocfilters-1.4.1[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.4.1[${PYTHON_USEDEP}]
+ >=dev-python/traitlets-5.1.1[${PYTHON_USEDEP}]
+"
+# via bleach[css]
+RDEPEND+="
+ dev-python/tinycss2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/ipykernel[${PYTHON_USEDEP}]
+ >=dev-python/ipywidgets-7.5[${PYTHON_USEDEP}]
+ dev-python/flaky[${PYTHON_USEDEP}]
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_test() {
+ virtx distutils-r1_src_test
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # TODO
+ tests/test_nbconvertapp.py::TestNbConvertApp::test_convert_full_qualified_name
+ tests/test_nbconvertapp.py::TestNbConvertApp::test_post_processor
+ # crazy qtweb* stuff, perhaps permissions
+ tests/exporters/test_qtpdf.py::TestQtPDFExporter::test_export
+ tests/exporters/test_qtpng.py::TestQtPNGExporter::test_export
+ )
+
+ # virtx implies nonfatal, make it explicit to avoid confusion
+ # tests/preprocessors/test_execute.py are extremely flaky over output
+ # buffering
+ nonfatal epytest --reruns=10 || die
+}
+
+pkg_postinst() {
+ if ! has_version virtual/pandoc; then
+ einfo "Pandoc is required for converting to formats other than Python,"
+ einfo "HTML, and Markdown. If you need this functionality, install"
+ einfo "app-text/pandoc or app-text/pandoc-bin."
+ fi
+}
diff --git a/dev-python/openstackdocstheme/Manifest b/dev-python/openstackdocstheme/Manifest
index 826f6c5c2428..d048be4775fb 100644
--- a/dev-python/openstackdocstheme/Manifest
+++ b/dev-python/openstackdocstheme/Manifest
@@ -1 +1,2 @@
DIST openstackdocstheme-3.4.0.tar.gz 1256314 BLAKE2B 595f1a8b1729cd79e998d4de9817daf23365b4e1b9d8361afbddbd20ecd8ead3c07662a5ff0de70986547ed3cad32785c5182cdf1fadfea455d6824036b5f59b SHA512 34cc9a2f4d1f6cda86e4f4b411edaf3d3fc229c2384ce160cb9b65068054793867b14c40beaf9f4b46948da8f22f70a68d5a3868c4b8605ade0aa2b0d8750828
+DIST openstackdocstheme-3.4.1.tar.gz 1256381 BLAKE2B df100b6092c8c3635b80f01cb31de4cc3ded146289c40c77049c6f2f993bd779147d295b7867b23f930d44590e89d5d26af7b03e935077ca74702122f3699113 SHA512 93473465e6ce5199b20f738232f71d837d537052fa273efa3dc11448ec4d86a7f6a0253baac4fbcec7f3378d1e6683982c14d91dd1f9f2fd7638d1fe96791a33
diff --git a/dev-python/openstackdocstheme/openstackdocstheme-3.4.1.ebuild b/dev-python/openstackdocstheme/openstackdocstheme-3.4.1.ebuild
new file mode 100644
index 000000000000..528f5d259e8a
--- /dev/null
+++ b/dev-python/openstackdocstheme/openstackdocstheme-3.4.1.ebuild
@@ -0,0 +1,29 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Theme and extension support for Sphinx documentation"
+HOMEPAGE="
+ https://docs.openstack.org/openstackdocstheme/latest/
+ https://opendev.org/openstack/openstackdocstheme/
+ https://github.com/openstack/openstackdocstheme/
+ https://pypi.org/project/openstackdocstheme/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ppc64 ~riscv ~s390 ~x86"
+
+BDEPEND="
+ >dev-python/pbr-2.1.0[${PYTHON_USEDEP}]
+"
+RDEPEND="
+ ${BDEPEND}
+ >=dev-python/dulwich-0.15.0[${PYTHON_USEDEP}]
+"
diff --git a/dev-python/pillow/Manifest b/dev-python/pillow/Manifest
index 1aedaeda6b78..f4a38677adf2 100644
--- a/dev-python/pillow/Manifest
+++ b/dev-python/pillow/Manifest
@@ -2,3 +2,4 @@ DIST pillow-10.2.0.gh.tar.gz 46244216 BLAKE2B 27bb076f0adade34295e6dfec5c5a14994
DIST pillow-10.3.0.gh.tar.gz 46636534 BLAKE2B 523486a3adc8905dbe0691e7092654e7884c34703f351e228a49b1cb6e9cffdf504b842aa0c83b18afb8f0dbe1265274044003aba540d6427ec3cd46ddda1498 SHA512 11095f435ba30ac364575271de4c94d498b6fc1d67730b8212fae6f187902129018ca950aa878843f4d1b29e25aab1be245ed313fd3bc110ccf9ce3ae266d840
DIST pillow-10.4.0.gh.tar.gz 46617167 BLAKE2B 3eb7852ab087d18e5b9a03d6cbf83ead96b637a71d4209a4574d66c9d098936d240c0be3235d9e951ec094b9b0def196b265a8e68f59802f843171c74ca7bbac SHA512 835a8766c384ec3fcf67b42c9bbad35dad0848cc5bd9eba1b0768a864e174a1d9c4a5e989f22496a40f2c29dd7f492f6f80465903fe872b10749cfa0340e1bc5
DIST pillow-11.0.0.gh.tar.gz 46807844 BLAKE2B c91b92152d2f763fd20a74e2bddf413a669430074b8c5304b623ff63df177346ec4031e928fbc9765e1e0ca5f21cc101d5b7688a09dea19c5828f0cea02fe018 SHA512 0a74d7b12311acb3c9b39af87dc4e1e2ecae22134300a2a8c979daa3947a20f78bf77a93cd7f0029e98936a07e8d5e4fae826322fe0ccc1d1a8200350f9cbb7b
+DIST pillow-11.1.0.gh.tar.gz 46815201 BLAKE2B 7990683c90359e0a72e17a13e1a29455bc3ace8ce3616d6af59360edfc1ac87541bd1fd6967160bd8d7dd25cfedfc9d2e9b058c3ed433a6208379834f15bc312 SHA512 bb0622fae0b9c3903ddd945dced8e2b94348b2bd06c14bc74da00d8aa3a795aab2daaff39ca6c40b712dcce4f10218cd30739f0eb616c9dfbc16efcf80886f1e
diff --git a/dev-python/pillow/pillow-11.1.0.ebuild b/dev-python/pillow/pillow-11.1.0.ebuild
new file mode 100644
index 000000000000..86b1c92786ac
--- /dev/null
+++ b/dev-python/pillow/pillow-11.1.0.ebuild
@@ -0,0 +1,147 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+# setuptools wrapper
+DISTUTILS_USE_PEP517=standalone
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_REQ_USE='tk?,threads(+)'
+
+inherit distutils-r1 toolchain-funcs virtualx
+
+MY_PN=Pillow
+MY_P=${MY_PN}-${PV}
+
+DESCRIPTION="Python Imaging Library (fork)"
+HOMEPAGE="
+ https://python-pillow.org/
+ https://github.com/python-pillow/Pillow/
+ https://pypi.org/project/pillow/
+"
+SRC_URI="
+ https://github.com/python-pillow/Pillow/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="HPND"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
+IUSE="examples imagequant +jpeg jpeg2k lcms test tiff tk truetype webp xcb zlib"
+REQUIRED_USE="test? ( jpeg jpeg2k lcms tiff truetype )"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+ imagequant? ( media-gfx/libimagequant:= )
+ jpeg? ( media-libs/libjpeg-turbo:= )
+ jpeg2k? ( media-libs/openjpeg:2= )
+ lcms? ( media-libs/lcms:2= )
+ tiff? ( media-libs/tiff:=[jpeg,zlib] )
+ truetype? ( media-libs/freetype:2= )
+ webp? ( media-libs/libwebp:= )
+ xcb? ( x11-libs/libxcb )
+ zlib? ( sys-libs/zlib:= )
+"
+RDEPEND="
+ ${DEPEND}
+ dev-python/olefile[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ dev-python/wheel[${PYTHON_USEDEP}]
+ virtual/pkgconfig
+ test? (
+ dev-python/defusedxml[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/pytest-timeout[${PYTHON_USEDEP}]
+ || (
+ media-gfx/imagemagick[png]
+ media-gfx/graphicsmagick[png]
+ )
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+PATCHES=(
+ # https://github.com/python-pillow/pillow/pull/7634
+ "${FILESDIR}/${PN}-10.2.0-cross.patch"
+)
+
+usepil() {
+ usex "${1}" enable disable
+}
+
+python_configure_all() {
+ cat >> setup.cfg <<-EOF || die
+ [build_ext]
+ debug = True
+ disable_platform_guessing = True
+ $(usepil truetype)_freetype = True
+ $(usepil jpeg)_jpeg = True
+ $(usepil jpeg2k)_jpeg2000 = True
+ $(usepil lcms)_lcms = True
+ $(usepil tiff)_tiff = True
+ $(usepil imagequant)_imagequant = True
+ $(usepil webp)_webp = True
+ $(usepil xcb)_xcb = True
+ $(usepil zlib)_zlib = True
+ EOF
+ if use truetype; then
+ # these dependencies are implicitly disabled by USE=-truetype
+ # and we can't pass both disable_* and vendor_*
+ # https://bugs.gentoo.org/935124
+ cat >> setup.cfg <<-EOF || die
+ vendor_raqm = False
+ vendor_fribidi = False
+ EOF
+ fi
+
+ tc-export PKG_CONFIG
+}
+
+src_test() {
+ virtx distutils-r1_src_test
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # TODO (is clipboard unreliable in Xvfb?)
+ Tests/test_imagegrab.py::TestImageGrab::test_grabclipboard
+ # requires xz-utils[extra-filters]?
+ Tests/test_file_libtiff.py::TestFileLibTiff::test_lzma
+ )
+
+ case ${ARCH} in
+ ppc)
+ EPYTEST_DESELECT+=(
+ # https://github.com/python-pillow/Pillow/issues/7008
+ # (we've reverted the upstream patch because it was worse
+ # than the original issue)
+ Tests/test_file_libtiff.py::TestFileLibTiff::test_exif_ifd
+ )
+ ;;
+ esac
+
+ "${EPYTHON}" selftest.py --installed || die "selftest failed with ${EPYTHON}"
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ # leak tests are fragile and broken under xdist
+ epytest -k "not leak" -p timeout || die "Tests failed with ${EPYTHON}"
+}
+
+python_install() {
+ python_doheader src/libImaging/*.h
+ distutils-r1_python_install
+}
+
+python_install_all() {
+ if use examples ; then
+ docinto example
+ dodoc docs/example/*
+ docompress -x /usr/share/doc/${PF}/example
+ fi
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/pytest-asyncio/Manifest b/dev-python/pytest-asyncio/Manifest
index 36d11be52470..533906b2354c 100644
--- a/dev-python/pytest-asyncio/Manifest
+++ b/dev-python/pytest-asyncio/Manifest
@@ -1 +1,2 @@
DIST pytest_asyncio-0.25.0.tar.gz 53298 BLAKE2B e29641f9e0ae24aac80bca7eaa14258d0bdfa6080abeaedd38ffe121cb9a9bf5886da2a38a3033010fcb47f4c2aee0eb17b0f63cee020c5ae81e8334486c66b7 SHA512 162d1693c82c4be96cf20cfeb075c4e434e897cdfc172564b8b2513b362a6bbf54d8be6da4a63a7de34236b6c55eb515e60b994198c07a5c63a63333fe019932
+DIST pytest_asyncio-0.25.1.tar.gz 53760 BLAKE2B e7e30691734c0c0c0783f152531b6e3e7455098b577a0ae87d560959e5fbd7a3a04148b85b13543a69763022b49d5d946af089a2ad0cedae5d9f3470643c1e6e SHA512 8a6ce121dfce4362a9b9dd320ee8207129a5f9d667e80fc8d6b9a43095883cfbbb59813e2fafc5deae062c596b2a9af76b80b18fabcc003fbecf9a0fc8b09e01
diff --git a/dev-python/pytest-asyncio/pytest-asyncio-0.25.1.ebuild b/dev-python/pytest-asyncio/pytest-asyncio-0.25.1.ebuild
new file mode 100644
index 000000000000..a79c5bc094b7
--- /dev/null
+++ b/dev-python/pytest-asyncio/pytest-asyncio-0.25.1.ebuild
@@ -0,0 +1,44 @@
+# Copyright 2019-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Library for testing asyncio code with pytest"
+HOMEPAGE="
+ https://github.com/pytest-dev/pytest-asyncio/
+ https://pypi.org/project/pytest-asyncio/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+
+RDEPEND="
+ >=dev-python/pytest-8.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ >=dev-python/hypothesis-5.7.1[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # rely on precise warning counts
+ tests/hypothesis/test_base.py::test_can_use_explicit_event_loop_fixture
+ tests/test_event_loop_fixture_finalizer.py::test_event_loop_fixture_finalizer_raises_warning_when_fixture_leaves_loop_unclosed
+ tests/test_event_loop_fixture_finalizer.py::test_event_loop_fixture_finalizer_raises_warning_when_test_leaves_loop_unclosed
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local -x PYTEST_PLUGINS=pytest_asyncio.plugin,_hypothesis_pytestplugin
+ epytest
+}
diff --git a/dev-python/ruamel-yaml/Manifest b/dev-python/ruamel-yaml/Manifest
index 67e434fd1023..49ae06ce339c 100644
--- a/dev-python/ruamel-yaml/Manifest
+++ b/dev-python/ruamel-yaml/Manifest
@@ -1,3 +1,3 @@
-DIST ruamel.yaml-0.17.40.tar.xz 193424 BLAKE2B 80405ef0c85af476ef0e996b1da5aba1a116e8c181d18f40fb4fd86093a512c09cf0da30d52d85946c524e86e10379cb11154cb08a7ea7b054ba9379996de4f4 SHA512 848af49430b9c028a6676a159915c66e29f4290374ba0863e4fd87527f3178bb303a80f4ba97139fc8cbcd01f7f7782a4b3112325237a39659e227afda61fcb8
DIST ruamel.yaml-0.18.6.tar.xz 198544 BLAKE2B 94d50ba8aef92e2885b24118bd9f4b1d06a82d51b2e7930c39dea93f4c0f9fc9d0604dfbbe716f81f3c9a927698d14c7005bb0ce2ae5d2eadf27514dfbba88c1 SHA512 319e1029746ebf6ef1c6b6bf6055d7c56e7caa2559b34b4fe639616c4332ef46661afad67c42d123bd0de67819812ea8f9cc9d51c0189edd6e33d5d47f47bb26
DIST ruamel.yaml-0.18.7.tar.xz 199304 BLAKE2B 707e83c78c4301aae6d6130664a9e98fde7323c8d886f2ef1a5e9f147e1cb5cc835e414a1b055e359bd64442c45d0ab6f024f9165b5df8388bda423ed51c20ba SHA512 c5efa894d0fa1e8cfa9ff586d71e29ed7663c0f2e379603880d009260441ec2e476de6b2e97076c43e9b51cbb452e2cc18f21955c9d9bab54d56195567d3406d
+DIST ruamel.yaml-0.18.8.tar.xz 199244 BLAKE2B 02935cd28ede36bf1ae84bb9d0cc4f15793051940195f714f9ed124df643c828cea7624310c58bf50312e8569ba7d0bc83af223b54c5e5e2a3c122dc0438f9be SHA512 533ede0b41101a0a02131983d032c229e8a6c64c5b679fc2793b9a98c81809c253a250a94c36a94e96f184ffe9a5fc8cd5dc8568f568e47d78219561638363b5
diff --git a/dev-python/ruamel-yaml/ruamel-yaml-0.17.40.ebuild b/dev-python/ruamel-yaml/ruamel-yaml-0.18.8.ebuild
index 17ef45342e8f..2bccc5e4d8cb 100644
--- a/dev-python/ruamel-yaml/ruamel-yaml-0.17.40.ebuild
+++ b/dev-python/ruamel-yaml/ruamel-yaml-0.18.8.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -20,7 +20,7 @@ S="${WORKDIR}"/${MY_P}
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm arm64 hppa ~loong ppc ppc64 ~riscv sparc x86"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
RDEPEND="
dev-python/ruamel-yaml-clib[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinx-autodoc-typehints/Manifest b/dev-python/sphinx-autodoc-typehints/Manifest
index ff78e2523d35..7de1fb308759 100644
--- a/dev-python/sphinx-autodoc-typehints/Manifest
+++ b/dev-python/sphinx-autodoc-typehints/Manifest
@@ -1 +1,2 @@
DIST sphinx_autodoc_typehints-2.5.0.tar.gz 40822 BLAKE2B 0d09c878f0f8462879bec6fe786577a8587065a757218b775f6642aa5cf28cca82b85aeedb1c7dd3cf0788758d00b56c2a775f44bb550ff95aa947c88f1a642d SHA512 4308873ee2bd794c822e76ed712b0c0547815f5e3125e158e79f512fdd31dd482a60b172a39f6f53ae57d5c2bf156eb4c4ff2fe3c8f39446fc2acd69004f8bc0
+DIST sphinx_autodoc_typehints-3.0.0.tar.gz 35943 BLAKE2B 591fa66e0ebf55cb89077c299b08dee4ba01ff85ab958cbe2c703873e4e7f6b924305a8ae1b4f58fb29fc34f35099014cb6254d8745fecd7f8e5c60ed96d0c81 SHA512 23e0017d68e12bedc56ff59b3620e981733816be5803bb86446821d0b5d66b5b472bee9fc242ad084913034fab1241200b8835a8f82fc89a1ae85b9e22e2f03c
diff --git a/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.0.0.ebuild b/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.0.0.ebuild
new file mode 100644
index 000000000000..95f410a47c34
--- /dev/null
+++ b/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.0.0.ebuild
@@ -0,0 +1,44 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Type hints support for the Sphinx autodoc extension"
+HOMEPAGE="
+ https://github.com/tox-dev/sphinx-autodoc-typehints/
+ https://pypi.org/project/sphinx-autodoc-typehints/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/sphinx-8.1.3[${PYTHON_USEDEP}]
+"
+# skipping optional test dep on dev-python/nptyping as that package
+# is horribly broken and on its way out
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ >=dev-python/sphobjinv-2.3.1[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.5[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # this package is addicted to Internet
+ tests/test_sphinx_autodoc_typehints.py::test_format_annotation
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest
+}
diff --git a/dev-python/uv/Manifest b/dev-python/uv/Manifest
index bb0c93242659..a1e7dd1f072c 100644
--- a/dev-python/uv/Manifest
+++ b/dev-python/uv/Manifest
@@ -9,6 +9,8 @@ DIST uv-0.5.12-crates.tar.xz 46555948 BLAKE2B 24a69983cd75b3bf3ad7c15503afc4bde7
DIST uv-0.5.12.gh.tar.gz 3174790 BLAKE2B 5b9ddf4d70e5534731bc50ba168aaa16a3a5321887613d6cc4141e767f1122f8c5bcaf3a2ace3be11e28e61a8eb3ddd7d910a40071ae3cadb57cffbefed087df SHA512 9623b8ece53a4ab9fa3ea2a5f4cffdc3da13645a460b59cd97dcbda9a48247bfbd9fb2316363c7f9c78869cd888511cbcdc528413e6be1ffbca8d9ece210d5ff
DIST uv-0.5.13-crates.tar.xz 46487696 BLAKE2B 88805f95f170f3417fdc9c98b09fab73d9196ba105edd22eaea261afadf962503acdf1dee349992c16932354f8e44166f2c241ef384f8e06b8f869d89f7f4d79 SHA512 d9b84064f628e5ff1858964e61c5288ab2247c7590a745d7e7d3b00eebc457bb0e52bd8aa5b9d82b37519089d098ba0e0267dc97118c55d1fb86548b2241ddaa
DIST uv-0.5.13.gh.tar.gz 3175346 BLAKE2B 86dc0b635062e17b7cb35529ba71b173b3e4d89ba8cbc747a61c3eb03a2fc751726af1f07cc20bc31b759706a893a10b9ceda9ab579dc5d1ac84a61be9ec7d4c SHA512 9dfc771c203fdb4440e38a4e8ec6d4221030c2d2eca463fb335ba8651fe702430c7497d58a0928215e3e17a20719db252959899874a38d13016f377185b5f49b
+DIST uv-0.5.14-crates.tar.xz 46533192 BLAKE2B 89451a3c162f80d4d8b9af369fe11d9661bdf06d7a5f624f91ba71d993c34faa5c412cdee352c483db0d617e2cef2db46e534a58e04cb6c741aa4a48e8d0ddf5 SHA512 dbb8d0715fb7f360dbb8d9f7af5db0a5c962bc7f91ba53edd44213074666e9abb090e2cf4d3d0e23343668028d1465c5769f24c773fef91b7d332c6d596c34b4
+DIST uv-0.5.14.gh.tar.gz 3182160 BLAKE2B c0839df464543f1ae9cf4f984c514709a44d6b11289a2dc37e33db5d15dc33c08f8bad4cfb8e62960feb63506e8395f9fa0038d6b28059677ada10be8baeaa76 SHA512 7604791df108feda9ce0a44d915785ca0520b5453c8a49c66881476606e2bf04b3d980d1200a64661decf2fa5580ba84d35bc8e766b273649f9734b5c2bbf20c
DIST uv-0.5.6-crates.tar.xz 46263172 BLAKE2B 73b1d2dc957f89f923dda09a8c038426041292c442ce253ff9110f996cd1e1f892a5a438d8e1c894fc0d823401cced0ddc8ad88b5e6a83199af7055a04ce85dc SHA512 c9d4f8085416bffb1e1872fd907d15a50cae0c0c5fba994d27b3acdc3c836dffd771558246573af4bb7467353a031ea56018d5ae1fbdffa4f63988462de00343
DIST uv-0.5.6.gh.tar.gz 2952255 BLAKE2B b815b60b99f959751f5839365b8b210919247ad99bff93ee4d202bc152bd06b83a62914cfbf341bfddb5b2c87d9e546c5e2a6d1baff1599d0218160ee89de504 SHA512 fc8c7f4f60a3d2ce997341450daf20ad039ef379ac5dd4575f8db0327284bd8278419b66f8f9695f2701a9579ab004b5b60476bd8dc4c27314211f795118bc5a
DIST uv-0.5.8-crates.tar.xz 46445240 BLAKE2B 119e471d7f9a851179e2e5d9cd15cb94476355e27db36b05378036b7f9a3e0021a33a2fd29ed9e5a67cd7d962783b3ea96145ca9092da0a6a114899ff2b712fd SHA512 d517fdc9e48b4cb4acacf1d3c986c7e348ee65c89cb5bdbd9c3947f66d450f7f59b5a4f5f0f45560d5241bc8f7756039014cf350a8aea22be876c197759e5aff
diff --git a/dev-python/uv/uv-0.5.14.ebuild b/dev-python/uv/uv-0.5.14.ebuild
new file mode 100644
index 000000000000..bd242a76bb09
--- /dev/null
+++ b/dev-python/uv/uv-0.5.14.ebuild
@@ -0,0 +1,170 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CRATES="
+"
+
+declare -A GIT_CRATES=(
+ [async_zip]='https://github.com/charliermarsh/rs-async-zip;c909fda63fcafe4af496a07bfda28a5aae97e58d;rs-async-zip-%commit%'
+ [pubgrub]='https://github.com/astral-sh/pubgrub;648aa343486e5529953153781fc86025c73c4a61;pubgrub-%commit%'
+ [tl]='https://github.com/astral-sh/tl;6e25b2ee2513d75385101a8ff9f591ef51f314ec;tl-%commit%'
+ [version-ranges]='https://github.com/astral-sh/pubgrub;648aa343486e5529953153781fc86025c73c4a61;pubgrub-%commit%/version-ranges'
+)
+
+RUST_MIN_VER="1.83.0"
+
+inherit cargo check-reqs
+
+CRATE_PV=${PV}
+DESCRIPTION="A Python package installer and resolver, written in Rust"
+HOMEPAGE="
+ https://github.com/astral-sh/uv/
+ https://pypi.org/project/uv/
+"
+# pypi sdist misses scripts/, needed for tests
+SRC_URI="
+ https://github.com/astral-sh/uv/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+ ${CARGO_CRATE_URIS}
+"
+if [[ ${PKGBUMPING} != ${PVR} ]]; then
+ SRC_URI+="
+ https://dev.gentoo.org/~mgorny/dist/uv-${CRATE_PV}-crates.tar.xz
+ "
+fi
+
+# most of the code
+LICENSE="|| ( Apache-2.0 MIT )"
+# crates/pep508-rs is || ( Apache-2.0 BSD-2 ) which is covered below
+# Dependent crate licenses
+LICENSE+="
+ 0BSD Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD ISC MIT
+ MPL-2.0 Unicode-3.0 Unicode-DFS-2016 ZLIB
+"
+# ring crate
+LICENSE+=" openssl"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+IUSE="test"
+RESTRICT="test"
+PROPERTIES="test_network"
+
+DEPEND="
+ app-arch/bzip2:=
+ app-arch/xz-utils:=
+ app-arch/zstd:=
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ test? (
+ dev-lang/python:3.8
+ dev-lang/python:3.9
+ dev-lang/python:3.10
+ dev-lang/python:3.11
+ dev-lang/python:3.12
+ !!~dev-python/uv-0.5.0
+ )
+"
+
+QA_FLAGS_IGNORED="usr/bin/.*"
+
+check_space() {
+ local CHECKREQS_DISK_BUILD=3G
+ use debug && CHECKREQS_DISK_BUILD=9G
+ check-reqs_pkg_setup
+}
+
+pkg_pretend() {
+ check_space
+}
+
+pkg_setup() {
+ check_space
+ rust_pkg_setup
+}
+
+src_prepare() {
+ default
+
+ # enable system libraries where supported
+ export ZSTD_SYS_USE_PKG_CONFIG=1
+ # TODO: unbundle libz-ng-sys, tikv-jemalloc-sys?
+
+ # remove unbundled sources, just in case
+ find "${ECARGO_VENDOR}"/{bzip2,lzma,zstd}-sys-*/ -name '*.c' -delete || die
+
+ # bzip2-sys requires a pkg-config file
+ # https://github.com/alexcrichton/bzip2-rs/issues/104
+ mkdir "${T}/pkg-config" || die
+ export PKG_CONFIG_PATH=${T}/pkg-config${PKG_CONFIG_PATH+:${PKG_CONFIG_PATH}}
+ cat >> "${T}/pkg-config/bzip2.pc" <<-EOF || die
+ Name: bzip2
+ Version: 9999
+ Description:
+ Libs: -lbz2
+ EOF
+}
+
+src_configure() {
+ local myfeatures=(
+ git
+ pypi
+ python
+ )
+
+ cargo_src_configure --no-default-features
+}
+
+src_compile() {
+ cd crates/uv || die
+ cargo_src_compile
+}
+
+src_test() {
+ # work around https://github.com/astral-sh/uv/issues/4376
+ local -x PATH=${BROOT}/usr/lib/python-exec/python3.12:${PATH}
+ local -x COLUMNS=100
+ local -x PYTHONDONTWRITEBYTECODE=
+ # fix tests failing because of our config
+ local -x XDG_CONFIG_DIRS=${T}
+
+ cd crates/uv || die
+ cargo_src_test --no-fail-fast
+}
+
+src_install() {
+ cd crates/uv || die
+ cargo_src_install
+
+ insinto /etc/xdg/uv
+ newins - uv.toml <<-EOF || die
+ # These defaults match Fedora, see:
+ # https://src.fedoraproject.org/rpms/uv/pull-request/18
+
+ # By default ("automatic"), uv downloads missing Python versions
+ # automatically and keeps them in the user's home directory.
+ # Disable that to make downloading opt-in, and especially
+ # to avoid unnecessarily fetching custom Python when the distro
+ # package would be preferable. Python builds can still be
+ # downloaded manually via "uv python install".
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-downloads
+ python-downloads = "manual"
+
+ # By default ("managed"), uv always prefers self-installed
+ # Python versions over the system Python, independently
+ # of versions. Since we generally expect users to use that
+ # to install old Python versions not in ::gentoo anymore,
+ # this effectively means that uv would end up preferring very
+ # old Python versions over the newer ones that are provided
+ # by the system. Default to using the system versions to avoid
+ # this counter-intuitive behavior.
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-preference
+ python-preference = "system"
+ EOF
+}
diff --git a/dev-python/virtualenv/Manifest b/dev-python/virtualenv/Manifest
index da9e718483da..8ece7c23c036 100644
--- a/dev-python/virtualenv/Manifest
+++ b/dev-python/virtualenv/Manifest
@@ -1 +1,2 @@
DIST virtualenv-20.28.0.tar.gz 7650368 BLAKE2B b18ae57a929bb2a84a7ffa92771913dbd941cc2fc4c2962b18ce34dc105dcdfdb46b01366affea04ec44a7795b9c78a136b385eee8c457274079e65313d19896 SHA512 6a66663af74a240b9ad1cd3170f765ea44aea5f013d63c996a66af4aa0ad4e56c2c38c4f51d43181ac55c6099363694478d7ef15b640c56f8f801d3cd318966e
+DIST virtualenv-20.28.1.tar.gz 7650532 BLAKE2B 08b356a1547573f5a4d55e32e5d0c0f0d12f137d651a46efe79dba8680cdb7e8e24dc37adc7fcb12ba3a83ed7b0185c553dc2269767488d9280e0e4f99282da9 SHA512 f68f0c0cbcfb5a0a7e7d98eb695a9843ff20f8fbb50412919f1001f939c56ba1ccc64506c53d0c0f37bcd28db376bac7c72be99c0ebec8b584e2402cd17b2342
diff --git a/dev-python/virtualenv/virtualenv-20.28.1.ebuild b/dev-python/virtualenv/virtualenv-20.28.1.ebuild
new file mode 100644
index 000000000000..ef8e66b486df
--- /dev/null
+++ b/dev-python/virtualenv/virtualenv-20.28.1.ebuild
@@ -0,0 +1,118 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 multiprocessing pypi
+
+DESCRIPTION="Virtual Python Environment builder"
+HOMEPAGE="
+ https://virtualenv.pypa.io/en/stable/
+ https://pypi.org/project/virtualenv/
+ https://github.com/pypa/virtualenv/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/distlib-0.3.7[${PYTHON_USEDEP}]
+ >=dev-python/filelock-3.12.2[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-3.9.1[${PYTHON_USEDEP}]
+
+ dev-python/ensurepip-pip
+ dev-python/ensurepip-setuptools
+ dev-python/ensurepip-wheel
+"
+# coverage is used somehow magically in virtualenv, maybe it actually
+# tests something useful
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ dev-python/coverage[${PYTHON_USEDEP}]
+ dev-python/flaky[${PYTHON_USEDEP}]
+ >=dev-python/pip-22.2.1[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/pytest-freezer-0.4.6[${PYTHON_USEDEP}]
+ ' pypy3)
+ >=dev-python/pytest-mock-3.6.1[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-67.8[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/time-machine[${PYTHON_USEDEP}]
+ ' 'python3*')
+ dev-python/wheel[${PYTHON_USEDEP}]
+ >=dev-python/packaging-20.0[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_TIMEOUT=180
+distutils_enable_tests pytest
+
+src_prepare() {
+ local PATCHES=(
+ # use wheels from ensurepip bundle
+ "${FILESDIR}/${PN}-20.26.3-ensurepip.patch"
+ )
+
+ distutils-r1_src_prepare
+
+ # workaround test failures due to warnings from setuptools-scm, sigh
+ echo '[tool.setuptools_scm]' >> pyproject.toml || die
+
+ # remove useless pins
+ sed -i -e 's:,<[0-9.]*::' pyproject.toml || die
+
+ # remove bundled wheels
+ rm src/virtualenv/seed/wheels/embed/*.whl || die
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ tests/unit/seed/embed/test_bootstrap_link_via_app_data.py::test_seed_link_via_app_data
+ # tests for old wheels with py3.7 support
+ tests/unit/seed/embed/test_pip_invoke.py::test_base_bootstrap_via_pip_invoke
+ tests/unit/seed/wheels/test_wheels_util.py::test_wheel_not_support
+ # broken by different wheel versions in ensurepip
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_latest_string
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_exact
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_latest_none
+ tests/unit/seed/wheels/test_acquire.py::test_download_wheel_bad_output
+ # hangs on a busy system, sigh
+ tests/unit/test_util.py::test_reentrant_file_lock_is_thread_safe
+ )
+ case ${EPYTHON} in
+ python3.1[23])
+ EPYTEST_DESELECT+=(
+ tests/unit/create/via_global_ref/test_build_c_ext.py
+ )
+ ;&
+ python3.11)
+ EPYTEST_DESELECT+=(
+ # TODO
+ tests/unit/discovery/py_info/test_py_info.py::test_fallback_existent_system_executable
+ )
+ ;;
+ esac
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local -x TZ=UTC
+ local plugins=( -p flaky -p pytest_mock )
+ if [[ ${EPYTHON} == pypy3 ]]; then
+ plugins+=( -p freezer )
+ else
+ plugins+=( -p time_machine )
+ fi
+ epytest "${plugins[@]}" -p xdist -n "$(makeopts_jobs)" --dist=worksteal
+}
+
+src_install() {
+ distutils-r1_src_install
+
+ # remove bundled wheels, we're using ensurepip bundle instead
+ find "${ED}" -name '*.whl' -delete || die
+}
diff --git a/dev-python/xcffib/Manifest b/dev-python/xcffib/Manifest
index 2f517d261ab7..87c165427006 100644
--- a/dev-python/xcffib/Manifest
+++ b/dev-python/xcffib/Manifest
@@ -1 +1,2 @@
DIST xcffib-1.5.0.tar.gz 89544 BLAKE2B cb3820a53eb7694078e5dbb175951b6dbdc445c06f397898e52319fd8a7633f2d8115f0d096a14b2b3de0c7b07918343d077705814574ff41de2bf06a12812c0 SHA512 aaa426b57d0d8dc45cb6a2036c862af6308fb5781667b8dba3f5ff399fe5e15912860d0bb696ac09f1efd4ffbbdaf7f555ef76039bd660f36f5c6179535b654f
+DIST xcffib-1.6.0.tar.gz 101378 BLAKE2B 75b4e64f125d0948fc438202b81d0808acd988d363216382f42611e7f821f4df2cecd9464edfc0e89cacd4237d82fc0d0276a357f5625dc03811b1f9c0951a0d SHA512 53fbde4a61f061a460d8a33c70ce4189c7ea5ff30777cee0017f42fcee9d7e2954d48906d764feabbb0506be96a40350579043e9cea04f9886ff1e8f35ed3f9c
diff --git a/dev-python/xcffib/xcffib-1.6.0.ebuild b/dev-python/xcffib/xcffib-1.6.0.ebuild
new file mode 100644
index 000000000000..252378486a9e
--- /dev/null
+++ b/dev-python/xcffib/xcffib-1.6.0.ebuild
@@ -0,0 +1,42 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A drop in replacement for xpyb, an XCB python binding"
+HOMEPAGE="
+ https://github.com/tych0/xcffib/
+ https://pypi.org/project/xcffib/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+DEPEND="
+ x11-libs/libxcb
+"
+RDEPEND="
+ $(python_gen_cond_dep '
+ >=dev-python/cffi-1.1:=[${PYTHON_USEDEP}]
+ ' 'python*')
+ ${DEPEND}
+"
+BDEPEND="
+ test? (
+ x11-base/xorg-server[xvfb]
+ x11-apps/xeyes
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ rm -rf xcffib || die
+ epytest
+}