summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-05-14 18:59:50 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-05-14 18:59:50 +0000
commit00278f6cc9e8280380a376f72ec209c3efc960a4 (patch)
treefb64e4ad90415827deb50f7ddc78db6898c1a100 /dev-python
parentf8809af2354fe27fa3c1df0e9716fa59d12dca19 (diff)
downloadbaldeagleos-repo-00278f6cc9e8280380a376f72ec209c3efc960a4.tar.gz
baldeagleos-repo-00278f6cc9e8280380a376f72ec209c3efc960a4.tar.xz
baldeagleos-repo-00278f6cc9e8280380a376f72ec209c3efc960a4.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/anyio/anyio-4.8.0-r3.ebuild89
-rw-r--r--dev-python/anyio/files/anyio-4.8.0-py314.patch124
-rw-r--r--dev-python/astor/astor-0.8.1-r1.ebuild30
-rw-r--r--dev-python/boto3/Manifest1
-rw-r--r--dev-python/boto3/boto3-1.38.15.ebuild53
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.38.15.ebuild67
-rw-r--r--dev-python/bottleneck/Manifest1
-rw-r--r--dev-python/bottleneck/bottleneck-1.5.0.ebuild52
-rw-r--r--dev-python/cloudpickle/cloudpickle-3.1.1.ebuild13
-rw-r--r--dev-python/dirty-equals/dirty-equals-0.9.0.ebuild5
-rw-r--r--dev-python/exceptiongroup/exceptiongroup-1.3.0.ebuild11
-rw-r--r--dev-python/faker/faker-37.1.0.ebuild5
-rw-r--r--dev-python/faker/files/faker-37.1.0-py314.patch45
-rw-r--r--dev-python/flask/Manifest1
-rw-r--r--dev-python/flask/flask-3.1.1.ebuild58
-rw-r--r--dev-python/httpx/httpx-0.28.1-r1.ebuild4
-rw-r--r--dev-python/hypothesis/Manifest1
-rw-r--r--dev-python/hypothesis/hypothesis-6.131.16.ebuild126
-rw-r--r--dev-python/langdetect/Manifest2
-rw-r--r--dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch13
-rw-r--r--dev-python/langdetect/langdetect-1.0.9.ebuild6
-rw-r--r--dev-python/langdetect/metadata.xml10
-rw-r--r--dev-python/mkdocs-material/Manifest1
-rw-r--r--dev-python/mkdocs-material/mkdocs-material-9.6.14.ebuild73
-rw-r--r--dev-python/psycopg/Manifest1
-rw-r--r--dev-python/psycopg/psycopg-3.2.9.ebuild117
-rw-r--r--dev-python/pytest-aiohttp/pytest-aiohttp-1.1.0-r1.ebuild36
-rw-r--r--dev-python/pytest/files/pytest-8.3.5-test.patch24
-rw-r--r--dev-python/pytest/pytest-8.3.5.ebuild14
-rw-r--r--dev-python/python-dotenv/python-dotenv-1.1.0.ebuild14
-rw-r--r--dev-python/pyyaml-env-tag/Manifest1
-rw-r--r--dev-python/pyyaml-env-tag/pyyaml-env-tag-1.1.ebuild25
-rw-r--r--dev-python/redis/Manifest1
-rw-r--r--dev-python/redis/redis-6.1.0.ebuild109
-rw-r--r--dev-python/setuptools-rust/setuptools-rust-1.11.1.ebuild2
-rw-r--r--dev-python/spyder-kernels/Manifest1
-rw-r--r--dev-python/spyder-kernels/spyder-kernels-3.0.4.ebuild99
-rw-r--r--dev-python/tox/Manifest1
-rw-r--r--dev-python/tox/tox-4.26.0.ebuild98
-rw-r--r--dev-python/trimesh/Manifest1
-rw-r--r--dev-python/trimesh/trimesh-4.6.9.ebuild79
-rw-r--r--dev-python/trio/trio-0.29.0.ebuild10
-rw-r--r--dev-python/types-docutils/Manifest1
-rw-r--r--dev-python/types-docutils/types-docutils-0.21.0.20250514.ebuild16
-rw-r--r--dev-python/types-gdb/Manifest1
-rw-r--r--dev-python/types-gdb/types-gdb-15.0.0.20250514.ebuild16
-rw-r--r--dev-python/typing-inspection/files/typing-inspection-0.4.0-py314.patch155
-rw-r--r--dev-python/typing-inspection/typing-inspection-0.4.0-r1.ebuild30
-rw-r--r--dev-python/uvicorn/uvicorn-0.34.2.ebuild6
-rw-r--r--dev-python/watchfiles/watchfiles-1.0.5.ebuild2
-rw-r--r--dev-python/xcffib/Manifest1
-rw-r--r--dev-python/xcffib/xcffib-1.9.0.ebuild43
53 files changed, 1669 insertions, 27 deletions
diff --git a/dev-python/anyio/anyio-4.8.0-r3.ebuild b/dev-python/anyio/anyio-4.8.0-r3.ebuild
new file mode 100644
index 000000000000..57daf95dfd8f
--- /dev/null
+++ b/dev-python/anyio/anyio-4.8.0-r3.ebuild
@@ -0,0 +1,89 @@
+# 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="Compatibility layer for multiple asynchronous event loop implementations"
+HOMEPAGE="
+ https://github.com/agronholm/anyio/
+ https://pypi.org/project/anyio/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/idna-2.8[${PYTHON_USEDEP}]
+ >=dev-python/sniffio-1.1[${PYTHON_USEDEP}]
+ >=dev-python/truststore-0.9.1[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/typing-extensions-4.5[${PYTHON_USEDEP}]
+ ' 3.{11..12})
+"
+# On amd64, let's get more test coverage by dragging in uvloop, but let's
+# not bother on other arches where uvloop may not be supported.
+BDEPEND="
+ >=dev-python/setuptools-scm-6.4[${PYTHON_USEDEP}]
+ test? (
+ >=dev-python/exceptiongroup-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/hypothesis-4.0[${PYTHON_USEDEP}]
+ >=dev-python/psutil-5.9[${PYTHON_USEDEP}]
+ dev-python/trustme[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/trio-0.26.1[${PYTHON_USEDEP}]
+ ' 3.{11..13})
+ amd64? (
+ $(python_gen_cond_dep '
+ >=dev-python/uvloop-0.21.0_beta1[${PYTHON_USEDEP}]
+ ' python3_{11..13})
+ )
+ )
+"
+
+distutils_enable_tests pytest
+distutils_enable_sphinx docs \
+ '>=dev-python/sphinx-rtd-theme-1.2.2' \
+ dev-python/sphinxcontrib-jquery \
+ dev-python/sphinx-autodoc-typehints
+
+PATCHES=(
+ # https://github.com/agronholm/anyio/commit/f051fd45a1d34bae8dd70dba726e711e7a49deee
+ # https://github.com/agronholm/anyio/commit/e0e2531de14c54eed895c92b4c8e87b44f47634b
+ # https://github.com/agronholm/anyio/commit/8bad9c05d966f6edfa58f26257015cb657d4e5ef
+ "${FILESDIR}/${P}-py314.patch"
+)
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # requires link-local IPv6 interface
+ tests/test_sockets.py::TestTCPListener::test_bind_link_local
+ )
+
+ case ${EPYTHON} in
+ pypy3.11)
+ EPYTEST_DESELECT+=(
+ # likely related to https://github.com/pypy/pypy/issues/5264
+ tests/test_debugging.py::test_main_task_name
+ )
+ ;;
+ esac
+
+ local filter=()
+ if ! has_version ">=dev-python/trio-0.26.1[${PYTHON_USEDEP}]"; then
+ filter+=( -k "not trio" )
+ EPYTEST_DESELECT+=(
+ tests/test_pytest_plugin.py::test_plugin
+ tests/test_pytest_plugin.py::test_autouse_async_fixture
+ tests/test_pytest_plugin.py::test_cancel_scope_in_asyncgen_fixture
+ )
+ fi
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -m 'not network' "${filter[@]}"
+}
diff --git a/dev-python/anyio/files/anyio-4.8.0-py314.patch b/dev-python/anyio/files/anyio-4.8.0-py314.patch
new file mode 100644
index 000000000000..9e1ad2fb151c
--- /dev/null
+++ b/dev-python/anyio/files/anyio-4.8.0-py314.patch
@@ -0,0 +1,124 @@
+From f051fd45a1d34bae8dd70dba726e711e7a49deee Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Alex=20Gr=C3=B6nholm?= <alex.gronholm@nextday.fi>
+Date: Tue, 18 Mar 2025 14:38:12 +0200
+Subject: [PATCH] Fixed Path tests on Python 3.14.0a6
+
+---
+ src/anyio/_core/_fileio.py | 8 +++-----
+ 1 file changed, 3 insertions(+), 5 deletions(-)
+
+diff --git a/src/anyio/_core/_fileio.py b/src/anyio/_core/_fileio.py
+index a0d61984..17459b79 100644
+--- a/src/anyio/_core/_fileio.py
++++ b/src/anyio/_core/_fileio.py
+@@ -421,13 +421,11 @@ async def copy(
+ target: str | os.PathLike[str],
+ *,
+ follow_symlinks: bool = True,
+- dirs_exist_ok: bool = False,
+ preserve_metadata: bool = False,
+ ) -> Path:
+ func = partial(
+ self._path.copy,
+ follow_symlinks=follow_symlinks,
+- dirs_exist_ok=dirs_exist_ok,
+ preserve_metadata=preserve_metadata,
+ )
+ return Path(await to_thread.run_sync(func, target))
+@@ -437,13 +435,11 @@ async def copy_into(
+ target_dir: str | os.PathLike[str],
+ *,
+ follow_symlinks: bool = True,
+- dirs_exist_ok: bool = False,
+ preserve_metadata: bool = False,
+ ) -> Path:
+ func = partial(
+ self._path.copy_into,
+ follow_symlinks=follow_symlinks,
+- dirs_exist_ok=dirs_exist_ok,
+ preserve_metadata=preserve_metadata,
+ )
+ return Path(await to_thread.run_sync(func, target_dir))
+@@ -616,7 +612,9 @@ async def read_text(
+ def relative_to(
+ self, *other: str | PathLike[str], walk_up: bool = False
+ ) -> Path:
+- return Path(self._path.relative_to(*other, walk_up=walk_up))
++ # relative_to() should work with any PathLike but it doesn't
++ others = [pathlib.Path(other) for other in other]
++ return Path(self._path.relative_to(*others, walk_up=walk_up))
+
+ else:
+
+From e0e2531de14c54eed895c92b4c8e87b44f47634b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Alex=20Gr=C3=B6nholm?= <alex.gronholm@nextday.fi>
+Date: Tue, 15 Apr 2025 00:54:22 +0300
+Subject: [PATCH] Fixed Path.copy() and Path.copy_info failing on Python
+ 3.14.0a7
+
+---
+ docs/versionhistory.rst | 1 +
+ src/anyio/_core/_fileio.py | 4 ++--
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src/anyio/_core/_fileio.py b/src/anyio/_core/_fileio.py
+index 17459b79..2eae029e 100644
+--- a/src/anyio/_core/_fileio.py
++++ b/src/anyio/_core/_fileio.py
+@@ -428,7 +428,7 @@ async def copy(
+ follow_symlinks=follow_symlinks,
+ preserve_metadata=preserve_metadata,
+ )
+- return Path(await to_thread.run_sync(func, target))
++ return Path(await to_thread.run_sync(func, pathlib.Path(target)))
+
+ async def copy_into(
+ self,
+@@ -442,7 +442,7 @@ async def copy_into(
+ follow_symlinks=follow_symlinks,
+ preserve_metadata=preserve_metadata,
+ )
+- return Path(await to_thread.run_sync(func, target_dir))
++ return Path(await to_thread.run_sync(func, pathlib.Path(target_dir)))
+
+ async def move(self, target: str | os.PathLike[str]) -> Path:
+ # Upstream does not handle anyio.Path properly as a PathLike
+From 8bad9c05d966f6edfa58f26257015cb657d4e5ef Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Alex=20Gr=C3=B6nholm?= <alex.gronholm@nextday.fi>
+Date: Sat, 15 Feb 2025 16:41:44 +0200
+Subject: [PATCH] Fixed test failures caused by Python 3.14.0a5
+
+---
+ docs/versionhistory.rst | 1 +
+ src/anyio/_core/_fileio.py | 15 ++++++++++-----
+ tests/test_fileio.py | 2 ++
+ 3 files changed, 13 insertions(+), 5 deletions(-)
+
+diff --git a/src/anyio/_core/_fileio.py b/src/anyio/_core/_fileio.py
+index 3728734c..350a873a 100644
+--- a/src/anyio/_core/_fileio.py
++++ b/src/anyio/_core/_fileio.py
+@@ -411,6 +412,10 @@ def match(self, path_pattern: str) -> bool:
+
+ if sys.version_info >= (3, 14):
+
++ @property
++ def info(self) -> Any: # TODO: add return type annotation when Typeshed gets it
++ return self._path.info
++
+ async def copy(
+ self,
+ target: str | os.PathLike[str],
+diff --git a/tests/test_fileio.py b/tests/test_fileio.py
+index d7a769bd..28830e6e 100644
+--- a/tests/test_fileio.py
++++ b/tests/test_fileio.py
+@@ -106,6 +106,8 @@ async def test_properties(self) -> None:
+ stdlib_properties.discard("__enter__")
+ stdlib_properties.discard("__exit__")
+ stdlib_properties.discard("__firstlineno__")
++ stdlib_properties.discard("__open_rb__")
++ stdlib_properties.discard("__open_wb__")
+
+ async_path = Path(path)
+ anyio_properties = {
diff --git a/dev-python/astor/astor-0.8.1-r1.ebuild b/dev-python/astor/astor-0.8.1-r1.ebuild
index 78b54a9e1f6d..e43a44bdedb7 100644
--- a/dev-python/astor/astor-0.8.1-r1.ebuild
+++ b/dev-python/astor/astor-0.8.1-r1.ebuild
@@ -24,6 +24,30 @@ PATCHES=(
distutils_enable_tests pytest
-EPYTEST_IGNORE=(
- tests/test_rtrip.py
-)
+python_test() {
+ local EPYTEST_IGNORE=(
+ tests/test_rtrip.py
+ )
+ local EPYTEST_DESELECT=()
+
+ case ${EPYTHON} in
+ python3.14)
+ EPYTEST_DESELECT+=(
+ # TODO
+ tests/test_code_gen.py::CodegenTestCase::test_complex
+ tests/test_code_gen.py::CodegenTestCase::test_deprecated_constant_nodes
+ tests/test_code_gen.py::CodegenTestCase::test_deprecated_name_constants
+ tests/test_code_gen.py::CodegenTestCase::test_fstring_debugging
+ tests/test_code_gen.py::CodegenTestCase::test_fstring_escaped_braces
+ tests/test_code_gen.py::CodegenTestCase::test_fstring_trailing_newline
+ tests/test_code_gen.py::CodegenTestCase::test_fstrings
+ tests/test_code_gen.py::CodegenTestCase::test_huge_int
+ tests/test_code_gen.py::CodegenTestCase::test_inf
+ tests/test_code_gen.py::CodegenTestCase::test_nan
+ )
+ ;;
+ esac
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest
+}
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index 86c3e8df1b98..e048265e186c 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -4,6 +4,7 @@ DIST boto3-1.38.11.gh.tar.gz 938736 BLAKE2B b1a27cb729b67047d9df35e4c9892560eeed
DIST boto3-1.38.12.gh.tar.gz 939412 BLAKE2B 096514640df4a98b76c30cd21816260fcb7a23c2a9cda9410094f35bf1c153995046a68497d1af8af7fdce47ece9efdede595a3d9a35ce9605058e5172bc8c60 SHA512 e430a248bf26fcf54fd3737502f0fb335275353381c23d7bfba793f0d092e0e37a1fe0bac550d1ad6386f92c1d62f868a939d9addfc48afc9331a082b9bae07e
DIST boto3-1.38.13.gh.tar.gz 939786 BLAKE2B 5c65c92b79ce28f398170950ed0fbce84a0079335a391a7ba4243a103634ba9e863fff8305dd799c47b896871ce16c5393fc2a4974026e34b8e35ca396002092 SHA512 e06f144b4cc6784d2563de2bfba2e0868c7877a2232c390bfee9db70518880b2d3c1506d3849b5f7cf46515ee2d1932a1ca09ca8847da2824f97fa5d828bc313
DIST boto3-1.38.14.gh.tar.gz 940393 BLAKE2B c3020c79137502354030dce76a5d3c9c684b89a05acab6a4d8ee525ec79b5bc7456dde1cb515b57b842d99cf923b1cbccf63a00b037dc383492eec0c03f9fe76 SHA512 04e6bc77e79c88268c1d9bd70f05e804377b3858cd5e883e1fd1cacd44857e6b48c21eb5aa1c1eadeef13e69d2d2a68d7fce161be14e315eeed8792daf6ffaa2
+DIST boto3-1.38.15.gh.tar.gz 941100 BLAKE2B 4a009dc8b39e2151ddc4e61e1946ffb110dcfde3c20fe68eb18d759bd1a0fe927905deae485461cf37738f62a278a1974aec20192971e704483745a123f38c9a SHA512 5750f5590cdd8fd05059ec7ce7c4406ce034fc5755cc037260d81b1c262e31113b8f0c8b465cd65e6d14b43b318dc18d86b2cef6e9d36efbf89367d856db240b
DIST boto3-1.38.3.gh.tar.gz 934010 BLAKE2B f5008a63aec620385e06c15e97ea37335bba190e5a29920c14389ae0dfc0e09a70ce70f8b50c0d25feda3defd9e855739305d19df7759688c156f53fc698b533 SHA512 8f300e38c7912f5df00431c1b70494521ac49500512b4aba7dc18f6bf0e570508d6a00fe8a98eb3c8607af39744a67e3b47d69507dbaf25d44dd02085f24bf95
DIST boto3-1.38.8.gh.tar.gz 937130 BLAKE2B 4158573a032957c33f62c6406937a45956f4ccf972be4a223e16a327b0b476402a1e7bf7d9b6a5b83005fc324f6c0062ed73008972cabed9247790225c4d4e5a SHA512 3c3854ed132ad4c81cd868848a370cdc73101ac3c578f8ae70bc53c9a98b1d85dcd364258027adef976b3c6d220aa45f865928c055c9320d3a268e0e29d5af63
DIST boto3-1.38.9.gh.tar.gz 937730 BLAKE2B 6b1a68095601d9b32be0679171a73b204897a7f632c1825ee203d27b46c625b196739b9c6ed8f19e84e0f0d2ba3a777539d9474cbaaa526fd499655e62ce9def SHA512 37960c90bb8de6328dc08cabb98a71e0dbb9303137410a1e44efdd650d6d0009398a4c4fb75ab53f8c8dfa7f566925c03de10012092967e661157f6bdc12e583
diff --git a/dev-python/boto3/boto3-1.38.15.ebuild b/dev-python/boto3/boto3-1.38.15.ebuild
new file mode 100644
index 000000000000..b862f479d876
--- /dev/null
+++ b/dev-python/boto3/boto3-1.38.15.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 ~loong ~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.12.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 ecbefa5566e7..e80cfde96736 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -4,6 +4,7 @@ DIST botocore-1.38.11.gh.tar.gz 14617163 BLAKE2B e521777baa74342bff16a59a0a1281e
DIST botocore-1.38.12.gh.tar.gz 14619336 BLAKE2B 65e66c6ef2daccef4e21a8256e4633140c2cfd424b76bee71c76fb1f9609c27623fbf34fa5a73606a9b9e1877e5eae70453b6106f0f02a1148f0baef6b5cda2e SHA512 471918f08af44395297f25b663d972155dddd23d6e1904afb3c002d38e919b52785dbc7da84f8a5b56921198304a7a28320328fc00da2b786ecc8b726bd1f08f
DIST botocore-1.38.13.gh.tar.gz 14619576 BLAKE2B 088dfd540934b2c1f20e5a63ffd3aa2351021f3f61207d30d3352e3d92c5df6138e87fe74fc9e48b2bf221dda2ede7e632f50f4378448a6dc6cdc2f87aaa0b02 SHA512 b1c7b585289859b94325bb1f3934bcb3a0d7596cb22e20ee79125aff96af2aa9337ec97a197426200b4ac606370eecf395a0ba7e26c79946c9390fbb02acc578
DIST botocore-1.38.14.gh.tar.gz 14627287 BLAKE2B 9033f12f01b6478ce9e2bf5a5796a79a5b45157537b542007d22d7a27aed0cc2f680d5be7bbf49dd6e29708b28221de19387dbe9104f6fca0175deba7bacc565 SHA512 f1e49ceb8f39e9978d9765662e8adf7d6973405559aa62c954a16d4ade2740065efbcc0304faf6ce18fc5f71b2e25091d7dbd4cf406e197a81cad15a7617a5ae
+DIST botocore-1.38.15.gh.tar.gz 14635893 BLAKE2B 9060ea9823ad74b5dc4b33c4701ad5c0b868f60e7450628502a12aa7ceb1d114f1edab07a2d2f93f9d43c99f1cf5198418484828eaba6ff8ad179c713754a5d2 SHA512 f8b6e45e31d93b2f6643537dbab22e0f952f14b7a281ab850126229b15c2c7f138d669bc9a22d8eb32a81045b6252c785462b930fdb23ec8f4081c945513f491
DIST botocore-1.38.3.gh.tar.gz 14578552 BLAKE2B 4766db1ba2651ebe65c79f8a37c91cf95875a20c0cc51c1886cd394b90d50109738daa79b398e0c4b80031cfab69e1338dfaafbc0ae796fffa3348f6b13fc1ce SHA512 ad69e119d5bbc98a0c14c1c927badeecc1f57d31305e6a07af41d4d4bf6755f5abc150e36321f71b9495221ad93052d84a1dc964fb9ef6fdd791d4c37e75a01a
DIST botocore-1.38.8.gh.tar.gz 14606167 BLAKE2B cb92f6014349f5188d62ddeb043e7532c50c7edc984cabae918825cdace981694c37ba656afcbbb64e65e275da4980d5f256a945bbcc63f9609272b08690c3d5 SHA512 bc9096051fde740a908ef0912a0c205595e7df653a349c167f616a788423578ba6b3aed6fe6213f528faa32b1c946abf0ac66dd81afdc05d41d12a4af4f7e818
DIST botocore-1.38.9.gh.tar.gz 14612563 BLAKE2B 10a0e43846393c06c808e306cde1398ea9374712d07b71d16270cd3238d3063f66ff532fab465acb5a87065002b7ca7394d0c77a25c83b9f8b8ecad7823042a2 SHA512 748c373a1be84a123968444316de7ab6f34b548d7619183d23ae07d0b0aeeeebc8ba1d25bb5517f0491144f7578fa9a7e9fbca066f6aa0da7b2d7439138bb8fd
diff --git a/dev-python/botocore/botocore-1.38.15.ebuild b/dev-python/botocore/botocore-1.38.15.ebuild
new file mode 100644
index 000000000000..df85ee0d220c
--- /dev/null
+++ b/dev-python/botocore/botocore-1.38.15.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 ~loong ~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/bottleneck/Manifest b/dev-python/bottleneck/Manifest
index f725f2742bc8..c66dbcecbb52 100644
--- a/dev-python/bottleneck/Manifest
+++ b/dev-python/bottleneck/Manifest
@@ -1,2 +1,3 @@
DIST bottleneck-1.4.2.tar.gz 103563 BLAKE2B a0fe43222acb63bcdf238282868c4a9acc6a8d0c3aa31d0b8ac9c38b6c4bb9e8a99e97e0227067a400b6320e52bbbbf0f29ddd5e38b32bc8c9cc995086d38e50 SHA512 6998a00375527fe77edd159311780a6551ee21dc2ef0ede7f47f6ca26542af4858df0065b2e8e82c3e5914069d0f467a770f460d04da5288d5a01ffd310d6292
+DIST bottleneck-1.5.0.tar.gz 104177 BLAKE2B 3cf5e089ce08bdacaa9ca81fdafd2a2b15b44151f79026803b3e0886fd47d4dcb1428089d7f7d9e75d0a644813c88682f50c5e4d8bac78b2e71089a6da750d8d SHA512 9fefe695afcec7c2ad29db7f84870bbea2224b96b606d0e72b1b6310e078fa098c6950dd3b3ac3bafc927fc0bbf6c56c3fcf89908530d806adeda1d10dec2ee7
DIST bottleneck-1.5.0rc1.tar.gz 104226 BLAKE2B 83f6f6c8289ea90b68850d970bd8a8c41499070fcef3dff724c17da3643f7b3e8935074babda0eda104118026cab116945a9685f1e508b1adc97c134af68aa31 SHA512 505e7116302266242ac7123c77dcae79ca1329531de98e54e8ae8dba25c65f7a58ad2ff3dd2eb19383362ed1b9591349caa1e92ee24fd5c0eb655d36886436ea
diff --git a/dev-python/bottleneck/bottleneck-1.5.0.ebuild b/dev-python/bottleneck/bottleneck-1.5.0.ebuild
new file mode 100644
index 000000000000..98f628f95077
--- /dev/null
+++ b/dev-python/bottleneck/bottleneck-1.5.0.ebuild
@@ -0,0 +1,52 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYPI_PN=${PN^}
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Fast NumPy array functions written in C"
+HOMEPAGE="
+ https://github.com/pydata/bottleneck/
+ https://pypi.org/project/Bottleneck/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
+
+DEPEND="
+ >=dev-python/numpy-1.9.1:=[${PYTHON_USEDEP}]
+"
+RDEPEND="
+ ${DEPEND}
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ # don't overwrites user's optimization level
+ sed -e '/extra_compile_args=\["-O2"\]/d' -i setup.py || die
+
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local EPYTEST_DESELECT=()
+ case ${EPYTHON} in
+ pypy3*)
+ EPYTEST_DESELECT+=(
+ # GC assumptions?
+ tests/memory_test.py::test_memory_leak
+ )
+ ;;
+ esac
+
+ rm -rf bottleneck || die
+ epytest --pyargs bottleneck
+}
diff --git a/dev-python/cloudpickle/cloudpickle-3.1.1.ebuild b/dev-python/cloudpickle/cloudpickle-3.1.1.ebuild
index c67721c0319d..267d3933cf39 100644
--- a/dev-python/cloudpickle/cloudpickle-3.1.1.ebuild
+++ b/dev-python/cloudpickle/cloudpickle-3.1.1.ebuild
@@ -4,7 +4,7 @@
EAPI=8
DISTUTILS_USE_PEP517=flit
-PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_COMPAT=( python3_{11..14} python3_{13,14}t )
inherit distutils-r1
@@ -31,6 +31,17 @@ BDEPEND="
distutils_enable_tests pytest
python_test() {
+ local EPYTEST_DESELECT=()
+ case ${EPYTHON} in
+ python3.14*)
+ EPYTEST_DESELECT+=(
+ # https://github.com/cloudpipe/cloudpickle/issues/567
+ tests/cloudpickle_test.py::CloudPickleTest::test_locally_defined_class_with_type_hints
+ tests/cloudpickle_test.py::Protocol2CloudPickleTest::test_locally_defined_class_with_type_hints
+ )
+ ;;
+ esac
+
local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
local -x PYTHONPATH=${PYTHONPATH}:tests/cloudpickle_testpkg
# -s unbreaks some tests
diff --git a/dev-python/dirty-equals/dirty-equals-0.9.0.ebuild b/dev-python/dirty-equals/dirty-equals-0.9.0.ebuild
index df877559f766..53efadf15818 100644
--- a/dev-python/dirty-equals/dirty-equals-0.9.0.ebuild
+++ b/dev-python/dirty-equals/dirty-equals-0.9.0.ebuild
@@ -4,7 +4,8 @@
EAPI=8
DISTUTILS_USE_PEP517=hatchling
-PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_FULLY_TESTED=( python3_{10..13} pypy3_11 pypy3 )
+PYTHON_COMPAT=( "${PYTHON_FULLY_TESTED[@]}" )
inherit distutils-r1
@@ -28,7 +29,7 @@ BDEPEND="
dev-python/packaging[${PYTHON_USEDEP}]
$(python_gen_cond_dep '
>=dev-python/pydantic-2.4.2[${PYTHON_USEDEP}]
- ' 'python*' pypy3)
+ ' "${PYTHON_FULLY_TESTED[@]}")
dev-python/pytest-mock[${PYTHON_USEDEP}]
>=dev-python/pytz-2021.3[${PYTHON_USEDEP}]
)
diff --git a/dev-python/exceptiongroup/exceptiongroup-1.3.0.ebuild b/dev-python/exceptiongroup/exceptiongroup-1.3.0.ebuild
index 815d0d19800c..d0f14382eff6 100644
--- a/dev-python/exceptiongroup/exceptiongroup-1.3.0.ebuild
+++ b/dev-python/exceptiongroup/exceptiongroup-1.3.0.ebuild
@@ -27,6 +27,17 @@ RDEPEND="
distutils_enable_tests pytest
python_test() {
+ local EPYTEST_DESELECT=()
+ case ${EPYTHON} in
+ python3.14*)
+ EPYTEST_DESELECT+=(
+ # https://github.com/agronholm/exceptiongroup/issues/148
+ tests/test_exceptions.py::DeepRecursionInSplitAndSubgroup::test_deep_split
+ tests/test_exceptions.py::DeepRecursionInSplitAndSubgroup::test_deep_subgroup
+ )
+ ;;
+ esac
+
local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
epytest
}
diff --git a/dev-python/faker/faker-37.1.0.ebuild b/dev-python/faker/faker-37.1.0.ebuild
index 4f44a1ce78c8..f0e339efb3a6 100644
--- a/dev-python/faker/faker-37.1.0.ebuild
+++ b/dev-python/faker/faker-37.1.0.ebuild
@@ -34,6 +34,11 @@ BDEPEND="
# note: tests are flaky with xdist
distutils_enable_tests pytest
+PATCHES=(
+ # https://github.com/joke2k/faker/pull/2213
+ "${FILESDIR}/${P}-py314.patch"
+)
+
python_test() {
local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
local -x PYTEST_PLUGINS=faker.contrib.pytest.plugin
diff --git a/dev-python/faker/files/faker-37.1.0-py314.patch b/dev-python/faker/files/faker-37.1.0-py314.patch
new file mode 100644
index 000000000000..9f6931ba7a8d
--- /dev/null
+++ b/dev-python/faker/files/faker-37.1.0-py314.patch
@@ -0,0 +1,45 @@
+From eaad7bb42385793a0622376caf3b832a7836781e Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
+Date: Wed, 14 May 2025 13:17:48 +0200
+Subject: [PATCH] Fix type annotations for Python 3.14
+
+Fix type annotations for `Provider.json()` to avoid name collision
+in Python 3.14.0b1 where `json` is resolved to the `json()` method
+itself rather than the `json` module. Import `JSONEncoder` directly
+instead, so we can reference it without `json.`.
+
+Fixes #2212
+---
+ faker/providers/misc/__init__.py | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/faker/providers/misc/__init__.py b/faker/providers/misc/__init__.py
+index dca3363e..6ed2e958 100644
+--- a/faker/providers/misc/__init__.py
++++ b/faker/providers/misc/__init__.py
+@@ -9,6 +9,7 @@ import tarfile
+ import uuid
+ import zipfile
+
++from json import JSONEncoder
+ from typing import Any, Callable, Dict, List, Literal, Optional, Sequence, Set, Tuple, Type, Union, overload
+
+ from faker.exceptions import UnsupportedFeature
+@@ -536,7 +537,7 @@ class Provider(BaseProvider):
+ data_columns: Optional[List] = None,
+ num_rows: int = 10,
+ indent: Optional[int] = None,
+- cls: Optional[Type[json.JSONEncoder]] = None,
++ cls: Optional[Type[JSONEncoder]] = None,
+ ) -> bytes:
+ """
+ Generate random JSON structure and return as bytes.
+@@ -551,7 +552,7 @@ class Provider(BaseProvider):
+ data_columns: Optional[List] = None,
+ num_rows: int = 10,
+ indent: Optional[int] = None,
+- cls: Optional[Type[json.JSONEncoder]] = None,
++ cls: Optional[Type[JSONEncoder]] = None,
+ ) -> str:
+ """
+ Generate random JSON structure values.
diff --git a/dev-python/flask/Manifest b/dev-python/flask/Manifest
index 3a8721c7e366..2b415b582bd6 100644
--- a/dev-python/flask/Manifest
+++ b/dev-python/flask/Manifest
@@ -1 +1,2 @@
DIST flask-3.1.0.tar.gz 680824 BLAKE2B 2897fb3cc7631341001c955119bf0a697db1a9dfd6ff0e1078f882fb030779eb0d15c64d4e9626d6a54bc50627c463f73d58b34e449b149106ac76ff878cd506 SHA512 dd1d9113f57d62cd8fb5d33a6fb6258761a39c3df41d174e52f454abfbfc2da4b6a88b142196bd0681637fe53982d95762b023acddbed00f10805c4266194e24
+DIST flask-3.1.1.tar.gz 753440 BLAKE2B 272ffc7c97ed68c8929e4b9aa41b6efac0beb205471e60e5a14030328be28fe629fe35d02440920abedc27d288ba20d36221c83aa6f64ef090d6ed3b248576bd SHA512 b582b71e10f72c2096f4a665a8182775165f48eece8bcded9ca5791bc575e3333ac913fb355279f0bee93fc57c16f9a8b635b329bfd71ed42df2b288c1a69741
diff --git a/dev-python/flask/flask-3.1.1.ebuild b/dev-python/flask/flask-3.1.1.ebuild
new file mode 100644
index 000000000000..780c352d4ca3
--- /dev/null
+++ b/dev-python/flask/flask-3.1.1.ebuild
@@ -0,0 +1,58 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1
+
+DESCRIPTION="A microframework based on Werkzeug, Jinja2 and good intentions"
+HOMEPAGE="
+ https://palletsprojects.com/p/flask/
+ https://github.com/pallets/flask/
+ https://pypi.org/project/Flask/
+"
+if [[ ${PV} == *9999* ]]; then
+ EGIT_REPO_URI="https://github.com/mitsuhiko/flask.git"
+ inherit git-r3
+else
+ inherit pypi
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+fi
+
+LICENSE="BSD"
+SLOT="0"
+IUSE="examples"
+
+RDEPEND="
+ >=dev-python/blinker-1.9[${PYTHON_USEDEP}]
+ >=dev-python/click-8.1.3[${PYTHON_USEDEP}]
+ >=dev-python/itsdangerous-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/jinja2-3.1.2[${PYTHON_USEDEP}]
+ >=dev-python/werkzeug-3.1.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ >=dev-python/asgiref-3.2[${PYTHON_USEDEP}]
+ !!dev-python/shiboken2[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_sphinx docs \
+ dev-python/pallets-sphinx-themes \
+ dev-python/sphinx-issues \
+ dev-python/sphinx-tabs \
+ dev-python/sphinxcontrib-log-cabinet
+distutils_enable_tests pytest
+
+python_test() {
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest
+}
+
+python_install_all() {
+ use examples && dodoc -r examples
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/httpx/httpx-0.28.1-r1.ebuild b/dev-python/httpx/httpx-0.28.1-r1.ebuild
index 329b68ab7ee9..85d732e94914 100644
--- a/dev-python/httpx/httpx-0.28.1-r1.ebuild
+++ b/dev-python/httpx/httpx-0.28.1-r1.ebuild
@@ -80,6 +80,10 @@ python_test() {
# Internet
tests/client/test_proxies.py::test_async_proxy_close
tests/client/test_proxies.py::test_sync_proxy_close
+ # click-8.2.0
+ # https://github.com/encode/httpx/discussions/3572
+ tests/test_main.py::test_auth
+ tests/test_main.py::test_verbose
)
use cli || EPYTEST_IGNORE+=(
diff --git a/dev-python/hypothesis/Manifest b/dev-python/hypothesis/Manifest
index d059839c89bb..0ff0c9a83eb6 100644
--- a/dev-python/hypothesis/Manifest
+++ b/dev-python/hypothesis/Manifest
@@ -1,4 +1,5 @@
DIST hypothesis-6.130.13.gh.tar.gz 9544282 BLAKE2B 9a74af5cab1562b5eb2fc00fe1ea67471171ac1ecf71ef01e51082b6e3469c7a9b1de7e56119a4517b8f6c45be5efbc5461dcd258ab80c246e07df7c58dbf9c2 SHA512 25dbde677bf8b2e727999c39083f6746c9431e22326034c50ed723b51a3d7678a62dce648fcfd16802808f2034ad7cb74fe0b98fe50519b505a5b05412afa17a
DIST hypothesis-6.131.12.gh.tar.gz 9551332 BLAKE2B f09f08a67209f4e72b845069f1d99978e53a83f5001a05a54e07b0a8c81f8fa1dfc55b3cd3da8c989efcf7cdf0171816df02c6e54123965a96aa0a0716e872f5 SHA512 01031fd37fadc6f38b0a34224d10d3b57eab109bd0fd77e1d00873b1f9ed08c234664061b22de64f8908ea8aa1909b891fb1035b4016724cd209db8255748722
DIST hypothesis-6.131.15.gh.tar.gz 9553236 BLAKE2B 29473ae79fce7183cbaec2f936824f52a18c02e13e4bd416debadd3c0b7a731d0643373c376b4236a1a857312c995e8822f54d94c1f165e8d77578371886f10d SHA512 ee89bc176230850ef4ecab7a5179f1528c576b21d42af2a76be512df70adb7ddd670a86552e18e5246bfde3184038237d644951149d78f4ca1f8cec77b6a2586
+DIST hypothesis-6.131.16.gh.tar.gz 9553561 BLAKE2B 0e7bc016b79bc8e68743e143455c5bb3e9815d186ae8b2e30093f53f0305cd086c2293ba0a10fa82e4b5fc26ffe0089438b3e79c1210c1486656437cbd3e83f3 SHA512 453a4bf94df625ef0fb63b442951990f0066228984f4facb96c46063857b7e8a61647692690f81e837586e20cb79d9dee60426674efe848b698461a0eee13ec0
DIST hypothesis-6.131.9.gh.tar.gz 9549949 BLAKE2B 8fb5c9b9ad2c3940671d1128980b431fd43e63e35561c53f4cb172e12313019349a9ec3f3d7ecc5c8701e1aef471a1242861a94a37767e61629a42a5bf525ed0 SHA512 345baa03d68ef615fc926d93344e4f5e6f7899f104d489ebcf127426a7b2bdf6b6ac1b19ae153b297102c3a2980fa1627ce8a900a851965b213f0bd30ff4e54c
diff --git a/dev-python/hypothesis/hypothesis-6.131.16.ebuild b/dev-python/hypothesis/hypothesis-6.131.16.ebuild
new file mode 100644
index 000000000000..5fc2ebd650ed
--- /dev/null
+++ b/dev-python/hypothesis/hypothesis-6.131.16.ebuild
@@ -0,0 +1,126 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+CLI_COMPAT=( python3_{11..13} )
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_REQ_USE="threads(+),sqlite"
+
+inherit distutils-r1 optfeature
+
+TAG=hypothesis-python-${PV}
+MY_P=hypothesis-${TAG}
+DESCRIPTION="A library for property based testing"
+HOMEPAGE="
+ https://github.com/HypothesisWorks/hypothesis/
+ https://pypi.org/project/hypothesis/
+"
+SRC_URI="
+ https://github.com/HypothesisWorks/hypothesis/archive/${TAG}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+S="${WORKDIR}/${MY_P}/hypothesis-python"
+
+LICENSE="MPL-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="cli"
+
+RDEPEND="
+ >=dev-python/attrs-22.2.0[${PYTHON_USEDEP}]
+ >=dev-python/sortedcontainers-2.1.0[${PYTHON_USEDEP}]
+ cli? (
+ $(python_gen_cond_dep '
+ dev-python/black[${PYTHON_USEDEP}]
+ dev-python/click[${PYTHON_USEDEP}]
+ ' "${CLI_COMPAT[@]}")
+ )
+"
+BDEPEND="
+ test? (
+ dev-python/pexpect[${PYTHON_USEDEP}]
+ >=dev-python/pytest-8[${PYTHON_USEDEP}]
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ # subtests are broken by warnings from random plugins
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local -x PYTEST_PLUGINS=xdist.plugin,_hypothesis_pytestplugin
+ local -x HYPOTHESIS_NO_PLUGINS=1
+
+ # NB: paths need to be relative to pytest.ini,
+ # i.e. start with hypothesis-python/
+ local EPYTEST_DESELECT=()
+ case ${EPYTHON} in
+ python3.13t)
+ EPYTEST_DESELECT+=(
+ # TODO: missing warning
+ 'hypothesis-python/tests/cover/test_random_module.py::test_passing_referenced_instance_within_function_scope_warns'
+ )
+ ;&
+ python3.14*)
+ EPYTEST_DESELECT+=(
+ 'hypothesis-python/tests/cover/test_compat.py::test_resolve_fwd_refs[Foo-Union]'
+ 'hypothesis-python/tests/cover/test_lookup.py::test_builds_suggests_from_type[Union]'
+ hypothesis-python/tests/cover/test_attrs_inference.py::test_attrs_inference_builds
+ hypothesis-python/tests/cover/test_lookup.py::test_bytestring_not_treated_as_generic_sequence
+ hypothesis-python/tests/cover/test_lookup.py::test_issue_4194_regression
+ hypothesis-python/tests/cover/test_lookup.py::test_resolves_forwardrefs_to_builtin_types
+ hypothesis-python/tests/cover/test_lookup.py::test_specialised_collection_types
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_collection_as_generic
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_container_as_generic
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_contextmanager_as_generic
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_iterable_as_generic
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_reversible_as_generic
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_sequence_as_generic
+ hypothesis-python/tests/cover/test_random_module.py::test_evil_prng_registration_nonsense
+ hypothesis-python/tests/cover/test_random_module.py::test_passing_referenced_instance_within_function_scope_warns
+ hypothesis-python/tests/cover/test_random_module.py::test_register_random_within_nested_function_scope
+ hypothesis-python/tests/cover/test_random_module.py::test_registering_a_Random_is_idempotent
+ hypothesis-python/tests/cover/test_type_lookup_forward_ref.py::test_bound_missing_dot_access_forward_ref
+ hypothesis-python/tests/cover/test_type_lookup_forward_ref.py::test_bound_missing_forward_ref
+ hypothesis-python/tests/cover/test_type_lookup_forward_ref.py::test_bound_type_checking_only_forward_ref_wrong_type
+ hypothesis-python/tests/cover/test_type_lookup_forward_ref.py::test_bound_type_cheking_only_forward_ref
+ )
+ ;;
+ esac
+
+ epytest -o filterwarnings= -p rerunfailures --reruns=5 \
+ tests/cover tests/pytest tests/quality
+}
+
+src_install() {
+ local HAD_CLI=
+
+ distutils-r1_src_install
+
+ if [[ ! ${HAD_CLI} ]]; then
+ rm -r "${ED}/usr/bin" || die
+ fi
+}
+
+python_install() {
+ distutils-r1_python_install
+ if use cli && has "${EPYTHON}" "${CLI_COMPAT[@]/_/.}"; then
+ HAD_CLI=1
+ else
+ rm -r "${D}$(python_get_scriptdir)" || die
+ fi
+}
+
+pkg_postinst() {
+ optfeature "datetime support" dev-python/pytz
+ optfeature "dateutil support" dev-python/python-dateutil
+ optfeature "numpy support" dev-python/numpy
+ optfeature "django support" dev-python/django dev-python/pytz
+ optfeature "pandas support" dev-python/pandas
+ optfeature "pytest support" dev-python/pytest
+}
diff --git a/dev-python/langdetect/Manifest b/dev-python/langdetect/Manifest
index a11d7c268c91..d12ab8aeaca8 100644
--- a/dev-python/langdetect/Manifest
+++ b/dev-python/langdetect/Manifest
@@ -1 +1,3 @@
DIST langdetect-1.0.9.tar.gz 981474 BLAKE2B ea8a9c3f16a2987c080742473bff4f2c1503f53fb3c2b40b0b1d6212bb6133ea22dce7864ffcfb8968c3a46b157d45cb3e2cf6f84bdbed0266cc716a853b032c SHA512 7558d674c47b080c79e43a00a25d2c7f77188cf60bea2cecb3bebb803d75e1aa42b43c74bd26ea1b541f4cb927421908882cbec01a91f0913984217e71ccc8db
+EBUILD langdetect-1.0.9.ebuild 494 BLAKE2B 9cd8a2a93a8d45bf51fe2324402b175d641762ea591fcb99459427f977a95eccffa6ca4777ca4df39814eea6eac62711567faa654456d32f79023a4685804504 SHA512 d973b85ba1a44389a4275f02a779a93a005f7c2e096467b94b072862e4984d5b42cf33f9821ac68aa5b85b12c98983a90b96049989d8c84497969174b6bb838e
+MISC metadata.xml 457 BLAKE2B 630128a3e982b6d60cc7b9f74c79fcb5ee47a71a02c73a50af9da8cedb6fad8e20a7f74b881e5b25c6483b92c9edbd56552cd38b2d9cbfa8b3eb4530facea969 SHA512 674f4f5cd809c6c77bc14e0f5687fa972bef14bdfa0b3343c5d66b7163eef1906eb87d060c8288732f825de71dce291ad0b841a5f2f0dd230f957b5687e45d45
diff --git a/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch b/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch
deleted file mode 100644
index 637368d2f237..000000000000
--- a/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Fix "Package 'langdetect.profiles' is absent from the `packages` configuration."
-
---- a/setup.py
-+++ b/setup.py
-@@ -18,7 +18,7 @@ setup(
- author_email='michal.danilak@gmail.com',
- url='https://github.com/Mimino666/langdetect',
- keywords='language detection library',
-- packages=['langdetect', 'langdetect.utils', 'langdetect.tests'],
-+ packages=['langdetect', 'langdetect.utils', 'langdetect.tests', 'langdetect.profiles'],
- include_package_data=True,
- install_requires=['six'],
- license='MIT',
diff --git a/dev-python/langdetect/langdetect-1.0.9.ebuild b/dev-python/langdetect/langdetect-1.0.9.ebuild
index 99577c43fc3e..56733bbffc48 100644
--- a/dev-python/langdetect/langdetect-1.0.9.ebuild
+++ b/dev-python/langdetect/langdetect-1.0.9.ebuild
@@ -1,9 +1,9 @@
-# Copyright 2022-2024 Gentoo Authors
+# Copyright 2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
DISTUTILS_USE_PEP517=setuptools
inherit distutils-r1 pypi
@@ -19,6 +19,4 @@ KEYWORDS="~amd64"
RDEPEND="dev-python/six[${PYTHON_USEDEP}]"
-PATCHES=( "${FILESDIR}/${P}-explicit-config.patch" )
-
distutils_enable_tests unittest
diff --git a/dev-python/langdetect/metadata.xml b/dev-python/langdetect/metadata.xml
index c0f74ac187e2..020e07f2a3dd 100644
--- a/dev-python/langdetect/metadata.xml
+++ b/dev-python/langdetect/metadata.xml
@@ -2,9 +2,11 @@
<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
- <email>pastalian46@gmail.com</email>
- <name>Takuya Wakazono</name>
+ <email>marcin.deranek@slonko.net</email>
+ <name>Marcin Deranek</name>
</maintainer>
-
- <origin>gentoo-guru-overlay</origin>
+ <upstream>
+ <bugs-to>https://github.com/Mimino666/langdetect/issues</bugs-to>
+ </upstream>
+ <origin>slonko-overlay</origin>
</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/mkdocs-material/Manifest b/dev-python/mkdocs-material/Manifest
index 63fc6a8a8e24..a9834c648842 100644
--- a/dev-python/mkdocs-material/Manifest
+++ b/dev-python/mkdocs-material/Manifest
@@ -1,2 +1,3 @@
DIST mkdocs-material-9.6.12.gh.tar.gz 14819122 BLAKE2B 9e420351d4eb103e0f5d6a0e8d1fee74c15da95958aec9c44ebc9beccfd586a6454568d8fb70d106521e0678fbbe794a107c1b0107f2f4276888c6595460495e SHA512 6953a06646ae301180fbe7e30d7c64563c89cf984c5f62c44edceb36b923e66ea7c5d9d7dcf7442a23fcb3efad860c67175d8ac147ae594055568b310ffb2c7f
DIST mkdocs-material-9.6.13.gh.tar.gz 14819165 BLAKE2B 05b0a08877b7baa8d5d2235df3ae797359953c2daf8d85b6c4fd31e12b996506cedcbfacd74e2f0d9aa0f6ccee336b5a14482d8c90951c02c1eec30cc5be2620 SHA512 ff7d0cbaa597bbf8e9ff727587c00a6d3a757d791365eba99b42c701f8481a97d1efbe2c3ac5071dab006d4bbcbecd462b475288e1ecb696e5db2fdab1d1625d
+DIST mkdocs-material-9.6.14.gh.tar.gz 14819385 BLAKE2B ee111ca205746a0c115d2cf455a9a2ca39c1d74425c12ca5e16dee9f9afc2adcc33b67c8b2d51d4e5813b8ee60475718ab8eba747e13cb01c6a43a0fd170794e SHA512 f1e09a6301ed3bddc4ff041b8a96894d07df9169b25e8f65570f8d2457617196a532335be43cbaca6df6b4d46d45d6f1837521a41e17766f03118c01789d4343
diff --git a/dev-python/mkdocs-material/mkdocs-material-9.6.14.ebuild b/dev-python/mkdocs-material/mkdocs-material-9.6.14.ebuild
new file mode 100644
index 000000000000..b2827a7488c5
--- /dev/null
+++ b/dev-python/mkdocs-material/mkdocs-material-9.6.14.ebuild
@@ -0,0 +1,73 @@
+# 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 )
+
+DOCS_BUILDER="mkdocs"
+DOCS_DEPEND="
+ dev-python/mkdocs-material-extensions
+ dev-python/mkdocs-minify-plugin
+ dev-python/mkdocs-redirects
+"
+
+inherit distutils-r1 docs
+
+DESCRIPTION="A Material Design theme for MkDocs"
+HOMEPAGE="
+ https://github.com/squidfunk/mkdocs-material/
+ https://pypi.org/project/mkdocs-material/
+"
+SRC_URI="
+ https://github.com/squidfunk/${PN}/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+# bundled icons
+LICENSE+=" Apache-2.0 CC0-1.0 CC-BY-4.0 MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
+IUSE="social"
+
+RDEPEND="
+ >=dev-python/babel-2.10.3[${PYTHON_USEDEP}]
+ >=dev-python/colorama-0.4[${PYTHON_USEDEP}]
+ >=dev-python/jinja2-3.0.2[${PYTHON_USEDEP}]
+ >=dev-python/lxml-4.6[${PYTHON_USEDEP}]
+ >=dev-python/markdown-3.2[${PYTHON_USEDEP}]
+ >=dev-python/mkdocs-1.5.3[${PYTHON_USEDEP}]
+ >=dev-python/paginate-0.5.6[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.16[${PYTHON_USEDEP}]
+ >=dev-python/pymdown-extensions-10.2[${PYTHON_USEDEP}]
+ >=dev-python/readtime-2.0[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/regex-2022.4.24[${PYTHON_USEDEP}]
+ ' 'python*')
+ >=dev-python/requests-2.26[${PYTHON_USEDEP}]
+ social? (
+ >=dev-python/pillow-10.2[${PYTHON_USEDEP}]
+ >=media-gfx/cairosvg-2.5[${PYTHON_USEDEP}]
+ )
+"
+BDEPEND="
+ >=dev-python/trove-classifiers-2023.10.18[${PYTHON_USEDEP}]
+"
+# mkdocs-material-extensions depends on mkdocs-material creating a circular dep
+PDEPEND="
+ >=dev-python/mkdocs-material-extensions-1.2[${PYTHON_USEDEP}]
+"
+
+PATCHES=(
+ # simplify pyproject to remove extra deps for metadata
+ "${FILESDIR}/${PN}-8.5.7-simplify-build.patch"
+ # import backrefs only when used (i.e. never)
+ "${FILESDIR}/${PN}-9.6.7-backrefs.patch"
+)
+
+src_prepare() {
+ distutils-r1_src_prepare
+ echo "__version__ = '${PV}'" > gentoo_version.py || die
+}
diff --git a/dev-python/psycopg/Manifest b/dev-python/psycopg/Manifest
index f0bc0ed331c0..eba97ba984a6 100644
--- a/dev-python/psycopg/Manifest
+++ b/dev-python/psycopg/Manifest
@@ -1,4 +1,5 @@
DIST psycopg-3.2.6.gh.tar.gz 558574 BLAKE2B a994f6fb3ee85c42371b848d0947858897a9a1f7256486aa964c8c7634b198b9229a53626c526cb85218a8468308dd9e7e605c1fc1058a08c7fb7183aed83b8d SHA512 99472813c9b6542611b15f0dd52d418a7e3f01cf0447a9a58c1d4135249fb526ca25f7569cc5d7d8a2a99184dccca52f485ee9cc9514e6ada1ebd526f8d62305
DIST psycopg-3.2.7.gh.tar.gz 562235 BLAKE2B 26f661b9072e2db610ee237dc4a794636ba44a17de3248f018787ed46c34b8087115a91bf2fd06c817c15ba1e2d3da93120f6fd23fcc164d90154928e7d2f1cc SHA512 76f7e8a515b6a7925811a5451eea2fa827b7ba52976faff0dd67c79e8354e83969176a504c1b34993c8a81f0b5ee9cdaf2461acbfc6a047884d47480b08dfc77
DIST psycopg-3.2.8.gh.tar.gz 564688 BLAKE2B 846845d05e4646cc900e4797babaf3cb941094d295b83d5c57aada071eed9a0367e36d8fbd4f43cc7a3f1f84ccc2a4a277fede244177abe53191baaea5603c28 SHA512 b705eca31d1ca63cb44e1e029a7bacb3dfa8de8639dd9e99bda4ed86bfa8f02d08e01ec716fa51fbad04ccb16683f3c3db10ee82fcb0804f09b67e3fe2a9118c
+DIST psycopg-3.2.9.gh.tar.gz 565735 BLAKE2B 5b9b16e5e310214bdbf12198a7b8d9d86ed7b7e947a33c7333fe79bca946b76f09c60ea25960d3cf3f99423598a65ce33b53bd6dc10a9c68a930a46068b54fd6 SHA512 3e455852dd19c9639a8ee18773486295ea76f9a16146997be9dd4f3f6350257440e0d8fff9494acb79e95f04e74c0c14ec7968694fe329abeb74edcfb297d4dd
DIST psycopg2-2.9.10.tar.gz 385672 BLAKE2B 4a3ad64f406c427b785ffeb85f6520aa67ed04de2d1749eb22d8275146b71ba451f7c04c9ead401d6f7a273781492cd6a5a36beba68b36b1e5203ee75f7df503 SHA512 d0916f6a645b5e87f89f2463dc22fad78340a85fbff320d099bf429a42557f40d3a4eebdc670768469aef1e9fcee60123767bfe49e1186e8574f95bfd6f46900
diff --git a/dev-python/psycopg/psycopg-3.2.9.ebuild b/dev-python/psycopg/psycopg-3.2.9.ebuild
new file mode 100644
index 000000000000..eb1de30fe34c
--- /dev/null
+++ b/dev-python/psycopg/psycopg-3.2.9.ebuild
@@ -0,0 +1,117 @@
+# Copyright 1999-2025 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_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1
+
+DESCRIPTION="PostgreSQL database adapter for Python"
+HOMEPAGE="
+ https://www.psycopg.org/psycopg3/
+ https://github.com/psycopg/psycopg/
+ https://pypi.org/project/psycopg/
+"
+SRC_URI="
+ https://github.com/psycopg/psycopg/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="LGPL-3+"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+IUSE="+native-extensions"
+
+DEPEND="
+ native-extensions? (
+ >=dev-db/postgresql-8.1:=
+ )
+ !native-extensions? (
+ >=dev-db/postgresql-8.1:*
+ )
+"
+RDEPEND="
+ ${DEPEND}
+ >=dev-python/typing-extensions-4.4[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ native-extensions? (
+ dev-python/cython[${PYTHON_USEDEP}]
+ )
+ test? (
+ >=dev-db/postgresql-8.1[server]
+ >=dev-python/anyio-4.0[${PYTHON_USEDEP}]
+ >=dev-python/dnspython-2.1[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_compile() {
+ # Python code + ctypes backend
+ cd psycopg || die
+ distutils-r1_python_compile
+
+ # optional C backend
+ if use native-extensions && [[ ${EPYTHON} != pypy3* ]]; then
+ local DISTUTILS_USE_PEP517=standalone
+ cd ../psycopg_c || die
+ distutils-r1_python_compile
+ fi
+ cd .. || die
+}
+
+src_test() {
+ rm -r psycopg{,_c} || die
+
+ initdb -D "${T}"/pgsql || die
+ # TODO: random port
+ pg_ctl -w -D "${T}"/pgsql start \
+ -o "-h '' -k '${T}'" || die
+ createdb -h "${T}" test || die
+
+ local -x PSYCOPG_TEST_DSN="host=${T} dbname=test"
+ distutils-r1_src_test
+
+ pg_ctl -w -D "${T}"/pgsql stop || die
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # tests for the psycopg_pool package
+ tests/pool
+ # some broken mypy magic
+ tests/test_module.py::test_version
+ tests/test_module.py::test_version_c
+ tests/test_typing.py
+ tests/crdb/test_typing.py
+ # TODO, relying on undefined ordering in Python?
+ tests/test_dns_srv.py::test_srv
+ )
+
+ case ${ARCH} in
+ arm|x86)
+ EPYTEST_DESELECT+=(
+ # TODO
+ tests/types/test_numpy.py::test_classes_identities
+ )
+ ;;
+ esac
+
+ local impls=( python )
+ if use native-extensions && [[ ${EPYTHON} != pypy3* ]]; then
+ impls+=( c )
+ fi
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local -x PSYCOPG_IMPL
+ for PSYCOPG_IMPL in "${impls[@]}"; do
+ einfo "Testing with ${PSYCOPG_IMPL} implementation ..."
+ # leak and timing tests are fragile whereas slow tests are slow
+ epytest -p anyio -k "not leak" \
+ -m "not timing and not slow and not flakey"
+ done
+}
diff --git a/dev-python/pytest-aiohttp/pytest-aiohttp-1.1.0-r1.ebuild b/dev-python/pytest-aiohttp/pytest-aiohttp-1.1.0-r1.ebuild
new file mode 100644
index 000000000000..74a4ed879655
--- /dev/null
+++ b/dev-python/pytest-aiohttp/pytest-aiohttp-1.1.0-r1.ebuild
@@ -0,0 +1,36 @@
+# 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="pytest plugin for aiohttp support"
+HOMEPAGE="
+ https://github.com/aio-libs/pytest-aiohttp/
+ https://pypi.org/project/pytest-aiohttp/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+
+RDEPEND="
+ >=dev-python/aiohttp-3.11.0_beta1[${PYTHON_USEDEP}]
+ >=dev-python/pytest-6.1.0[${PYTHON_USEDEP}]
+ >=dev-python/pytest-asyncio-0.17.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ >=dev-python/setuptools-scm-6.2[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # warning doesn't seem to be emitted for some reason
+ # doesn't look very important
+ tests/test_obsolete_fixtures.py::test_loop_fixture
+)
diff --git a/dev-python/pytest/files/pytest-8.3.5-test.patch b/dev-python/pytest/files/pytest-8.3.5-test.patch
new file mode 100644
index 000000000000..9a900c69244a
--- /dev/null
+++ b/dev-python/pytest/files/pytest-8.3.5-test.patch
@@ -0,0 +1,24 @@
+From b7854561993d00b8dddf3f43ce6b042b4111fa4c Mon Sep 17 00:00:00 2001
+From: jakkdl <h6+github@pm.me>
+Date: Wed, 12 Mar 2025 15:10:29 +0100
+Subject: [PATCH] fix attrs==25.2.0 compatibility
+
+---
+ changelog/13291.bugfix.rst | 1 +
+ src/_pytest/assertion/util.py | 2 +-
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+ create mode 100644 changelog/13291.bugfix.rst
+
+diff --git a/src/_pytest/assertion/util.py b/src/_pytest/assertion/util.py
+index 30aee185d57..c545e6cd20c 100644
+--- a/src/_pytest/assertion/util.py
++++ b/src/_pytest/assertion/util.py
+@@ -169,7 +169,7 @@ def has_default_eq(
+ code_filename = obj.__eq__.__code__.co_filename
+
+ if isattrs(obj):
+- return "attrs generated eq" in code_filename
++ return "attrs generated " in code_filename
+
+ return code_filename == "<string>" # data class
+ return True
diff --git a/dev-python/pytest/pytest-8.3.5.ebuild b/dev-python/pytest/pytest-8.3.5.ebuild
index a7649250d99e..6089665e890f 100644
--- a/dev-python/pytest/pytest-8.3.5.ebuild
+++ b/dev-python/pytest/pytest-8.3.5.ebuild
@@ -45,6 +45,11 @@ BDEPEND="
)
"
+PATCHES=(
+ # https://github.com/pytest-dev/pytest/pull/13291
+ "${FILESDIR}/${P}-test.patch"
+)
+
src_test() {
# workaround new readline defaults
echo "set enable-bracketed-paste off" > "${T}"/inputrc || die
@@ -106,6 +111,15 @@ python_test() {
testing/test_skipping.py::test_errors_in_xfail_skip_expressions
)
;;
+ python3.14*)
+ EPYTEST_DESELECT+=(
+ # still broken on main, as of 2025-05-14
+ testing/test_unraisableexception.py::test_unraisable
+ testing/test_unraisableexception.py::test_unraisable_in_setup
+ testing/test_unraisableexception.py::test_unraisable_in_teardown
+ testing/test_debugging.py::test_raises_bdbquit_with_eoferror
+ )
+ ;;
esac
local EPYTEST_XDIST=1
diff --git a/dev-python/python-dotenv/python-dotenv-1.1.0.ebuild b/dev-python/python-dotenv/python-dotenv-1.1.0.ebuild
index c1bbc5a2d52f..561889472c2d 100644
--- a/dev-python/python-dotenv/python-dotenv-1.1.0.ebuild
+++ b/dev-python/python-dotenv/python-dotenv-1.1.0.ebuild
@@ -29,6 +29,20 @@ DOCS=( CHANGELOG.md README.md )
distutils_enable_tests pytest
+python_test() {
+ local EPYTEST_DESELECT=(
+ # test issue with click-8.2.0
+ # https://github.com/theskumar/python-dotenv/issues/560
+ tests/test_cli.py::test_get_non_existent_file
+ tests/test_cli.py::test_get_not_a_file
+ tests/test_cli.py::test_list_non_existent_file
+ tests/test_cli.py::test_list_not_a_file
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest
+}
+
python_install() {
distutils-r1_python_install
ln -s dotenv "${D}$(python_get_scriptdir)"/python-dotenv || die
diff --git a/dev-python/pyyaml-env-tag/Manifest b/dev-python/pyyaml-env-tag/Manifest
index f04fc9841cbf..0aab6ee262c2 100644
--- a/dev-python/pyyaml-env-tag/Manifest
+++ b/dev-python/pyyaml-env-tag/Manifest
@@ -1,2 +1,3 @@
DIST pyyaml-env-tag-1.0.gh.tar.gz 11727 BLAKE2B d0c3955df53e08d657b258691c4ed9fc4812aab5b2844914df09887aeb0660deb68ecb5c523ec9e7d692090f40627bf0072cd208d8a39c14634ec7f6ae21a55f SHA512 60a4a818d9b547a83e1d4f6b249d52eb7b1650dce12e6f7229f4999604d082ab2369d348cefe8423c2ae4ef36e50a5501a0327c6dbae0d82805af0dd192619bc
DIST pyyaml_env_tag-0.1.tar.gz 5631 BLAKE2B 2302f3fd7c33347b1e451f466b13fbad53f2b77ee305ce844cd5b5bf40e633de95f4604eb27660c5f61aca21845e6f70e40a0ab52386a44d9b4e9be3ec7a7f29 SHA512 7d3dbc08fb338b3de5bbe657fa8a98a330d7ac7962ac2ea6513ade362b36deaaad8d9e82eb018454d73fd26d90003861a3ffee9abc2e9ac51dea4ba315b5c1f9
+DIST pyyaml_env_tag-1.1.tar.gz 5737 BLAKE2B e9414b11e10c5ea33e087c14683009840a9f3e0951ba2ed1982fee83ce6ff0267a88edd1750996a9512a6c2e4974b3f94c9a65ee87bbb3b4d35a6e0e1a6c7033 SHA512 2661dd98f3302f6a6fd14dbf6ad1382e3f018789d3b8c327c347f5d2242b9a4380fc29c892122c93f76a2edd39ee2c5dc3f85fad8def6edf04ceafa550b135ff
diff --git a/dev-python/pyyaml-env-tag/pyyaml-env-tag-1.1.ebuild b/dev-python/pyyaml-env-tag/pyyaml-env-tag-1.1.ebuild
new file mode 100644
index 000000000000..1564f13c6ec2
--- /dev/null
+++ b/dev-python/pyyaml-env-tag/pyyaml-env-tag-1.1.ebuild
@@ -0,0 +1,25 @@
+# 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 custom YAML tag for referencing environment variables in YAML files"
+HOMEPAGE="
+ https://github.com/waylan/pyyaml-env-tag/
+ https://pypi.org/project/pyyaml_env_tag/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
+
+RDEPEND="
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests pytest
diff --git a/dev-python/redis/Manifest b/dev-python/redis/Manifest
index 17090f64b526..e2508745f10b 100644
--- a/dev-python/redis/Manifest
+++ b/dev-python/redis/Manifest
@@ -1,2 +1,3 @@
DIST redis-py-5.2.1.gh.tar.gz 4824044 BLAKE2B 9adf1b7093d7e562782f0c17c9134f33326b19f6ae9895142eadf251165c7d8bed7e61eedc96360724602b42cde4e1f9a0a4193fa76a3de2e30b95268a2f5e2b SHA512 583495712b492558fa186a0b72f19576418fc49937e4e2c2716335f3b05f5c5da6dda149abe6a55ef1dc93284660348a5d545a69db0a1dde08218305f44e9f52
DIST redis-py-6.0.0.gh.tar.gz 4853361 BLAKE2B a82f2c9d05c62c2e4fc310923d78ad9164c3fa4886f046f15261a97d843ff4478f7bd5ed283739424bcc9fe378265afaf00448aa954e537fecf0f1a3947d9f6e SHA512 72c91bc132dcc9cc32ed221b931c6315615dac9e4b1054638df6ed651f0ba787c319d59c22a001962efca40efcf73654ff012007cda4b277783cb2fa6a9cb9d6
+DIST redis-py-6.1.0.gh.tar.gz 4865160 BLAKE2B 27959cf88b9cb4600b952408b895c3da02c3c6a11bd33182582e4565003cbfdb8a63e567c7fc7ed97581c6926c62594a0fc57c7a6176544026f34a78cd0767c6 SHA512 aacb02565d1b1b672135caffdd29ad83f688184e8f7ba2835668b8ea938e158dc09e9cdf1f6313ffedff86e07da0d18ceed2fcfa5ef677d3ed0c7ff4418d1f39
diff --git a/dev-python/redis/redis-6.1.0.ebuild b/dev-python/redis/redis-6.1.0.ebuild
new file mode 100644
index 000000000000..d56328dfc67d
--- /dev/null
+++ b/dev-python/redis/redis-6.1.0.ebuild
@@ -0,0 +1,109 @@
+# 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
+
+MY_P=redis-py-${PV}
+DESCRIPTION="Python client for Redis key-value store"
+HOMEPAGE="
+ https://github.com/redis/redis-py/
+ https://pypi.org/project/redis/
+"
+SRC_URI="
+ https://github.com/redis/redis-py/archive/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+BDEPEND="
+ test? (
+ dev-db/redis
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/pytest-asyncio[${PYTHON_USEDEP}]
+ dev-python/pytest-timeout[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # https://github.com/redis/redis-py/issues/3339
+ sed -i 's:(forbid_global_loop=True)::' tests/test_asyncio/*.py || die
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # Flaky test
+ tests/test_pubsub.py::TestPubSubDeadlock::test_pubsub_deadlock
+ # require extra redis modules that apparently aren't packaged
+ # on Gentoo
+ tests/{,test_asyncio/}test_bloom.py
+ tests/{,test_asyncio/}test_graph.py
+ tests/{,test_asyncio/}test_json.py
+ tests/{,test_asyncio/}test_timeseries.py
+ # apparently available only in "Redis Stack 7.2 RC3 or later"
+ tests/test_commands.py::TestRedisCommands::test_tfunction_load_delete
+ tests/test_commands.py::TestRedisCommands::test_tfunction_list
+ tests/test_commands.py::TestRedisCommands::test_tfcall
+ # TODO
+ tests/test_commands.py::TestRedisCommands::test_module
+ tests/test_commands.py::TestRedisCommands::test_module_loadex
+ tests/test_commands.py::TestRedisCommands::test_zrank_withscore
+ tests/test_commands.py::TestRedisCommands::test_zrevrank_withscore
+ tests/test_commands.py::TestRedisCommands::test_xinfo_consumers
+ tests/test_asyncio/test_commands.py::TestRedisCommands::test_zrank_withscore
+ tests/test_asyncio/test_commands.py::TestRedisCommands::test_zrevrank_withscore
+ tests/test_asyncio/test_commands.py::TestRedisCommands::test_xinfo_consumers
+ tests/test_asyncio/test_pubsub.py::TestPubSubAutoReconnect::test_reconnect_socket_error[pool-hiredis-listen]
+ )
+ local EPYTEST_IGNORE=(
+ # fails over missing certs, we don't do cluster anyway
+ tests/test_asyncio/test_cluster.py
+ # require redis_entraid
+ tests/test_asyncio/test_credentials.py
+ tests/test_credentials.py
+ )
+
+ # TODO: try to run more servers?
+ epytest -m "not redismod and not onlycluster and not replica and not ssl"
+}
+
+src_test() {
+ local redis_pid="${T}"/redis.pid
+ local redis_port=6379
+
+ if has_version ">=dev-db/redis-7"; then
+ local extra_conf="
+ enable-debug-command yes
+ enable-module-command yes
+ "
+ fi
+
+ # Spawn Redis itself for testing purposes
+ einfo "Spawning Redis"
+ einfo "NOTE: Port ${redis_port} must be free"
+ "${EPREFIX}"/usr/sbin/redis-server - <<- EOF || die "Unable to start redis server"
+ daemonize yes
+ pidfile ${redis_pid}
+ port ${redis_port}
+ bind 127.0.0.1 ::1
+ ${extra_conf}
+ EOF
+
+ # Run the tests
+ distutils-r1_src_test
+
+ # Clean up afterwards
+ kill "$(<"${redis_pid}")" || die
+}
diff --git a/dev-python/setuptools-rust/setuptools-rust-1.11.1.ebuild b/dev-python/setuptools-rust/setuptools-rust-1.11.1.ebuild
index 0cacca395d77..9bb396ec852f 100644
--- a/dev-python/setuptools-rust/setuptools-rust-1.11.1.ebuild
+++ b/dev-python/setuptools-rust/setuptools-rust-1.11.1.ebuild
@@ -141,6 +141,8 @@ BDEPEND="
)
"
+export PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1
+
src_unpack() {
cargo_src_unpack
}
diff --git a/dev-python/spyder-kernels/Manifest b/dev-python/spyder-kernels/Manifest
index 3ec380a90f95..b29e4e99cf7c 100644
--- a/dev-python/spyder-kernels/Manifest
+++ b/dev-python/spyder-kernels/Manifest
@@ -1 +1,2 @@
DIST spyder-kernels-3.0.3.gh.tar.gz 240072 BLAKE2B 99fe0e7ecae61b717ce0215a6789742ed5f684fcc700d911388c4ca481e37dee829014b1b1633ba110a669bba3636ef250f94777d8c501f682c4fb53288e469f SHA512 4335c0401da8cc0a13db2888acf740e20ec9c21ad29b9375806b0958b81649623cd672f2d4579059b083fba11ec1e42acc28c0da76c3f7d3c0510b64006d32c7
+DIST spyder-kernels-3.0.4.gh.tar.gz 240281 BLAKE2B 32ebf1e22dc354236bfc307d6b273e97a4ec2a0fcbdb24b3c3d43e218f0200d17d65d69e0c210d916ed91925ec655122f4ec9174b4834f8e67e48bac962ba544 SHA512 3336a37e1b1c9dfec82ec99956e0cbcada0ed45670e7f76037a48f094682eb56dfe13d3e1cb046487594bd474fa2210ea5362c94dd57b7c39e72ec43599acfa8
diff --git a/dev-python/spyder-kernels/spyder-kernels-3.0.4.ebuild b/dev-python/spyder-kernels/spyder-kernels-3.0.4.ebuild
new file mode 100644
index 000000000000..ef4bb9724ab8
--- /dev/null
+++ b/dev-python/spyder-kernels/spyder-kernels-3.0.4.ebuild
@@ -0,0 +1,99 @@
+# 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="Kernels used by spyder on its ipython console"
+HOMEPAGE="
+ https://github.com/spyder-ide/spyder-kernels/
+ https://pypi.org/project/spyder-kernels/
+"
+SRC_URI="https://github.com/spyder-ide/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.gh.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ dev-python/cloudpickle[${PYTHON_USEDEP}]
+ <dev-python/ipykernel-7[${PYTHON_USEDEP}]
+ >=dev-python/ipykernel-6.29.3[${PYTHON_USEDEP}]
+ >=dev-python/ipython-8.13.0[${PYTHON_USEDEP}]
+ <dev-python/jupyter-client-9[${PYTHON_USEDEP}]
+ >=dev-python/jupyter-client-7.4.9[${PYTHON_USEDEP}]
+ dev-python/matplotlib-inline[${PYTHON_USEDEP}]
+ >=dev-python/pyxdg-0.26[${PYTHON_USEDEP}]
+ >=dev-python/pyzmq-24.0.0[${PYTHON_USEDEP}]
+ >=dev-python/wurlitzer-1.0.3[${PYTHON_USEDEP}]
+"
+
+BDEPEND="
+ test? (
+ dev-python/cython[${PYTHON_USEDEP}]
+ dev-python/django[${PYTHON_USEDEP}]
+ dev-python/flaky[${PYTHON_USEDEP}]
+ dev-python/matplotlib[${PYTHON_USEDEP}]
+ dev-python/mock[${PYTHON_USEDEP}]
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/scipy[${PYTHON_USEDEP}]
+ dev-python/pillow[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/h5py[${PYTHON_USEDEP}]
+ dev-python/pandas[${PYTHON_USEDEP}]
+ dev-python/xarray[${PYTHON_USEDEP}]
+ ' 'python*')
+ )
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # unpin ipython, all tests pass
+ sed -i -e '/ipython/s:,<9::' setup.py || die
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # we no longer package distributed, and also removed dependency on dask
+ spyder_kernels/console/tests/test_console_kernel.py::test_dask_multiprocessing
+
+ # RuntimeError: There is no current event loop in thread 'MainThread'.
+ # https://bugs.gentoo.org/834893
+ spyder_kernels/console/tests/test_console_kernel.py::test_cwd_in_sys_path
+ spyder_kernels/console/tests/test_console_kernel.py::test_multiprocessing
+ spyder_kernels/console/tests/test_console_kernel.py::test_multiprocessing_2
+ spyder_kernels/console/tests/test_console_kernel.py::test_runfile
+ spyder_kernels/console/tests/test_console_kernel.py::test_np_threshold
+ spyder_kernels/console/tests/test_console_kernel.py::test_turtle_launch
+ spyder_kernels/console/tests/test_console_kernel.py::test_matplotlib_inline
+
+ # pydicom only packaged in ::sci at the moment
+ spyder_kernels/utils/tests/test_iofuncs.py::test_load_dicom_files
+ )
+ local EPYTEST_IGNORE=()
+
+ if ! has_version "dev-python/pandas[${PYTHON_USEDEP}]"; then
+ EPYTEST_IGNORE+=(
+ # require pandas
+ spyder_kernels/utils/tests/test_nsview.py
+ )
+ fi
+
+ if ! has_version "dev-python/h5py[${PYTHON_USEDEP}]"; then
+ EPYTEST_DESELECT+=(
+ # require hdf5
+ spyder_kernels/utils/tests/test_iofuncs.py::test_save_load_hdf5_files
+ spyder_kernels/utils/tests/test_dochelpers.py
+ )
+ fi
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest
+}
diff --git a/dev-python/tox/Manifest b/dev-python/tox/Manifest
index 8dcffa5a50e5..b83391225e52 100644
--- a/dev-python/tox/Manifest
+++ b/dev-python/tox/Manifest
@@ -1 +1,2 @@
DIST tox-4.25.0.tar.gz 196255 BLAKE2B 16d9e85270cad1e9909de8c51c906c8245201fc10c0dd48a37b202c3f4d381be183751e9aeac452c5f2bef8773bf8ad102be2b069e8ff545a1248f423664a863 SHA512 3560b667af03ca41c1bd8fa9eaa90f8c988b7f946498f3bc2d0a4dfa3a481d8ada27acb6201bde284a2bcfe14b86ee409a3ce8e875531423862d1af88e6248fb
+DIST tox-4.26.0.tar.gz 197260 BLAKE2B be05b52e88e3a3d0484203cb893af25e6e6e6f3719cf9e8d5cecf5343e22382b86676345ce00219d599353330ade897f710daf4976e48c2d7277664094a263c9 SHA512 ad2e311cd63c45a079b8c230a2feb364270b7a8bcf44b626385f8e442c6683ae841b3f34417b504f927608685a254fef3767d832fb5cfcc324c9cbf6ff7ea997
diff --git a/dev-python/tox/tox-4.26.0.ebuild b/dev-python/tox/tox-4.26.0.ebuild
new file mode 100644
index 000000000000..e5b14a410c51
--- /dev/null
+++ b/dev-python/tox/tox-4.26.0.ebuild
@@ -0,0 +1,98 @@
+# 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
+
+DESCRIPTION="virtualenv-based automation of test activities"
+HOMEPAGE="
+ https://tox.readthedocs.io/
+ https://github.com/tox-dev/tox/
+ https://pypi.org/project/tox/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ dev-python/cachetools[${PYTHON_USEDEP}]
+ dev-python/chardet[${PYTHON_USEDEP}]
+ dev-python/colorama[${PYTHON_USEDEP}]
+ dev-python/filelock[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/platformdirs[${PYTHON_USEDEP}]
+ dev-python/pluggy[${PYTHON_USEDEP}]
+ dev-python/pyproject-api[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/tomli[${PYTHON_USEDEP}]
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+ ' 3.10)
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ dev-python/build[${PYTHON_USEDEP}]
+ dev-python/distlib[${PYTHON_USEDEP}]
+ dev-python/flaky[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ dev-python/pytest-mock[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ dev-python/re-assert[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/time-machine[${PYTHON_USEDEP}]
+ ' 'python*')
+ )
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ # upstream lower bounds are meaningless
+ sed -i -e 's:>=[0-9.]*::' pyproject.toml || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ # devpi_process is not packaged, and has lots of dependencies
+ cat > "${T}"/devpi_process.py <<-EOF || die
+ def IndexServer(*args, **kwargs): raise NotImplementedError()
+ EOF
+
+ local -x PYTHONPATH=${T}:${PYTHONPATH}
+ local EPYTEST_DESELECT=(
+ # Internet
+ tests/tox_env/python/virtual_env/package/test_package_cmd_builder.py::test_build_wheel_external
+ tests/tox_env/python/virtual_env/package/test_package_cmd_builder.py::test_run_installpkg_targz
+ )
+ local EPYTEST_IGNORE=(
+ # requires devpi*
+ tests/test_provision.py
+ )
+
+ case ${EPYTHON} in
+ pypy3*)
+ EPYTEST_DESELECT+=(
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[explicit-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[requirements-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[constraints-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[explicit+requirements-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[requirements_indirect-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[requirements_constraints_indirect-True-True]'
+ )
+ ;;
+ python3.13)
+ EPYTEST_DESELECT+=(
+ # https://github.com/tox-dev/tox/issues/3290
+ 'tests/config/loader/test_str_convert.py::test_str_convert_ok_py39[1,2-value1-Optional]'
+ )
+ ;;
+ esac
+
+ epytest
+}
diff --git a/dev-python/trimesh/Manifest b/dev-python/trimesh/Manifest
index f3653da4855f..62c3cfc8723b 100644
--- a/dev-python/trimesh/Manifest
+++ b/dev-python/trimesh/Manifest
@@ -1 +1,2 @@
DIST trimesh-4.6.8.gh.tar.gz 13624383 BLAKE2B b25d0d5f6adc27ade707fadddb36606b53bed37526e4b8ef0bdfa7353d774e3b42f63ec4af12827921d9a95b37bbb558e3ff650722d043a8eb5342656140d111 SHA512 7b6b063f3a68bc94510ccf194526499095dd7f5737904c703702d2b63725bd8109749adf81b0be0171768511270e6abc30288e194fc9351f968e2ed7abd288c3
+DIST trimesh-4.6.9.gh.tar.gz 13628313 BLAKE2B 18c98803e0945192dea781cf0a2b19e3a8cf8002e6f5aa96b8c59aaaeceef10e90efb436ba038fbbacd56dcc37e93e0a280c5cd359344ed6b30480c4e12d2349 SHA512 c647fe403caaaba95a0f85b9eef64c5957eb31e68ba564527ff9b076a0c86f7891671ea4c9e80729add28e2b83da9699b551ab047ae89ec5562b7daed43b05e4
diff --git a/dev-python/trimesh/trimesh-4.6.9.ebuild b/dev-python/trimesh/trimesh-4.6.9.ebuild
new file mode 100644
index 000000000000..9a55e3b051f5
--- /dev/null
+++ b/dev-python/trimesh/trimesh-4.6.9.ebuild
@@ -0,0 +1,79 @@
+# 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 optfeature
+
+DESCRIPTION="Python library for loading and using triangular meshes"
+HOMEPAGE="
+ https://trimesh.org/
+ https://github.com/mikedh/trimesh/
+ https://pypi.org/project/trimesh/
+"
+SRC_URI="
+ https://github.com/mikedh/${PN}/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ dev-python/charset-normalizer[${PYTHON_USEDEP}]
+ dev-python/colorlog[${PYTHON_USEDEP}]
+ dev-python/httpx[${PYTHON_USEDEP}]
+ dev-python/jsonschema[${PYTHON_USEDEP}]
+ dev-python/lxml[${PYTHON_USEDEP}]
+ dev-python/networkx[${PYTHON_USEDEP}]
+ >=dev-python/numpy-1.20[${PYTHON_USEDEP}]
+ dev-python/pillow[${PYTHON_USEDEP}]
+ dev-python/pycollada[${PYTHON_USEDEP}]
+ dev-python/pyglet[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/scipy[${PYTHON_USEDEP}]
+ >=dev-python/shapely-1.8.2[${PYTHON_USEDEP}]
+ dev-python/svg-path[${PYTHON_USEDEP}]
+ dev-python/sympy[${PYTHON_USEDEP}]
+ dev-python/xxhash[${PYTHON_USEDEP}]
+ dev-python/rtree[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/mapbox-earcut[${PYTHON_USEDEP}]
+ dev-python/pillow[webp,${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_TIMEOUT=1800
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # requires manifold3d
+ tests/test_boolean.py::test_multiple_difference
+ # timing nonsense
+ tests/test_bounds.py::BoundsTest::test_obb_mesh_large
+ )
+ local EPYTEST_IGNORE=(
+ # require pyinstrument
+ tests/test_sweep.py
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest
+}
+
+pkg_postinst() {
+ optfeature_header "${PN} functionality can be extended by installing the following packages:"
+ optfeature "making GUI applications with 3D stuff" dev-python/glooey
+ optfeature "2D triangulations of polygons" dev-python/mapbox-earcut
+ optfeature "loading a number of additional mesh formats" dev-python/meshio
+ optfeature "figuring out how much memory we have" dev-python/psutil
+ optfeature "marching cubes and other nice stuff" dev-python/scikit-image
+}
diff --git a/dev-python/trio/trio-0.29.0.ebuild b/dev-python/trio/trio-0.29.0.ebuild
index 3922c5869181..21f0046c8293 100644
--- a/dev-python/trio/trio-0.29.0.ebuild
+++ b/dev-python/trio/trio-0.29.0.ebuild
@@ -58,6 +58,16 @@ python_test() {
_tests/tools/test_gen_exports.py
)
+ case ${EPYTHON} in
+ python3.14)
+ EPYTEST_DESELECT+=(
+ # xfail-ed upstream with ref to
+ # https://github.com/python/cpython/issues/125603
+ _core/_tests/test_run.py::test_ki_protection_doesnt_leave_cyclic_garbage
+ )
+ ;;
+ esac
+
local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
rm -rf trio || die
epytest -p trio._tests.pytest_plugin \
diff --git a/dev-python/types-docutils/Manifest b/dev-python/types-docutils/Manifest
index 277e193ae278..da061d0fa801 100644
--- a/dev-python/types-docutils/Manifest
+++ b/dev-python/types-docutils/Manifest
@@ -1 +1,2 @@
DIST types_docutils-0.21.0.20241128.tar.gz 26739 BLAKE2B 43b6aedf346564a6258ed78ca046d858590a7b6088666347e8bf91660fc3c062b55ac2ac599c541b311c17c7436e62f7956ca23285c2b7c66429c1f4f5c5b77c SHA512 ee68d14f9b84dbf4f144c10e0a7a4559ec76c584ac392c139165a382907114e6fa97b41bbb3ecf27ea21d1ce2f9f927b4551687fec03e4aad917f890096629b5
+DIST types_docutils-0.21.0.20250514.tar.gz 26884 BLAKE2B ec1b02c946a389051ebc82e0bc21be5ac633c463b967696347d5c382c181e2651ca9a463116be6e5682e0e8936579113a41d3a91f5f0318a1d38113a10ce2aaf SHA512 39d86f194abd4a0df458e2d585e3ba0881abab702bf1a4c1528c57c284bfa6bab353f9bfda642ccd3757453be9a863e7d7a4370eca61b9e87116e2b5d1c1489b
diff --git a/dev-python/types-docutils/types-docutils-0.21.0.20250514.ebuild b/dev-python/types-docutils/types-docutils-0.21.0.20250514.ebuild
new file mode 100644
index 000000000000..cba8b683142e
--- /dev/null
+++ b/dev-python/types-docutils/types-docutils-0.21.0.20250514.ebuild
@@ -0,0 +1,16 @@
+# Copyright 2022-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="Typing stubs for docutils"
+HOMEPAGE="https://pypi.org/project/types-docutils/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
diff --git a/dev-python/types-gdb/Manifest b/dev-python/types-gdb/Manifest
index 36490782db13..09d0a764a80f 100644
--- a/dev-python/types-gdb/Manifest
+++ b/dev-python/types-gdb/Manifest
@@ -1 +1,2 @@
DIST types_gdb-15.0.0.20250321.tar.gz 20185 BLAKE2B 293b8cd01c5fbafd37555543fc633987d1af492247133740713a2a167c2c4e30c25d85890cbbc1baaf1777c527c08ee55bc807320fca5c3eb419877d983e5928 SHA512 3a29834510756d936728175d2f831ea86be11247e570af0fe372649e4921ddca635d707b48b881e24b728f29b9bced7c4dc7558d3e1e9f7fa8695581436cf524
+DIST types_gdb-15.0.0.20250514.tar.gz 20169 BLAKE2B 8e07180ca924972a75427ad62482235d9d69f7c9e4ffdb40b2e3832a018b55c4ba01de168c8ef3ba72b31521ee16da3c47b843ff468b054c36f0333f97a6e869 SHA512 b068002db8adf589e4cf8ed5c96c973bde16210ac759f754df8364f1f116865c5dc63136066997d9439eb7f2bb16010d4a2213ae8c2d98640c6d71cffc042a52
diff --git a/dev-python/types-gdb/types-gdb-15.0.0.20250514.ebuild b/dev-python/types-gdb/types-gdb-15.0.0.20250514.ebuild
new file mode 100644
index 000000000000..e4968cc85273
--- /dev/null
+++ b/dev-python/types-gdb/types-gdb-15.0.0.20250514.ebuild
@@ -0,0 +1,16 @@
+# Copyright 2022-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="Typing stubs for gdb"
+HOMEPAGE="https://pypi.org/project/types-gdb/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
diff --git a/dev-python/typing-inspection/files/typing-inspection-0.4.0-py314.patch b/dev-python/typing-inspection/files/typing-inspection-0.4.0-py314.patch
new file mode 100644
index 000000000000..fd6b76be9162
--- /dev/null
+++ b/dev-python/typing-inspection/files/typing-inspection-0.4.0-py314.patch
@@ -0,0 +1,155 @@
+From aec589d8abf26aa010c971666386b7edeb760852 Mon Sep 17 00:00:00 2001
+From: Viicos <65306057+Viicos@users.noreply.github.com>
+Date: Sat, 22 Mar 2025 13:33:54 +0100
+Subject: [PATCH] Fix compatibility with latest Python 3.14 release
+
+Adapt documentation and tests related to the `typing.Union`
+changes
+---
+ docs/usage.md | 8 +--
+ src/typing_inspection/introspection.py | 70 ++++++++++++++++++++++
+ tests/typing_objects/test_member_checks.py | 8 ++-
+ 3 files changed, 81 insertions(+), 5 deletions(-)
+
+diff --git a/docs/usage.md b/docs/usage.md
+index c9ece27..7a538c6 100644
+--- a/docs/usage.md
++++ b/docs/usage.md
+@@ -4,18 +4,18 @@ The library is divided into two submodules:
+
+ - [`typing_inspection.typing_objects`][]: provides functions to check if a variable is a [`typing`][] object:
+ ```python
+- from typing_extensions import Union, get_origin
++ from typing_extensions import Literal, get_origin
+
+- from typing_inspection.typing_objects import is_union
++ from typing_inspection.typing_objects import is_literal
+
+- is_union(get_origin(Union[int, str])) # True
++ is_literal(get_origin(Literal[1, 2])) # True
+ ```
+
+ !!! note
+ You might be tempted to use a simple identity check:
+
+ ```pycon
+- >>> get_origin(Union[int, str]) is typing.Union
++ >>> get_origin(Literal[1, 2]) is typing.Literal
+ ```
+
+ However, [`typing_extensions`][] might provide a different version of the [`typing`][] objects. Instead,
+diff --git a/src/typing_inspection/introspection.py b/src/typing_inspection/introspection.py
+index 43cce1e..4f92527 100644
+--- a/src/typing_inspection/introspection.py
++++ b/src/typing_inspection/introspection.py
+@@ -23,6 +23,40 @@
+ 'is_union_origin',
+ )
+
++if sys.version_info >= (3, 14):
++
++ def is_union_origin(obj: Any, /) -> bool:
++ """Return whether the provided origin is the union form.
++
++ ```pycon
++ >>> is_union_origin(typing.Union)
++ True
++ >>> is_union_origin(get_origin(int | str))
++ True
++ >>> is_union_origin(types.UnionType)
++ True
++ ```
++
++ !!! note
++ Starting in Python 3.14, the [`typing.Union`][] special form [was changed](https://github.com/python/cpython/pull/105511)
++ to be an alias to [`types.UnionType`][]. As such, it is recommended to not use this function
++ anymore (provided that you only support Python 3.14 or greater), and instead perform
++ the check directly:
++
++ ```python
++ import types
++ from typing import Union, get_origin
++
++ typ = Union[int, str]
++ origin = get_origin(typ)
++ if origin is types.UnionType:
++ ...
++ ```
++ """
++ return obj is types.UnionType
++ return typing_objects.is_union(obj) or obj is types.UnionType
++
++
+ if sys.version_info >= (3, 10):
+
+ def is_union_origin(obj: Any, /) -> bool:
+@@ -33,7 +67,25 @@ def is_union_origin(obj: Any, /) -> bool:
+ True
+ >>> is_union_origin(get_origin(int | str))
+ True
++ >>> is_union_origin(types.UnionType)
++ True
+ ```
++
++ !!! note
++ Starting in Python 3.14, the [`typing.Union`][] special form [was changed](https://github.com/python/cpython/pull/105511)
++ to be an alias to [`types.UnionType`][]. As such, it is recommended to not use this function
++ anymore (provided that you only support Python 3.14 or greater), and instead perform
++ the check directly:
++
++ ```python
++ import types
++ from typing import Union, get_origin
++
++ typ = Union[int, str]
++ origin = get_origin(typ)
++ if origin is types.UnionType:
++ ...
++ ```
+ """
+ return typing_objects.is_union(obj) or obj is types.UnionType
+
+@@ -47,7 +99,25 @@ def is_union_origin(obj: Any, /) -> bool:
+ True
+ >>> is_union_origin(get_origin(int | str))
+ True
++ >>> is_union_origin(types.UnionType)
++ True
+ ```
++
++ !!! note
++ Starting in Python 3.14, the [`typing.Union`][] special form [was changed](https://github.com/python/cpython/pull/105511)
++ to be an alias to [`types.UnionType`][]. As such, it is recommended to not use this function
++ anymore (provided that you only support Python 3.14 or greater), and instead perform
++ the check directly:
++
++ ```python
++ import types
++ from typing import Union, get_origin
++
++ typ = Union[int, str]
++ origin = get_origin(typ)
++ if origin is types.UnionType:
++ ...
++ ```
+ """
+ return typing_objects.is_union(obj)
+
+diff --git a/tests/typing_objects/test_member_checks.py b/tests/typing_objects/test_member_checks.py
+index 86d9761..2cc5df0 100644
+--- a/tests/typing_objects/test_member_checks.py
++++ b/tests/typing_objects/test_member_checks.py
+@@ -189,6 +189,12 @@ def test_is_deprecated(deprecated: deprecated) -> None:
+ # Misc. tests:
+
+
+-@pytest.mark.skipif(sys.version_info < (3, 10), reason='`types.UnionType` is only available in Python 3.10.')
++@pytest.mark.skipif(
++ sys.version_info < (3, 10) or sys.version_info >= (3, 14),
++ reason=(
++ '`types.UnionType` is only available in Python 3.10. '
++ 'In Python 3.14, `typing.Union` is an alias for `types.UnionType`.'
++ ),
++)
+ def test_is_union_does_not_match_uniontype() -> None:
+ assert not typing_objects.is_union(types.UnionType)
diff --git a/dev-python/typing-inspection/typing-inspection-0.4.0-r1.ebuild b/dev-python/typing-inspection/typing-inspection-0.4.0-r1.ebuild
new file mode 100644
index 000000000000..fbd9cb3974f9
--- /dev/null
+++ b/dev-python/typing-inspection/typing-inspection-0.4.0-r1.ebuild
@@ -0,0 +1,30 @@
+# Copyright 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="Runtime typing introspection tools"
+HOMEPAGE="
+ https://github.com/pydantic/typing-inspection/
+ https://pypi.org/project/typing-inspection/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/typing-extensions-4.12.0[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests pytest
+
+PATCHES=(
+ # https://github.com/pydantic/typing-inspection/pull/37
+ "${FILESDIR}/${P}-py314.patch"
+)
diff --git a/dev-python/uvicorn/uvicorn-0.34.2.ebuild b/dev-python/uvicorn/uvicorn-0.34.2.ebuild
index 7de68801dc68..c3dda43c5b9d 100644
--- a/dev-python/uvicorn/uvicorn-0.34.2.ebuild
+++ b/dev-python/uvicorn/uvicorn-0.34.2.ebuild
@@ -73,6 +73,12 @@ python_test() {
tests/middleware/test_logging.py::test_running_log_using_fd
)
;;
+ python3.14*)
+ EPYTEST_DESELECT+=(
+ # TODO
+ tests/test_auto_detection.py::test_loop_auto
+ )
+ ;;
esac
local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
diff --git a/dev-python/watchfiles/watchfiles-1.0.5.ebuild b/dev-python/watchfiles/watchfiles-1.0.5.ebuild
index 10584500d2a3..c252708e99a2 100644
--- a/dev-python/watchfiles/watchfiles-1.0.5.ebuild
+++ b/dev-python/watchfiles/watchfiles-1.0.5.ebuild
@@ -99,6 +99,8 @@ BDEPEND="
# enjoy Rust
QA_FLAGS_IGNORED=".*/_rust_notify.*"
+export PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1
+
distutils_enable_tests pytest
python_test() {
diff --git a/dev-python/xcffib/Manifest b/dev-python/xcffib/Manifest
index d61e35d28280..f2b289676ee1 100644
--- a/dev-python/xcffib/Manifest
+++ b/dev-python/xcffib/Manifest
@@ -1,2 +1,3 @@
DIST xcffib-1.7.1.tar.gz 101487 BLAKE2B e489e96305cc8b277ebc02389514c23522c54444dc05434d0ac669b3337446947f5d5b9db1bfbbc1e1d7f9d81de06a50d63c0e4c3a2fddc6b8e1a8fad3ad704b SHA512 59ef3adf29fd8e6c5636855aa56777cab84d92c18d8e93500df9e315f0ae53f5693561f571ee98dbea6d9eae9ce5708018e2d6c27dccb14e9eb0ca85668fd515
DIST xcffib-1.8.0.tar.gz 110248 BLAKE2B 70f6a6733ef3e0c26a8e90cd204fccc69709c6242637fb4514eafcec4a259903c5dba8bbc45ade62ad81c7a77825c3a09bc7d546a70833e358f7250da51e1f62 SHA512 ce857c37d0f2222b340735cef0dfcdfa167cdaddfc7b6077a0c2ae9016cb56090f0770773d937278500922d16b5cc3ba15016c73c436f34800fa198960433f4b
+DIST xcffib-1.9.0.tar.gz 110472 BLAKE2B 040adb746726a10d6149e8f914a60fad1e4eca2b52711ff261de040bff35c64a748c5781ddd70a756f1c41cfbfc785fff62a86f65e3fa99243eef5e474809e0c SHA512 c0b1c3606c8430e83fb980d4c006b6be1eee91aaf6f40b8159dbdad50b2e596dc85372a83eae85e34a702cbdde98eb7219a260fb520b0ddfb16d897722b64fe0
diff --git a/dev-python/xcffib/xcffib-1.9.0.ebuild b/dev-python/xcffib/xcffib-1.9.0.ebuild
new file mode 100644
index 000000000000..fecaa3c64bd5
--- /dev/null
+++ b/dev-python/xcffib/xcffib-1.9.0.ebuild
@@ -0,0 +1,43 @@
+# Copyright 1999-2025 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_{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
+}