summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2026-04-12 19:11:06 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2026-04-12 19:11:06 +0000
commit1a1f5db8827d7864f74b2f19b88aadd126b462d0 (patch)
tree1bb31895b92ab571db3841f81faf6632157225ca /dev-python
parent00756a7495ccc0455ef2adbeb2237a02f1aa2629 (diff)
downloadbaldeagleos-repo-1a1f5db8827d7864f74b2f19b88aadd126b462d0.tar.gz
baldeagleos-repo-1a1f5db8827d7864f74b2f19b88aadd126b462d0.tar.xz
baldeagleos-repo-1a1f5db8827d7864f74b2f19b88aadd126b462d0.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/channels/Manifest6
-rw-r--r--dev-python/channels/channels-3.0.5.ebuild41
-rw-r--r--dev-python/channels/channels-4.2.2.ebuild34
-rw-r--r--dev-python/channels/channels-4.3.2.ebuild62
-rw-r--r--dev-python/channels/files/channels-4.3.2-fix-install.patch14
-rw-r--r--dev-python/channels/metadata.xml11
-rw-r--r--dev-python/helpdev/helpdev-0.7.1-r1.ebuild3
-rw-r--r--dev-python/imageio/imageio-2.37.3-r1.ebuild (renamed from dev-python/imageio/imageio-2.37.3.ebuild)0
-rw-r--r--dev-python/klein/klein-24.8.0.ebuild8
-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.ebuild4
-rw-r--r--dev-python/langdetect/metadata.xml10
-rw-r--r--dev-python/pgzero/pgzero-1.2.1-r2.ebuild2
-rw-r--r--dev-python/pyfakefs/Manifest1
-rw-r--r--dev-python/pyfakefs/pyfakefs-6.2.0.ebuild60
-rw-r--r--dev-python/pygccxml/pygccxml-3.0.2.ebuild3
-rw-r--r--dev-python/pytest-socket/pytest-socket-0.7.0-r1.ebuild28
-rw-r--r--dev-python/pytest-system-statistics/pytest-system-statistics-1.0.2-r2.ebuild9
-rw-r--r--dev-python/python-pskc/python-pskc-1.4.ebuild1
-rw-r--r--dev-python/python-pskc/python-pskc-9999.ebuild1
-rw-r--r--dev-python/pywavelets/pywavelets-1.9.0.ebuild2
-rw-r--r--dev-python/radon/radon-6.0.1-r2.ebuild8
-rw-r--r--dev-python/reno/reno-4.1.0.ebuild2
-rw-r--r--dev-python/rich/Manifest1
-rw-r--r--dev-python/rich/rich-15.0.0.ebuild70
-rw-r--r--dev-python/ropemode/ropemode-0.6.1.ebuild3
-rw-r--r--dev-python/scikit-image/scikit-image-0.26.0-r1.ebuild (renamed from dev-python/scikit-image/scikit-image-0.26.0.ebuild)0
-rw-r--r--dev-python/simple-websocket/files/simple-websocket-1.1.0-py314.patch372
-rw-r--r--dev-python/simple-websocket/simple-websocket-1.1.0.ebuild8
-rw-r--r--dev-python/sphinx-argparse/sphinx-argparse-0.5.2.ebuild3
-rw-r--r--dev-python/sphinxcontrib-doxylink/sphinxcontrib-doxylink-1.13.0.ebuild3
-rw-r--r--dev-python/tifffile/Manifest1
-rw-r--r--dev-python/tifffile/tifffile-2026.4.11.ebuild56
-rw-r--r--dev-python/wrapt/Manifest1
-rw-r--r--dev-python/wrapt/wrapt-2.2.0_rc5.ebuild39
36 files changed, 747 insertions, 135 deletions
diff --git a/dev-python/channels/Manifest b/dev-python/channels/Manifest
index b58c0c2009cc..93bbf2713782 100644
--- a/dev-python/channels/Manifest
+++ b/dev-python/channels/Manifest
@@ -1,5 +1 @@
-DIST channels-3.0.5.gh.tar.gz 200118 BLAKE2B 7a7653f986face1e87369917317db013e5c9fc912c6e2d7c737054ffef167bd01feb48f7e2d00d0d331e7a16093478e5416645717aed59e46dfec8f9b3641a2e SHA512 b12d1aec9602b702b5a097e9ca52dccad49940f82fcbe5594890c9bd1f1879a2fcf0f29630ca53e4972a26853df8f71d07d7b2cccd876abbf2417a76dee281bf
-DIST channels-4.2.2.gh.tar.gz 197010 BLAKE2B 321bf62c68038ce511145acd43c036dd298d58056f20ab2d676c3e3a8d6360a86a4f07c8f9ed6c123f888c012d69da22cfae4fb477dd5422cf326bf2de6a4c8f SHA512 8f7c8f27981988fed8ec254db91ce0a130b24842949ef94cc9ae21b4a259a7003654ec86c4e18aa81924e26d9b81b6a2aafaac404e490cbdda6b4a100476917a
-EBUILD channels-3.0.5.ebuild 936 BLAKE2B 788d0e9a2822dd9d0ed2d1d1a62135aeb5f244710b66f7591962518a5204cde5b8e779280783dd1d1a1b1a3fa9b272a0eb457f1d88d62c8ecefc8f67384929ef SHA512 89003fa68c7ab1cdd1a329f4389ba6fe28f491217a70c03b2979a992b450d8aa1a02f024f073ad5fc0aa1d093d81c6c8b1adaa45bdc9a179f5bd1607d85c13ef
-EBUILD channels-4.2.2.ebuild 829 BLAKE2B e5946c4a0eaf9fb3ffa2092a3d5d49d3d6ee16f151483fa2b716c8bab3350eca5e330a22822f881421d8882ffb970f4c56154c613477d094319e46addf1a5537 SHA512 84ce30d87a654c1a89ac299fb0f6447ca9c736e4b63497d83fc2687384e9cbe8094ba8f5021a19f726f9bae97c6b6d11eddef6a9ee5c275efe827bf95d3848ec
-MISC metadata.xml 445 BLAKE2B b4c0a41d6caadfbc53cbba3c41f8b7689a286b3f8d285c37a88a1f79d8dc350b82fea255048c022b92091a1e0cc67bf19645d6c32183b82a6dd49cccadf5078f SHA512 380c8b98efe8d9a2513c51899b7de90b115d4a51f104f46b552ff8929c322850e511e245a2ba0e976213416ae7241a17292ca98248caacfc891fcdcf5cea5d44
+DIST channels-4.3.2.gh.tar.gz 206077 BLAKE2B c0913d67dc74bc728dd828584cf803b4ad175bab717de71ccf1e1c5b6aaca296fd15d011deb07b2876e63b7daaefab5e5ee24c323e907b3c563f5358759f14b8 SHA512 29d9c91aca721fad44143978863c45812bf596bb65cf99084803f78d85c664d5cc7ca1015df151cdc27754b822c9cfd18102989b6e5f59bc50257f6c9d8b8b3e
diff --git a/dev-python/channels/channels-3.0.5.ebuild b/dev-python/channels/channels-3.0.5.ebuild
deleted file mode 100644
index 03a4923889fe..000000000000
--- a/dev-python/channels/channels-3.0.5.ebuild
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..14} )
-
-inherit distutils-r1
-
-DESCRIPTION="Extends Django abilities beyond HTTP protocol"
-HOMEPAGE="https://github.com/django/channels"
-SRC_URI="https://github.com/django/${PN}/archive/${PV}.tar.gz -> ${P}.gh.tar.gz"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~amd64"
-
-DEPEND="
- >=dev-python/django-2.2[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/async-timeout[${PYTHON_USEDEP}]
- >=dev-python/daphne-3.0[${PYTHON_USEDEP}]
- <dev-python/daphne-4.0[${PYTHON_USEDEP}]
- dev-python/pytest-asyncio[${PYTHON_USEDEP}]
- dev-python/pytest-django[${PYTHON_USEDEP}]
- )
-"
-
-DOCS=( README.rst )
-
-distutils_enable_tests pytest
-
-python_prepare_all() {
- # https://github.com/django/channels/issues/1915
- echo 'asyncio_mode = auto' >> setup.cfg
-
- distutils-r1_python_prepare_all
-}
diff --git a/dev-python/channels/channels-4.2.2.ebuild b/dev-python/channels/channels-4.2.2.ebuild
deleted file mode 100644
index 710613a7cbd1..000000000000
--- a/dev-python/channels/channels-4.2.2.ebuild
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..14} )
-
-inherit distutils-r1
-
-DESCRIPTION="Extends Django abilities beyond HTTP protocol"
-HOMEPAGE="https://github.com/django/channels"
-SRC_URI="https://github.com/django/${PN}/archive/${PV}.tar.gz -> ${P}.gh.tar.gz"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~amd64"
-
-DEPEND="
- >=dev-python/asgiref-3.5.0[${PYTHON_USEDEP}]
- >=dev-python/django-4.2[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/async-timeout[${PYTHON_USEDEP}]
- >=dev-python/daphne-4.0.0[${PYTHON_USEDEP}]
- dev-python/pytest-asyncio[${PYTHON_USEDEP}]
- dev-python/pytest-django[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-distutils_enable_sphinx docs \
- dev-python/sphinx-rtd-theme
diff --git a/dev-python/channels/channels-4.3.2.ebuild b/dev-python/channels/channels-4.3.2.ebuild
new file mode 100644
index 000000000000..ffafd1ece52b
--- /dev/null
+++ b/dev-python/channels/channels-4.3.2.ebuild
@@ -0,0 +1,62 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 #pypi
+
+DESCRIPTION="Brings async, event-driven capabilities to Django"
+HOMEPAGE="
+ https://channels.readthedocs.io/
+ https://github.com/django/channels/
+ https://pypi.org/project/channels/
+"
+# no tests in sdist
+SRC_URI="
+ https://github.com/django/channels/archive/refs/tags/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+ <dev-python/asgiref-4[${PYTHON_USEDEP}]
+ >=dev-python/asgiref-3.9.0[${PYTHON_USEDEP}]
+ >=dev-python/django-4.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/async-timeout[${PYTHON_USEDEP}]
+ dev-python/selenium[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_IGNORE=(
+ # avoid daphne as it requires autobahn
+ tests/sample_project/tests/test_selenium.py
+ tests/security/test_websocket.py
+ tests/test_database.py
+ tests/test_generic_http.py
+ tests/test_generic_websocket.py
+ tests/test_http.py
+ tests/test_testing.py
+)
+
+EPYTEST_PLUGINS=( pytest-django pytest-asyncio )
+distutils_enable_tests pytest
+
+PATCHES=(
+ "${FILESDIR}"/channels-4.3.2-fix-install.patch
+)
+
+python_prepare_all() {
+ # avoid daphne as it requires autobahn
+ sed -e '/"daphne"/d' -i tests/sample_project/config/settings.py || die
+
+ distutils-r1_python_prepare_all
+}
diff --git a/dev-python/channels/files/channels-4.3.2-fix-install.patch b/dev-python/channels/files/channels-4.3.2-fix-install.patch
new file mode 100644
index 000000000000..18eca8f75445
--- /dev/null
+++ b/dev-python/channels/files/channels-4.3.2-fix-install.patch
@@ -0,0 +1,14 @@
+diff --git a/setup.cfg b/setup.cfg
+index 742e1f6..43d8c0d 100644
+--- a/setup.cfg
++++ b/setup.cfg
+@@ -52,7 +52,7 @@ types =
+
+ [options.packages.find]
+ exclude =
+- tests
++ tests*
+
+ [flake8]
+ exclude = venv/*,tox/*,docs/*,testproject/*,build/*
+
diff --git a/dev-python/channels/metadata.xml b/dev-python/channels/metadata.xml
index 7093cae71294..0dec5a678a5f 100644
--- a/dev-python/channels/metadata.xml
+++ b/dev-python/channels/metadata.xml
@@ -2,11 +2,10 @@
<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
- <email>marcin.deranek@slonko.net</email>
- <name>Marcin Deranek</name>
+ <email>negril.nx+gentoo@gmail.com</email>
+ <name>Paul Zander</name>
</maintainer>
- <upstream>
- <bugs-to>https://github.com/django/channels/issues</bugs-to>
- </upstream>
- <origin>slonko-overlay</origin>
+
+ <origin>gentoo-guru-overlay</origin>
+ <stabilize-allarches/>
</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/helpdev/helpdev-0.7.1-r1.ebuild b/dev-python/helpdev/helpdev-0.7.1-r1.ebuild
index c453206691de..eedf3f88b0a1 100644
--- a/dev-python/helpdev/helpdev-0.7.1-r1.ebuild
+++ b/dev-python/helpdev/helpdev-0.7.1-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -29,4 +29,5 @@ BDEPEND="
distutils_enable_sphinx docs \
dev-python/sphinx-rtd-theme
+EPYTEST_PLUGINS=()
distutils_enable_tests pytest
diff --git a/dev-python/imageio/imageio-2.37.3.ebuild b/dev-python/imageio/imageio-2.37.3-r1.ebuild
index 989ddf6de4a6..989ddf6de4a6 100644
--- a/dev-python/imageio/imageio-2.37.3.ebuild
+++ b/dev-python/imageio/imageio-2.37.3-r1.ebuild
diff --git a/dev-python/klein/klein-24.8.0.ebuild b/dev-python/klein/klein-24.8.0.ebuild
index a4604e0705dd..070130c3d9ad 100644
--- a/dev-python/klein/klein-24.8.0.ebuild
+++ b/dev-python/klein/klein-24.8.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -33,9 +33,5 @@ BDEPEND="
)
"
+EPYTEST_PLUGINS=()
distutils_enable_tests pytest
-
-python_test() {
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- epytest
-}
diff --git a/dev-python/langdetect/Manifest b/dev-python/langdetect/Manifest
index d12ab8aeaca8..a11d7c268c91 100644
--- a/dev-python/langdetect/Manifest
+++ b/dev-python/langdetect/Manifest
@@ -1,3 +1 @@
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
new file mode 100644
index 000000000000..637368d2f237
--- /dev/null
+++ b/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch
@@ -0,0 +1,13 @@
+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 271137de443d..7100f5f39dd8 100644
--- a/dev-python/langdetect/langdetect-1.0.9.ebuild
+++ b/dev-python/langdetect/langdetect-1.0.9.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2022 Gentoo Authors
+# Copyright 2022-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -19,4 +19,6 @@ 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 020e07f2a3dd..c0f74ac187e2 100644
--- a/dev-python/langdetect/metadata.xml
+++ b/dev-python/langdetect/metadata.xml
@@ -2,11 +2,9 @@
<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
- <email>marcin.deranek@slonko.net</email>
- <name>Marcin Deranek</name>
+ <email>pastalian46@gmail.com</email>
+ <name>Takuya Wakazono</name>
</maintainer>
- <upstream>
- <bugs-to>https://github.com/Mimino666/langdetect/issues</bugs-to>
- </upstream>
- <origin>slonko-overlay</origin>
+
+ <origin>gentoo-guru-overlay</origin>
</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/pgzero/pgzero-1.2.1-r2.ebuild b/dev-python/pgzero/pgzero-1.2.1-r2.ebuild
index fbac8a056f6b..dbd09620d05a 100644
--- a/dev-python/pgzero/pgzero-1.2.1-r2.ebuild
+++ b/dev-python/pgzero/pgzero-1.2.1-r2.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/pyfakefs/Manifest b/dev-python/pyfakefs/Manifest
index 67c94b7f4e3a..0a4c2e80146b 100644
--- a/dev-python/pyfakefs/Manifest
+++ b/dev-python/pyfakefs/Manifest
@@ -1,3 +1,4 @@
DIST pyfakefs-6.1.4.gh.tar.gz 257560 BLAKE2B 784b036d11c902d7788ea85b4bcb84a68b6bc5be30b7ee822cc66791b3cc954940554ba5eb1fef65cc3ab583f9ffd69cd42e613c8c1fda2e27b1b74f97fe8893 SHA512 c51eadb586587dc733ba556d5b18e2c0cbf2250620d2a37f2ad9f57d92f22277050e144dd961cab33f64b25ebd7f1b86104ab2885c14e53f5d57fece942e7245
DIST pyfakefs-6.1.5.gh.tar.gz 257725 BLAKE2B 844b6a69277c2331f2ef755a5227cb9e13d60bcc7c5f7d8497e4bd48f737eceff96baa5f333e5e27c5520d9e993846b67b0f8742bcee7da82598e7e1630876e6 SHA512 9987dfacf105e76395dfc485e3776253790d6234dc7774e92f035e241d685fcf31101cd10026f1cf21f5cae73021db29b798c2c668f5cec0faa73de47745e667
DIST pyfakefs-6.1.6.gh.tar.gz 258043 BLAKE2B 63459a970abe79c13633c4dd2c7cab5eb8d7fb265d43612a5ccec28ac8dc6f52c4bac679634ad815b7474968c9d9031d66f7c74dae6b7304558d17c3607f59cc SHA512 27a9c5b23e7a14b4b280f4cf2b016031b959438120c5a1f86ec00fb099bca814ff6f846a33854c345e05ffc5ac1f4bcf0664cf522a13b65800a63940bdcdd9bd
+DIST pyfakefs-6.2.0.gh.tar.gz 259183 BLAKE2B a681e054d421d5a95a7675e97f660b5260f8dc2aac4a58dc76e6fe88a42e4ca4d9a986dec9efee07a1db7c5409c2922991a329412a8ac4469e50f4241629af7d SHA512 804d6d4f165803965079d746c60ab60397713cb9e89dc8a60dccc4673fb0ac02c467af889d186abaf2a0b259c5a17a92deca83226f0c18f2393cc2020c7f4cc8
diff --git a/dev-python/pyfakefs/pyfakefs-6.2.0.ebuild b/dev-python/pyfakefs/pyfakefs-6.2.0.ebuild
new file mode 100644
index 000000000000..06a49696668a
--- /dev/null
+++ b/dev-python/pyfakefs/pyfakefs-6.2.0.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="A fake file system that mocks the Python file system modules"
+HOMEPAGE="
+ https://github.com/pytest-dev/pyfakefs/
+ https://pypi.org/project/pyfakefs/
+"
+SRC_URI="
+ https://github.com/pytest-dev/pyfakefs/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+
+EPYTEST_PLUGINS=( "${PN}" )
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # requires *.dist-info/RECORD file that we're stripping
+ pyfakefs/tests/fake_filesystem_test.py::RealFileSystemAccessTest::test_add_package_metadata
+ # wants dev-python/openpyxl
+ pyfakefs/tests/patched_packages_test.py::TestPatchedPackages::test_read_excel
+ )
+ local EPYTEST_IGNORE=(
+ # test for regression with opentimelineio package
+ pyfakefs/pytest_tests/segfault_test.py
+ # test for regression with undefined package
+ pyfakefs/pytest_tests/pytest_fixture_test.py
+ )
+
+ if ! has_version "dev-python/pandas[${PYTHON_USEDEP}]"; then
+ EPYTEST_IGNORE+=(
+ pyfakefs/pytest_tests/pytest_reload_pandas_test.py
+ )
+ fi
+
+ case ${EPYTHON} in
+ pypy3.11)
+ EPYTEST_DESELECT+=(
+ # TODO: this test messes up everything
+ pyfakefs/tests/fake_filesystem_unittest_test.py::TestDeprecationSuppression::test_no_deprecation_warning
+ # TODO
+ pyfakefs/tests/fake_pathlib_test.py::SkipPathlibTest::test_exists
+ )
+ ;;
+ esac
+
+ epytest
+}
diff --git a/dev-python/pygccxml/pygccxml-3.0.2.ebuild b/dev-python/pygccxml/pygccxml-3.0.2.ebuild
index fdaf01aef7f2..14af5afede1b 100644
--- a/dev-python/pygccxml/pygccxml-3.0.2.ebuild
+++ b/dev-python/pygccxml/pygccxml-3.0.2.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -30,6 +30,7 @@ RDEPEND="
${DEPEND}
"
+EPYTEST_PLUGINS=()
distutils_enable_tests pytest
distutils_enable_sphinx docs dev-python/sphinx-rtd-theme
diff --git a/dev-python/pytest-socket/pytest-socket-0.7.0-r1.ebuild b/dev-python/pytest-socket/pytest-socket-0.7.0-r1.ebuild
index 5f37742527e2..8952bb763ce3 100644
--- a/dev-python/pytest-socket/pytest-socket-0.7.0-r1.ebuild
+++ b/dev-python/pytest-socket/pytest-socket-0.7.0-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2025 Gentoo Authors
+# Copyright 2025-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -21,20 +21,20 @@ KEYWORDS="~amd64 ~arm64 ~x86"
RDEPEND="
dev-python/pytest[${PYTHON_USEDEP}]
"
-BDEPEND="
- test? (
- dev-python/pytest-httpx[${PYTHON_USEDEP}]
- dev-python/pytest-httpbin[${PYTHON_USEDEP}]
- )
-"
+EPYTEST_PLUGINS=( "${PN}" pytest-http{bin,x} )
+EPYTEST_PLUGIN_LOAD_VIA_ENV=1
distutils_enable_tests pytest
-src_test() {
- local EPYTEST_DESELECT=(
- tests/test_async.py::test_starlette
- tests/test_restrict_hosts.py::test_help_message
- )
+EPYTEST_DESELECT=(
+ tests/test_async.py::test_starlette
+ tests/test_restrict_hosts.py::test_help_message
- distutils-r1_src_test
-}
+ # require DNS access
+ tests/test_async.py::test_httpx_fails
+ tests/test_combinations.py::test_parametrize_with_socket_enabled_and_allow_hosts
+ tests/test_precedence.py::test_global_disable_and_allow_host
+ tests/test_socket.py::test_urllib_succeeds_by_default
+ tests/test_socket.py::test_enabled_urllib_succeeds
+ tests/test_socket.py::test_disabled_urllib_fails
+)
diff --git a/dev-python/pytest-system-statistics/pytest-system-statistics-1.0.2-r2.ebuild b/dev-python/pytest-system-statistics/pytest-system-statistics-1.0.2-r2.ebuild
index aeda08a0b5e3..12486cc6f34d 100644
--- a/dev-python/pytest-system-statistics/pytest-system-statistics-1.0.2-r2.ebuild
+++ b/dev-python/pytest-system-statistics/pytest-system-statistics-1.0.2-r2.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2022-2024 Gentoo Authors
+# Copyright 2022-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -11,7 +11,7 @@ inherit distutils-r1
DESCRIPTION="Pytest Plugin Which Reports System Usage Statistics"
HOMEPAGE="
https://pypi.org/project/pytest-system-statistics/
- https://github.com/saltstack/pytest-system-statistics
+ https://github.com/saltstack/pytest-system-statistics/
"
SRC_URI="
https://github.com/saltstack/pytest-system-statistics/archive/${PV}.tar.gz
@@ -31,15 +31,14 @@ RDEPEND="
"
BDEPEND="
dev-python/setuptools-scm[${PYTHON_USEDEP}]
- test? (
- dev-python/pytest-subtests[${PYTHON_USEDEP}]
- )
"
PATCHES=(
"${FILESDIR}/pytest-system-statistics-1.0.2-loader.patch"
)
+EPYTEST_PLUGINS=( "${PN}" pytest-subtests )
+EPYTEST_PLUGIN_LOAD_VIA_ENV=1
distutils_enable_tests pytest
export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
diff --git a/dev-python/python-pskc/python-pskc-1.4.ebuild b/dev-python/python-pskc/python-pskc-1.4.ebuild
index 80ae2c970ef9..8596e36f7be3 100644
--- a/dev-python/python-pskc/python-pskc-1.4.ebuild
+++ b/dev-python/python-pskc/python-pskc-1.4.ebuild
@@ -39,4 +39,5 @@ src_prepare() {
sed -i -e "s/ --cov=pskc --cov-report=term-missing:skip-covered --cov-report=html//" "${S}/setup.cfg" || die
}
+EPYTEST_PLUGINS=()
distutils_enable_tests pytest
diff --git a/dev-python/python-pskc/python-pskc-9999.ebuild b/dev-python/python-pskc/python-pskc-9999.ebuild
index 80ae2c970ef9..8596e36f7be3 100644
--- a/dev-python/python-pskc/python-pskc-9999.ebuild
+++ b/dev-python/python-pskc/python-pskc-9999.ebuild
@@ -39,4 +39,5 @@ src_prepare() {
sed -i -e "s/ --cov=pskc --cov-report=term-missing:skip-covered --cov-report=html//" "${S}/setup.cfg" || die
}
+EPYTEST_PLUGINS=()
distutils_enable_tests pytest
diff --git a/dev-python/pywavelets/pywavelets-1.9.0.ebuild b/dev-python/pywavelets/pywavelets-1.9.0.ebuild
index 4f52704338fa..26ecdc73b72e 100644
--- a/dev-python/pywavelets/pywavelets-1.9.0.ebuild
+++ b/dev-python/pywavelets/pywavelets-1.9.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/radon/radon-6.0.1-r2.ebuild b/dev-python/radon/radon-6.0.1-r2.ebuild
index 57f455aaff91..03dc3c4dd7aa 100644
--- a/dev-python/radon/radon-6.0.1-r2.ebuild
+++ b/dev-python/radon/radon-6.0.1-r2.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -24,13 +24,9 @@ RDEPEND="
dev-python/flake8[${PYTHON_USEDEP}]
>=dev-python/mando-0.6[${PYTHON_USEDEP}]
"
-BDEPEND="
- test? (
- dev-python/pytest-mock[${PYTHON_USEDEP}]
- )
-"
distutils_enable_sphinx docs
+EPYTEST_PLUGINS=( pytest-mock )
distutils_enable_tests pytest
src_prepare() {
diff --git a/dev-python/reno/reno-4.1.0.ebuild b/dev-python/reno/reno-4.1.0.ebuild
index a25c7403463f..6c5cebd21f60 100644
--- a/dev-python/reno/reno-4.1.0.ebuild
+++ b/dev-python/reno/reno-4.1.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/rich/Manifest b/dev-python/rich/Manifest
index 967bcc7652f7..9ec0c3263d6c 100644
--- a/dev-python/rich/Manifest
+++ b/dev-python/rich/Manifest
@@ -1,2 +1,3 @@
DIST rich-14.3.3.gh.tar.gz 15087403 BLAKE2B 3d21a0b1e5b5441bdcb9d0051a552ffe771287707bc0ab24d75cea5f6dc14b8fad9daffd0d4b1f0704c96883259d11a0c57701ae7c2628b86157912a1b7fa591 SHA512 61026597c8224f64bb113231dc1e991b7ed471793c72700ca8d52adf5234f96c84de09ec8d175a60582e68d8ff935c507fdb2599d0a567832f739abcb599ef96
DIST rich-14.3.4.gh.tar.gz 15087431 BLAKE2B f0bc3e99dc7ed2afbe06a98c36b950baf4cf62b9fba2b3d288b9ee87027fcb05e7d6b34400f3838858c8f19e8324aeed7eef53c248dfdf036074b6a038323a83 SHA512 78be1ea9ee57c79a9d7863d7842459b701c773805812b9e7bf702715f90f64b2e9462b7a0093dd80005f5d988c86682d9e67044570b9de255f9972f8cc1f6dbd
+DIST rich-15.0.0.gh.tar.gz 15088001 BLAKE2B a95ca3add5d4c9c193838586dc3672edc925383878c40eab8890648c277571246c131a3739e3a691d1055ab849626c4df4af921c32cbea19d3a970b9f059fdf9 SHA512 fa765977800b07b7a5fae07cab26b3db2e1cb5b493c1e846a6f84b6c24334b2baf31b4cd34e5bb3e461db6aa823eea2e5a9b01e4c3b3efae7f4eb4ef134695be
diff --git a/dev-python/rich/rich-15.0.0.ebuild b/dev-python/rich/rich-15.0.0.ebuild
new file mode 100644
index 000000000000..4f51a918264a
--- /dev/null
+++ b/dev-python/rich/rich-15.0.0.ebuild
@@ -0,0 +1,70 @@
+# Copyright 2022-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=poetry
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 optfeature
+
+DESCRIPTION="Python library for rendering rich text, tables, etc. to the terminal"
+HOMEPAGE="
+ https://github.com/Textualize/rich/
+ https://pypi.org/project/rich/
+"
+SRC_URI="
+ https://github.com/Textualize/rich/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ dev-python/colorama[${PYTHON_USEDEP}]
+ >=dev-python/markdown-it-py-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.13.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ >=dev-python/attrs-21.4.0[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # TODO
+ tests/test_console.py::test_size_can_fall_back_to_std_descriptors
+ # TODO: segfault in recursion (PyQt6 interfering?)
+ tests/test_traceback.py::test_recursive
+ # TODO: some random dep changes?
+ tests/test_markdown.py::test_inline_code
+ tests/test_syntax.py::test_blank_lines
+ tests/test_syntax.py::test_python_render_simple_indent_guides
+ # pygments version?
+ tests/test_syntax.py::test_from_path
+ tests/test_syntax.py::test_syntax_guess_lexer
+ # flaky? plain broken?
+ tests/test_console.py::test_brokenpipeerror
+ )
+ # version-specific output -- the usual deal
+ case ${EPYTHON} in
+ pypy3.11)
+ EPYTEST_DESELECT+=(
+ tests/test_inspect.py::test_inspect_integer_with_methods_python311
+ )
+ ;;
+ esac
+
+ local -x COLUMNS=80
+ epytest
+}
+
+pkg_postinst() {
+ optfeature "integration with HTML widgets for Jupyter" dev-python/ipywidgets
+}
diff --git a/dev-python/ropemode/ropemode-0.6.1.ebuild b/dev-python/ropemode/ropemode-0.6.1.ebuild
index d9387c32f322..e41e720002b7 100644
--- a/dev-python/ropemode/ropemode-0.6.1.ebuild
+++ b/dev-python/ropemode/ropemode-0.6.1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -26,4 +26,5 @@ RDEPEND="
dev-python/rope[${PYTHON_USEDEP}]
"
+EPYTEST_PLUGINS=()
distutils_enable_tests pytest
diff --git a/dev-python/scikit-image/scikit-image-0.26.0.ebuild b/dev-python/scikit-image/scikit-image-0.26.0-r1.ebuild
index 241283c52107..241283c52107 100644
--- a/dev-python/scikit-image/scikit-image-0.26.0.ebuild
+++ b/dev-python/scikit-image/scikit-image-0.26.0-r1.ebuild
diff --git a/dev-python/simple-websocket/files/simple-websocket-1.1.0-py314.patch b/dev-python/simple-websocket/files/simple-websocket-1.1.0-py314.patch
new file mode 100644
index 000000000000..c20584d98c79
--- /dev/null
+++ b/dev-python/simple-websocket/files/simple-websocket-1.1.0-py314.patch
@@ -0,0 +1,372 @@
+diff --git a/tests/test_aioclient.py b/tests/test_aioclient.py
+index 01a772a..5ec12ff 100644
+--- a/tests/test_aioclient.py
++++ b/tests/test_aioclient.py
+@@ -1,15 +1,14 @@
+ import asyncio
+-import unittest
+ from unittest import mock
+ import pytest # noqa: F401
+
+ from wsproto.events import AcceptConnection, CloseConnection, TextMessage, \
+ BytesMessage, Ping
+ import simple_websocket
+-from .helpers import make_sync, AsyncMock
+
+
+-class AioSimpleWebSocketClientTestCase(unittest.TestCase):
++@pytest.mark.asyncio
++class TestAioSimpleWebSocketClient:
+ async def get_client(self, mock_wsconn, url, events=[], subprotocols=None,
+ headers=None):
+ mock_wsconn().events.side_effect = \
+@@ -19,11 +18,10 @@ async def get_client(self, mock_wsconn, url, events=[], subprotocols=None,
+ return await simple_websocket.AioClient.connect(
+ url, subprotocols=subprotocols, headers=headers)
+
+- @make_sync
+ @mock.patch('simple_websocket.aiows.asyncio.open_connection')
+ @mock.patch('simple_websocket.aiows.WSConnection')
+ async def test_make_client(self, mock_wsconn, mock_open_connection):
+- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x'))
++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x'))
+ wsock = mock.MagicMock()
+ mock_open_connection.return_value = (rsock, wsock)
+ client = await self.get_client(mock_wsconn, 'ws://example.com/ws?a=1')
+@@ -40,12 +38,11 @@ async def test_make_client(self, mock_wsconn, mock_open_connection):
+ assert client.port == 80
+ assert client.path == '/ws?a=1'
+
+- @make_sync
+ @mock.patch('simple_websocket.aiows.asyncio.open_connection')
+ @mock.patch('simple_websocket.aiows.WSConnection')
+ async def test_make_client_subprotocol(self, mock_wsconn,
+ mock_open_connection):
+- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x'))
++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x'))
+ wsock = mock.MagicMock()
+ mock_open_connection.return_value = (rsock, wsock)
+ client = await self.get_client(mock_wsconn, 'ws://example.com/ws?a=1',
+@@ -55,12 +52,11 @@ async def test_make_client_subprotocol(self, mock_wsconn,
+ b"Request(host='example.com', target='/ws?a=1', extensions=[], "
+ b"extra_headers=[], subprotocols=['foo'])")
+
+- @make_sync
+ @mock.patch('simple_websocket.aiows.asyncio.open_connection')
+ @mock.patch('simple_websocket.aiows.WSConnection')
+ async def test_make_client_subprotocols(self, mock_wsconn,
+ mock_open_connection):
+- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x'))
++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x'))
+ wsock = mock.MagicMock()
+ mock_open_connection.return_value = (rsock, wsock)
+ client = await self.get_client(mock_wsconn, 'ws://example.com/ws?a=1',
+@@ -70,12 +66,11 @@ async def test_make_client_subprotocols(self, mock_wsconn,
+ b"Request(host='example.com', target='/ws?a=1', extensions=[], "
+ b"extra_headers=[], subprotocols=['foo', 'bar'])")
+
+- @make_sync
+ @mock.patch('simple_websocket.aiows.asyncio.open_connection')
+ @mock.patch('simple_websocket.aiows.WSConnection')
+ async def test_make_client_headers(self, mock_wsconn,
+ mock_open_connection):
+- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x'))
++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x'))
+ wsock = mock.MagicMock()
+ mock_open_connection.return_value = (rsock, wsock)
+ client = await self.get_client(mock_wsconn, 'ws://example.com/ws?a=1',
+@@ -84,12 +79,11 @@ async def test_make_client_headers(self, mock_wsconn,
+ b"Request(host='example.com', target='/ws?a=1', extensions=[], "
+ b"extra_headers=[('Foo', 'Bar')], subprotocols=[])")
+
+- @make_sync
+ @mock.patch('simple_websocket.aiows.asyncio.open_connection')
+ @mock.patch('simple_websocket.aiows.WSConnection')
+ async def test_make_client_headers2(self, mock_wsconn,
+ mock_open_connection):
+- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x'))
++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x'))
+ wsock = mock.MagicMock()
+ mock_open_connection.return_value = (rsock, wsock)
+ client = await self.get_client(
+@@ -100,11 +94,10 @@ async def test_make_client_headers2(self, mock_wsconn,
+ b"extra_headers=[('Foo', 'Bar'), ('Foo', 'Baz')], "
+ b"subprotocols=[])")
+
+- @make_sync
+ @mock.patch('simple_websocket.aiows.asyncio.open_connection')
+ @mock.patch('simple_websocket.aiows.WSConnection')
+ async def test_send(self, mock_wsconn, mock_open_connection):
+- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x'))
++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x'))
+ wsock = mock.MagicMock()
+ mock_open_connection.return_value = (rsock, wsock)
+ client = await self.get_client(mock_wsconn, 'ws://example.com/ws')
+@@ -123,11 +116,10 @@ async def test_send(self, mock_wsconn, mock_open_connection):
+ b"Message(data=b'hello', frame_finished=True, "
+ b"message_finished=True)")
+
+- @make_sync
+ @mock.patch('simple_websocket.aiows.asyncio.open_connection')
+ @mock.patch('simple_websocket.aiows.WSConnection')
+ async def test_receive(self, mock_wsconn, mock_open_connection):
+- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x'))
++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x'))
+ wsock = mock.MagicMock()
+ mock_open_connection.return_value = (rsock, wsock)
+ client = await self.get_client(
+@@ -142,12 +134,11 @@ async def test_receive(self, mock_wsconn, mock_open_connection):
+ assert await client.receive() == b'hello'
+ assert await client.receive(timeout=0) is None
+
+- @make_sync
+ @mock.patch('simple_websocket.aiows.asyncio.open_connection')
+ @mock.patch('simple_websocket.aiows.WSConnection')
+ async def test_receive_after_close(self, mock_wsconn,
+ mock_open_connection):
+- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x'))
++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x'))
+ wsock = mock.MagicMock()
+ mock_open_connection.return_value = (rsock, wsock)
+ client = await self.get_client(
+@@ -160,11 +151,10 @@ async def test_receive_after_close(self, mock_wsconn,
+ with pytest.raises(simple_websocket.ConnectionClosed):
+ await client.receive()
+
+- @make_sync
+ @mock.patch('simple_websocket.aiows.asyncio.open_connection')
+ @mock.patch('simple_websocket.aiows.WSConnection')
+ async def test_receive_ping(self, mock_wsconn, mock_open_connection):
+- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x'))
++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x'))
+
+ wsock = mock.MagicMock()
+ mock_open_connection.return_value = (rsock, wsock)
+@@ -176,11 +166,11 @@ async def test_receive_ping(self, mock_wsconn, mock_open_connection):
+ await asyncio.sleep(0.01)
+ wsock.write.assert_any_call(b"Pong(payload=b'hello')")
+
+- @make_sync
+ @mock.patch('simple_websocket.aiows.asyncio.open_connection')
+ @mock.patch('simple_websocket.aiows.WSConnection')
+ async def test_receive_empty(self, mock_wsconn, mock_open_connection):
+- rsock = mock.MagicMock(read=AsyncMock(side_effect=[b'x', b'x', b'']))
++ rsock = mock.MagicMock(read=mock.AsyncMock(
++ side_effect=[b'x', b'x', b'']))
+ wsock = mock.MagicMock()
+ mock_open_connection.return_value = (rsock, wsock)
+ client = await self.get_client(
+@@ -193,11 +183,10 @@ async def test_receive_empty(self, mock_wsconn, mock_open_connection):
+ assert await client.receive() == 'hello'
+ assert await client.receive(timeout=0) is None
+
+- @make_sync
+ @mock.patch('simple_websocket.aiows.asyncio.open_connection')
+ @mock.patch('simple_websocket.aiows.WSConnection')
+ async def test_close(self, mock_wsconn, mock_open_connection):
+- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x'))
++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x'))
+ wsock = mock.MagicMock()
+ mock_open_connection.return_value = (rsock, wsock)
+ client = await self.get_client(
+diff --git a/tests/test_aioserver.py b/tests/test_aioserver.py
+index a274019..071e035 100644
+--- a/tests/test_aioserver.py
++++ b/tests/test_aioserver.py
+@@ -1,15 +1,14 @@
+ import asyncio
+-import unittest
+ from unittest import mock
+ import pytest # noqa: F401
+
+ from wsproto.events import Request, CloseConnection, TextMessage, \
+ BytesMessage, Ping, Pong
+ import simple_websocket
+-from .helpers import make_sync, AsyncMock
+
+
+-class AioSimpleWebSocketServerTestCase(unittest.TestCase):
++@pytest.mark.asyncio
++class TestAioSimpleWebSocketServer:
+ async def get_server(self, mock_wsconn, request, events=[],
+ client_subprotocols=None, server_subprotocols=None,
+ **kwargs):
+@@ -29,12 +28,11 @@ async def get_server(self, mock_wsconn, request, events=[],
+ return await simple_websocket.AioServer.accept(
+ aiohttp=request, subprotocols=server_subprotocols, **kwargs)
+
+- @make_sync
+ @mock.patch('simple_websocket.aiows.asyncio.open_connection')
+ @mock.patch('simple_websocket.aiows.WSConnection')
+ async def test_aiohttp(self, mock_wsconn, mock_open_connection):
+ mock_request = mock.MagicMock(headers={})
+- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x'))
++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x'))
+ wsock = mock.MagicMock()
+ mock_open_connection.return_value = (rsock, wsock)
+ server = await self.get_server(mock_wsconn, mock_request)
+@@ -53,19 +51,17 @@ async def test_aiohttp(self, mock_wsconn, mock_open_connection):
+ b'Sec-Websocket-Version: 13\r\n\r\n')
+ assert server.is_server
+
+- @make_sync
+ async def test_invalid_request(self):
+ with pytest.raises(ValueError):
+ await simple_websocket.AioServer.accept(aiohttp='foo', asgi='bar')
+ with pytest.raises(ValueError):
+ await simple_websocket.AioServer.accept(asgi='bar', sock='baz')
+
+- @make_sync
+ @mock.patch('simple_websocket.aiows.asyncio.open_connection')
+ @mock.patch('simple_websocket.aiows.WSConnection')
+ async def test_send(self, mock_wsconn, mock_open_connection):
+ mock_request = mock.MagicMock(headers={})
+- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x'))
++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x'))
+ wsock = mock.MagicMock()
+ mock_open_connection.return_value = (rsock, wsock)
+ server = await self.get_server(mock_wsconn, mock_request)
+@@ -84,12 +80,11 @@ async def test_send(self, mock_wsconn, mock_open_connection):
+ b"Message(data=b'hello', frame_finished=True, "
+ b"message_finished=True)")
+
+- @make_sync
+ @mock.patch('simple_websocket.aiows.asyncio.open_connection')
+ @mock.patch('simple_websocket.aiows.WSConnection')
+ async def test_receive(self, mock_wsconn, mock_open_connection):
+ mock_request = mock.MagicMock(headers={})
+- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x'))
++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x'))
+ wsock = mock.MagicMock()
+ mock_open_connection.return_value = (rsock, wsock)
+ server = await self.get_server(mock_wsconn, mock_request, events=[
+@@ -103,13 +98,12 @@ async def test_receive(self, mock_wsconn, mock_open_connection):
+ assert await server.receive() == b'hello'
+ assert await server.receive(timeout=0) is None
+
+- @make_sync
+ @mock.patch('simple_websocket.aiows.asyncio.open_connection')
+ @mock.patch('simple_websocket.aiows.WSConnection')
+ async def test_receive_after_close(self, mock_wsconn,
+ mock_open_connection):
+ mock_request = mock.MagicMock(headers={})
+- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x'))
++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x'))
+ wsock = mock.MagicMock()
+ mock_open_connection.return_value = (rsock, wsock)
+ server = await self.get_server(mock_wsconn, mock_request, events=[
+@@ -121,13 +115,12 @@ async def test_receive_after_close(self, mock_wsconn,
+ with pytest.raises(simple_websocket.ConnectionClosed):
+ await server.receive()
+
+- @make_sync
+ @mock.patch('simple_websocket.aiows.asyncio.open_connection')
+ @mock.patch('simple_websocket.aiows.WSConnection')
+ async def test_receive_split_messages(self, mock_wsconn,
+ mock_open_connection):
+ mock_request = mock.MagicMock(headers={})
+- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x'))
++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x'))
+ wsock = mock.MagicMock()
+ mock_open_connection.return_value = (rsock, wsock)
+ server = await self.get_server(mock_wsconn, mock_request, events=[
+@@ -151,12 +144,11 @@ async def test_receive_split_messages(self, mock_wsconn,
+ assert await server.receive() == b'hello'
+ assert await server.receive(timeout=0) is None
+
+- @make_sync
+ @mock.patch('simple_websocket.aiows.asyncio.open_connection')
+ @mock.patch('simple_websocket.aiows.WSConnection')
+ async def test_receive_ping(self, mock_wsconn, mock_open_connection):
+ mock_request = mock.MagicMock(headers={})
+- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x'))
++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x'))
+ wsock = mock.MagicMock()
+ mock_open_connection.return_value = (rsock, wsock)
+ server = await self.get_server(mock_wsconn, mock_request, events=[
+@@ -166,12 +158,11 @@ async def test_receive_ping(self, mock_wsconn, mock_open_connection):
+ await asyncio.sleep(0.01)
+ wsock.write.assert_any_call(b"Pong(payload=b'hello')")
+
+- @make_sync
+ @mock.patch('simple_websocket.aiows.asyncio.open_connection')
+ @mock.patch('simple_websocket.aiows.WSConnection')
+ async def test_receive_empty(self, mock_wsconn, mock_open_connection):
+ mock_request = mock.MagicMock(headers={})
+- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x'))
++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x'))
+ wsock = mock.MagicMock()
+ mock_open_connection.return_value = (rsock, wsock)
+ server = await self.get_server(mock_wsconn, mock_request, events=[
+@@ -183,12 +174,11 @@ async def test_receive_empty(self, mock_wsconn, mock_open_connection):
+ assert await server.receive() == 'hello'
+ assert await server.receive(timeout=0) is None
+
+- @make_sync
+ @mock.patch('simple_websocket.aiows.asyncio.open_connection')
+ @mock.patch('simple_websocket.aiows.WSConnection')
+ async def test_receive_large(self, mock_wsconn, mock_open_connection):
+ mock_request = mock.MagicMock(headers={})
+- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x'))
++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x'))
+ wsock = mock.MagicMock()
+ mock_open_connection.return_value = (rsock, wsock)
+ server = await self.get_server(mock_wsconn, mock_request, events=[
+@@ -201,12 +191,11 @@ async def test_receive_large(self, mock_wsconn, mock_open_connection):
+ assert await server.receive() == 'hello'
+ assert await server.receive(timeout=0) is None
+
+- @make_sync
+ @mock.patch('simple_websocket.aiows.asyncio.open_connection')
+ @mock.patch('simple_websocket.aiows.WSConnection')
+ async def test_close(self, mock_wsconn, mock_open_connection):
+ mock_request = mock.MagicMock(headers={})
+- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x'))
++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x'))
+ wsock = mock.MagicMock()
+ mock_open_connection.return_value = (rsock, wsock)
+ server = await self.get_server(mock_wsconn, mock_request)
+@@ -222,7 +211,6 @@ async def test_close(self, mock_wsconn, mock_open_connection):
+ b'CloseConnection(code=<CloseReason.NORMAL_CLOSURE: 1000>, '
+ b'reason=None)')
+
+- @make_sync
+ @mock.patch('simple_websocket.aiows.asyncio.open_connection')
+ @mock.patch('simple_websocket.aiows.WSConnection')
+ @mock.patch('simple_websocket.aiows.time')
+@@ -230,7 +218,7 @@ async def test_close(self, mock_wsconn, mock_open_connection):
+ async def test_ping_pong(self, mock_wait_for, mock_time, mock_wsconn,
+ mock_open_connection):
+ mock_request = mock.MagicMock(headers={})
+- rsock = mock.MagicMock(read=AsyncMock())
++ rsock = mock.MagicMock(read=mock.AsyncMock())
+ wsock = mock.MagicMock()
+ mock_open_connection.return_value = (rsock, wsock)
+ server = await self.get_server(mock_wsconn, mock_request, events=[
+@@ -246,12 +234,11 @@ async def test_ping_pong(self, mock_wait_for, mock_time, mock_wsconn,
+ assert wsock.write.call_args_list[2][0][0].startswith(b'Ping')
+ assert wsock.write.call_args_list[3][0][0].startswith(b'Close')
+
+- @make_sync
+ @mock.patch('simple_websocket.aiows.asyncio.open_connection')
+ @mock.patch('simple_websocket.aiows.WSConnection')
+ async def test_subprotocols(self, mock_wsconn, mock_open_connection):
+ mock_request = mock.MagicMock(headers={})
+- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x'))
++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x'))
+ wsock = mock.MagicMock()
+ mock_open_connection.return_value = (rsock, wsock)
+
+diff --git a/tests/test_server.py b/tests/test_server.py
+index 7be5d15..ca5fe99 100644
+--- a/tests/test_server.py
++++ b/tests/test_server.py
+@@ -92,7 +92,7 @@ def test_send(self, mock_wsconn):
+ b"message_finished=True)")
+ server.connected = True
+ server.send(b'hello')
+- mock_socket.send.assert_called_with(
++ mock_socket.send.assert_any_call(
+ b"Message(data=b'hello', frame_finished=True, "
+ b"message_finished=True)")
+
diff --git a/dev-python/simple-websocket/simple-websocket-1.1.0.ebuild b/dev-python/simple-websocket/simple-websocket-1.1.0.ebuild
index 7552aa5481a1..2d79417b7ce5 100644
--- a/dev-python/simple-websocket/simple-websocket-1.1.0.ebuild
+++ b/dev-python/simple-websocket/simple-websocket-1.1.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2023-2025 Gentoo Authors
+# Copyright 2023-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -29,6 +29,11 @@ RDEPEND="
"
src_prepare() {
+ local PATCHES=(
+ # https://github.com/miguelgrinberg/simple-websocket/pull/48
+ "${FILESDIR}/${P}-py314.patch"
+ )
+
distutils-r1_src_prepare
# fix tests to work offline
@@ -36,4 +41,5 @@ src_prepare() {
sed -i -e 's:example\.com:localhost:g' tests/test_client.py || die
}
+EPYTEST_PLUGINS=( pytest-asyncio )
distutils_enable_tests pytest
diff --git a/dev-python/sphinx-argparse/sphinx-argparse-0.5.2.ebuild b/dev-python/sphinx-argparse/sphinx-argparse-0.5.2.ebuild
index 4710de6d0ce0..134dc5e48429 100644
--- a/dev-python/sphinx-argparse/sphinx-argparse-0.5.2.ebuild
+++ b/dev-python/sphinx-argparse/sphinx-argparse-0.5.2.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2020-2025 Gentoo Authors
+# Copyright 2020-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -29,4 +29,5 @@ BDEPEND="
)
"
+EPYTEST_PLUGINS=()
distutils_enable_tests pytest
diff --git a/dev-python/sphinxcontrib-doxylink/sphinxcontrib-doxylink-1.13.0.ebuild b/dev-python/sphinxcontrib-doxylink/sphinxcontrib-doxylink-1.13.0.ebuild
index 4f920718c85a..ee2a67d91131 100644
--- a/dev-python/sphinxcontrib-doxylink/sphinxcontrib-doxylink-1.13.0.ebuild
+++ b/dev-python/sphinxcontrib-doxylink/sphinxcontrib-doxylink-1.13.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -37,6 +37,7 @@ BDEPEND="
)
"
+EPYTEST_PLUGINS=()
distutils_enable_tests pytest
distutils_enable_sphinx doc \
dev-python/sphinx-rtd-theme
diff --git a/dev-python/tifffile/Manifest b/dev-python/tifffile/Manifest
index 5b83de8ffeec..539f4d0e881c 100644
--- a/dev-python/tifffile/Manifest
+++ b/dev-python/tifffile/Manifest
@@ -1 +1,2 @@
DIST tifffile-2026.3.3.gh.tar.gz 378440 BLAKE2B 67b6bb348cb911df0f1d9d15d36987feb498a81f7dd5b991c2d51affe0f1416d5a8d96be31a22a724a17cca204a44872257e42916d9a06b06f28ffd1d850bb9e SHA512 40968255d968ed0fbc90488142852f43d309fddd8df9e1a58b78efdbaca20efb1b9e6c09852135162cce99aea95fd8a7da89db4fa15aecfadef5917c99c77d69
+DIST tifffile-2026.4.11.gh.tar.gz 383825 BLAKE2B 6a0b61f2d00557d67c94a0924b6ca2b5e2098249555ec8b555013bee8d1102af8ae6bf7aac858b899cc615be7c11d946ed495b8bfc432e07eea798acd120a807 SHA512 58a7242d70b0260e1f7a25ac12bb19e898369a8b53fa5cd4967b2edea8566e077ae149ce4707ac4a71e07581e14cb20b6d6b659a27235fd454e587c02d8a2909
diff --git a/dev-python/tifffile/tifffile-2026.4.11.ebuild b/dev-python/tifffile/tifffile-2026.4.11.ebuild
new file mode 100644
index 000000000000..de56c12ef129
--- /dev/null
+++ b/dev-python/tifffile/tifffile-2026.4.11.ebuild
@@ -0,0 +1,56 @@
+# Copyright 2021-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Read and write TIFF files"
+HOMEPAGE="
+ https://pypi.org/project/tifffile/
+ https://github.com/cgohlke/tifffile/
+ https://www.cgohlke.com/
+"
+SRC_URI="
+ https://github.com/cgohlke/tifffile/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ >=dev-python/numpy-1.19.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/defusedxml[${PYTHON_USEDEP}]
+ >=dev-python/fsspec-2021.5.0[${PYTHON_USEDEP}]
+ dev-python/lxml[${PYTHON_USEDEP}]
+ dev-python/xarray[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # not marked properly
+ # https://github.com/cgohlke/tifffile/pull/308
+ tests/test_tifffile.py::test_issue_dcp
+ # meaningless and broken on py<3.13
+ # https://github.com/cgohlke/tifffile/pull/309
+ tests/test_tifffile.py::test_gil_enabled
+ )
+
+ local -x SKIP_LARGE=1
+ local -x SKIP_HTTP=1
+
+ epytest
+}
diff --git a/dev-python/wrapt/Manifest b/dev-python/wrapt/Manifest
index ebf6f59531e6..10626d44ca8e 100644
--- a/dev-python/wrapt/Manifest
+++ b/dev-python/wrapt/Manifest
@@ -2,3 +2,4 @@ DIST wrapt-1.17.3.gh.tar.gz 140900 BLAKE2B 88c4cd718cd98a97c866c4f0b9f7e095347fe
DIST wrapt-2.1.2.tar.gz 81678 BLAKE2B f7fc45f31b8077d6d97c14c1f649437e0f1da7537769d369d427edede0ba1b84c8c07e6de9ded8088f29f2fb774272186d0f9b707e6b2bef650dc5f78444d852 SHA512 97f1af4cabfd7a4cfabfaf36d26d1afc577747f18946226fbb80256e13c55302b746005e01720e874d46d536826c83e9234544c98f8dd1ecd3c9a091113da808
DIST wrapt-2.2.0rc2.tar.gz 91919 BLAKE2B 5f3c42f36f2ec74677a0de7367a019f0b02a183ee28f77f91d2748f8a0cd6714a2d315bdd1900fffc9ea383e1f236b2437aada6fe308d1607578fdb70555f57b SHA512 a70626f14f1b59cc5dfcf99038a72dca022b953f280b34a9472621afe22cecda450b660244bade2956e1b8e13c21365839b186c60ac68e993a0f55f6e44a4ccd
DIST wrapt-2.2.0rc4.tar.gz 95966 BLAKE2B 8c87e0998711cfa08b81c75ead0589bef8ab723df48d04b2304691cd0cbc0c5e25324381a6386f93deb022985285e025cb9600e210a8101e8bae782d8f531a3b SHA512 fb62f0e0b8448b246ee3b34497bf20ca0faac8b3b91da9ea07a2585bcc026ba0a58d5adb2786360a61cca54e212f931019675cb708de2bdda06d322c766ea31a
+DIST wrapt-2.2.0rc5.tar.gz 101797 BLAKE2B 4784e51ece7f671cb7df884de69ec245569c1c5ea6fc6c8be58438ace8238b910b1d78c9d95de72e7e9a37d2c189d5326253c6784952092187962da6b742ec92 SHA512 509de5d5d1deff63485e0c2b7cbae04709c61276f5863596f31049f451e1eb845d23016d0cee03b9eea0495ce578e62db0a368499819965477d2a2bc08722ae8
diff --git a/dev-python/wrapt/wrapt-2.2.0_rc5.ebuild b/dev-python/wrapt/wrapt-2.2.0_rc5.ebuild
new file mode 100644
index 000000000000..8514e94dc258
--- /dev/null
+++ b/dev-python/wrapt/wrapt-2.2.0_rc5.ebuild
@@ -0,0 +1,39 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+MY_P=${P/_}
+DESCRIPTION="Module for decorators, wrappers and monkey patching"
+HOMEPAGE="
+ https://github.com/GrahamDumpleton/wrapt/
+ https://pypi.org/project/wrapt/
+"
+
+LICENSE="BSD"
+SLOT="0"
+if [[ ${PV} != *_rc* ]]; then
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+fi
+IUSE="+native-extensions"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # skip mypy tests, they are fragile
+ rm -r tests/mypy || die
+}
+
+python_compile() {
+ local -x WRAPT_INSTALL_EXTENSIONS=$(usex native-extensions true false)
+ distutils-r1_python_compile
+}