summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-09-15 18:59:29 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-09-15 18:59:29 +0000
commit459468f49c11794ed867d2ad7055bb716a14c6b2 (patch)
tree56a8ecbd06925156061b23225a438a664d7dafb1 /dev-python
parent37f3a4a21f3ac9c85846c3abeb389206a079e3ef (diff)
downloadbaldeagleos-repo-459468f49c11794ed867d2ad7055bb716a14c6b2.tar.gz
baldeagleos-repo-459468f49c11794ed867d2ad7055bb716a14c6b2.tar.xz
baldeagleos-repo-459468f49c11794ed867d2ad7055bb716a14c6b2.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/aiohttp/aiohttp-3.12.15.ebuild2
-rw-r--r--dev-python/arpeggio/Manifest1
-rw-r--r--dev-python/arpeggio/arpeggio-2.0.3.ebuild24
-rw-r--r--dev-python/betterproto/betterproto-2.0.0_beta7.ebuild2
-rw-r--r--dev-python/boto3/Manifest13
-rw-r--r--dev-python/boto3/boto3-1.39.14.ebuild53
-rw-r--r--dev-python/boto3/boto3-1.40.1.ebuild53
-rw-r--r--dev-python/boto3/boto3-1.40.22.ebuild53
-rw-r--r--dev-python/boto3/boto3-1.40.23.ebuild53
-rw-r--r--dev-python/boto3/boto3-1.40.24.ebuild53
-rw-r--r--dev-python/boto3/boto3-1.40.27.ebuild (renamed from dev-python/boto3/boto3-1.40.19.ebuild)2
-rw-r--r--dev-python/boto3/boto3-1.40.28.ebuild (renamed from dev-python/boto3/boto3-1.40.20.ebuild)2
-rw-r--r--dev-python/boto3/boto3-1.40.29.ebuild (renamed from dev-python/boto3/boto3-1.40.17.ebuild)2
-rw-r--r--dev-python/boto3/boto3-1.40.30.ebuild (renamed from dev-python/boto3/boto3-1.40.18.ebuild)2
-rw-r--r--dev-python/boto3/boto3-1.40.6.ebuild2
-rw-r--r--dev-python/botocore/Manifest13
-rw-r--r--dev-python/botocore/botocore-1.39.14.ebuild67
-rw-r--r--dev-python/botocore/botocore-1.40.1.ebuild67
-rw-r--r--dev-python/botocore/botocore-1.40.22.ebuild67
-rw-r--r--dev-python/botocore/botocore-1.40.23.ebuild67
-rw-r--r--dev-python/botocore/botocore-1.40.24.ebuild67
-rw-r--r--dev-python/botocore/botocore-1.40.27.ebuild (renamed from dev-python/botocore/botocore-1.40.17.ebuild)0
-rw-r--r--dev-python/botocore/botocore-1.40.28.ebuild (renamed from dev-python/botocore/botocore-1.40.18.ebuild)0
-rw-r--r--dev-python/botocore/botocore-1.40.29.ebuild (renamed from dev-python/botocore/botocore-1.40.19.ebuild)0
-rw-r--r--dev-python/botocore/botocore-1.40.30.ebuild (renamed from dev-python/botocore/botocore-1.40.20.ebuild)0
-rw-r--r--dev-python/botocore/botocore-1.40.6.ebuild2
-rw-r--r--dev-python/bottleneck/Manifest1
-rw-r--r--dev-python/bottleneck/bottleneck-1.6.0.ebuild58
-rw-r--r--dev-python/btrfsutil/Manifest2
-rw-r--r--dev-python/btrfsutil/btrfsutil-6.16.1.ebuild62
-rw-r--r--dev-python/cffi/Manifest2
-rw-r--r--dev-python/cffi/cffi-2.0.0.ebuild (renamed from dev-python/cffi/cffi-2.0.0_beta1.ebuild)2
-rw-r--r--dev-python/charset-normalizer/charset-normalizer-3.4.3.ebuild2
-rw-r--r--dev-python/clang/Manifest5
-rw-r--r--dev-python/clang/clang-21.1.1.ebuild (renamed from dev-python/clang/clang-22.0.0_pre20250831.ebuild)1
-rw-r--r--dev-python/clang/clang-22.0.0_pre20250910.ebuild (renamed from dev-python/clang/clang-22.0.0_pre20250820.ebuild)0
-rw-r--r--dev-python/cramjam/Manifest1
-rw-r--r--dev-python/cramjam/cramjam-2.11.0.ebuild1
-rw-r--r--dev-python/cramjam/cramjam-2.11.0_rc3.ebuild240
-rw-r--r--dev-python/django-cors-headers/Manifest1
-rw-r--r--dev-python/django-cors-headers/django-cors-headers-4.8.0.ebuild31
-rw-r--r--dev-python/dnspython/dnspython-2.8.0.ebuild2
-rw-r--r--dev-python/docutils/Manifest1
-rw-r--r--dev-python/docutils/docutils-0.22.1_rc1.ebuild61
-rw-r--r--dev-python/dogpile-cache/Manifest1
-rw-r--r--dev-python/dogpile-cache/dogpile-cache-1.4.1.ebuild34
-rw-r--r--dev-python/elasticsearch/Manifest2
-rw-r--r--dev-python/elasticsearch/elasticsearch-9.0.4.ebuild78
-rw-r--r--dev-python/elasticsearch/elasticsearch-9.1.1.ebuild84
-rw-r--r--dev-python/electrum-aionostr/electrum-aionostr-0.0.11.ebuild2
-rw-r--r--dev-python/electrum-ecc/electrum-ecc-0.0.5.ebuild2
-rw-r--r--dev-python/ensurepip-pip/ensurepip-pip-25.2.ebuild2
-rw-r--r--dev-python/expandvars/Manifest1
-rw-r--r--dev-python/expandvars/expandvars-1.1.2.ebuild22
-rw-r--r--dev-python/feedparser/Manifest1
-rw-r--r--dev-python/feedparser/feedparser-6.0.12.ebuild42
-rw-r--r--dev-python/findpython/findpython-0.7.0.ebuild2
-rw-r--r--dev-python/gherkin-official/Manifest1
-rw-r--r--dev-python/gherkin-official/gherkin-official-35.0.0.ebuild31
-rw-r--r--dev-python/git-review/Manifest2
-rw-r--r--dev-python/git-review/git-review-2.5.0.ebuild73
-rw-r--r--dev-python/git-review/git-review-9999.ebuild46
-rw-r--r--dev-python/gpgmepy/gpgmepy-2.0.0-r1.ebuild2
-rw-r--r--dev-python/greenlet/greenlet-3.2.4.ebuild2
-rw-r--r--dev-python/hcloud/Manifest1
-rw-r--r--dev-python/hcloud/hcloud-2.6.0.ebuild51
-rw-r--r--dev-python/hypothesis/Manifest2
-rw-r--r--dev-python/hypothesis/hypothesis-6.138.15.ebuild125
-rw-r--r--dev-python/hypothesis/hypothesis-6.138.16.ebuild125
-rw-r--r--dev-python/ipykernel/ipykernel-6.30.1.ebuild2
-rw-r--r--dev-python/ipython/Manifest1
-rw-r--r--dev-python/ipython/files/ipython-9.5.0-assert.patch88
-rw-r--r--dev-python/ipython/ipython-9.5.0.ebuild155
-rw-r--r--dev-python/isal/Manifest1
-rw-r--r--dev-python/isal/isal-1.8.0.ebuild43
-rw-r--r--dev-python/josepy/Manifest2
-rw-r--r--dev-python/josepy/josepy-2.1.0.ebuild (renamed from dev-python/josepy/josepy-1.15.0.ebuild)8
-rw-r--r--dev-python/kaitaistruct/Manifest2
-rw-r--r--dev-python/kaitaistruct/kaitaistruct-0.11.ebuild21
-rw-r--r--dev-python/libcst/Manifest9
-rw-r--r--dev-python/libcst/libcst-1.8.4.ebuild190
-rw-r--r--dev-python/libtmux/libtmux-0.46.2.ebuild2
-rw-r--r--dev-python/linode-metadata/Manifest1
-rw-r--r--dev-python/linode-metadata/linode-metadata-0.3.0.ebuild22
-rw-r--r--dev-python/lit/Manifest5
-rw-r--r--dev-python/lit/lit-21.1.1.ebuild (renamed from dev-python/lit/lit-22.0.0_pre20250831.ebuild)1
-rw-r--r--dev-python/lit/lit-22.0.0_pre20250910.ebuild (renamed from dev-python/lit/lit-22.0.0_pre20250820.ebuild)0
-rw-r--r--dev-python/moddb/Manifest1
-rw-r--r--dev-python/moddb/moddb-0.13.0.ebuild52
-rw-r--r--dev-python/mypy/Manifest1
-rw-r--r--dev-python/mypy/mypy-1.18.1.ebuild126
-rw-r--r--dev-python/narwhals/Manifest7
-rw-r--r--dev-python/narwhals/narwhals-2.3.0.ebuild43
-rw-r--r--dev-python/narwhals/narwhals-2.4.0.ebuild (renamed from dev-python/narwhals/narwhals-2.1.2.ebuild)1
-rw-r--r--dev-python/narwhals/narwhals-2.5.0.ebuild (renamed from dev-python/narwhals/narwhals-2.2.0.ebuild)1
-rw-r--r--dev-python/nox/nox-2025.05.01.ebuild2
-rw-r--r--dev-python/nuitka/Manifest2
-rw-r--r--dev-python/nuitka/nuitka-2.7.14.ebuild (renamed from dev-python/nuitka/nuitka-2.7.12.ebuild)0
-rw-r--r--dev-python/numexpr/Manifest2
-rw-r--r--dev-python/numexpr/numexpr-2.11.0.ebuild4
-rw-r--r--dev-python/numexpr/numexpr-2.12.0.ebuild42
-rw-r--r--dev-python/numexpr/numexpr-2.12.1.ebuild42
-rw-r--r--dev-python/numpy/Manifest2
-rw-r--r--dev-python/numpy/numpy-2.3.0.ebuild199
-rw-r--r--dev-python/numpy/numpy-2.3.2.ebuild2
-rw-r--r--dev-python/numpy/numpy-2.3.3.ebuild (renamed from dev-python/numpy/numpy-2.3.1-r1.ebuild)190
-rw-r--r--dev-python/opensearch-py/Manifest1
-rw-r--r--dev-python/opensearch-py/opensearch-py-3.0.0.ebuild34
-rw-r--r--dev-python/openstacksdk/Manifest1
-rw-r--r--dev-python/openstacksdk/openstacksdk-4.7.1.ebuild91
-rw-r--r--dev-python/opentelemetry-api/Manifest1
-rw-r--r--dev-python/opentelemetry-api/opentelemetry-api-1.37.0.ebuild61
-rw-r--r--dev-python/opentelemetry-sdk/Manifest1
-rw-r--r--dev-python/opentelemetry-sdk/opentelemetry-sdk-1.37.0.ebuild51
-rw-r--r--dev-python/opentelemetry-semantic-conventions/Manifest1
-rw-r--r--dev-python/opentelemetry-semantic-conventions/opentelemetry-semantic-conventions-1.37.0.ebuild52
-rw-r--r--dev-python/ovs/Manifest1
-rw-r--r--dev-python/ovs/ovs-3.6.0.ebuild17
-rw-r--r--dev-python/path/path-17.1.1.ebuild2
-rw-r--r--dev-python/phonenumbers/phonenumbers-9.0.11.ebuild2
-rw-r--r--dev-python/pikepdf/Manifest1
-rw-r--r--dev-python/pikepdf/pikepdf-9.11.0.ebuild59
-rw-r--r--dev-python/pip/pip-25.2.ebuild2
-rw-r--r--dev-python/prometheus-client/Manifest1
-rw-r--r--dev-python/prometheus-client/prometheus-client-0.23.0.ebuild45
-rw-r--r--dev-python/protobuf/Manifest2
-rw-r--r--dev-python/protobuf/protobuf-6.32.1.ebuild155
-rw-r--r--dev-python/psycopg/Manifest3
-rw-r--r--dev-python/psycopg/psycopg-3.2.10.ebuild (renamed from dev-python/psycopg/psycopg-3.2.8.ebuild)5
-rw-r--r--dev-python/psycopg/psycopg-3.2.7.ebuild120
-rw-r--r--dev-python/pyarrow/pyarrow-21.0.0.ebuild3
-rw-r--r--dev-python/pyarrow/pyarrow-9999.ebuild95
-rw-r--r--dev-python/pycares/Manifest2
-rw-r--r--dev-python/pycares/pycares-4.11.0.ebuild (renamed from dev-python/pycares/pycares-4.9.0.ebuild)19
-rw-r--r--dev-python/pychromecast/Manifest1
-rw-r--r--dev-python/pychromecast/pychromecast-14.0.9.ebuild25
-rw-r--r--dev-python/pycparser/Manifest1
-rw-r--r--dev-python/pycparser/pycparser-2.23.ebuild69
-rw-r--r--dev-python/pydantic/Manifest2
-rw-r--r--dev-python/pydantic/pydantic-2.11.8.ebuild71
-rw-r--r--dev-python/pydantic/pydantic-2.11.9.ebuild71
-rw-r--r--dev-python/pydata-sphinx-theme/Manifest2
-rw-r--r--dev-python/pydata-sphinx-theme/pydata-sphinx-theme-0.16.1.ebuild56
-rw-r--r--dev-python/pyenchant/Manifest1
-rw-r--r--dev-python/pyenchant/pyenchant-3.3.0.ebuild35
-rw-r--r--dev-python/pyfakefs/Manifest1
-rw-r--r--dev-python/pyfakefs/pyfakefs-5.9.1.ebuild60
-rw-r--r--dev-python/pyfakefs/pyfakefs-5.9.2.ebuild2
-rw-r--r--dev-python/pygit2/pygit2-1.18.2.ebuild2
-rw-r--r--dev-python/pykka/Manifest1
-rw-r--r--dev-python/pykka/pykka-4.3.0.ebuild27
-rw-r--r--dev-python/pylint/pylint-3.3.8.ebuild2
-rw-r--r--dev-python/pymongo/Manifest1
-rw-r--r--dev-python/pymongo/pymongo-4.15.0.ebuild201
-rw-r--r--dev-python/pynacl/Manifest1
-rw-r--r--dev-python/pynacl/pynacl-1.6.0.ebuild48
-rw-r--r--dev-python/pyopenssl/Manifest1
-rw-r--r--dev-python/pyopenssl/pyopenssl-25.2.0.ebuild59
-rw-r--r--dev-python/pyparsing/Manifest1
-rw-r--r--dev-python/pyparsing/pyparsing-3.2.4.ebuild58
-rw-r--r--dev-python/pyroute2/Manifest1
-rw-r--r--dev-python/pyroute2/pyroute2-0.9.2.ebuild26
-rw-r--r--dev-python/pyroute2/pyroute2-0.9.4.ebuild2
-rw-r--r--dev-python/pytest-asyncio/Manifest2
-rw-r--r--dev-python/pytest-asyncio/pytest-asyncio-1.1.1.ebuild38
-rw-r--r--dev-python/pytest-asyncio/pytest-asyncio-1.2.0.ebuild41
-rw-r--r--dev-python/pytest-cov/Manifest1
-rw-r--r--dev-python/pytest-cov/pytest-cov-7.0.0.ebuild70
-rw-r--r--dev-python/pytest-embedded/Manifest2
-rw-r--r--dev-python/pytest-embedded/pytest-embedded-1.17.0.ebuild (renamed from dev-python/pytest-embedded/pytest-embedded-1.16.1.ebuild)0
-rw-r--r--dev-python/python-dbusmock/Manifest1
-rw-r--r--dev-python/python-dbusmock/python-dbusmock-0.37.0.ebuild53
-rw-r--r--dev-python/python-gnupg/python-gnupg-0.5.5.ebuild2
-rw-r--r--dev-python/python-socks/python-socks-2.7.2.ebuild2
-rw-r--r--dev-python/pyzmq/Manifest1
-rw-r--r--dev-python/pyzmq/pyzmq-27.1.0.ebuild85
-rw-r--r--dev-python/rapidfuzz/Manifest1
-rw-r--r--dev-python/rapidfuzz/rapidfuzz-3.14.1.ebuild50
-rw-r--r--dev-python/redis/Manifest2
-rw-r--r--dev-python/redis/redis-6.4.0.ebuild2
-rw-r--r--dev-python/redis/redis-7.0.0_beta1.ebuild (renamed from dev-python/redis/redis-6.2.0.ebuild)20
-rw-r--r--dev-python/regex/Manifest2
-rw-r--r--dev-python/regex/regex-2024.11.6.ebuild32
-rw-r--r--dev-python/regex/regex-2025.7.31.ebuild32
-rw-r--r--dev-python/regex/regex-2025.7.34.ebuild2
-rw-r--r--dev-python/responses/responses-0.25.8.ebuild2
-rw-r--r--dev-python/rfc3161-client/rfc3161-client-1.0.4.ebuild2
-rw-r--r--dev-python/roman-numerals-py/roman-numerals-py-3.1.0.ebuild2
-rw-r--r--dev-python/rpds-py/rpds-py-0.27.0.ebuild2
-rw-r--r--dev-python/s3transfer/Manifest1
-rw-r--r--dev-python/s3transfer/s3transfer-0.14.0.ebuild42
-rw-r--r--dev-python/scikit-learn/Manifest1
-rw-r--r--dev-python/scikit-learn/scikit-learn-1.7.2.ebuild82
-rw-r--r--dev-python/scipy/Manifest2
-rw-r--r--dev-python/scipy/scipy-1.16.2.ebuild173
-rw-r--r--dev-python/secretstorage/Manifest2
-rw-r--r--dev-python/secretstorage/secretstorage-3.4.0.ebuild53
-rw-r--r--dev-python/smartypants/Manifest1
-rw-r--r--dev-python/smartypants/smartypants-2.0.2.ebuild37
-rw-r--r--dev-python/sphinx/sphinx-8.2.3-r2.ebuild2
-rw-r--r--dev-python/sphinxcontrib-websupport/Manifest1
-rw-r--r--dev-python/sphinxcontrib-websupport/files/sphinxcontrib-websupport-2.0.0-fix-sqlalchemy.patch57
-rw-r--r--dev-python/sphinxcontrib-websupport/sphinxcontrib-websupport-2.0.0.ebuild49
-rw-r--r--dev-python/spyder-kernels/Manifest1
-rw-r--r--dev-python/spyder-kernels/spyder-kernels-3.1.0_beta1.ebuild98
-rw-r--r--dev-python/sqlglot/Manifest4
-rw-r--r--dev-python/sqlglot/sqlglot-27.13.2.ebuild (renamed from dev-python/sqlglot/sqlglot-27.10.0.ebuild)0
-rw-r--r--dev-python/sqlglot/sqlglot-27.14.0.ebuild (renamed from dev-python/sqlglot/sqlglot-27.11.0.ebuild)0
-rw-r--r--dev-python/starlette/Manifest1
-rw-r--r--dev-python/starlette/starlette-0.48.0.ebuild56
-rw-r--r--dev-python/superqt/Manifest1
-rw-r--r--dev-python/superqt/superqt-0.7.6.ebuild50
-rw-r--r--dev-python/sybil/sybil-9.2.0.ebuild2
-rw-r--r--dev-python/tempest/Manifest1
-rw-r--r--dev-python/tempest/tempest-45.0.0.ebuild75
-rw-r--r--dev-python/thrift/thrift-0.22.0.ebuild3
-rw-r--r--dev-python/tifffile/Manifest2
-rw-r--r--dev-python/tifffile/tifffile-2025.9.9.ebuild (renamed from dev-python/tifffile/tifffile-2025.6.11.ebuild)11
-rw-r--r--dev-python/tornado/tornado-6.5.2.ebuild2
-rw-r--r--dev-python/translate-toolkit/Manifest1
-rw-r--r--dev-python/translate-toolkit/translate-toolkit-3.16.1.ebuild127
-rw-r--r--dev-python/trio/Manifest1
-rw-r--r--dev-python/trio/trio-0.31.0.ebuild73
-rw-r--r--dev-python/trove-classifiers/Manifest8
-rw-r--r--dev-python/trove-classifiers/trove-classifiers-2025.9.11.17.ebuild (renamed from dev-python/trove-classifiers/trove-classifiers-2025.8.6.13.ebuild)1
-rw-r--r--dev-python/trove-classifiers/trove-classifiers-2025.9.8.13.ebuild (renamed from dev-python/trove-classifiers/trove-classifiers-2025.5.9.12.ebuild)4
-rw-r--r--dev-python/trove-classifiers/trove-classifiers-2025.9.9.12.ebuild47
-rw-r--r--dev-python/twisted/twisted-25.5.0.ebuild2
-rw-r--r--dev-python/types-docutils/Manifest1
-rw-r--r--dev-python/types-docutils/types-docutils-0.21.0.20250809.ebuild2
-rw-r--r--dev-python/types-docutils/types-docutils-0.22.0.20250914.ebuild16
-rw-r--r--dev-python/types-gdb/types-gdb-15.0.0.20250809.ebuild2
-rw-r--r--dev-python/types-setuptools/types-setuptools-80.9.0.20250809.ebuild2
-rw-r--r--dev-python/uv-build/Manifest2
-rw-r--r--dev-python/uv-build/uv-build-0.8.16.ebuild99
-rw-r--r--dev-python/uv-build/uv-build-0.8.17.ebuild99
-rw-r--r--dev-python/uv/Manifest3
-rw-r--r--dev-python/uv/uv-0.8.16.ebuild182
-rw-r--r--dev-python/uv/uv-0.8.17.ebuild183
-rw-r--r--dev-python/uv/uv-0.8.6.ebuild2
-rw-r--r--dev-python/xdoctest/Manifest1
-rw-r--r--dev-python/xdoctest/xdoctest-1.3.0.ebuild48
-rw-r--r--dev-python/xlsxwriter/Manifest4
-rw-r--r--dev-python/xlsxwriter/xlsxwriter-3.2.5.ebuild29
-rw-r--r--dev-python/xlsxwriter/xlsxwriter-3.2.6.ebuild29
-rw-r--r--dev-python/xlsxwriter/xlsxwriter-3.2.7.ebuild29
-rw-r--r--dev-python/xlsxwriter/xlsxwriter-3.2.8.ebuild29
-rw-r--r--dev-python/xmltodict/Manifest3
-rw-r--r--dev-python/xmltodict/xmltodict-0.15.1.ebuild (renamed from dev-python/xmltodict/xmltodict-0.15.0.ebuild)0
-rw-r--r--dev-python/xmltodict/xmltodict-1.0.0.ebuild22
-rw-r--r--dev-python/zlib-ng/Manifest1
-rw-r--r--dev-python/zlib-ng/zlib-ng-1.0.0.ebuild43
-rw-r--r--dev-python/zope-component/Manifest2
-rw-r--r--dev-python/zope-component/zope-component-6.1.ebuild53
-rw-r--r--dev-python/zope-component/zope-component-7.0.ebuild47
-rw-r--r--dev-python/zope-configuration/Manifest1
-rw-r--r--dev-python/zope-configuration/zope-configuration-7.0.ebuild46
-rw-r--r--dev-python/zope-deprecation/Manifest1
-rw-r--r--dev-python/zope-deprecation/zope-deprecation-6.0.ebuild34
-rw-r--r--dev-python/zope-event/Manifest1
-rw-r--r--dev-python/zope-event/zope-event-6.0.ebuild26
-rw-r--r--dev-python/zope-exceptions/Manifest1
-rw-r--r--dev-python/zope-exceptions/zope-exceptions-6.0.ebuild38
-rw-r--r--dev-python/zope-hookable/Manifest1
-rw-r--r--dev-python/zope-hookable/zope-hookable-8.0.ebuild42
-rw-r--r--dev-python/zope-i18nmessageid/Manifest1
-rw-r--r--dev-python/zope-i18nmessageid/zope-i18nmessageid-8.0.ebuild36
-rw-r--r--dev-python/zope-interface/Manifest1
-rw-r--r--dev-python/zope-interface/zope-interface-8.0.ebuild53
-rw-r--r--dev-python/zope-schema/Manifest2
-rw-r--r--dev-python/zope-schema/zope-schema-7.1.ebuild2
-rw-r--r--dev-python/zope-schema/zope-schema-8.0.ebuild (renamed from dev-python/zope-schema/zope-schema-7.0.1.ebuild)16
-rw-r--r--dev-python/zope-testing/Manifest1
-rw-r--r--dev-python/zope-testing/files/zope-testing-6.0-test.patch52
-rw-r--r--dev-python/zope-testing/zope-testing-6.0.ebuild55
-rw-r--r--dev-python/zstandard/Manifest1
-rw-r--r--dev-python/zstandard/zstandard-0.25.0.ebuild74
277 files changed, 6196 insertions, 1547 deletions
diff --git a/dev-python/aiohttp/aiohttp-3.12.15.ebuild b/dev-python/aiohttp/aiohttp-3.12.15.ebuild
index aac332a8ac6a..8c97b2db1fb9 100644
--- a/dev-python/aiohttp/aiohttp-3.12.15.ebuild
+++ b/dev-python/aiohttp/aiohttp-3.12.15.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ~ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="+native-extensions test-rust"
DEPEND="
diff --git a/dev-python/arpeggio/Manifest b/dev-python/arpeggio/Manifest
index 62e673397779..654cc17b8eb3 100644
--- a/dev-python/arpeggio/Manifest
+++ b/dev-python/arpeggio/Manifest
@@ -1 +1,2 @@
DIST Arpeggio-2.0.2.tar.gz 766643 BLAKE2B 9cd3a40b10594868678b6e0e625a094a978deca22a0d251e348e25a7358afb64bdef337e1c93afcde00d1347a9b22faa694678217c3e2de49690e923f8f0ea73 SHA512 6f8ddf8ca19f968de84730ad4861585f333be8315e70b6bd320f838731cffbd28b5b6245edd869175834a95207f39b20674795f0f31b226c9387f4a0376c9adb
+DIST Arpeggio-2.0.3.tar.gz 766566 BLAKE2B 0811d13bac7885e64b96e7085a6c2b2cca2da60ffda88ddfef4c9899ccd31a1d092de67215574771870deffd096d8b275630160c1fd4762803f6bf2ccafad401 SHA512 af7d98e0d17158fafe840561d12853fd68c830e3e62ada6f454f0fe7ed828d6e0ac90af5de9076e50699a3152d4545d0457352c3e77c6178a77f6153bebf3596
diff --git a/dev-python/arpeggio/arpeggio-2.0.3.ebuild b/dev-python/arpeggio/arpeggio-2.0.3.ebuild
new file mode 100644
index 000000000000..055344d696d1
--- /dev/null
+++ b/dev-python/arpeggio/arpeggio-2.0.3.ebuild
@@ -0,0 +1,24 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_NO_NORMALIZE=1
+PYPI_PN=${PN^}
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Parser interpreter based on PEG grammars"
+HOMEPAGE="
+ https://pypi.org/project/Arpeggio/
+ https://github.com/textX/Arpeggio/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/betterproto/betterproto-2.0.0_beta7.ebuild b/dev-python/betterproto/betterproto-2.0.0_beta7.ebuild
index dbe706a5a536..c4cbc7320b1b 100644
--- a/dev-python/betterproto/betterproto-2.0.0_beta7.ebuild
+++ b/dev-python/betterproto/betterproto-2.0.0_beta7.ebuild
@@ -34,7 +34,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+KEYWORDS="amd64 ~arm ~arm64 ~x86"
RDEPEND="
>=dev-python/black-23.1.0[${PYTHON_USEDEP}]
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index 254d695b0616..883a64255fc2 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -1,14 +1,9 @@
-DIST boto3-1.39.14.gh.tar.gz 974493 BLAKE2B 14c6295f20cab6390c81d399585c9bd8291163a206e212400f44a23d871f43f02c76c0fae5201855cdd77cf45b598b5ceb86320b584fb48a5acb142133aa9d22 SHA512 332cc223c87f0823fded9c885c47892e0dd0abdd4346968425cbdec8e9eacd1d3d22720cb3a615876c47ba031b8b1f4a592d325c812e37f86690b0554438e9a4
-DIST boto3-1.40.1.gh.tar.gz 978197 BLAKE2B c93f3550d41c13292dd8f4dcaab9d896faca127684a3ca72c253aa42ac44277c27ff0d68f47754c408701e97f0cefeda81e94565fba808544d5c16efaabb00d9 SHA512 c94eb4584161932f2d03ca9bf402a6e55358124e48fea94b71a5e22774aac6312f8ba7c69a18824c306b16a494cb3ed613cb96244c2718adbd53dd3b5829f934
DIST boto3-1.40.11.gh.tar.gz 984481 BLAKE2B f484d37bd38fe8bc80ec6a8e64ecf85eeec8a4c777e30d11a0d108a135d31b2b96a684095fc4ef868def656f04f23d652459bb000f9f8764a27434fbfb923a01 SHA512 bcee5774a56a99ebc23bddaa49f89d85f128f02bb0eb95b9d04dec7c6b335464545fd6d0ad117ac6cb6766d17919049f174057349dd37a4262ed3fd7a654feb2
DIST boto3-1.40.16.gh.tar.gz 988114 BLAKE2B cbc1ac9f3261ec094172a9b22841be4e2b10783f27ea906d90a5d48ef75910c5a864403cc491d082df0c9155599babf8d60cf094cc6e58e0d10e707e6219239c SHA512 da130875233a453f1eef0dbbf1822c0cf8b67e6361c5f0c1186be97360d0e720614d3d17600fac461813aff213538544a5ab991fffd31bfae59722741e8dee35
-DIST boto3-1.40.17.gh.tar.gz 989571 BLAKE2B c44760e4eaab775fc7edf8ab843c3c83e664951352a9dc621ac2f2d3e3daf6ba00fd4bb30ad85c5c0eb8b6756c92d9ed4334bb09ee83663a6d6aebc3fa901946 SHA512 28cceca2f0eed830939199ecd12929b377660147fa806530bc8a83dcbd9960fc0c073e569c33ed69a2529e13710bbbab9f1b00d2172faa03d7d1d0fdeeed301b
-DIST boto3-1.40.18.gh.tar.gz 990535 BLAKE2B b27c45a186cc7982e0fb16e9d7290a8fdab8b770be433956bdb99daa6965819e57cdba358527704f9fafaa9a0719efb8f054342cf23b4e5144c4b1332913c700 SHA512 d79865d9541e8cceccb45a541efb86733f14b024e234ed53fdaf3d926765cbe984ad4776f2045e82b6dbc26e7eb8553b4495a90363e9a4598af7493a3969416a
-DIST boto3-1.40.19.gh.tar.gz 991027 BLAKE2B db84de35539df907e49dc75bc4797a2e452e5ac08bdb1d3e7d1f0badcf28591396f1191f4681a63aa6320783a5a7b390817a424b12f3fe523a606736c33c5996 SHA512 b359ee8cdfcebc5b67bbf28ab05821ab446594f718ecd2fc181062ead9fff5f1b769e7815394c15f7a6f8c93cec7aad6c78459e0caec51e8f035ff2621a1cfc2
-DIST boto3-1.40.20.gh.tar.gz 992089 BLAKE2B 23d76464510023244136518b10d4fbcddd31e62dd0b98126309737763b7274635e32e666efc105b54d4e4d076de83980f1f7e33b227d7a79e108d6e999037c7f SHA512 2647ba715e301eedd309dcc4719ab20cfeabeb65daca03e8d43d6352fce079e0c8e9ee83bc4c526e60b82e59ca4c5507d6d8c6d2d7bc605bdb495a272f0e98ed
DIST boto3-1.40.21.gh.tar.gz 992637 BLAKE2B 5c5b716506fef7223c4f49d6d966d43b59d5ae060ac861ecd525ef323821df20b88205d54e07ecb26bf41872a52d82ce2fb28c6b07a20ccbec38fa67d423699d SHA512 1dab07cac68498d3c1d5e60629f868c8f8d4259f0325bb672afdfbffa19988c5bc037cac9c2116f8d7fb4cf72014eada6ee6d7772be12ac8849d6640d7bddecd
-DIST boto3-1.40.22.gh.tar.gz 993220 BLAKE2B 0934e287b1b7919d4503a0698e78d41440a80ce46a326ca3b15638fc618489dea3c952889c6aa15d3c68d0d06f2bbffed4cba0600468063e8732037cf8184d5c SHA512 1a2ad668401198330427a09ff22d91af30cfffb8d8830132a116e6725ca2e5e5eec45747e0668b5105f29ea9bf78a4d74183bdd90aaf5286ccdff08aaf0b914e
-DIST boto3-1.40.23.gh.tar.gz 994090 BLAKE2B 352012f02f25ee3b109340024d2f507852a16c839c74156ee6ce2bde193776abed03566ac1cefc7ffa1d874c3b293f16428c1119ad2ab0894dfb022301f8e688 SHA512 9fd7b0919af7675590d8074cc8908041807343fce06db101fc648055044d744911cfd154c890492a0f1684daa88909e7f862e37acc88777c547f9d612899faaf
-DIST boto3-1.40.24.gh.tar.gz 995134 BLAKE2B a607e1b8fcb5de158538dbea482578d12f55fccc3a01dd3f728f66f1f715665ce06281c1654f1360610b5c0753b9d5fdb32dc31f3c0b082704ca0145750028a2 SHA512 2eccc12fbb9dbcb5497aecff2373f6b47a2a1eeb17491b9c3b0a231dbb249307d3ec6e81e75dd346479bd3577ccbd4389079027c9de8db0c80f719ad07ee48ce
DIST boto3-1.40.25.gh.tar.gz 995333 BLAKE2B c7e6934040c8a97f0fbc3a4db2ff5bf3ad70040c73283238a6fdd296ee2843bde7dbe19efd88aac0d12f45ece69b75f6072ad3c71718ef9fe615f1132630ccea SHA512 fcbf48f1630f7322009e36e63a8f13a5a08b67c4762fb3d954da56da072e888298a64d6603aa7e810732dfde21d096e732937ff6a0d48ef331f7425196be91c9
+DIST boto3-1.40.27.gh.tar.gz 996173 BLAKE2B 2f1353dd4e11c1598efb4f5865987d9f323400bcef9a58b8565e5270c68e94caa061ab4271a58d37b381f30bbd5fd312789113d30934a672a1c5bb07003b2d4a SHA512 7e41cc35b0cd849b66ebfe1eed2768d9700b398a1c38a7dbcd33ad76cc46e449a181261534ca4528552589acbb5b3c5a8da3d1a86cc9ee2a2a79215bdc00f1f5
+DIST boto3-1.40.28.gh.tar.gz 996775 BLAKE2B d3107f7a52ec1f3f473ce8dd82c782c87a5e89863dbad71f3119e408c1858b504a1fdacc41d1e05d6322060374db1ff7805a5c748acbe41521d512fc585a537b SHA512 639d2821212817209dc7673be0bd7638776b076dd4869c56d44ddd79fdbc2b3253229cf0eaed27d04fc0ffa88b788ed826a594b2c295b6fe9e2eef73bdaebb41
+DIST boto3-1.40.29.gh.tar.gz 997723 BLAKE2B 37b54cb8aa1174095ac843f7339875ef510b65bd1d33a75733324ec9a308217370d238d6ee2ac2c0d4ded1d5c650a4a8854a8a6cefea7b24cb92d21b664d24f7 SHA512 19bb07e1a5309717bb1ee8fe653dc11dbb0dc6c077cdc97ad8e0ad895bff6c7e84465829c85ee0e1da01151465954336b328275a20f30cda28dfb9148cf856ad
+DIST boto3-1.40.30.gh.tar.gz 997925 BLAKE2B 4467751d6248dd25b046c23680d966d3222d60200ac32c5616a90ec67db375b289e0baabcd663b8cdf099d656bb89d1645e9852d7898c430ed10f6ebf27a2b94 SHA512 5956487cc48e6c6e7b970dc39f6f1f7e6861af5f8c44e448b9ca7eb15890be1ea43c7d8418ee9be876e73c40191701db0342a55f0c90117ab5457b054d998610
DIST boto3-1.40.6.gh.tar.gz 981330 BLAKE2B 929b4326d8d48e46750128e6236776b86fd5e59f0aab113e3ec797f18f138c7f52b30a79724f97de8083fd8e8baa04169e68e219ef5acf592561dabb838b4374 SHA512 65431a0d084298f51e0eee1753119f811261e9e57fdc5fa0491c9ce8d4fc745e705aed22527c8c06e003227c5c0bccc1a659e04bcc96a68fafb61bc53ec70a84
diff --git a/dev-python/boto3/boto3-1.39.14.ebuild b/dev-python/boto3/boto3-1.39.14.ebuild
deleted file mode 100644
index fdafafe7f4f0..000000000000
--- a/dev-python/boto3/boto3-1.39.14.ebuild
+++ /dev/null
@@ -1,53 +0,0 @@
-# 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_{11..14} )
-
-inherit distutils-r1
-
-DESCRIPTION="The AWS SDK for Python"
-HOMEPAGE="
- https://github.com/boto/boto3/
- https://pypi.org/project/boto3/
-"
-SRC_URI="
- https://github.com/boto/boto3/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~x86-linux"
-
-RDEPEND="
- >=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
- >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
- >=dev-python/s3transfer-0.13.0[${PYTHON_USEDEP}]
-"
-
-EPYTEST_PLUGINS=()
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-python_prepare_all() {
- # don't lock versions to narrow ranges
- sed -e '/botocore/ d' \
- -e '/jmespath/ d' \
- -e '/s3transfer/ d' \
- -i setup.py || die
-
- # do not rely on bundled deps in botocore (sic!)
- find -name '*.py' -exec sed -i \
- -e 's:from botocore[.]vendored import:import:' \
- -e 's:from botocore[.]vendored[.]:from :' \
- {} + || die
-
- distutils-r1_python_prepare_all
-}
-
-python_test() {
- epytest tests/{functional,unit}
-}
diff --git a/dev-python/boto3/boto3-1.40.1.ebuild b/dev-python/boto3/boto3-1.40.1.ebuild
deleted file mode 100644
index fdafafe7f4f0..000000000000
--- a/dev-python/boto3/boto3-1.40.1.ebuild
+++ /dev/null
@@ -1,53 +0,0 @@
-# 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_{11..14} )
-
-inherit distutils-r1
-
-DESCRIPTION="The AWS SDK for Python"
-HOMEPAGE="
- https://github.com/boto/boto3/
- https://pypi.org/project/boto3/
-"
-SRC_URI="
- https://github.com/boto/boto3/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~x86-linux"
-
-RDEPEND="
- >=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
- >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
- >=dev-python/s3transfer-0.13.0[${PYTHON_USEDEP}]
-"
-
-EPYTEST_PLUGINS=()
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-python_prepare_all() {
- # don't lock versions to narrow ranges
- sed -e '/botocore/ d' \
- -e '/jmespath/ d' \
- -e '/s3transfer/ d' \
- -i setup.py || die
-
- # do not rely on bundled deps in botocore (sic!)
- find -name '*.py' -exec sed -i \
- -e 's:from botocore[.]vendored import:import:' \
- -e 's:from botocore[.]vendored[.]:from :' \
- {} + || die
-
- distutils-r1_python_prepare_all
-}
-
-python_test() {
- epytest tests/{functional,unit}
-}
diff --git a/dev-python/boto3/boto3-1.40.22.ebuild b/dev-python/boto3/boto3-1.40.22.ebuild
deleted file mode 100644
index bd6e26787db4..000000000000
--- a/dev-python/boto3/boto3-1.40.22.ebuild
+++ /dev/null
@@ -1,53 +0,0 @@
-# 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_{11..14} )
-
-inherit distutils-r1
-
-DESCRIPTION="The AWS SDK for Python"
-HOMEPAGE="
- https://github.com/boto/boto3/
- https://pypi.org/project/boto3/
-"
-SRC_URI="
- https://github.com/boto/boto3/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
-
-RDEPEND="
- >=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
- >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
- >=dev-python/s3transfer-0.13.0[${PYTHON_USEDEP}]
-"
-
-EPYTEST_PLUGINS=()
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-python_prepare_all() {
- # don't lock versions to narrow ranges
- sed -e '/botocore/ d' \
- -e '/jmespath/ d' \
- -e '/s3transfer/ d' \
- -i setup.py || die
-
- # do not rely on bundled deps in botocore (sic!)
- find -name '*.py' -exec sed -i \
- -e 's:from botocore[.]vendored import:import:' \
- -e 's:from botocore[.]vendored[.]:from :' \
- {} + || die
-
- distutils-r1_python_prepare_all
-}
-
-python_test() {
- epytest tests/{functional,unit}
-}
diff --git a/dev-python/boto3/boto3-1.40.23.ebuild b/dev-python/boto3/boto3-1.40.23.ebuild
deleted file mode 100644
index bd6e26787db4..000000000000
--- a/dev-python/boto3/boto3-1.40.23.ebuild
+++ /dev/null
@@ -1,53 +0,0 @@
-# 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_{11..14} )
-
-inherit distutils-r1
-
-DESCRIPTION="The AWS SDK for Python"
-HOMEPAGE="
- https://github.com/boto/boto3/
- https://pypi.org/project/boto3/
-"
-SRC_URI="
- https://github.com/boto/boto3/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
-
-RDEPEND="
- >=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
- >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
- >=dev-python/s3transfer-0.13.0[${PYTHON_USEDEP}]
-"
-
-EPYTEST_PLUGINS=()
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-python_prepare_all() {
- # don't lock versions to narrow ranges
- sed -e '/botocore/ d' \
- -e '/jmespath/ d' \
- -e '/s3transfer/ d' \
- -i setup.py || die
-
- # do not rely on bundled deps in botocore (sic!)
- find -name '*.py' -exec sed -i \
- -e 's:from botocore[.]vendored import:import:' \
- -e 's:from botocore[.]vendored[.]:from :' \
- {} + || die
-
- distutils-r1_python_prepare_all
-}
-
-python_test() {
- epytest tests/{functional,unit}
-}
diff --git a/dev-python/boto3/boto3-1.40.24.ebuild b/dev-python/boto3/boto3-1.40.24.ebuild
deleted file mode 100644
index bd6e26787db4..000000000000
--- a/dev-python/boto3/boto3-1.40.24.ebuild
+++ /dev/null
@@ -1,53 +0,0 @@
-# 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_{11..14} )
-
-inherit distutils-r1
-
-DESCRIPTION="The AWS SDK for Python"
-HOMEPAGE="
- https://github.com/boto/boto3/
- https://pypi.org/project/boto3/
-"
-SRC_URI="
- https://github.com/boto/boto3/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
-
-RDEPEND="
- >=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
- >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
- >=dev-python/s3transfer-0.13.0[${PYTHON_USEDEP}]
-"
-
-EPYTEST_PLUGINS=()
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-python_prepare_all() {
- # don't lock versions to narrow ranges
- sed -e '/botocore/ d' \
- -e '/jmespath/ d' \
- -e '/s3transfer/ d' \
- -i setup.py || die
-
- # do not rely on bundled deps in botocore (sic!)
- find -name '*.py' -exec sed -i \
- -e 's:from botocore[.]vendored import:import:' \
- -e 's:from botocore[.]vendored[.]:from :' \
- {} + || die
-
- distutils-r1_python_prepare_all
-}
-
-python_test() {
- epytest tests/{functional,unit}
-}
diff --git a/dev-python/boto3/boto3-1.40.19.ebuild b/dev-python/boto3/boto3-1.40.27.ebuild
index bd6e26787db4..90fb2a42e6e5 100644
--- a/dev-python/boto3/boto3-1.40.19.ebuild
+++ b/dev-python/boto3/boto3-1.40.27.ebuild
@@ -25,7 +25,7 @@ KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux
RDEPEND="
>=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
>=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
- >=dev-python/s3transfer-0.13.0[${PYTHON_USEDEP}]
+ >=dev-python/s3transfer-0.14.0[${PYTHON_USEDEP}]
"
EPYTEST_PLUGINS=()
diff --git a/dev-python/boto3/boto3-1.40.20.ebuild b/dev-python/boto3/boto3-1.40.28.ebuild
index bd6e26787db4..90fb2a42e6e5 100644
--- a/dev-python/boto3/boto3-1.40.20.ebuild
+++ b/dev-python/boto3/boto3-1.40.28.ebuild
@@ -25,7 +25,7 @@ KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux
RDEPEND="
>=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
>=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
- >=dev-python/s3transfer-0.13.0[${PYTHON_USEDEP}]
+ >=dev-python/s3transfer-0.14.0[${PYTHON_USEDEP}]
"
EPYTEST_PLUGINS=()
diff --git a/dev-python/boto3/boto3-1.40.17.ebuild b/dev-python/boto3/boto3-1.40.29.ebuild
index bd6e26787db4..90fb2a42e6e5 100644
--- a/dev-python/boto3/boto3-1.40.17.ebuild
+++ b/dev-python/boto3/boto3-1.40.29.ebuild
@@ -25,7 +25,7 @@ KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux
RDEPEND="
>=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
>=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
- >=dev-python/s3transfer-0.13.0[${PYTHON_USEDEP}]
+ >=dev-python/s3transfer-0.14.0[${PYTHON_USEDEP}]
"
EPYTEST_PLUGINS=()
diff --git a/dev-python/boto3/boto3-1.40.18.ebuild b/dev-python/boto3/boto3-1.40.30.ebuild
index bd6e26787db4..90fb2a42e6e5 100644
--- a/dev-python/boto3/boto3-1.40.18.ebuild
+++ b/dev-python/boto3/boto3-1.40.30.ebuild
@@ -25,7 +25,7 @@ KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux
RDEPEND="
>=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
>=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
- >=dev-python/s3transfer-0.13.0[${PYTHON_USEDEP}]
+ >=dev-python/s3transfer-0.14.0[${PYTHON_USEDEP}]
"
EPYTEST_PLUGINS=()
diff --git a/dev-python/boto3/boto3-1.40.6.ebuild b/dev-python/boto3/boto3-1.40.6.ebuild
index bd6e26787db4..fdafafe7f4f0 100644
--- a/dev-python/boto3/boto3-1.40.6.ebuild
+++ b/dev-python/boto3/boto3-1.40.6.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~x86-linux"
RDEPEND="
>=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
diff --git a/dev-python/botocore/Manifest b/dev-python/botocore/Manifest
index b55b28e7140f..9c32b31e73b4 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -1,14 +1,9 @@
-DIST botocore-1.39.14.gh.tar.gz 15002421 BLAKE2B a054f85ee0076f1445e122e497683b31387323f52036f914ab1474eb14b32f923459079c539d0a1109c7f622e93e614b8550f9d5ce6e34a0e0a581561e12c9d5 SHA512 716c68404b06b24442da1b1018cfe06256a2b2855f846bd061ef44332db8a624cfd8f16a06169b2337d1c8e54c034aa46f3f3063f6e8d6c4020d1e50d30b6910
-DIST botocore-1.40.1.gh.tar.gz 15055179 BLAKE2B 0fd7e4f74e51fe45284fe550bb853964e3f6039c2d5904996bc3f40e3912b75af4eab4c378edbc85b61fb6b3f5d1583493ad71540c7170c5a0ffb7ffefc5d99f SHA512 4a0b5d075f8335c5b9c08bad1088c31ded92deced98a7f606cf07853657f41d8f3ab224b13172d007c8de6d2127edce662c4deadcb8d4ed8693432d77b8e38e6
DIST botocore-1.40.11.gh.tar.gz 15124864 BLAKE2B 3a9657b4d0d5c0f86f68f1e7c9fd2fa7145b807e015abb64c20c0ad80ce337b660cf617de3e0b1d5524eb7d766afa75aa253b1388383fdfe8509599b8d9bb200 SHA512 853bec0829b5fc17d373c3f9d617be671abb145dbffd0a672f3a9fe48a0b7c8099310bce43ca84f45a72aca1fbabbfb6acf74aefa5bf11fc1baf751959d098b7
DIST botocore-1.40.16.gh.tar.gz 15153147 BLAKE2B 7c1c32d1255023d767e513812f2b24546c43e131f3dca28fee2438de3530230f7130d4f36493ef3365b16a0d41d19941bac5a4b39b835ea40ad88d42493d4f5d SHA512 3249395759e7cc4d022bab0068837b48df1c332384972d6a649150b6ad81cfcc6ab01cc7ac46d0db725ff9d56cadd9331b34121267ee9427d1392056fea2f6f5
-DIST botocore-1.40.17.gh.tar.gz 15158810 BLAKE2B 26bdbaf798f129897503d16e78ebd6040e8f72c89271933f8ce60dddff6ef2b51bcc831148f7fc6bfcf152f6a3a90ab6a6761e6549438916b6f319130a6992e9 SHA512 eda1360f684195b96ba39df8ccfd84215c21777ab902debefc9fec08a41d16a762ab7dc0a5a21d0302f03bda506947bbb637f34397f0d1f0338cea0b79ba96ee
-DIST botocore-1.40.18.gh.tar.gz 15162586 BLAKE2B 82f844c792de0f92b5e3e6854758f2d2a9aeb2987f7a43449c586be40030cfb0214563b4359c173b1e1569e5982cbd258a33c3d598a8d36c09d24e3cbd83944c SHA512 5caacfc44fb1de1ce178f7940146b7fb2f5c172bfb062bb16b0c0f395599b7dcac11a6bc9d5ba94139f244ade5eebf7eda5c8a402af97a5805ffc7da6d1ebf8c
-DIST botocore-1.40.19.gh.tar.gz 15105448 BLAKE2B d02ce1e61516591745d5d4f9941d6656c26f2badcdef96c539ec7be275996bd7dfe80b6211aef10be9a9ffab0fea9034ab794f0731cf0555f73a0847ef1d1ae9 SHA512 176c0a5d9b1147e6a47ca7b3251d04c2abefa5840d28d4235ebfebad08728f9e5ad40123c5ba72248ccf1e7a66b1edb70fcef14d3dc03520afc6a03e1a9b5070
-DIST botocore-1.40.20.gh.tar.gz 15109331 BLAKE2B 9e1822c3aad609144aeea2bc4e34965f6849f5a71d0d173e3af67b5bb6af541013d5768eef6c6fb627f26cf58f2ee8d0217f7fe530cd99ca43b1b85eb3bf9b05 SHA512 4d7a47f59b84e4b64299a191c60b9cef020b8aeda69512e9dbcc77cdb2a774bf44560d2550b8578bbddc9189df91c7e39cd2c51d3d57e33727469607c03268ae
DIST botocore-1.40.21.gh.tar.gz 15110941 BLAKE2B 93927041ef8b5b3a6349a766a5f15afb73fece9846c9cbf2ac5c8a45b4513e46549539c8a14b85de36d6ffb5a5999cedd2a97251d16e0a93fc3c7dde8bd73b5f SHA512 bc9eca7f4ff7f0a7e58bd3bb60d95df45a71caf2a98739702b341838a1db31b161e1e0818380a6ab805dcb1e05be2e3e182a456c0e2dd91042b34ed3100aaf22
-DIST botocore-1.40.22.gh.tar.gz 15114103 BLAKE2B 0350411e220c7a22bc0f48742bb2062f9b35b795ccf029f806676c3215a96c966f3907e54f63ccfdae55540d47eaec517734b598e585b242cc8037ebcde41661 SHA512 566a50d640411f4121fe7cc3d2d7887f6a23005e1faa2cfd7fbbde2db41050b37795447ab2686dfe2b6b9bd364d63aa43b776ee4a57ec7d0f734f4c180a7e8f8
-DIST botocore-1.40.23.gh.tar.gz 15118146 BLAKE2B 78cd29470e51d04f53a8fabd61cee61248dbe738e64f0979e816949ae9aed959adf4de4f0870a0564e17fcdd6b8ed7c869baf27d6d983cee8bfcd7f8d2878699 SHA512 db070ac47cccb9af6f77c625a5397f5097f59bd8b2ae4806443b471e7f97a4e7c38c7d4bce6ea9cbcc62e34f81abf076c57300ae705816a7b74c0fae2bd9bcdd
-DIST botocore-1.40.24.gh.tar.gz 15121130 BLAKE2B 8e6b73ded0b9fcb20f86a36debfe92e04eb48725ace1af64890ad42b411d7fa6aaae45bae58f3db22cf28d50eee2c634b0bb0ed5353e604e12a3451928a8522a SHA512 e09624f5e210ca7f24352766c5665b9716ff3bdd9501bd61978796b32c7e86ca9e2fb63bd681d6e8147e4af015957fe781bad20454d2f57931ae0e1a0c470353
DIST botocore-1.40.25.gh.tar.gz 15123642 BLAKE2B 71ba5fa27fa51782f213b1b818f15f3e162d8ef17c161494d58917806ed713157e12cfdccd998fe8df747eb66cda74330cbe0e7b665babfa7b71fc2fab569d08 SHA512 ea4ee30500317b84536d4bb7d694d110bdd2d5e202f267514d8e85678656e73f356b640809f56e21e030ce4e69b49431a51ee9cb14218529ac8b67b8cf406bfb
+DIST botocore-1.40.27.gh.tar.gz 15132721 BLAKE2B 96366b67c65297f1df036cde60cbd19590fec32e304db7e4c7fdf48e660f88bb86c5b1bf547a225ba9c1b6c45bec2e2b916f150d9a2d916b6243122d16702ca4 SHA512 567b07ab2b456a938231bd4f71402edc231f7e4081bfc28a69156c9267958f9387796d5e65a4acd12329245efe99f5085145756c8c73e23dfedeb6229da3753f
+DIST botocore-1.40.28.gh.tar.gz 15138164 BLAKE2B 28b19faf101189f630245898fa974e71f75169e1982f75b38e2e032160f0a75d7283b1e2a6f54d7aff2e7b7789c7df881c64f4aea9700c682335aa60dd5b55d4 SHA512 bbaca59d13755c766f47bbe15e97df36b740eac0d0ffed9db1e10dec4caf0aea1dbaaadd54f2e3be12e0927ab7d68bb2f1f8b512fb4282f61454f9baa7cd0cf2
+DIST botocore-1.40.29.gh.tar.gz 15142338 BLAKE2B 8fc0ae4147930434e9faa9c4d1ae3738951c737f972522f912163394a3300277f4305eaf94e3d3ac4004c23cb3136a85da3ee95f4df4993e0e69e5b465e06e2a SHA512 35a013c610c09eeddd4a0c47c7be66531f4ef5398904e1c5959a428809b4a6f848905d0374aa5657808c6e2f660f0eaf56d847ffe3fd660b737afd12a2ea2a24
+DIST botocore-1.40.30.gh.tar.gz 15142090 BLAKE2B 9293ad264156c749fbbc4b1a0a59c7a6616137ca67ff165d432fe915dab2c146213cc52d1bb1751d1ff63726a8e7253f32fb24b388d62fdbeda22751331dfe36 SHA512 32a8ef2cc393ee6509483388f1d31a0c27f96e1105fc42929abc37b21bd065875a035cda6de6e041acb3bdca04a7f9b1e4b88be7dfc88e8fe55d3843cdba20c8
DIST botocore-1.40.6.gh.tar.gz 15096678 BLAKE2B fb76ace4058c814bb8ef17bb216f5f7355eec401e4108d8a6569e07f97b14becb9e99652364dacb7e46e62f3ffaea2e5e1cd241ae832fe0a359ed58bbcfe3500 SHA512 faa311f29da484083f49a9ae7beda844b8878750c7474916ff7200b4a5fdc01e26295923c7a0f0bc4e4b1c22e5381f69546b8685fdeb2112f1c61810d3c9b58d
diff --git a/dev-python/botocore/botocore-1.39.14.ebuild b/dev-python/botocore/botocore-1.39.14.ebuild
deleted file mode 100644
index 5d6a29be5655..000000000000
--- a/dev-python/botocore/botocore-1.39.14.ebuild
+++ /dev/null
@@ -1,67 +0,0 @@
-# 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_{11..14} )
-
-inherit distutils-r1
-
-DESCRIPTION="Low-level, data-driven core of boto 3"
-HOMEPAGE="
- https://github.com/boto/botocore/
- https://pypi.org/project/botocore/
-"
-SRC_URI="
- https://github.com/boto/botocore/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86 ~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_PLUGINS=()
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-src_prepare() {
- # unpin deps
- sed -i -e "s:>=.*':':" setup.py || die
-
- # unbundle deps
- rm -r botocore/vendored || die
- find -name '*.py' -exec sed -i \
- -e 's:from botocore[.]vendored import:import:' \
- -e 's:from botocore[.]vendored[.]:from :' \
- {} + || die
-
- distutils-r1_src_prepare
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # rely on bundled six
- tests/functional/test_six_imports.py::test_no_bare_six_imports
- tests/functional/test_six_threading.py::test_six_thread_safety
- )
-
- epytest tests/{functional,unit}
-}
diff --git a/dev-python/botocore/botocore-1.40.1.ebuild b/dev-python/botocore/botocore-1.40.1.ebuild
deleted file mode 100644
index 5d6a29be5655..000000000000
--- a/dev-python/botocore/botocore-1.40.1.ebuild
+++ /dev/null
@@ -1,67 +0,0 @@
-# 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_{11..14} )
-
-inherit distutils-r1
-
-DESCRIPTION="Low-level, data-driven core of boto 3"
-HOMEPAGE="
- https://github.com/boto/botocore/
- https://pypi.org/project/botocore/
-"
-SRC_URI="
- https://github.com/boto/botocore/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86 ~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_PLUGINS=()
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-src_prepare() {
- # unpin deps
- sed -i -e "s:>=.*':':" setup.py || die
-
- # unbundle deps
- rm -r botocore/vendored || die
- find -name '*.py' -exec sed -i \
- -e 's:from botocore[.]vendored import:import:' \
- -e 's:from botocore[.]vendored[.]:from :' \
- {} + || die
-
- distutils-r1_src_prepare
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # rely on bundled six
- tests/functional/test_six_imports.py::test_no_bare_six_imports
- tests/functional/test_six_threading.py::test_six_thread_safety
- )
-
- epytest tests/{functional,unit}
-}
diff --git a/dev-python/botocore/botocore-1.40.22.ebuild b/dev-python/botocore/botocore-1.40.22.ebuild
deleted file mode 100644
index a931fcaefec4..000000000000
--- a/dev-python/botocore/botocore-1.40.22.ebuild
+++ /dev/null
@@ -1,67 +0,0 @@
-# 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_{11..14} )
-
-inherit distutils-r1
-
-DESCRIPTION="Low-level, data-driven core of boto 3"
-HOMEPAGE="
- https://github.com/boto/botocore/
- https://pypi.org/project/botocore/
-"
-SRC_URI="
- https://github.com/boto/botocore/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~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_PLUGINS=()
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-src_prepare() {
- # unpin deps
- sed -i -e "s:>=.*':':" setup.py || die
-
- # unbundle deps
- rm -r botocore/vendored || die
- find -name '*.py' -exec sed -i \
- -e 's:from botocore[.]vendored import:import:' \
- -e 's:from botocore[.]vendored[.]:from :' \
- {} + || die
-
- distutils-r1_src_prepare
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # rely on bundled six
- tests/functional/test_six_imports.py::test_no_bare_six_imports
- tests/functional/test_six_threading.py::test_six_thread_safety
- )
-
- epytest tests/{functional,unit}
-}
diff --git a/dev-python/botocore/botocore-1.40.23.ebuild b/dev-python/botocore/botocore-1.40.23.ebuild
deleted file mode 100644
index a931fcaefec4..000000000000
--- a/dev-python/botocore/botocore-1.40.23.ebuild
+++ /dev/null
@@ -1,67 +0,0 @@
-# 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_{11..14} )
-
-inherit distutils-r1
-
-DESCRIPTION="Low-level, data-driven core of boto 3"
-HOMEPAGE="
- https://github.com/boto/botocore/
- https://pypi.org/project/botocore/
-"
-SRC_URI="
- https://github.com/boto/botocore/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~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_PLUGINS=()
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-src_prepare() {
- # unpin deps
- sed -i -e "s:>=.*':':" setup.py || die
-
- # unbundle deps
- rm -r botocore/vendored || die
- find -name '*.py' -exec sed -i \
- -e 's:from botocore[.]vendored import:import:' \
- -e 's:from botocore[.]vendored[.]:from :' \
- {} + || die
-
- distutils-r1_src_prepare
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # rely on bundled six
- tests/functional/test_six_imports.py::test_no_bare_six_imports
- tests/functional/test_six_threading.py::test_six_thread_safety
- )
-
- epytest tests/{functional,unit}
-}
diff --git a/dev-python/botocore/botocore-1.40.24.ebuild b/dev-python/botocore/botocore-1.40.24.ebuild
deleted file mode 100644
index a931fcaefec4..000000000000
--- a/dev-python/botocore/botocore-1.40.24.ebuild
+++ /dev/null
@@ -1,67 +0,0 @@
-# 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_{11..14} )
-
-inherit distutils-r1
-
-DESCRIPTION="Low-level, data-driven core of boto 3"
-HOMEPAGE="
- https://github.com/boto/botocore/
- https://pypi.org/project/botocore/
-"
-SRC_URI="
- https://github.com/boto/botocore/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~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_PLUGINS=()
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-src_prepare() {
- # unpin deps
- sed -i -e "s:>=.*':':" setup.py || die
-
- # unbundle deps
- rm -r botocore/vendored || die
- find -name '*.py' -exec sed -i \
- -e 's:from botocore[.]vendored import:import:' \
- -e 's:from botocore[.]vendored[.]:from :' \
- {} + || die
-
- distutils-r1_src_prepare
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # rely on bundled six
- tests/functional/test_six_imports.py::test_no_bare_six_imports
- tests/functional/test_six_threading.py::test_six_thread_safety
- )
-
- epytest tests/{functional,unit}
-}
diff --git a/dev-python/botocore/botocore-1.40.17.ebuild b/dev-python/botocore/botocore-1.40.27.ebuild
index a931fcaefec4..a931fcaefec4 100644
--- a/dev-python/botocore/botocore-1.40.17.ebuild
+++ b/dev-python/botocore/botocore-1.40.27.ebuild
diff --git a/dev-python/botocore/botocore-1.40.18.ebuild b/dev-python/botocore/botocore-1.40.28.ebuild
index a931fcaefec4..a931fcaefec4 100644
--- a/dev-python/botocore/botocore-1.40.18.ebuild
+++ b/dev-python/botocore/botocore-1.40.28.ebuild
diff --git a/dev-python/botocore/botocore-1.40.19.ebuild b/dev-python/botocore/botocore-1.40.29.ebuild
index a931fcaefec4..a931fcaefec4 100644
--- a/dev-python/botocore/botocore-1.40.19.ebuild
+++ b/dev-python/botocore/botocore-1.40.29.ebuild
diff --git a/dev-python/botocore/botocore-1.40.20.ebuild b/dev-python/botocore/botocore-1.40.30.ebuild
index a931fcaefec4..a931fcaefec4 100644
--- a/dev-python/botocore/botocore-1.40.20.ebuild
+++ b/dev-python/botocore/botocore-1.40.30.ebuild
diff --git a/dev-python/botocore/botocore-1.40.6.ebuild b/dev-python/botocore/botocore-1.40.6.ebuild
index a931fcaefec4..5d6a29be5655 100644
--- a/dev-python/botocore/botocore-1.40.6.ebuild
+++ b/dev-python/botocore/botocore-1.40.6.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~x86-linux"
RDEPEND="
<dev-python/jmespath-2[${PYTHON_USEDEP}]
diff --git a/dev-python/bottleneck/Manifest b/dev-python/bottleneck/Manifest
index c658651f717f..d384ee3e4f28 100644
--- a/dev-python/bottleneck/Manifest
+++ b/dev-python/bottleneck/Manifest
@@ -1,2 +1,3 @@
DIST bottleneck-1.5.0.tar.gz 104177 BLAKE2B 3cf5e089ce08bdacaa9ca81fdafd2a2b15b44151f79026803b3e0886fd47d4dcb1428089d7f7d9e75d0a644813c88682f50c5e4d8bac78b2e71089a6da750d8d SHA512 9fefe695afcec7c2ad29db7f84870bbea2224b96b606d0e72b1b6310e078fa098c6950dd3b3ac3bafc927fc0bbf6c56c3fcf89908530d806adeda1d10dec2ee7
+DIST bottleneck-1.6.0.tar.gz 104311 BLAKE2B 1650d902e15bf3a2be36b83c9b460578bf0d261dd09cb74445a97fd2f20bd643e4985aa86acf2f2355f5a7341fde51d157815320b475852bdc8d46cab7943749 SHA512 e83d470b3380d579966855eef18c50069ca7db7a789ce0e8c39b707d0a8ad7cd2179121bad0c8bce41da5095ea1dea3dbfd59d31968ab21724d66baad694d978
DIST bottleneck-1.6.0rc1.tar.gz 104335 BLAKE2B 437077e9b658f3c498574f7ca75463541dd957796038d44d0e83ea4b8443097dfa52ca090dcc83dc2a5399a03921ed0d86037e45a2cabd55c9e55afef6348139 SHA512 8690656bc781d2909ead7414e5e6c2b4f59bd564e6bfbf8c6846b1c15f81d7b60c8c2c788dc0a7ab206525efca352e3746f177b78085c64140b060863da75213
diff --git a/dev-python/bottleneck/bottleneck-1.6.0.ebuild b/dev-python/bottleneck/bottleneck-1.6.0.ebuild
new file mode 100644
index 000000000000..fd186857b849
--- /dev/null
+++ b/dev-python/bottleneck/bottleneck-1.6.0.ebuild
@@ -0,0 +1,58 @@
+# 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}
+"
+BDEPEND="
+ dev-python/versioneer[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+src_prepare() {
+ # don't overwrites user's optimization level
+ sed -e '/extra_compile_args=\["-O2"\]/d' -i setup.py || die
+
+ rm versioneer.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/btrfsutil/Manifest b/dev-python/btrfsutil/Manifest
index 76c1806ffded..6d9ad29afae1 100644
--- a/dev-python/btrfsutil/Manifest
+++ b/dev-python/btrfsutil/Manifest
@@ -2,5 +2,7 @@ DIST btrfs-progs-v6.14.tar.sign 566 BLAKE2B ddb860fa18cb56e7b460949c54c097e11bd0
DIST btrfs-progs-v6.14.tar.xz 2739548 BLAKE2B fae9bdbacc093ba260d7740001eef98f4ffb72c30631c789a34fbd5f34283cbdfb9f1e6b2f6112fb769b90892b47ea2bcc0bcdab37748b8d23e3588051620b2a SHA512 becb9e1a95ecd3e0421dd9a4a4fd0bf0e950d6586aa8cc757f97b04392a54a4fd4bcae164a61054087823e610297041b2b79b0c6e827cab8ad804d9877268ee4
DIST btrfs-progs-v6.15.tar.sign 566 BLAKE2B 002bd309b3c5c0cebea7f2424c775ad369d358731223f0fee2646ed57b4b635cef4561e04eb7bd01321d8da13cea87410626d78433d0e6b44cc6229069553ab1 SHA512 e008df77f2791468ca02c5acf68df5904219646bc55c129db9b75aff3212893824bcfbb1fb5cdf404f1f366d05c7fd1566419a5fadc6057b484f408c0f37dfb8
DIST btrfs-progs-v6.15.tar.xz 4933176 BLAKE2B 5e79b7606fb236bc21e5b2401f5d6b27ad0ffb1b8ceef3ed9c7042b384508b1e1cc2a3a451d94e5369fa1592d91da78264caabe74bf1d907ac8e513a86b6fed8 SHA512 415cf222ae6a219123cdac5f99d4b8346a9f9c57e9e5b109a5198c287d1a00273a3651ce7f38f330d9d81c5a6293cfb5fedcc34c2a03a8be925caa3546a50dad
+DIST btrfs-progs-v6.16.1.tar.sign 566 BLAKE2B d2d7078120f781f51abac29ad2d052d7e12f76f9dd9011eac3f8ee591c3a7e82856a1373664e018f46476b3fbacea60cd122fcb4c1ee8db06a85ade66a37c8f7 SHA512 e563ad008eaf4c3c2a2d614aa705825383b69cedf52bf0e98d28f4b89f0c3b5df41ad10c4fc86bac35834d794143f3c55118285135693042762053bdc895a9d6
+DIST btrfs-progs-v6.16.1.tar.xz 4953240 BLAKE2B 4d734022ddf3ff49a9a409ef387566a0e95bed22d2f2a3517e75e1c53083cd99e78da14afacc55cf49279c4dcdd718a9252ced52b280740f241c9526e21b3561 SHA512 55348627bdc3a0bcf6202ed352c539a9318328b2b9e0ab95526f34dff203d2abb66d70d4620122a6f90b7c1ccb7c646d297be3f6047a14144c867bae0cdc13d4
DIST btrfs-progs-v6.16.tar.sign 566 BLAKE2B 80e30440ac59c034fd4d9d9cec7a5ddd1fd9533e350066d3c92d276e97023ba12b83daa98bb87065ea93a3651a6b51d4195d3cb89f8dae43986674434dffab7e SHA512 21f134616f91e7cf2e863908ae9793c7561f24985ec879056d7dddf6ae3b0766ae83bd5205dc12633b215cae1cce177bb9b8c39c84909fbaf53624b44d3e2dc7
DIST btrfs-progs-v6.16.tar.xz 4949180 BLAKE2B 375c60a93bc5b62d7c3a94d5ed108b81786b27f2beba27d85bcede94a892d84e71b1fe00a1574cc53066fe77bb37408b2b382db4a1664fefcc676c1c3efa1c60 SHA512 b7b89c9f6855f48a369bfcaf647b50cd41fbd6b11e9017a57eace36917c0daec14d93946121640728e0dfcda74941f28f9c31abf694313cb5134156a2c1907f7
diff --git a/dev-python/btrfsutil/btrfsutil-6.16.1.ebuild b/dev-python/btrfsutil/btrfsutil-6.16.1.ebuild
new file mode 100644
index 000000000000..f06276d6ad0a
--- /dev/null
+++ b/dev-python/btrfsutil/btrfsutil-6.16.1.ebuild
@@ -0,0 +1,62 @@
+# Copyright 2024-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_{11..14} )
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/dsterba.asc
+
+inherit distutils-r1 verify-sig
+
+DESCRIPTION="Library for managing Btrfs filesystems"
+HOMEPAGE="https://github.com/kdave/btrfs-progs"
+
+MY_PN="btrfs-progs"
+MY_PV="v${PV/_/-}"
+MY_P="${MY_PN}-${MY_PV}"
+SRC_URI="
+ https://mirrors.edge.kernel.org/pub/linux/kernel/people/kdave/${MY_PN}/${MY_P}.tar.xz
+ verify-sig? ( https://mirrors.edge.kernel.org/pub/linux/kernel/people/kdave/${MY_PN}/${MY_P}.tar.sign )
+"
+S="${WORKDIR}/${MY_P}/libbtrfsutil/python"
+
+LICENSE="LGPL-2+"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+DEPEND="~sys-fs/btrfs-progs-${PV}"
+RDEPEND="${DEPEND}"
+
+distutils_enable_tests unittest
+
+RDEPEND+=" !sys-fs/btrfs-progs[python(-)]"
+
+src_unpack() {
+ # Upstream sign the decompressed .tar
+ if use verify-sig; then
+ einfo "Unpacking ${MY_P}.tar.xz ..."
+ verify-sig_verify_detached - "${DISTDIR}"/${MY_P}.tar.sign \
+ < <(xz -cd "${DISTDIR}"/${MY_P}.tar.xz | tee >(tar -xf -))
+ assert "Unpack failed"
+ else
+ default
+ fi
+}
+
+src_prepare() {
+ cat <<-EOF > version.py || die
+ #!/usr/bin/env python3
+ btrfs_util_py_version = '${PV}'
+ EOF
+
+ distutils-r1_src_prepare
+}
+
+src_install() {
+ distutils-r1_src_install
+
+ rm "${ED}"/usr/share/doc/${PF}/README.md || die
+ dodoc "${S}"/../README.md
+}
diff --git a/dev-python/cffi/Manifest b/dev-python/cffi/Manifest
index 39fa548c09d0..5e85e6e3f019 100644
--- a/dev-python/cffi/Manifest
+++ b/dev-python/cffi/Manifest
@@ -1,2 +1,2 @@
DIST cffi-1.17.1.tar.gz 516621 BLAKE2B 902844a14c0765ada6adf5054a9462a195b49b2ea4d7441deeff97dd6d9209accd29257697002ee1bad7e143ebf983a2d98077b17e08b060dd1ee75dc682e3d8 SHA512 907129891d56351ca5cb885aae62334ad432321826d6eddfaa32195b4c7b7689a80333e6d14d0aab479a646aba148b9852c0815b80344dfffa4f183a5e74372c
-DIST cffi-2.0.0b1.tar.gz 521625 BLAKE2B a62b15652e02ed62ce33cc92f6bfd4454a81a6a7c3fb84cc048fbf8cc39325af09c19f5c2a2f1e6c80063e9fc8ae6537d1b917a01f15e8e56c2bb847bd79bfac SHA512 974f724a4c819f0a32da38a7209c6f54e63810817794bab286e8721bab6c59ce50c2c0992c828af54088ff8f1dec40480ffe37155d979cadc26c79cdc6b78f54
+DIST cffi-2.0.0.tar.gz 523588 BLAKE2B 2038eb1eeb89b1015ea40202cc5dc0da62989288a41cccf75baeea86051a085e28798e75ce0a74316c2f5bd94e83e0b89d3df6b97ee0f4f61dac301e239bb3e9 SHA512 a8bf705e626f6b5858cc20e9044a23fd653d155e2a2d4cb59f1eed00ef13ebd92d5a2f07738c66b361cb24d863786d4379dcd9c176250b546fbd45758e51d4f4
diff --git a/dev-python/cffi/cffi-2.0.0_beta1.ebuild b/dev-python/cffi/cffi-2.0.0.ebuild
index 1f850d13ea69..c83761a7bae9 100644
--- a/dev-python/cffi/cffi-2.0.0_beta1.ebuild
+++ b/dev-python/cffi/cffi-2.0.0.ebuild
@@ -20,6 +20,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0/${PV}"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
# Needs recent libffi for HPPA fixes
DEPEND="
@@ -41,6 +42,7 @@ BDEPEND="
distutils_enable_sphinx doc/source
EPYTEST_PLUGINS=()
+# xdist fails to collect the tests
distutils_enable_tests pytest
PATCHES=(
diff --git a/dev-python/charset-normalizer/charset-normalizer-3.4.3.ebuild b/dev-python/charset-normalizer/charset-normalizer-3.4.3.ebuild
index d64adbf7a0bd..5fa1e00a1efc 100644
--- a/dev-python/charset-normalizer/charset-normalizer-3.4.3.ebuild
+++ b/dev-python/charset-normalizer/charset-normalizer-3.4.3.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
BDEPEND="
dev-python/setuptools[${PYTHON_USEDEP}]
diff --git a/dev-python/clang/Manifest b/dev-python/clang/Manifest
index f5d097498587..e2ee62a7108c 100644
--- a/dev-python/clang/Manifest
+++ b/dev-python/clang/Manifest
@@ -8,10 +8,11 @@ DIST llvm-project-18.1.8.src.tar.xz 132067260 BLAKE2B a950492f1dbfb874dff63b1ffe
DIST llvm-project-18.1.8.src.tar.xz.sig 566 BLAKE2B 6ab0efc5b38d4483f4e32e8b85774b2edd5d88fdf29f23b88eb0b5130a7a7f0e80549612b025f927e92de4a08ff7c292cff224dbda91a5d598244e98f7ad0fbd SHA512 ddfd1e8a06756759af6cbe488c82a6d6a62ba91f3e8a0eb4cece561321824f5d165b08ed91010588790b76e19790931d2651b24dba8567e3b151d3cb43bec25b
DIST llvm-project-19.1.7.src.tar.xz 141249332 BLAKE2B 1259ed7f9aca7b35e89d818befdee20fd8bed4d2dc2c2c6f6f56451fd43d35ac03a0a5a406e142d22b25137999dc5b17471c196f8fcf79f20a8296832d900f6d SHA512 c7d63286d662707a9cd54758c9e3aaf52794a91900c484c4a6efa62d90bc719d5e7a345e4192feeb0c9fd11c82570d64677c781e5be1d645556b6aa018e47ec8
DIST llvm-project-19.1.7.src.tar.xz.sig 438 BLAKE2B 4015140f4ba77de45039bdbdfbaf6f30e75705123d067ea97175d91d7a5b6a75008df01d99ae7aa16aaa3b101f3f41e38d01f04158f95a261d617b3ede0254cd SHA512 195797b06ac80a742e0ccbc03a50dc06dd2e04377d783d5474e3e72c5a75203b60292b047929312a411d22b137a239943fba414a4d136a2be14cbff978eb6bda
-DIST llvm-project-1d8fdda7b0a9f47c443600bca6af2bc141e4abf7.tar.gz 246773192 BLAKE2B a61c1607586dd6f130c62a78a1f36d0e49d66d47d1244c3fe26df774131b3717cdbb2ab726428bd89d420190125dea5968d11b8094131c3214ab00e00a3ccd3b SHA512 3a1d83b6f016fa677da1eb18836b819e042d67a7a922cba83016147520eb2f44493c0cbc12015c4222804a641f410915efd0bb833a08c24efced7fc26801933b
DIST llvm-project-20.1.8.src.tar.xz 147242952 BLAKE2B 7657ac0b26acc5affb1bfc91b912ade3191c5d77f3979d5a80d5f6ce52f56a7d1c448bd257398390bf10838f02faa6f3ece37a7327cced69d165ec2e2e699316 SHA512 f330e72e6a1da468569049437cc0ba7a41abb816ccece7367189344f7ebfef730f4788ac7af2bef0aa8a49341c15ab1d31e941ffa782f264d11fe0dc05470773
DIST llvm-project-20.1.8.src.tar.xz.sig 566 BLAKE2B 85beedfcff1195a974fab2c667b9efd4b715b3480c1b44b1b887fe32c69f72aca0d3b8fb276c03b6cc5a866622f669047aeee5ccb976640b4008ccd31dce77a4 SHA512 d74369bdb4d1b82775161ea53c9c5f3a23ce810f4df5ff617123023f9d8ce720e7d6ecc9e17f8ebd39fd9e7a9de79560abdf2ffe73bcb907a43148d43665d619
DIST llvm-project-21.1.0.src.tar.xz 158971856 BLAKE2B ac8c3cc8d2c986abcaa523acc872b01311ec118a738654f9cc53a1d5fdba70ba10cfe829e23f3913557e460403ed6a2df81cb5e9a435c8e1ce08e7ead3511bf0 SHA512 1487dcdc041dd6cdcffa6cc95a565e18a9fce2a73215671e366a9601cecce6c8bf70065df5564de5998d1841c3d8d829a9fbd2cad72e3aab4db279e8885ff446
DIST llvm-project-21.1.0.src.tar.xz.sig 438 BLAKE2B c5731350bc7454867da18887628c0e87bf404589097034c7ddfffbeec277b900bd1fa49daabd41d4f8800a8ab76105bf7e910a99dd970819ab987373d4ed4ed9 SHA512 c3cd0a759e22a24f4307d8747b7986f966f4fa3c413092efc73ccca252476f1b59878dc65b444884515bcce3d3bfab902f585cc1d08e2aeb55aa8e588128aeb6
+DIST llvm-project-21.1.1.src.tar.xz 158891056 BLAKE2B 5801ba4ea64e9c55fd1e6a83e1ea463cfb1d2b12c1f25a488ca63fd88254f20388c5e986492e413d795306bc37782487b80485240939227f3beeea860091825c SHA512 a120895e75942d848cc763fd1cb4aeb184e9d4509d69064e8e3f5679fbeb09c73bf916e33d04b842778537d2331067ec9190e0ad75d591d3ba57871770e19bce
+DIST llvm-project-21.1.1.src.tar.xz.sig 438 BLAKE2B 8fdf614e67e31382c65d70a551ef94893b8e4914e855fa96fc3a4a0a4ac916d646758be1c1c9a74028acd776d5d93b77f678d29dc75179ae95909d525d263c85 SHA512 1b9a2c51feaca75ef2f82a89c8e8d741a0b5f05f0dd8ca244d6997deb00f8ded3c37a5cbc6012a4ba8632004383ab4677756d9defe8855fff458e02380d77bd5
DIST llvm-project-645dd324d1b7d028745c2a4045b69e745df2ae6a.tar.gz 247443586 BLAKE2B dd3229c32768e42fd2f311638f1e63f5503fabee3fa414bc3300313b36bbfa062d90900319e4fdbbafae17947537fba699fe5940e1b6553a2d9a716c0ce7b59c SHA512 659dc22e2fd1fd0bced13f941127797dc7703b8d810eeb7a0fc51cf55c274e69e2d6660867c191d5d90615ddee3a1faff7f7cd357ff2eb88d715762be50098c3
-DIST llvm-project-d76bb2bb894a4641ed62447327b40a347a6ae883.tar.gz 245754836 BLAKE2B 487e6396f1b381743dfbbd13e8f55728f1f915c042c717433e498127ecdeb4405a67e998059f5eb1f84e851437b805ba9e9c0e390c61092c7ee336a801d6f342 SHA512 42e38f917357918e8d62d8893a1ba34b431cd8aabf924b89e5352013bb8984c10c0b2796fa9a725bab71e52f99216604b75606bde3b795d20082d97d0f7a82ad
+DIST llvm-project-f059d2bac034acca39ad60a1b13aaec6afa0a3d6.tar.gz 248627883 BLAKE2B e1603ba38fcf70e7f3794a30a42057d0052a422bd0aaf423c65d1fd8f9ec7d3981cd651f309dc3ab5c28183291241732373b9bdb75fc2a11fc8d9f238388b8c3 SHA512 63a1627a8b3cc8f240cefe2066d7e306cab5091317f97dd808b9ad887d4e6eb2d21af3f79bccfdb9387f5f7a5ed0b772013b0261a647c8d50ffaa55914362dfb
diff --git a/dev-python/clang/clang-22.0.0_pre20250831.ebuild b/dev-python/clang/clang-21.1.1.ebuild
index 4dd3bb26996f..0b43b8ec6779 100644
--- a/dev-python/clang/clang-22.0.0_pre20250831.ebuild
+++ b/dev-python/clang/clang-21.1.1.ebuild
@@ -11,6 +11,7 @@ HOMEPAGE="https://llvm.org/"
LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
IUSE="test"
RESTRICT="!test? ( test )"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
diff --git a/dev-python/clang/clang-22.0.0_pre20250820.ebuild b/dev-python/clang/clang-22.0.0_pre20250910.ebuild
index 4dd3bb26996f..4dd3bb26996f 100644
--- a/dev-python/clang/clang-22.0.0_pre20250820.ebuild
+++ b/dev-python/clang/clang-22.0.0_pre20250910.ebuild
diff --git a/dev-python/cramjam/Manifest b/dev-python/cramjam/Manifest
index b97609cd40e3..f347a720af9e 100644
--- a/dev-python/cramjam/Manifest
+++ b/dev-python/cramjam/Manifest
@@ -26,7 +26,6 @@ DIST colorchoice-1.0.3.crate 7923 BLAKE2B 7055fe61677143f0d4445ed5f6be2cbc284c15
DIST copy_dir-0.1.3.crate 5831 BLAKE2B de7e655e9716500db72cdb16394cf76a50f7b9861b9df6e0bd0a450b9475112f7e3ba3bc53ffde2c74ce540f4a48e2703f8e5ce83ad8cbfae06e51c16b2cdc63 SHA512 cd83244960be0bae32ab0480d1057c8a99e4bfd1c4622eb0b85692f2255ccac38678e608c663cf76ccf11d8c0d2415b15ebfd8328efdfbb37bca448245338fa2
DIST cramjam-2.10.0.tar.gz 47801 BLAKE2B ff567e7abdb36e959ed502f38402c5257609c30dad3c0d1beda6699a5567d31f22ab075bbaf20ec9fe0512d06131ce912ec9f40e1b08137d1a3904ed19878921 SHA512 0c44643844c6278160d9e2efa3005da265e464edb1d3dd670cadc3effaa744c21c772c0bfeac1ceec6e5f7e8a9a02440d79e5080c432e4dcb73984e613281ad2
DIST cramjam-2.11.0.tar.gz 99100 BLAKE2B 69a68b6e83adec4434f61608082f992bfc00d2b52bed91f18a4bd55f2f5310986a5d325c0e81194d41c266e5d4d6c03735e41f9bc7f8b13f8f15d9df03002961 SHA512 d92446c0c0ef885f3544783caa1f179fd50b6a6290ada011495b7385411527f75a2544c0c8cdc36910c83c879dbac7dd130f4fe8f3dc3b885a84a45286cb3695
-DIST cramjam-2.11.0rc3.tar.gz 77632 BLAKE2B c4b0966eb42cc2eee97665288924bfe1a10af84e740cd2d009cc5d9c92b0f273d9cd4ee99ebd998e24a6aa1cd19eecdbbca6134236edfa3a4cf190371b39ada5 SHA512 7e4ba4b4dd2c625a9ba04591219f35c7bed1d315bea6c004425021b5ecf7fb0ae52e1f65add35031abd00241fe3f45b26d794997704f5d4112a35d37dc7594e8
DIST crc32fast-1.4.2.crate 38491 BLAKE2B aaa3acca66e5814a45f12a90ae09f6ff5fc14ca94c8539184dab6ed928abc68cd1d37e539c268c1effd50ab3af20de6038593fb9c6bd6a664785dac52f6939fd SHA512 c7608d33022062e217d3576f536ffbd51479855a5e5874529c71db2bf6a937ce04d814c39cf777309c38445393bf43cb9996161947e28738abd432f11beb7266
DIST equivalent-1.0.2.crate 7419 BLAKE2B 7ce4fb7b911961cd4ccfb48323eea4952110a069789c6bd177a63391c270df861afadd00c07db7b22768f0864f320e429e0200c433284f528336e2f81d071eff SHA512 8e0e2dc070794a85b276e93f9e4a65d3bbb8587b33fda211c34479a0b88504c913d8bef9e84d7996254aeabe1efe4ff1ef6259ff4fe3f9ccb90dd90070b3e4d4
DIST errno-0.3.10.crate 11824 BLAKE2B f9976b538868daba3cd2d47ff2fdcda16b4a436ca767f865f23d1139e7f232aba263dd4aa38d573442c762999c8a8beab8a4a8c10649d21b49090fa65ced1ec7 SHA512 fa4b9a368f254cd90c6f69f6883af4c579829a6da6f31481a1b527ac9602c8ffcb5e9518cdc32c39b5589c151a20e75a7300c8a907d178346185ecc6e8749f3f
diff --git a/dev-python/cramjam/cramjam-2.11.0.ebuild b/dev-python/cramjam/cramjam-2.11.0.ebuild
index f9d4fabc15de..5d33fe411548 100644
--- a/dev-python/cramjam/cramjam-2.11.0.ebuild
+++ b/dev-python/cramjam/cramjam-2.11.0.ebuild
@@ -144,6 +144,7 @@ LICENSE+="
Unicode-3.0
"
SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~sparc ~x86"
DEPEND="
app-arch/bzip2:=
diff --git a/dev-python/cramjam/cramjam-2.11.0_rc3.ebuild b/dev-python/cramjam/cramjam-2.11.0_rc3.ebuild
deleted file mode 100644
index c9ca3b6bbeac..000000000000
--- a/dev-python/cramjam/cramjam-2.11.0_rc3.ebuild
+++ /dev/null
@@ -1,240 +0,0 @@
-# Copyright 2024-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-# Note: you need to use top-level Cargo.lock to generate the crate list.
-CRATES="
- adler2@2.0.0
- alloc-no-stdlib@2.0.4
- alloc-stdlib@0.2.2
- anstream@0.6.18
- anstyle-parse@0.2.6
- anstyle-query@1.1.2
- anstyle-wincon@3.0.7
- anstyle@1.0.10
- autocfg@1.4.0
- bitflags@2.9.0
- blosc2-rs@0.4.0+2.15.2
- blosc2-sys@0.4.0+2.15.2
- brotli-decompressor@4.0.2
- brotli@7.0.0
- bumpalo@3.17.0
- bzip2-sys@0.1.13+1.0.8
- bzip2@0.4.4
- cbindgen@0.27.0
- cc@1.2.16
- cfg-if@1.0.0
- clap@4.5.31
- clap_builder@4.5.31
- clap_lex@0.7.4
- cmake@0.1.54
- colorchoice@1.0.3
- copy_dir@0.1.3
- crc32fast@1.4.2
- equivalent@1.0.2
- errno@0.3.10
- fastrand@2.3.0
- flate2@1.1.0
- getrandom@0.3.1
- hashbrown@0.15.2
- heck@0.4.1
- heck@0.5.0
- indexmap@2.7.1
- indoc@2.0.5
- is_terminal_polyfill@1.70.1
- isal-rs@0.5.3+496255c
- isal-sys@0.5.3+496255c
- itoa@1.0.14
- jobserver@0.1.32
- libc@0.2.170
- libcramjam@0.7.0
- libdeflate-sys@1.19.3
- libdeflater@1.19.3
- linux-raw-sys@0.4.15
- lock_api@0.4.12
- log@0.4.26
- lz4-sys@1.11.1+lz4-1.10.0
- lz4@1.28.1
- lzma-sys@0.1.20
- memchr@2.7.4
- memoffset@0.9.1
- miniz_oxide@0.8.5
- once_cell@1.20.3
- parking_lot@0.12.3
- parking_lot_core@0.9.10
- pkg-config@0.3.31
- portable-atomic@1.11.0
- proc-macro2@1.0.93
- pyo3-build-config@0.24.1
- pyo3-ffi@0.24.1
- pyo3-macros-backend@0.24.1
- pyo3-macros@0.24.1
- pyo3@0.24.1
- python3-dll-a@0.2.13
- quote@1.0.38
- redox_syscall@0.5.9
- rustix@0.38.44
- rustversion@1.0.21
- ryu@1.0.19
- same-file@1.0.6
- scopeguard@1.2.0
- serde@1.0.218
- serde_derive@1.0.218
- serde_json@1.0.139
- serde_spanned@0.6.8
- shlex@1.3.0
- smallvec@1.14.0
- snap@1.1.1
- strsim@0.11.1
- syn@2.0.98
- target-lexicon@0.13.2
- tempfile@3.17.1
- toml@0.8.20
- toml_datetime@0.6.8
- toml_edit@0.22.24
- unicode-ident@1.0.17
- unindent@0.2.3
- utf8parse@0.2.2
- walkdir@2.5.0
- wasi@0.13.3+wasi-0.2.2
- wasm-bindgen-backend@0.2.100
- wasm-bindgen-macro-support@0.2.100
- wasm-bindgen-macro@0.2.100
- wasm-bindgen-shared@0.2.100
- wasm-bindgen@0.2.100
- winapi-util@0.1.9
- windows-sys@0.59.0
- windows-targets@0.52.6
- windows_aarch64_gnullvm@0.52.6
- windows_aarch64_msvc@0.52.6
- windows_i686_gnu@0.52.6
- windows_i686_gnullvm@0.52.6
- windows_i686_msvc@0.52.6
- windows_x86_64_gnu@0.52.6
- windows_x86_64_gnullvm@0.52.6
- windows_x86_64_msvc@0.52.6
- winnow@0.7.3
- wit-bindgen-rt@0.33.0
- xz2@0.1.7
- zstd-safe@7.2.3
- zstd-sys@2.0.14+zstd.1.5.7
- zstd@0.13.3
-"
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=maturin
-PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
-
-inherit cargo distutils-r1 pypi
-
-DESCRIPTION="Thin Python bindings to de/compression algorithms in Rust"
-HOMEPAGE="
- https://github.com/milesgranger/cramjam/
- https://pypi.org/project/cramjam/
-"
-SRC_URI+="
- ${CARGO_CRATE_URIS}
-"
-
-LICENSE="MIT"
-# Dependent crate licenses
-LICENSE+="
- Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD MIT MPL-2.0
- Unicode-3.0
-"
-SLOT="0"
-
-DEPEND="
- app-arch/bzip2:=
- app-arch/libdeflate:=
- app-arch/lz4:=
- app-arch/xz-utils:=
- app-arch/zstd:=
- dev-libs/isa-l:=
-"
-# dev-libs/c-blosc2:=
-RDEPEND="
- ${DEPEND}
-"
-BDEPEND="
- test? (
- dev-python/hypothesis[${PYTHON_USEDEP}]
- dev-python/numpy[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-
-QA_FLAGS_IGNORED="usr/lib/py.*/site-packages/cramjam/cramjam.*.so"
-
-src_prepare() {
- sed -i -e '/strip/d' pyproject.toml || die
- distutils-r1_src_prepare
- export UNSAFE_PYO3_SKIP_VERSION_CHECK=1
-
- # strip all the bundled C libraries
- find "${ECARGO_VENDOR}"/*-sys-* \
- -name '*.c' -delete || die
-
- # https://github.com/10XGenomics/lz4-rs/pull/39
- pushd "${ECARGO_VENDOR}"/lz4-sys* >/dev/null || Die
- eapply -p2 "${FILESDIR}/lz4-sys-unbundle-lz4.patch"
- popd >/dev/null || die
-
- # https://github.com/milesgranger/isal-rs/pull/25 (cheap workaround)
- sed -i -e '/default/d' "${ECARGO_VENDOR}"/isal-sys*/Cargo.toml || die
-
- # enable system libraries where supported
- export ZSTD_SYS_USE_PKG_CONFIG=1
-
- # unpin C library versions
- sed -i -e '/exactly_version/d' \
- "${ECARGO_VENDOR}"/libdeflate-sys-*/build.rs || die
-
- # bzip2-sys requires a pkg-config file
- # https://github.com/alexcrichton/bzip2-rs/issues/104
- mkdir "${T}/pkg-config" || die
- export PKG_CONFIG_PATH=${T}/pkg-config${PKG_CONFIG_PATH+:${PKG_CONFIG_PATH}}
- cat >> "${T}/pkg-config/bzip2.pc" <<-EOF || die
- Name: bzip2
- Version: 9999
- Description:
- Libs: -lbz2
- EOF
-
- local features=(
- extension-module
-
- snappy
- lz4
- bzip2
- brotli
- zstd
-
- xz-shared
- igzip-shared
- ideflate-shared
- izlib-shared
- use-system-isal-shared
- gzip-shared
- zlib-shared
- deflate-shared
- # https://github.com/milesgranger/cramjam/issues/204#issuecomment-2692307708
- # blosc2-shared
- # use-system-blosc2-shared
- )
- local features_s=${features[*]}
-
- DISTUTILS_ARGS=(
- --no-default-features
- --features="${features_s// /,}"
- )
-}
-
-python_test() {
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- # try to make hypothesis less flaky
- local -x CI=1
- epytest tests
-}
diff --git a/dev-python/django-cors-headers/Manifest b/dev-python/django-cors-headers/Manifest
index 846222f69cc3..d73f0233bf76 100644
--- a/dev-python/django-cors-headers/Manifest
+++ b/dev-python/django-cors-headers/Manifest
@@ -1 +1,2 @@
DIST django-cors-headers-4.7.0.gh.tar.gz 32732 BLAKE2B 77f2052a34d2634c4b25eb5e1bf115cbd84e120f01941e6e0456c2b1ac7c5312731207b534dccb531c3f4d76e2e4a7d4ee088a2477bb185ed2f0b0e2f0302fcc SHA512 9829c36630f15b78e8a32e42a7fb27fe90bf590aca139df8192cae2ac92e68414470c9f185fda147ff15dff41bc86ea1298205d1316ea07c7e5733a70a8e0c6d
+DIST django-cors-headers-4.8.0.gh.tar.gz 40304 BLAKE2B b1affef0b0a651d94ba26cb66bf2abe37bcd27b7ceb2f0a750975ef428a6dfe65c30521c9ec09aff976c465ea91c9c59a1abe1bb8b18250567b3cb062a77a138 SHA512 bcc15f65eaf009a8485e18fcd4e0f65ad6b331719746c2b27f18ba03f069bf1aeb2ebaf030ddf57ec97ed3839d9cad15ccd4749aa104d37deba63806dc1a9fd7
diff --git a/dev-python/django-cors-headers/django-cors-headers-4.8.0.ebuild b/dev-python/django-cors-headers/django-cors-headers-4.8.0.ebuild
new file mode 100644
index 000000000000..258a20cbd84a
--- /dev/null
+++ b/dev-python/django-cors-headers/django-cors-headers-4.8.0.ebuild
@@ -0,0 +1,31 @@
+# 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="Django App that adds CORS (Cross-Origin Resource Sharing) headers to responses"
+HOMEPAGE="
+ https://github.com/adamchainz/django-cors-headers/
+ https://pypi.org/project/django-cors-headers/
+"
+SRC_URI="
+ https://github.com/adamchainz/django-cors-headers/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+ >=dev-python/asgiref-3.6[${PYTHON_USEDEP}]
+ >=dev-python/django-4.2[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=( pytest-django )
+distutils_enable_tests pytest
diff --git a/dev-python/dnspython/dnspython-2.8.0.ebuild b/dev-python/dnspython/dnspython-2.8.0.ebuild
index c3506a9e7990..ace48ff57b4a 100644
--- a/dev-python/dnspython/dnspython-2.8.0.ebuild
+++ b/dev-python/dnspython/dnspython-2.8.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="ISC"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~m68k ~ppc ~ppc64 ~riscv ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~m68k ~ppc ~ppc64 ~riscv ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
IUSE="dnssec examples https quic"
RDEPEND="
diff --git a/dev-python/docutils/Manifest b/dev-python/docutils/Manifest
index 8e95d338409d..69f65b94e189 100644
--- a/dev-python/docutils/Manifest
+++ b/dev-python/docutils/Manifest
@@ -1,2 +1,3 @@
DIST docutils-0.21.2.tar.gz 2204444 BLAKE2B 727c2f97fc5835a0ffa62e38ea85af366cd89ad1eaec0b8af8b1f3b12e6cddfddb65161ba34f9109952d37ba2cf8985f3c3b6905ebb2ac1c9a984cce3fb4d170 SHA512 7fafa331f5687448e80d299c20cdccc4b49819fa471b5f586bf0ab18c694ba43a70f58e7c76b0a70a16267585548389214e11a4998ad7fdc19a27f0f7644539c
+DIST docutils-0.22.1rc1.tar.gz 2288693 BLAKE2B a65ec18afab62a37f254f904b6812ffdd8b67c774ebd7d39c4f661f79150ac8b1dc9077d020ced548d0dd15fdde8458771db4e1576f09b99dd7f001a1988426e SHA512 6cf2d4ce54fd3db87f09ff7a278aeefa4a47c85a7f919c4d8590e42b4583aab0a81405cf047d95238b8bae2b6e0cacad3a5397009c0b3fdb10fe8984080e911f
DIST docutils-0.22.tar.gz 2277984 BLAKE2B 8ad9fc3d064e39bb618f5bac7ef6b69a77e7e811ff2f7c4c1b34f4f8bc1ba793f995e653d20ba536d24af5905f68b8e3f636a0f28f1c9eef46bb6f755d988bc2 SHA512 09082eb3bdd5f9b3e977d356740efee47725a50fbaca7bf35c7fddff06003c2b2177a38d160a9956f9e96261f881c0d870c0aa9fef84f90d0cac079ccc73669d
diff --git a/dev-python/docutils/docutils-0.22.1_rc1.ebuild b/dev-python/docutils/docutils-0.22.1_rc1.ebuild
new file mode 100644
index 000000000000..66a24f51c0da
--- /dev/null
+++ b/dev-python/docutils/docutils-0.22.1_rc1.ebuild
@@ -0,0 +1,61 @@
+# 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 pypi
+
+DESCRIPTION="Python Documentation Utilities (reference reStructuredText impl.)"
+HOMEPAGE="
+ https://docutils.sourceforge.io/
+ https://pypi.org/project/docutils/
+"
+
+# GPL-3+ only for emacs/rst.el
+LICENSE="BSD BSD-2 GPL-3+ PSF-2.4 public-domain"
+SLOT="0"
+
+RDEPEND="
+ dev-python/pillow[${PYTHON_USEDEP}]
+ dev-python/pygments[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ ${RDEPEND}
+"
+
+python_compile_all() {
+ # Generate html docs from reStructured text sources.
+
+ # Place html4css1.css in base directory to ensure that the generated reference to it is correct.
+ cp docutils/writers/html4css1/html4css1.css . || die
+
+ cd tools || die
+ "${EPYTHON}" buildhtml.py --input-encoding=utf-8 --no-datestamp \
+ --stylesheet-path=../html4css1.css, --traceback ../docs || die
+}
+
+src_test() {
+ cd test || die
+ distutils-r1_src_test
+}
+
+python_test() {
+ "${EPYTHON}" alltests.py -v || die "Testing failed with ${EPYTHON}"
+}
+
+python_install() {
+ distutils-r1_python_install
+
+ # Install tools.
+ python_doscript tools/buildhtml.py
+}
+
+python_install_all() {
+ local DOCS=( *.rst )
+ local HTML_DOCS=( docs tools docutils/writers/html4css1/html4css1.css )
+
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/dogpile-cache/Manifest b/dev-python/dogpile-cache/Manifest
index b0ff7745ad2a..982da7c266a9 100644
--- a/dev-python/dogpile-cache/Manifest
+++ b/dev-python/dogpile-cache/Manifest
@@ -1 +1,2 @@
DIST dogpile_cache-1.4.0.tar.gz 937468 BLAKE2B 3e1b79a1a304a48f67ca89d02ff5cd69ccb48d4c6b0bc232f253c63ce094fc61608a9e9e0a7216bc8cdb7a1eea22d561e1f57632d5aee3a202d927c6863229bd SHA512 65ba9df054ac1d5f4e263277bff8ccb3a202b7b7f7007c4fa0ad80517ffc1000b4a06819aa00c9f6be4d7dcddea1762153377825b81b9ff1159598510e2b2242
+DIST dogpile_cache-1.4.1.tar.gz 939952 BLAKE2B d7f5ce38303b04527820a2bb6473a240ac44cc2ff692a3956db513b904def87967cb58db4cb39d0d75d8d30d38a5f5fac7e8a0bef3f0acc3096e402084745cb7 SHA512 f9dbac66c59299d7ef5095dca2301ad9b55d9fdbb11f69caa348011db4df97691761974ff05254b8aa3c541c2e1b72ff8c99d72083a38d4ae7a9f1d5c330919d
diff --git a/dev-python/dogpile-cache/dogpile-cache-1.4.1.ebuild b/dev-python/dogpile-cache/dogpile-cache-1.4.1.ebuild
new file mode 100644
index 000000000000..863437bc04a0
--- /dev/null
+++ b/dev-python/dogpile-cache/dogpile-cache-1.4.1.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_PN=${PN/-/.}
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A locking API for expiring values while a single thread generates a new value"
+HOMEPAGE="
+ https://github.com/sqlalchemy/dogpile.cache/
+ https://pypi.org/project/dogpile.cache/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/decorator-4.0.0[${PYTHON_USEDEP}]
+ >=dev-python/stevedore-3.0.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/mako[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+# not xdist safe
+distutils_enable_tests pytest
diff --git a/dev-python/elasticsearch/Manifest b/dev-python/elasticsearch/Manifest
index 1dc2e3473527..537fcd878a10 100644
--- a/dev-python/elasticsearch/Manifest
+++ b/dev-python/elasticsearch/Manifest
@@ -1,2 +1,4 @@
DIST elasticsearch-py-9.0.2.gh.tar.gz 2192777 BLAKE2B d7fc3c9fe94b954d0522be03335c7639e38a67fa30949f19a1004b368750ae87da5fd3ea87e048f6cc36c19a42883821ff3f986879ab6f61f4128add73a62c83 SHA512 b2473dae673051be4e6477947b9faddb11d1ac563a971c0b4eb14748ffdf3ab7eef89dbbdca27b486e631f575f7558341e46d22d551b1d20f100260d41c3b2c7
+DIST elasticsearch-py-9.0.4.gh.tar.gz 2236765 BLAKE2B 0d8c6ad1ca4bbb17a592221997c6a26e1433d7f42df513efb1d981afa75b3c0f423a3d5390d33abd1440ce4baaf85058a392fd497ca296c7ef4f3b642a912000 SHA512 e052c4af9b526c203f31794d974ad22a92e5039453dab76e3fc19092e0160c6da9d4fc51223437e94f15cda203cdaf5c66afe84e26dc4ca62a4490e6725c2344
DIST elasticsearch-py-9.1.0.gh.tar.gz 2229791 BLAKE2B 7e5651b8b92ab3afdcc9f966962c15954af681fc5d6b4e4d2ea4b26351a7724976236e34ff73cb8feec03f7d1bbabecccc1a81a1e884a33cd2720f3dea2ef40d SHA512 d23159caec48d994ad835ae608399fb9ceede825e99080604c58182ebc06923329d5cca18cb9b72b04a9819b86a9a4fb344d6def8ffb9fd0a10a26f54e61c497
+DIST elasticsearch-py-9.1.1.gh.tar.gz 2248284 BLAKE2B 55789d5eab7dd1135dd5aa706063662bde70d20bba95ea68bb90b4bec6ad13d6647ddeb680e7da0d6b83343d75d6a8cb510e0452f0ac457a671f302429e8842c SHA512 ca4257220fc432331ad501d9e47a78a3f823d2bc4d5842ceabc9a11a83b2fa8a0fbba3404b9e46152b14143cc57735c3d8a970500fb31f9fdc05fc3bf2df0659
diff --git a/dev-python/elasticsearch/elasticsearch-9.0.4.ebuild b/dev-python/elasticsearch/elasticsearch-9.0.4.ebuild
new file mode 100644
index 000000000000..c28675bdfb47
--- /dev/null
+++ b/dev-python/elasticsearch/elasticsearch-9.0.4.ebuild
@@ -0,0 +1,78 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1
+
+MY_P="elasticsearch-py-${PV}"
+DESCRIPTION="Official Elasticsearch client library for Python"
+HOMEPAGE="
+ https://ela.st/es-python
+ https://github.com/elastic/elasticsearch-py/
+ https://pypi.org/project/elasticsearch/
+"
+SRC_URI="
+ https://github.com/elastic/elasticsearch-py/archive/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="Apache-2.0"
+SLOT="0/$(ver_cut 1)"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ <dev-python/aiohttp-4[${PYTHON_USEDEP}]
+ >=dev-python/aiohttp-3[${PYTHON_USEDEP}]
+ <dev-python/elastic-transport-9[${PYTHON_USEDEP}]
+ >=dev-python/elastic-transport-8.15.1[${PYTHON_USEDEP}]
+ >=dev-python/orjson-3[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ <dev-python/requests-3[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.4[${PYTHON_USEDEP}]
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ ${RDEPEND}
+ dev-python/mapbox-vector-tile[${PYTHON_USEDEP}]
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/opentelemetry-api[${PYTHON_USEDEP}]
+ dev-python/opentelemetry-sdk[${PYTHON_USEDEP}]
+ dev-python/pandas[${PYTHON_USEDEP}]
+ dev-python/pyarrow[${PYTHON_USEDEP}]
+ dev-python/pytest-asyncio[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ >=dev-python/pyyaml-5.4[${PYTHON_USEDEP}]
+ dev-python/unasync[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_sphinx docs/sphinx \
+ dev-python/sphinx-autodoc-typehints \
+ dev-python/sphinx-rtd-theme
+EPYTEST_PLUGINS=( pytest-asyncio )
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ # REST api tests are a black hole for effort. It downloads the tests
+ # so its an ever moving target. It also requires effort to blacklist
+ # tests for apis which are license restricted.
+ "test_elasticsearch/test_server/test_rest_api_spec.py"
+ # Counting deprecation warnings from python is bound to fail even
+ # if all are fixed in this package. Not worth it.
+ "test_elasticsearch/test_client/test_deprecated_options.py"
+ # Running daemon for tests is finicky and upstream CI fails at it
+ # as well.
+ "test_elasticsearch/test_server/"
+ "test_elasticsearch/test_async/test_server/"
+ )
+
+ local -x TEST_WITH_OTEL=1
+ epytest -o addopts=
+}
diff --git a/dev-python/elasticsearch/elasticsearch-9.1.1.ebuild b/dev-python/elasticsearch/elasticsearch-9.1.1.ebuild
new file mode 100644
index 000000000000..4aa7ee0ea0dd
--- /dev/null
+++ b/dev-python/elasticsearch/elasticsearch-9.1.1.ebuild
@@ -0,0 +1,84 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1
+
+MY_P="elasticsearch-py-${PV}"
+DESCRIPTION="Official Elasticsearch client library for Python"
+HOMEPAGE="
+ https://ela.st/es-python
+ https://github.com/elastic/elasticsearch-py/
+ https://pypi.org/project/elasticsearch/
+"
+SRC_URI="
+ https://github.com/elastic/elasticsearch-py/archive/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="Apache-2.0"
+SLOT="0/$(ver_cut 1)"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ <dev-python/aiohttp-4[${PYTHON_USEDEP}]
+ >=dev-python/aiohttp-3[${PYTHON_USEDEP}]
+ <dev-python/elastic-transport-10[${PYTHON_USEDEP}]
+ >=dev-python/elastic-transport-9.1.0[${PYTHON_USEDEP}]
+ >=dev-python/orjson-3[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ <dev-python/requests-3[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.4[${PYTHON_USEDEP}]
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ ${RDEPEND}
+ dev-python/mapbox-vector-tile[${PYTHON_USEDEP}]
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/opentelemetry-api[${PYTHON_USEDEP}]
+ dev-python/opentelemetry-sdk[${PYTHON_USEDEP}]
+ dev-python/pandas[${PYTHON_USEDEP}]
+ dev-python/pyarrow[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ >=dev-python/pyyaml-5.4[${PYTHON_USEDEP}]
+ dev-python/unasync[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_sphinx docs/sphinx \
+ dev-python/sphinx-autodoc-typehints \
+ dev-python/sphinx-rtd-theme
+
+EPYTEST_PLUGINS=( pytest-asyncio )
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ # REST api tests are a black hole for effort. It downloads the tests
+ # so its an ever moving target. It also requires effort to blacklist
+ # tests for apis which are license restricted.
+ "test_elasticsearch/test_server/test_rest_api_spec.py"
+ # Counting deprecation warnings from python is bound to fail even
+ # if all are fixed in this package. Not worth it.
+ "test_elasticsearch/test_client/test_deprecated_options.py"
+ # Running daemon for tests is finicky and upstream CI fails at it
+ # as well.
+ "test_elasticsearch/test_server/"
+ "test_elasticsearch/test_async/test_server/"
+ "test_elasticsearch/test_dsl/test_integration/"
+ "test_elasticsearch/test_dsl/_async/test_esql.py"
+ "test_elasticsearch/test_dsl/_sync/test_esql.py"
+ # require nltk
+ "test_elasticsearch/test_dsl/test_integration/test_examples/_async/test_vectors.py"
+ "test_elasticsearch/test_dsl/test_integration/test_examples/_sync/test_vectors.py"
+ )
+
+ local -x TEST_WITH_OTEL=1
+ epytest -o addopts=
+}
diff --git a/dev-python/electrum-aionostr/electrum-aionostr-0.0.11.ebuild b/dev-python/electrum-aionostr/electrum-aionostr-0.0.11.ebuild
index 2317b9de8b67..9b532904d6cf 100644
--- a/dev-python/electrum-aionostr/electrum-aionostr-0.0.11.ebuild
+++ b/dev-python/electrum-aionostr/electrum-aionostr-0.0.11.ebuild
@@ -15,7 +15,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64"
+KEYWORDS="amd64 ~x86"
RDEPEND="
>=dev-python/click-8.2[${PYTHON_USEDEP}]
diff --git a/dev-python/electrum-ecc/electrum-ecc-0.0.5.ebuild b/dev-python/electrum-ecc/electrum-ecc-0.0.5.ebuild
index d81d566adfb9..d362b5f96cd3 100644
--- a/dev-python/electrum-ecc/electrum-ecc-0.0.5.ebuild
+++ b/dev-python/electrum-ecc/electrum-ecc-0.0.5.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64"
+KEYWORDS="amd64 ~x86"
# check ecc_fast.py for supported SOVERSIONS
RDEPEND="
diff --git a/dev-python/ensurepip-pip/ensurepip-pip-25.2.ebuild b/dev-python/ensurepip-pip/ensurepip-pip-25.2.ebuild
index 2634af07bd5a..5934fb6cd4bf 100644
--- a/dev-python/ensurepip-pip/ensurepip-pip-25.2.ebuild
+++ b/dev-python/ensurepip-pip/ensurepip-pip-25.2.ebuild
@@ -24,7 +24,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="test test-rust"
RESTRICT="!test? ( test )"
diff --git a/dev-python/expandvars/Manifest b/dev-python/expandvars/Manifest
index 96bc7080f0fc..6259d1a5f956 100644
--- a/dev-python/expandvars/Manifest
+++ b/dev-python/expandvars/Manifest
@@ -1 +1,2 @@
DIST expandvars-1.1.1.tar.gz 70787 BLAKE2B a75def82317c8b16e04ec72a1ba6b477e14f2694e9621bd0b8864a2e84d7ff990b5149a743ccc63dcadcd0caa6fc070f9e1f96e73eb187d2d0ce62f4fb07e840 SHA512 8924663a2d7edb6c4e09a6ced187dd32d842df1549194fbf3f7f642af075aa3403439f729ead8f5775a8d2ac70b20ed7549c3741680461bbdf1379f9df310556
+DIST expandvars-1.1.2.tar.gz 70842 BLAKE2B b1d2ec3cdf18d1406d74ae9d325a153d21d1cb0a94bcc249b641741cc8290617de1a5ce1194f12fa083f7c6f1400bf259f3b17b13745379900e5f6788467aaf7 SHA512 e04a9f5233a960f6e8bc2cedb922ed5f044768bfaf69b6eb7d8dc0d2013d22ae947b0f9c3d50fd83d04d5ebbd845f1b1f6e93bb6881a310a2e31eaf6b9e50fec
diff --git a/dev-python/expandvars/expandvars-1.1.2.ebuild b/dev-python/expandvars/expandvars-1.1.2.ebuild
new file mode 100644
index 000000000000..7370e391e62d
--- /dev/null
+++ b/dev-python/expandvars/expandvars-1.1.2.ebuild
@@ -0,0 +1,22 @@
+# Copyright 2023-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="Expand system variables Unix style"
+HOMEPAGE="
+ https://github.com/sayanarijit/expandvars/
+ https://pypi.org/project/expandvars/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/feedparser/Manifest b/dev-python/feedparser/Manifest
index 4cfb87176dcc..3dcdb0462e1a 100644
--- a/dev-python/feedparser/Manifest
+++ b/dev-python/feedparser/Manifest
@@ -1 +1,2 @@
DIST feedparser-6.0.11.gh.tar.gz 253205 BLAKE2B 390a7e2cc5d8c1d0f5fa0d696990fe319ce61d0e65dc3f4eb6b3d21c3e11e06d1eb9aa48e72f55dd293364be555120e4e71d1673a04dbbade81be0f5c6853d92 SHA512 258e06d6077d92a75a899f0832c28587e52aff62b40b03af42effbeb9d5dc1d282f423fad762cf4ddeb854cf709346cf531e05b73aa753dbed97793981d20a97
+DIST feedparser-6.0.12.gh.tar.gz 253342 BLAKE2B b3147c07c3319d644930face3818d93eb8ba786e0500d7e101c2b54b332488811c76340f033d13cfff39fbdd8126482f31baa27ff4f2b8f0ed1cab7dca9414ac SHA512 147b92f3be728726efb6c0f981c8b8fc0715ffb5e8f07f22ce40c3f9f7b1022f4a02452e2211ca472a27dad3ce5e1460412c7a341518a46becc7d5a3bf13c37f
diff --git a/dev-python/feedparser/feedparser-6.0.12.ebuild b/dev-python/feedparser/feedparser-6.0.12.ebuild
new file mode 100644
index 000000000000..2b630b064af9
--- /dev/null
+++ b/dev-python/feedparser/feedparser-6.0.12.ebuild
@@ -0,0 +1,42 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1
+
+MY_PV=${PV/_beta/b}
+MY_P=${PN}-${MY_PV}
+DESCRIPTION="Parse RSS and Atom feeds in Python"
+HOMEPAGE="
+ https://github.com/kurtmckee/feedparser/
+ https://pypi.org/project/feedparser/
+"
+SRC_URI="
+ https://github.com/kurtmckee/feedparser/archive/v${MY_PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ dev-python/sgmllib3k[${PYTHON_USEDEP}]
+"
+
+src_prepare() {
+ # broken
+ rm \
+ tests/illformed/chardet/{big5,euckr,gb2312,windows1255}.xml \
+ tests/illformed/undeclared_namespace.xml || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ "${EPYTHON}" tests/runtests.py -v || die "Tests failed with ${EPYTHON}"
+}
diff --git a/dev-python/findpython/findpython-0.7.0.ebuild b/dev-python/findpython/findpython-0.7.0.ebuild
index 8bb1f051f4fe..f36da627cd7e 100644
--- a/dev-python/findpython/findpython-0.7.0.ebuild
+++ b/dev-python/findpython/findpython-0.7.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
+KEYWORDS="amd64 ~arm64 ~x86"
RDEPEND="
>=dev-python/packaging-20[${PYTHON_USEDEP}]
diff --git a/dev-python/gherkin-official/Manifest b/dev-python/gherkin-official/Manifest
index 9eaf38cff0a1..7cb9f0c73915 100644
--- a/dev-python/gherkin-official/Manifest
+++ b/dev-python/gherkin-official/Manifest
@@ -1,2 +1,3 @@
DIST gherkin-33.1.0.gh.tar.gz 3855072 BLAKE2B 026dc11c4451e5243dc4ede0108c19162cb29784507095642d4a2599c52143f8a594b6dba21552a4c061f62fccfe71f3ed4bb574453d68e35231f99340876e90 SHA512 176a9e8bf448f07da54a0e35095e40d82ff4a842132ef58052e4451d3ccd3a551d493319c6f44c0148ae2e6dec950e4a0baaffea5aea77c161bafc0970c18f48
DIST gherkin-34.0.0.gh.tar.gz 3879551 BLAKE2B f1f97e9b7aef359ef7fecae6d6c6259e58e2650317d8bfac166ee0c7be60418bc2dbfa6c56aec186c27d4dd712f3c5caec769e0f908d61e54cb3903513a69a1f SHA512 4014a37df26cc5add51a4825a8ef03418560f07e4b9dbd4ccdd461ab6f519a959f6b29e8536b2aea5c5e4c2d53abae106cfefab650eccc1bc1bbbad01ee28d40
+DIST gherkin-35.0.0.gh.tar.gz 3878824 BLAKE2B 226c9b7bb53987a6d506a90d83fad0bdf975f8b23f6e89963d4733011ef3e7e1b69c2569634ce55c7a7b3579159fb12ab6dfc178ea95b74897d4b64f631425fb SHA512 10281954c537d3f03116d612a3123c06576c1ef863985ef73b98bfdb9e1c4e6168dacf4ac04962544d2496e81261abbe8cc625756fe8c540745c60514daffb4a
diff --git a/dev-python/gherkin-official/gherkin-official-35.0.0.ebuild b/dev-python/gherkin-official/gherkin-official-35.0.0.ebuild
new file mode 100644
index 000000000000..8bf417e46f2a
--- /dev/null
+++ b/dev-python/gherkin-official/gherkin-official-35.0.0.ebuild
@@ -0,0 +1,31 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=uv-build
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Gherkin parser/compiler for Python"
+HOMEPAGE="
+ https://github.com/cucumber/gherkin/
+ https://pypi.org/project/gherkin-official/
+"
+SRC_URI="
+ https://github.com/cucumber/gherkin/archive/refs/tags/v${PV}.tar.gz
+ -> gherkin-${PV}.gh.tar.gz
+"
+S=${WORKDIR}/gherkin-${PV}/python
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+RDEPEND="
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/git-review/Manifest b/dev-python/git-review/Manifest
index 7a968f87e8a2..f935e4b2eb68 100644
--- a/dev-python/git-review/Manifest
+++ b/dev-python/git-review/Manifest
@@ -1 +1,3 @@
+DIST gerrit-3.4.4.war 79323317 BLAKE2B 4473e5eef14e8b741a998470a193340c62eb09f239a9ca5bf7372b15638fb2914bbc605b92722221f19ded088bbf2237eb25055217ff1b79e7a0334e9a1feb0b SHA512 bb7d54585d16a3a4c2660d1e4cdfe193164f4f18e24a2d5df147936023a237332b1c1e1e21198c2f4216935e37fd3dc1494a0c1aa41c6dcf6b966f19c9f976ce
DIST git-review-2.4.0.tar.gz 70859 BLAKE2B afe7da3e7efd3c26f55beb102f0961607d818dcdba47beef4f94bf4cbe67bfcdad7cd14bbe6767902f694844ebe94c2b547e9dc4f55f4b0c94e9b292913c3b98 SHA512 24b8b4813933a53158eacaff8b336da1e7c948377cd147487cfccab81c7211c55f8aa8348998bfdf161b4bb9ed107aaa841b643d045498690f75fa18be0aae1f
+DIST git_review-2.5.0.tar.gz 72645 BLAKE2B 55560537d8871e21b264aaddfdeea88cad5941f74fcf09cd6cd857d9aea928c2891367734dff849eca2c1c4da987750c2e092e5fe72c9b82b679b3f8eab959f1 SHA512 568590dbdd97b450341eb76fa3f8da7c7d4f74960221bd4e778cc67b7ef8fb314482da7eb79f2609d9ffa541ac420ed6816fa21b0b685a2ce0037501efae58ac
diff --git a/dev-python/git-review/git-review-2.5.0.ebuild b/dev-python/git-review/git-review-2.5.0.ebuild
new file mode 100644
index 000000000000..fb8a2a2d4401
--- /dev/null
+++ b/dev-python/git-review/git-review-2.5.0.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=setuptools
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1
+
+# see DEFAULT_WAR_URL in tests/__init__.py
+GERRIT_PV=3.4.4
+DESCRIPTION="Tool to submit code to Gerrit"
+HOMEPAGE="https://git.openstack.org/cgit/openstack-infra/git-review"
+if [[ ${PV} == 9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://opendev.org/opendev/${PN}.git"
+else
+ inherit pypi
+ KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux"
+fi
+SRC_URI+="
+ test? (
+ https://gerrit-releases.storage.googleapis.com/gerrit-${GERRIT_PV}.war
+ )
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+
+RDEPEND="
+ >=dev-python/requests-1.1[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ >=dev-python/pbr-4.1.0[${PYTHON_USEDEP}]
+ test? (
+ virtual/jre:*
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ distutils-r1_python_prepare_all
+ sed -i -e '/manpages/,+1d' setup.cfg || die
+
+ if use test; then
+ mkdir .gerrit || die
+ cp "${DISTDIR}/gerrit-${GERRIT_PV}.war" .gerrit/ || die
+ fi
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # changed message in git
+ git_review/tests/test_git_review.py::GitReviewTestCase::test_need_rebase_no_upload
+ git_review/tests/test_git_review.py::HttpGitReviewTestCase::test_need_rebase_no_upload
+ git_review/tests/test_git_review.py::PushUrlTestCase::test_need_rebase_no_upload
+ )
+
+ if [[ ! -d .gerrit/golden_site ]]; then
+ "${EPYTHON}" -m git_review.tests.prepare || die
+ git init || die
+ fi
+ epytest
+}
+
+python_install_all() {
+ doman git-review.1
+
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/git-review/git-review-9999.ebuild b/dev-python/git-review/git-review-9999.ebuild
index 191444d0e570..fb8a2a2d4401 100644
--- a/dev-python/git-review/git-review-9999.ebuild
+++ b/dev-python/git-review/git-review-9999.ebuild
@@ -1,14 +1,15 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_USE_PEP517=setuptools
-PYPI_NO_NORMALIZE=1
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_COMPAT=( python3_{11..14} )
inherit distutils-r1
+# see DEFAULT_WAR_URL in tests/__init__.py
+GERRIT_PV=3.4.4
DESCRIPTION="Tool to submit code to Gerrit"
HOMEPAGE="https://git.openstack.org/cgit/openstack-infra/git-review"
if [[ ${PV} == 9999* ]]; then
@@ -18,20 +19,51 @@ else
inherit pypi
KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux"
fi
+SRC_URI+="
+ test? (
+ https://gerrit-releases.storage.googleapis.com/gerrit-${GERRIT_PV}.war
+ )
+"
LICENSE="Apache-2.0"
SLOT="0"
-BDEPEND="
- >=dev-python/pbr-4.1.0[${PYTHON_USEDEP}]
-"
RDEPEND="
>=dev-python/requests-1.1[${PYTHON_USEDEP}]
"
+BDEPEND="
+ >=dev-python/pbr-4.1.0[${PYTHON_USEDEP}]
+ test? (
+ virtual/jre:*
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
python_prepare_all() {
- sed -i -e '/manpages/,+1d' setup.cfg || die
distutils-r1_python_prepare_all
+ sed -i -e '/manpages/,+1d' setup.cfg || die
+
+ if use test; then
+ mkdir .gerrit || die
+ cp "${DISTDIR}/gerrit-${GERRIT_PV}.war" .gerrit/ || die
+ fi
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # changed message in git
+ git_review/tests/test_git_review.py::GitReviewTestCase::test_need_rebase_no_upload
+ git_review/tests/test_git_review.py::HttpGitReviewTestCase::test_need_rebase_no_upload
+ git_review/tests/test_git_review.py::PushUrlTestCase::test_need_rebase_no_upload
+ )
+
+ if [[ ! -d .gerrit/golden_site ]]; then
+ "${EPYTHON}" -m git_review.tests.prepare || die
+ git init || die
+ fi
+ epytest
}
python_install_all() {
diff --git a/dev-python/gpgmepy/gpgmepy-2.0.0-r1.ebuild b/dev-python/gpgmepy/gpgmepy-2.0.0-r1.ebuild
index 808ff519cb67..f87125f00d88 100644
--- a/dev-python/gpgmepy/gpgmepy-2.0.0-r1.ebuild
+++ b/dev-python/gpgmepy/gpgmepy-2.0.0-r1.ebuild
@@ -14,7 +14,7 @@ SRC_URI="mirror://gnupg/${PN}/${P}.tar.bz2"
LICENSE="LGPL-2.1+ test? ( GPL-2+ )"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/greenlet/greenlet-3.2.4.ebuild b/dev-python/greenlet/greenlet-3.2.4.ebuild
index c0b59f9296fd..ee741429ae4d 100644
--- a/dev-python/greenlet/greenlet-3.2.4.ebuild
+++ b/dev-python/greenlet/greenlet-3.2.4.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="MIT PSF-2"
SLOT="0"
-KEYWORDS="~alpha amd64 arm ~arm64 -hppa ~m68k ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 -hppa ~m68k ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/hcloud/Manifest b/dev-python/hcloud/Manifest
index 48c855a09a06..5a4fdea4b0c2 100644
--- a/dev-python/hcloud/Manifest
+++ b/dev-python/hcloud/Manifest
@@ -1 +1,2 @@
DIST hcloud-python-2.5.4.gh.tar.gz 123092 BLAKE2B 0b5f9ae2c7c3d67c902e2d8b4d8915512eb253742ec49472d35183e7560dd96fd8c877c302b3d207a9ffe9650fefa6981a49519ea3256d3e18cf0c483a5e83bc SHA512 c824425e6d7be48b47fcc647a56c60bdfce18736fc4d0cfcc93f5a58e3b60f8cf1f28e892c27044c564eca7609c5c6a4a7d36070926be4104f012c422539a2a9
+DIST hcloud-python-2.6.0.gh.tar.gz 122385 BLAKE2B d9b753f8483e1ee799d8fb08dcdb54096f7ddaff8ecab02ee8bac09996dd25bcaf1d6b2c3a63dd14d663833e1eb8212983252454000bef79e0faef999bb1576b SHA512 e913b90b8b279cdcd90bb2d698196eb413151c5dda16eb5ec8a3fb7c4d8eadb30e85b7e4b7458c121a130d6c2faad802f52daf81babfd8bc7d80bc2d6fad13bb
diff --git a/dev-python/hcloud/hcloud-2.6.0.ebuild b/dev-python/hcloud/hcloud-2.6.0.ebuild
new file mode 100644
index 000000000000..9c2cd55dbc9d
--- /dev/null
+++ b/dev-python/hcloud/hcloud-2.6.0.ebuild
@@ -0,0 +1,51 @@
+# 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_{11..14} )
+
+inherit distutils-r1
+
+MY_P=hcloud-python-${PV}
+DESCRIPTION="Official Hetzner Cloud python library"
+HOMEPAGE="
+ https://github.com/hetznercloud/hcloud-python/
+ https://pypi.org/project/hcloud/
+"
+# sdist is missing doc assets as of 1.19.0
+# https://github.com/hetznercloud/hcloud-python/pull/183
+SRC_URI="
+ https://github.com/hetznercloud/hcloud-python/archive/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="examples"
+
+RDEPEND="
+ >=dev-python/python-dateutil-2.7.5[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.20[${PYTHON_USEDEP}]
+"
+
+distutils_enable_sphinx docs \
+ dev-python/myst-parser \
+ dev-python/sphinx-rtd-theme
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+EPYTEST_IGNORE=(
+ # Integration tests need docker:
+ # https://github.com/hetznercloud/hcloud-python/blob/master/.travis.yml#L16
+ tests/integration
+)
+
+python_install_all() {
+ use examples && dodoc -r examples
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/hypothesis/Manifest b/dev-python/hypothesis/Manifest
index 63d782354fb8..ab46c382726b 100644
--- a/dev-python/hypothesis/Manifest
+++ b/dev-python/hypothesis/Manifest
@@ -5,3 +5,5 @@ DIST hypothesis-6.137.3.gh.tar.gz 9612265 BLAKE2B bc0c98872b08013194a11cad69e076
DIST hypothesis-6.138.11.gh.tar.gz 9621956 BLAKE2B d34c0a090720e4e7dac54a6726d42364ee80e23ada78f75e1fc3e1061a07a03eb16fa2832c850b88b773afcdbe8eea06f9539d5563dd284145cf38219050c340 SHA512 dea6a341d515d3372851d70caa518ceee78a658c58a11a5a830aeacc7c262ecba4ad676d3ce297cdd8dd7463830a17f6aaccd64d704887b2ced426377c316170
DIST hypothesis-6.138.13.gh.tar.gz 9622656 BLAKE2B a9f834b0be3b003a482aa1a327eeff5599236bb765a4c25dfb5408e354062fa5b0c0cedefee527fba439d9c944f3f842f72ca60eb94f596a13a5a8e0bf9f9c8d SHA512 336f4ab84d512efd0341608ffcfae7348b64b38bb88a0a4a7c4aa2756e0013bec188d2b44d1f80e25d4050dd2adbad6aa20ee6c4757a0533888c613d4d59ce8c
DIST hypothesis-6.138.14.gh.tar.gz 9622789 BLAKE2B b982031224ba8c800a3b17bde04305db7c979d7e80839d3935ee4383f1900ef8b176722a1ed27b2889336e22eb140cb9c21de5b014345274d70093c9c7d6b5b9 SHA512 11a263e950d2bd51feb219e20423be5ac550d6a2c0a81d3f42d3a347ba8b5e569cb1652725c914219050d860c3f6c301226766416e79f0ee37e531f2a8673de3
+DIST hypothesis-6.138.15.gh.tar.gz 9622869 BLAKE2B 0192a1eeb3944fd3fd031f80b6cc039ae89916a9197294e27d5ad2684a77652894d27f9cc4c98c6abd20ef811b110d8e37dcd83e45beaf2dba84c8913fc0f7c9 SHA512 5c36c74444828dfc9c10a493959fd58fceceb12a236a4f9e2107eaa5b0413639d970abc3053efbe18f3e030220f1dc0bd0ca327ebfed59069862b969a599a5f5
+DIST hypothesis-6.138.16.gh.tar.gz 9622785 BLAKE2B 2092fb0131942f1e28145b92553b692281b3dcb79c68175c1649d2f31c5170acf009662f9ec52a9a288fcbe428af0ec285f13761db2de624fc67b0832c720374 SHA512 fe607d96b216d19753a1cb0c46729f2547d7d790d437e1a02be3b089cb29920a5e819683105523a2b024c6692b1ed7849b705b25458cc1d655b0370451e5c0d9
diff --git a/dev-python/hypothesis/hypothesis-6.138.15.ebuild b/dev-python/hypothesis/hypothesis-6.138.15.ebuild
new file mode 100644
index 000000000000..7a7443937da6
--- /dev/null
+++ b/dev-python/hypothesis/hypothesis-6.138.15.ebuild
@@ -0,0 +1,125 @@
+# 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}]
+ )
+"
+PDEPEND="
+ dev-python/hypothesis-gentoo[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGIN_LOAD_VIA_ENV=1
+EPYTEST_PLUGINS=( "${PN}" pytest-xdist )
+EPYTEST_RERUNS=5
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ # 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
+
+ local -x HYPOTHESIS_NO_PLUGINS=1
+ epytest -o filterwarnings= tests/{cover,pytest,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/hypothesis/hypothesis-6.138.16.ebuild b/dev-python/hypothesis/hypothesis-6.138.16.ebuild
new file mode 100644
index 000000000000..7a7443937da6
--- /dev/null
+++ b/dev-python/hypothesis/hypothesis-6.138.16.ebuild
@@ -0,0 +1,125 @@
+# 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}]
+ )
+"
+PDEPEND="
+ dev-python/hypothesis-gentoo[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGIN_LOAD_VIA_ENV=1
+EPYTEST_PLUGINS=( "${PN}" pytest-xdist )
+EPYTEST_RERUNS=5
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ # 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
+
+ local -x HYPOTHESIS_NO_PLUGINS=1
+ epytest -o filterwarnings= tests/{cover,pytest,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/ipykernel/ipykernel-6.30.1.ebuild b/dev-python/ipykernel/ipykernel-6.30.1.ebuild
index d0e3b51ea8d0..6d9984c4b9ed 100644
--- a/dev-python/ipykernel/ipykernel-6.30.1.ebuild
+++ b/dev-python/ipykernel/ipykernel-6.30.1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
RDEPEND="
>=dev-python/comm-0.1.1[${PYTHON_USEDEP}]
diff --git a/dev-python/ipython/Manifest b/dev-python/ipython/Manifest
index 4a78da73332c..8a997ad12f03 100644
--- a/dev-python/ipython/Manifest
+++ b/dev-python/ipython/Manifest
@@ -1,3 +1,4 @@
DIST ipython-8.37.0.tar.gz 5606088 BLAKE2B 4cb3a6ae801fcbbf352eb8aaae11a7bc6911a76a816e1ce8845a6f3044fbb888cf49dc7c5a500305da47497ec2341a7abf6ad5fff863dd9175bf6eae2f03f7a8 SHA512 bde7b6962ca59688cb9f1032a2735df428dec41ec531b98488a5a35ef67c09a375973537c10bef7574ad112f3396b056f8a4f754b63712b72b0f9f20ab052623
DIST ipython-9.3.0.tar.gz 4426460 BLAKE2B d9d6ec38ab7ee2c4128869cd6fa0518c5df8ed3f3eb1db531099ff753b959a2eb1d872b5c782a017b2f559b460c0121cb951893c54f842cb936f08022eb32325 SHA512 21bd98e7f164bdbb799e0316c56620b0d086af943e28fa43f5d1f4c31064e496b01b47babcf0be4282d12d446362a7c0945a29580078279dc3038c66e8e75cf6
DIST ipython-9.4.0.tar.gz 4385338 BLAKE2B 20bf17c945ab2c727aa340a500e2f452dadd440ff809e5aea2ebaa0bd146a6bf2103f2435549a0f4b898690e6aceb15850fc2ba92bb9b94d8e084b1f13cb17a1 SHA512 8e0bd35effa6b5d6d17b7903ae708f1db753717b2271c79b6662fc508e003a7b3b510604ed340e6e89a8c84abf7c3718f785eb39d0914b653c47adc999a1d2f4
+DIST ipython-9.5.0.tar.gz 4389137 BLAKE2B c9d0cccac9a7a0711425e74ecfde8bdb7789d8289d58d86dccaddd06c1012f4c5f94aedf444f8b6c313d04f7617c5d9adc191d7b25426d8f70622435207acbe5 SHA512 fddf470a03ed94dfe2e193dce0d7228bd1143706ce1cd189348d6778eb7d1650a1589e49bc050214337b5fd9c30e7f1d91f871bc0d4a0a04d1a227747a81a132
diff --git a/dev-python/ipython/files/ipython-9.5.0-assert.patch b/dev-python/ipython/files/ipython-9.5.0-assert.patch
new file mode 100644
index 000000000000..dc5f40207f97
--- /dev/null
+++ b/dev-python/ipython/files/ipython-9.5.0-assert.patch
@@ -0,0 +1,88 @@
+From 9e1f15f0b7e354daff8cb8ce9eba2b4f11d48c71 Mon Sep 17 00:00:00 2001
+From: Stephen Macke <stephen.macke@databricks.com>
+Date: Sat, 30 Aug 2025 21:35:56 -0700
+Subject: [PATCH] deduperreload should patch NULL for empty closure rather than
+ None
+
+---
+ .../deduperreload/deduperreload_patching.py | 34 +++++++++----------
+ 1 file changed, 17 insertions(+), 17 deletions(-)
+
+diff --git a/IPython/extensions/deduperreload/deduperreload_patching.py b/IPython/extensions/deduperreload/deduperreload_patching.py
+index a8b53e68e78..36ee103a8e4 100644
+--- a/IPython/extensions/deduperreload/deduperreload_patching.py
++++ b/IPython/extensions/deduperreload/deduperreload_patching.py
+@@ -4,6 +4,7 @@
+ from typing import Any
+
+ NOT_FOUND: object = object()
++NULL: object = object()
+ _MAX_FIELD_SEARCH_OFFSET = 50
+
+ if sys.maxsize > 2**32:
+@@ -55,12 +56,17 @@ def try_write_readonly_attr(
+ if offset == -1:
+ return
+ obj_addr = ctypes.c_void_p.from_buffer(ctypes.py_object(obj)).value
+- new_value_addr = ctypes.c_void_p.from_buffer(ctypes.py_object(new_value)).value
++ if new_value is NULL:
++ new_value_addr: int | None = 0
++ else:
++ new_value_addr = ctypes.c_void_p.from_buffer(
++ ctypes.py_object(new_value)
++ ).value
+ if obj_addr is None or new_value_addr is None:
+ return
+ if prev_value is not None:
+ ctypes.pythonapi.Py_DecRef(ctypes.py_object(prev_value))
+- if new_value is not None:
++ if new_value not in (None, NULL):
+ ctypes.pythonapi.Py_IncRef(ctypes.py_object(new_value))
+ ctypes.cast(
+ obj_addr + WORD_N_BYTES * offset, ctypes.POINTER(WORD_TYPE)
+@@ -108,12 +114,10 @@ def try_patch_attr(
+ def patch_function(
+ cls, to_patch_to: Any, to_patch_from: Any, is_method: bool
+ ) -> None:
+- new_freevars = []
+ new_closure = []
+ for freevar, closure_val in zip(
+ to_patch_from.__code__.co_freevars or [], to_patch_from.__closure__ or []
+ ):
+- new_freevars.append(freevar)
+ if (
+ callable(closure_val.cell_contents)
+ and freevar in to_patch_to.__code__.co_freevars
+@@ -125,23 +129,19 @@ def patch_function(
+ )
+ else:
+ new_closure.append(closure_val)
+- code_with_new_freevars = to_patch_from.__code__.replace(
+- co_freevars=tuple(new_freevars)
+- )
+ # lambdas may complain if there is more than one freevar
+- cls.try_patch_attr(
+- to_patch_to, code_with_new_freevars, "__code__", new_is_value=True
+- )
++ cls.try_patch_attr(to_patch_to, to_patch_from, "__code__")
+ offset = -1
+ if to_patch_to.__closure__ is None and to_patch_from.__closure__ is not None:
+ offset = cls.infer_field_offset(to_patch_from, "__closure__")
+- cls.try_patch_readonly_attr(
+- to_patch_to,
+- tuple(new_closure) or None,
+- "__closure__",
+- new_is_value=True,
+- offset=offset,
+- )
++ if to_patch_to.__closure__ is not None or to_patch_from.__closure__ is not None:
++ cls.try_patch_readonly_attr(
++ to_patch_to,
++ tuple(new_closure) or NULL,
++ "__closure__",
++ new_is_value=True,
++ offset=offset,
++ )
+ for attr in ("__defaults__", "__kwdefaults__", "__doc__", "__dict__"):
+ cls.try_patch_attr(to_patch_to, to_patch_from, attr)
+ if is_method:
diff --git a/dev-python/ipython/ipython-9.5.0.ebuild b/dev-python/ipython/ipython-9.5.0.ebuild
new file mode 100644
index 000000000000..e41c56069c9c
--- /dev/null
+++ b/dev-python/ipython/ipython-9.5.0.ebuild
@@ -0,0 +1,155 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=standalone
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_REQ_USE='readline(+),sqlite,threads(+)'
+
+inherit distutils-r1 optfeature pypi virtualx
+
+DESCRIPTION="Advanced interactive shell for Python"
+HOMEPAGE="
+ https://ipython.org/
+ https://github.com/ipython/ipython/
+ https://pypi.org/project/ipython/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="examples gui notebook nbconvert +smp test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ dev-python/decorator[${PYTHON_USEDEP}]
+ dev-python/ipython-pygments-lexers[${PYTHON_USEDEP}]
+ >=dev-python/jedi-0.16[${PYTHON_USEDEP}]
+ dev-python/matplotlib-inline[${PYTHON_USEDEP}]
+ >=dev-python/pexpect-4.3[${PYTHON_USEDEP}]
+ >=dev-python/prompt-toolkit-3.0.41[${PYTHON_USEDEP}]
+ <dev-python/prompt-toolkit-3.1[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.4.0[${PYTHON_USEDEP}]
+ dev-python/stack-data[${PYTHON_USEDEP}]
+ >=dev-python/traitlets-5.13.0[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+ ' 3.11)
+"
+
+BDEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ test? (
+ app-text/dvipng[truetype]
+ >=dev-python/ipykernel-5.1.0[${PYTHON_USEDEP}]
+ >=dev-python/matplotlib-3.9[${PYTHON_USEDEP}]
+ dev-python/nbformat[${PYTHON_USEDEP}]
+ >=dev-python/numpy-1.23[${PYTHON_USEDEP}]
+ dev-python/matplotlib-inline[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/pickleshare[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/testpath[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-asyncio )
+distutils_enable_tests pytest
+
+RDEPEND+="
+ nbconvert? (
+ dev-python/nbconvert[${PYTHON_USEDEP}]
+ )
+"
+PDEPEND="
+ $(python_gen_cond_dep '
+ gui? ( dev-python/qtconsole[${PYTHON_USEDEP}] )
+ ' 'python*')
+ $(python_gen_cond_dep '
+ notebook? (
+ dev-python/notebook[${PYTHON_USEDEP}]
+ dev-python/ipywidgets[${PYTHON_USEDEP}]
+ dev-python/widgetsnbextension[${PYTHON_USEDEP}]
+ )
+ ' 3.{11..13})
+ smp? (
+ >=dev-python/ipykernel-5.1.0[${PYTHON_USEDEP}]
+ >=dev-python/ipyparallel-6.2.3[${PYTHON_USEDEP}]
+ )
+"
+
+python_prepare_all() {
+ local PATCHES=(
+ # https://github.com/ipython/ipython/pull/14978
+ "${FILESDIR}/${P}-assert.patch"
+ )
+
+ # Rename the test directory to reduce sys.path pollution
+ # https://github.com/ipython/ipython/issues/12892
+ mv IPython/extensions/{,ipython_}tests || die
+
+ distutils-r1_python_prepare_all
+}
+
+src_test() {
+ virtx distutils-r1_src_test
+}
+
+python_test() {
+ local -x IPYTHON_TESTING_TIMEOUT_SCALE=20
+ local EPYTEST_DESELECT=()
+
+ case ${EPYTHON} in
+ pypy3*)
+ EPYTEST_DESELECT+=(
+ # https://github.com/ipython/ipython/issues/14244
+ tests/test_display.py::TestAudioDataWithoutNumpy
+ # minor exception message mismatch
+ # https://github.com/ipython/ipython/issues/14976
+ tests/test_ultratb.py::ExceptionMessagePreferenceTest::test_jsondecodeerror_message
+ )
+ ;;
+ esac
+
+ # nonfatal implied by virtx
+ nonfatal epytest || die "Tests failed on ${EPYTHON}"
+}
+
+python_install() {
+ distutils-r1_python_install
+
+ # Create ipythonX.Y symlinks.
+ # TODO:
+ # 1. do we want them for pypy?
+ # 2. handle it in the eclass instead (use _python_ln_rel).
+ # With pypy not an option the dosym becomes unconditional
+ # TODO2: figure out what TODO meant.
+ dosym ../lib/python-exec/${EPYTHON}/ipython \
+ /usr/bin/ipython${EPYTHON#python}
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+
+ if use examples; then
+ dodoc -r examples
+ docompress -x /usr/share/doc/${PF}/examples
+ fi
+}
+
+pkg_postinst() {
+ optfeature "code formatting" dev-python/black
+ optfeature "sympyprinting" dev-python/sympy
+ optfeature "cythonmagic" dev-python/cython
+ optfeature "%lprun magic command" dev-python/line-profiler
+ optfeature "%matplotlib magic command" dev-python/matplotlib-inline
+
+ if use nbconvert; then
+ if ! has_version virtual/pandoc ; then
+ einfo "Node.js will be used to convert notebooks to other formats"
+ einfo "like HTML. Support for that is still experimental. If you"
+ einfo "encounter any problems, please use app-text/pandoc instead."
+ fi
+ fi
+}
diff --git a/dev-python/isal/Manifest b/dev-python/isal/Manifest
index b8491670e1fa..e59a88efccce 100644
--- a/dev-python/isal/Manifest
+++ b/dev-python/isal/Manifest
@@ -1 +1,2 @@
+DIST isal-1.8.0.tar.gz 4133365 BLAKE2B cd098d34932729ca734b06580e75a8d5001e69deee9f2ad0b5fffaca05e23c34d44d4c2e8cd543afda6b200b2dba304b25c3a177ebe32706d0eeabbfdef3c954 SHA512 9508b3ac9d7ef61935da7333655a6e83517cbf1018438d4aec4afdd187a37b8e9725a5a97b611181df60bf19733f1ed0b1ac7310bc01ca37edf1cdeaaa932ce8
DIST python-isal-1.7.2.gh.tar.gz 3396847 BLAKE2B a92f2fb3bbf3786d0fdb15cf838d71dc9ae3f4870a50a6280ee31cd9f8277d603e144dd9af18d24eb98070f8368897ab2d3b7853b9a48dafbb5733c8851652be SHA512 0c97a2ec72428d522d3afd3fc109183600c33f42328c71cc78c7c4e376d4c9a8fef5287830653b280712f8a5d67f46f4088f8deb1edfb57b6f4385dcc8744d52
diff --git a/dev-python/isal/isal-1.8.0.ebuild b/dev-python/isal/isal-1.8.0.ebuild
new file mode 100644
index 000000000000..742964d954db
--- /dev/null
+++ b/dev-python/isal/isal-1.8.0.ebuild
@@ -0,0 +1,43 @@
+# Copyright 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="Faster zlib and gzip via the ISA-L library"
+HOMEPAGE="
+ https://github.com/pycompression/python-isal/
+ https://pypi.org/project/isal/
+"
+
+LICENSE="PSF-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+DEPEND="
+ dev-libs/isa-l:=
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ dev-python/test[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+# incompatible with xdist
+distutils_enable_tests pytest
+
+export PYTHON_ISAL_LINK_DYNAMIC=1
+
+python_test() {
+ epytest tests
+}
diff --git a/dev-python/josepy/Manifest b/dev-python/josepy/Manifest
index 31513746c3b9..fc2bdb481e43 100644
--- a/dev-python/josepy/Manifest
+++ b/dev-python/josepy/Manifest
@@ -1,2 +1,2 @@
-DIST josepy-1.15.0.tar.gz 59310 BLAKE2B e47d6cc49d482a60d3856cbe81ca44770019f91e8de416f63162600e0024e635fa3a3b2f1bbb3b16d0273ab4673d89d4c186ed67bac2017bf0b43992613a3802 SHA512 92799e9230f64e7ef37c749cb68c293d1b97e2e14c94e045564e45402ff3363af4cca95a7bbf599821cf7ad9317ca31add6868d3bdb3699ee9c171b415a02e48
DIST josepy-2.0.0.tar.gz 55767 BLAKE2B 7e8692f209a3fc8eebdbf9e8a92b7065d9ff08121490abe5e61a85efeef3cc5a55ae547d28bbbfcd31faa81293e1abbaa90dfadfb3d3c08b82ba9958c4556df7 SHA512 fa1e255cd5f75b352faa0e25e530a5620af09c518cd1570f9bdc7cb5520fea119279577e95f7fe72bc2bc6f0b543411d2fffb0d639c961094fe311c0bbca1fef
+DIST josepy-2.1.0.tar.gz 56189 BLAKE2B 4fa2fe535612b8683ec65c27ed18c3a8ddba635851d73c8b18ebed0901562374236c21abecb3588520ec4ab2ec34a8d3e92b2ef127f7cf6f7f01e7f48d1da8ec SHA512 fe941cc55a8f355512d8ae1ecfacb7cff7bc122bb2a50841293832af8b95afdcf0d296e69eb0554539eda7c4148acc6421843c0a15b0238bd714d5d40c8a0f41
diff --git a/dev-python/josepy/josepy-1.15.0.ebuild b/dev-python/josepy/josepy-2.1.0.ebuild
index 6ee219ed3112..0956266de2ab 100644
--- a/dev-python/josepy/josepy-1.15.0.ebuild
+++ b/dev-python/josepy/josepy-2.1.0.ebuild
@@ -4,7 +4,7 @@
EAPI=8
DISTUTILS_USE_PEP517=poetry
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_COMPAT=( python3_{10..14} )
inherit distutils-r1 pypi
@@ -16,13 +16,15 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~ppc64 ~riscv x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
RDEPEND="
>=dev-python/cryptography-1.5[${PYTHON_USEDEP}]
- >=dev-python/pyopenssl-0.13[${PYTHON_USEDEP}]
"
+distutils_enable_sphinx docs \
+ '>=dev-python/sphinx-4.3.0' \
+ '>=dev-python/sphinx-rtd-theme-1.0'
distutils_enable_tests pytest
src_prepare() {
diff --git a/dev-python/kaitaistruct/Manifest b/dev-python/kaitaistruct/Manifest
index 2fbcf9d70238..b21cd705075a 100644
--- a/dev-python/kaitaistruct/Manifest
+++ b/dev-python/kaitaistruct/Manifest
@@ -1 +1,3 @@
DIST kaitaistruct-0.10.tar.gz 7061 BLAKE2B 2d1f8c00415d43223b53c51ca185d79c8fdd9bbb1e512d2e3b8b800b5e7f52e90c35b869d8f82a116f15cc1f1222c41a62a01d07a7f62c567a4d7a82c0657d52 SHA512 b4db8b67fe5dd310121ecfad6db79d424e2bd7308b5ae2cc1cdbcd73538533b5bbe4047b71e2ff65d8109b213ad0a5b88a96cd593b08f910ea6ae9bf3c4cbfac
+DIST kaitaistruct-0.11.tar.gz 11519 BLAKE2B fbed920167f5492176437529c9feb119f82674de1fff5f6c9df9148abf5c273708b417038490f55e0dc8b3be2b59182efb289bea035bf881323679c4a9105573 SHA512 4abcd0a801d134dd49f950ee0d920151c48c3b2b859f251b50d525c995e83e824ebf0fe02e7f6e576406f383921ba60d5ea764dacb6ae4162683d48c118bd090
+DIST kaitaistruct-0.11.tar.gz.provenance 9944 BLAKE2B 85b60cfcd39142709254614f0e093bb6b2a4871c65d16d8a86e129e8d71117f327ba23417cb7396addb665b241a11d3532c2f42b67288b2a64b09fb146827b3e SHA512 baf7d122150798744f97c42b66b0685183e9e9d24cb809b83b4174616e2990b7980db9f22211b053981d4299da071b25a653599f8a1807cb12842a2332046032
diff --git a/dev-python/kaitaistruct/kaitaistruct-0.11.ebuild b/dev-python/kaitaistruct/kaitaistruct-0.11.ebuild
new file mode 100644
index 000000000000..b2fe1fe777c6
--- /dev/null
+++ b/dev-python/kaitaistruct/kaitaistruct-0.11.ebuild
@@ -0,0 +1,21 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_VERIFY_REPO=https://github.com/kaitai-io/kaitai_struct_python_runtime
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Kaitai Struct runtime for Python"
+HOMEPAGE="
+ https://kaitai.io/
+ https://github.com/kaitai-io/kaitai_struct_python_runtime/
+ https://pypi.org/project/kaitaistruct/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
diff --git a/dev-python/libcst/Manifest b/dev-python/libcst/Manifest
index 7ff1e75457e4..9a4284a9fbad 100644
--- a/dev-python/libcst/Manifest
+++ b/dev-python/libcst/Manifest
@@ -33,6 +33,7 @@ DIST itoa-1.0.2.crate 11112 BLAKE2B e277db8e2f506d4d20b6888b609d9726d594e1cb2c9f
DIST js-sys-0.3.77.crate 55538 BLAKE2B 8a4c04a8e93bf5dab63784a24320a314cc5cb629df788e116c452857b8c049c6bf357f3bf8f35086eaa81bc2d7f0954001addfd0577d845844871ee138e81bc6 SHA512 d9370ed6ea892bd51ea181630ca661c348f82d575381aa4c8b529113dfcab6687f4d19bceecad7e1b28ebaca74d405862150a5b5ee2d5d55efdaf98eed1ab255
DIST libc-0.2.149.crate 715592 BLAKE2B 21dd5d4f9351f3c75790077c7b025046db665f2d48d7a72cda7667bc60febf79d82708cf7d39a323a594397cd590bd3d2a2f85349b4473b90ea4da918382ed0a SHA512 0def64d400d473d6eed30e985522d36801ee6472b15f90e74dc4592e0a8ffbaf30b731be280de52b30255cf60aeca8efe817b67049227dc7000c807e007d7289
DIST libcst-1.8.2.tar.gz 881534 BLAKE2B e68e0af99c3db0e1280529bce2dacccea5c01a5d19635d195c13c128c8f485d8e4ac621de34f51a25daaa342aee58c5d0af238affb674a30465deabceda654ed SHA512 dd501de64e13dcb6cbfa4ebe8c89513cf8b2d27fa97d34b02553c1462c3052bc65253cf55a1bce1124e87108bdc834f7e7f5bc1180217a678304efa1130e2a3e
+DIST libcst-1.8.4.tar.gz 884416 BLAKE2B e633723a4c59fdee07f27e51fd161971aa69f99c087613a016205c43eadb75e54078a233a0f0350eb514bc8d77463eac8f450ba752c6c8b037e03863a3f2f465 SHA512 3d6f96d75e05853c92e1ee10a146d86b405f0d3286049f7676c6f7b81f6bd0c3de8b9e7948f4a589748187d76b04a5759a1e14627e47f067d8df2e56195054ec
DIST log-0.4.17.crate 38028 BLAKE2B b46be3719fc0a53e50b1f342762e188587e9f1ceb692c72473ce2663edfb8253742d30024e68c1444780ab7fc0e2d5b0601b8ea7228dc3405a9342a57548e605 SHA512 2477d88db42b1d92c30708d88823212e236f613b3465e85eb425f83f8d16fadfaf0352f06c2999a1852102edd2f6ffb10ecb539d8a3b6c48f552a25622ccffa2
DIST memchr-2.7.4.crate 96670 BLAKE2B da38114beca670467c3e1fbf4e415af6f22d52e3223715d52e181babb89b872b46511563985bcc16d7ff4e82f812c6e83ad904b0fe2501b14445119dfa8240e6 SHA512 8d0e8b9c30208897d4b1b920f1bdcccd0c2b75d92a06abe4a1b2407938768abb6487d63de56c6a80419798fe69517210643dfaf11f5f5540185f0eccf220adb2
DIST memoffset-0.6.5.crate 7686 BLAKE2B 9a797388702389076c426052c3d54dc62802d5db8bc5c9c83990429f2ffaec4fab4c7dd3f09cd0704d1ea555e87976563bb43408ba54b5e66ce7e406d4604009 SHA512 11bdd9185b99dfee8e659e051b09ee301c7142a372a8117864745a5085c015436d2efbb1478192886f09cbc562529e209d2e3325d94938a64bc75b1d91d2bf3f
@@ -50,14 +51,22 @@ DIST plotters-svg-0.3.7.crate 6715 BLAKE2B 1437ad7e1c1b3e82ab1f58660ff6931e510f6
DIST portable-atomic-1.4.3.crate 126291 BLAKE2B 08fbfd391c9eb55c02b8345549a57fb5c3b8cfcd81e3867ca49cba94faa7b2d372e4f2996fbef4a52742d852b117d4b7cc488571df7272b93caf47a9a2680c46 SHA512 89f14902c1e55c37d7663bc9255378441a0951e5d8e21665a8102e06b766135cec6d982f9ed01b4167e872a7853102ad0e9347e9b163ea81d81b00ee2362e9a0
DIST proc-macro2-1.0.95.crate 51820 BLAKE2B 93229d80556ec03bce4031607d13c7902cacc2d7e2586a692ffe8543d52e3f3ba253c9c311ddedf6d9348ce8758ae8ff64577675cda2dac557f936a328de47e3 SHA512 f78e4d47ecd29c1b2315554705e445507bbfb9449afd0bf1b74df28f266ac6382ca8c3ce135ddc55c989eaee64d1794a0933a941c8ff55f543fa21c400016547
DIST pyo3-0.25.0.crate 1120850 BLAKE2B 6f373129d032e6980d058ec5dbfea58a7ce0cb8ed2b32aa852a14746cfd3a541b02286676c934a5d7f7bc1bea03e986e93e44de42114f7620b487977c0092d85 SHA512 83336d284eefdef5bc26dec4880e21c608a001b4676b3628eb59b7c0011fb672ca81fca035666b714eeb158809064f9b5b0720802045d5ff8fc9f6af02813c30
+DIST pyo3-0.25.1.crate 1121993 BLAKE2B 79a982131fc4c4f9292e97bc8d938d236ee9cefb99bb90646a84703660ad506aee8ae1f1e626d985aa62c695722510f2697544581fa5c3a01f193be2bc2779fe SHA512 9c842c89d274dba0c8a3085a8524736245d65f07e5c05bc13fc89167cfdeb1a4ff2b4a9da9467eee918e45d01777473f39bda11efe0052859969d4fdeac1adc6
DIST pyo3-build-config-0.25.0.crate 34122 BLAKE2B ba098ff1c963c43d0cd1fdfaec43573ee0d9afff7cc010b7b371504ab66e1fec9233bab04c8c7656c382366d622589d0d5e865a8a271c68a9831ca657b49fcb9 SHA512 f6580bcc12bf8235bd8bdc09908f861645adfcdee31cf88d6443e628601bf3107c1d823c09dacb8e1bdaa171ae49f15e19811b9752600b799a4e86cdea081d40
+DIST pyo3-build-config-0.25.1.crate 34126 BLAKE2B ca905f1f74e26f38ab63a4f5754055c9dff01f9396f81ece09b7ce067181b657e6746db3b373f7177805f6564d0df0db064b5fcab8160d5edc357e64dd32d0fc SHA512 d6fe4a46111188203a839c8c73b9835f98cd6bc5982868cbcc9f502c5a09b35c3e61117b50ef8372470051b5bc4959731907748ffca89f42f300a3081b7b0467
DIST pyo3-ffi-0.25.0.crate 77991 BLAKE2B 0474051570bf71070eab2578e0f9278327ccc48510419d292a81887fffad753ba434db6b795536512a688426eff42ea9805f99b1a3237ec927f6c731033850b2 SHA512 e03cb71493c898408a0692ba7fb4cd704e48c307f5115159f3375fae879e46f5cd7536325d70e7dbd3aeca8ea282a0fb5b5ac609bc807e8b9cb6abbd3a9a2ca5
+DIST pyo3-ffi-0.25.1.crate 78058 BLAKE2B 351fe00c99008a34a003e50cd4f6d25e6dae5a446928358cd5146ac9924254614724a015ae77d8aade7bcb497cf5e5b5018021ff5d89a8efa6412f5ccb48744e SHA512 35ab63888f49df13fab8b96b87f6c705186173923fd5898abe8730675156426f020ee517019926ba5e06cdb4fc5f91a75f648ce9eba892e9eaf3ee17864a8ec7
DIST pyo3-macros-0.25.0.crate 8876 BLAKE2B 09c37cc5bdaec6859461a7bb4d1c28d0ddd77a448fb5097275fe7be373897900e2dcdb1c43eb4cc915e1089ac1204f4a7155c4b69478b0778e179aded1449ff0 SHA512 ee1218b6981d94a228bf55f31f0131c094728b12c19b312a77386cace2c4768ad8fc8a1a1999bf27c6a30012e20a1eb7a574d918ccacc421930c12cb1a6386ef
+DIST pyo3-macros-0.25.1.crate 8886 BLAKE2B aad9c975c90ff93429be24287d76edd945578b546a927f54d82b6d4bf184f1f8d426ac112307205346e85999a1e89b097f68310de647f27474790bff01c3517a SHA512 08387f3d1ddb0cc253eed376e6e8ebe5722b31664ec742f16c0454b52f1fbcadbe7720ae9e2d3870fe0ca2690916cf6e3e032f5a3e65d767322c068432f6d470
DIST pyo3-macros-backend-0.25.0.crate 75089 BLAKE2B ea4d87e16616782c60f46f97d87a002ea2873a2ab6f7335da68bab32d636988fa30834c946943d4c56c6e5992c78ba6dc2cf8b613c2a402218599ef3e7a6c5be SHA512 dc2e567a09e746893d7cea57aa456124df31b1e3cb25f5b1fabdc97cd2ae73eea1d57aa642268bdbef3dc1ba0e383893d1b5dfd9cf1f3e818f77b9fc0ef2c486
+DIST pyo3-macros-backend-0.25.1.crate 76006 BLAKE2B 02225f8591585a6cbea7d6e53503bfbac395253cb0f45c588a2eb38908bf241034412832f2fcf4e9301318b5b9b82a888755d970f544f402a4f0cf9e4a6eefe9 SHA512 4c9006424630ab9bcd5dcdd45fe927a95a40a61757f0950396eb9f0c3f1794772092a19773c102220489cc621ad65d81dbbe459a1be472f6cd3211c50ef33cc2
DIST quote-1.0.40.crate 31063 BLAKE2B 09036ff3e5ebbd775c466bb936de91d4c070481eb4b98c62a4cddcda57cd7b67d63f979b321f6ec64aabee3f5da6c28e7a3efb83f4647768ba578f1bd0bd0bdb SHA512 45a76e22a2b0bec47e4ba73c3b73cc41d821dfcce9876134c5d8eed514da214aee4ce7612e372c8709f888c0d8b9b7e5442f27adb7a59f3571f0339ed7e2ac99
DIST rayon-1.10.0.crate 180155 BLAKE2B 16cb706d2317d8a349394c521ec5ab550290c5ab2a0a0dc24f0282fa7eb01fd1351a7dc8b5af3a55ea321e6526fbe037fec3cf8b32463166a082a6e417a51fca SHA512 3f628c58f3af3cbd1f245ca1be9c8393eff41112891fc4e676a2b9e26b6cba7cb80d7b6ce46e75bbb65e42fc00c5c0bb6b6a4b59092882f03febeb31f9cca5d3
+DIST rayon-1.11.0.crate 182470 BLAKE2B 40a21dac636e7a652d62d9db520bc50a7a0019f0f96aec6a9002dffdef3d7ee0b2a323e4c3022e5cbaa22efe52bc72573bcfc7d399dffc853bec08190ea4eab6 SHA512 24238ba604099b3e58282b7338ccc63e52621e329ac908d7f3799c632f4ff97ae305a5b361479d4d7d0f09b76f49ab3b75c4187c41542caaca0575d51c299d2c
DIST rayon-core-1.12.1.crate 70701 BLAKE2B a32eb9ae9a71b4f0881f7bfd5375aa7db5681f20f7e0b25e6ecb3161f2aad36b93026c1691d02bf298a48ea07ec9475a237fba457ed0b0b8624aebab2b4988df SHA512 33d0297b682f131c50e1eabc3be583211a5abe790301cbca91bf510e43d6714b7564ca39fab7c4bf6f02aa0df6bb394f386a61320f21ddb6bd7aea1372b5e99e
+DIST rayon-core-1.13.0.crate 73151 BLAKE2B 31112b2f4ff2a0607daced97e234c6cad1356c79d21c7493f3b19b2747083eca85709d5548c9214bb5186a7e2e5fe0def27c45d69d597cac976bb0956da2aa70 SHA512 dce0adda8f5858d351f628f50168d9097ecca437b77fc0c63ad18fb8b3fcc87f2f513cbcbf57606862e30e81f293a05d245073be75292d1a536d6a4d3e2edb9b
DIST regex-1.11.1.crate 254170 BLAKE2B 5cf41012fc2ba8a006c0eb4a922cbbf1614bf300be361c9e2d98956a9a5e9b140e37bea09132fab7bfb633d4439158723624bcf45e8c619c4061b399253c1b82 SHA512 d065f6dc405771518260425f39a5eaaf8cab62e78c91ceed3b3994a9a121674d2484cadaaf816bdad89c87a40550d57b66a3d9de6618a7119a658301ce7e67d8
+DIST regex-1.11.2.crate 166265 BLAKE2B 1ad50e6aa5d116e9aee28f8fb74ff1c981e62a31290441a62103a1f9827d1ce3b8f48dabf154dfa33441e57cc26d0fff95f2d27c05bf5c00f0820e22c584ccc4 SHA512 b1cd7de6128d2dd6dea6c367fd95d6eb10bdd4323d0750fa869d02a544e6e18222fdf369a2b29e991182d0374f75eb85b6fde70bb17df4bfb5d47efa46d7c0ae
DIST regex-automata-0.4.9.crate 618525 BLAKE2B ee3fc41c8c445be4c1aa3e5b19a3e61efd641b1a24e7a1ed55f837c1fba9c816272cb4645c13232b66b170bc7c413802928beb22e3891500141ad4ede65b60b0 SHA512 40bde0ec91cc27bc0c3fa237a37ecee5a1f023dbe006a999c5888f8f578ee2c4c64d9edfe1827546cea8e92ca3c10f8b4d494d81f3d0422b40d90bca9cf598d2
DIST regex-syntax-0.8.5.crate 357541 BLAKE2B fc6d125f7a8574c37d81c75cbfd447cbcff736f2d9991b19814ffc1a414ebc5b76e84fb8fd36c983b38e8e391d165cdd9047832b0d9100f0e1ba7085484b7db5 SHA512 549d8d130fea9ec0d5806126f57f31d433f50e9328c5532ad417c44bb5488ec0d20acb0983dbe54dabaa0b453cbea4533cf7baac7144df119e8f78dfe55c5ab8
DIST rustversion-1.0.21.crate 21001 BLAKE2B 0ca6d2ae448a04a509e3746dff26c8ad9ff91b3d86fcb3cbdffc82de6e8592b585d8f1c029d96a257b4f195288d035326e6d8a12f3beece16a1d195544897375 SHA512 69ed338f2a8e8048ef6d44a5ceaed4ccb9d10d88130a5da4b25899af44949600f785d9508673a90245ae33e086ae6d2a297d6b16942c30159fa73e0602a88a67
diff --git a/dev-python/libcst/libcst-1.8.4.ebuild b/dev-python/libcst/libcst-1.8.4.ebuild
new file mode 100644
index 000000000000..079f560791ef
--- /dev/null
+++ b/dev-python/libcst/libcst-1.8.4.ebuild
@@ -0,0 +1,190 @@
+# Copyright 2024-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 )
+
+RUST_MIN_VER="1.80.0"
+CRATES="
+ aho-corasick@1.0.4
+ anes@0.1.6
+ annotate-snippets@0.11.5
+ anstyle@1.0.10
+ autocfg@1.1.0
+ bumpalo@3.12.0
+ cast@0.3.0
+ cfg-if@1.0.0
+ ciborium-io@0.2.0
+ ciborium-ll@0.2.0
+ ciborium@0.2.0
+ clap@4.5.38
+ clap_builder@4.5.38
+ clap_lex@0.7.4
+ criterion-plot@0.5.0
+ criterion@0.6.0
+ crossbeam-deque@0.8.1
+ crossbeam-epoch@0.9.9
+ crossbeam-utils@0.8.10
+ difference@2.0.0
+ either@1.6.1
+ equivalent@1.0.1
+ glob@0.3.0
+ half@1.8.2
+ hashbrown@0.14.5
+ heck@0.5.0
+ indexmap@2.4.0
+ indoc@2.0.4
+ itertools@0.10.5
+ itertools@0.13.0
+ itertools@0.14.0
+ itoa@1.0.2
+ js-sys@0.3.77
+ libc@0.2.149
+ log@0.4.17
+ memchr@2.7.4
+ memoffset@0.6.5
+ memoffset@0.9.0
+ num-traits@0.2.15
+ once_cell@1.16.0
+ oorandom@11.1.3
+ paste@1.0.15
+ peg-macros@0.8.5
+ peg-runtime@0.8.5
+ peg@0.8.5
+ plotters-backend@0.3.7
+ plotters-svg@0.3.7
+ plotters@0.3.7
+ portable-atomic@1.4.3
+ proc-macro2@1.0.95
+ pyo3-build-config@0.25.1
+ pyo3-ffi@0.25.1
+ pyo3-macros-backend@0.25.1
+ pyo3-macros@0.25.1
+ pyo3@0.25.1
+ quote@1.0.40
+ rayon-core@1.13.0
+ rayon@1.11.0
+ regex-automata@0.4.9
+ regex-syntax@0.8.5
+ regex@1.11.2
+ rustversion@1.0.21
+ ryu@1.0.10
+ same-file@1.0.6
+ scopeguard@1.1.0
+ serde@1.0.208
+ serde_derive@1.0.208
+ serde_json@1.0.125
+ serde_spanned@0.6.7
+ syn@2.0.101
+ target-lexicon@0.13.2
+ target-triple@0.1.4
+ termcolor@1.1.3
+ thiserror-impl@2.0.12
+ thiserror@2.0.12
+ tinytemplate@1.2.1
+ toml@0.8.19
+ toml_datetime@0.6.8
+ toml_edit@0.22.20
+ trybuild@1.0.105
+ unicode-ident@1.0.18
+ unicode-width@0.2.0
+ unindent@0.2.3
+ walkdir@2.3.2
+ wasm-bindgen-backend@0.2.100
+ wasm-bindgen-macro-support@0.2.100
+ wasm-bindgen-macro@0.2.100
+ wasm-bindgen-shared@0.2.100
+ wasm-bindgen@0.2.100
+ web-sys@0.3.77
+ winapi-i686-pc-windows-gnu@0.4.0
+ winapi-util@0.1.5
+ winapi-x86_64-pc-windows-gnu@0.4.0
+ winapi@0.3.9
+ winnow@0.6.18
+"
+
+inherit cargo distutils-r1 pypi
+
+DESCRIPTION="A concrete syntax tree with AST-like properties for Python"
+HOMEPAGE="
+ https://github.com/Instagram/LibCST/
+ https://pypi.org/project/libcst/
+"
+SRC_URI+="
+ ${CARGO_CRATE_URIS}
+"
+
+LICENSE="MIT Apache-2.0 PSF-2"
+# Dependent crate licenses
+LICENSE+=" Apache-2.0 Apache-2.0-with-LLVM-exceptions MIT Unicode-3.0"
+SLOT="0"
+KEYWORDS="~amd64 ~riscv"
+
+RDEPEND="
+ >=dev-python/pyyaml-5.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/setuptools-rust[${PYTHON_USEDEP}]
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ dev-python/black[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+QA_FLAGS_IGNORED="usr/lib/py.*/site-packages/libcst/native.*"
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # do not require the freethreading fork for regular 3.13
+ sed -i -e '/pyyaml-ft/d' pyproject.toml || die
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # TODO
+ libcst/codemod/tests/test_codemod_cli.py::TestCodemodCLI::test_codemod_formatter_error_input
+ )
+ local EPYTEST_IGNORE=(
+ # fuzzing, require hypothesmith
+ libcst/tests/test_fuzz.py
+ # require pyre-check
+ libcst/metadata/tests/test_type_inference_provider.py
+ # requires `python -m libcst.codegen.generate` which has extra
+ # deps and needs patching to work in our venv
+ # TODO: figure out if we don't need that for revdeps anyway
+ libcst/codegen/tests/test_codegen_clean.py
+ )
+
+ case ${EPYTHON} in
+ pypy3*)
+ EPYTEST_DESELECT+=(
+ # https://github.com/Instagram/LibCST/issues/1278
+ libcst/codemod/commands/tests/test_rename_typing_generic_aliases.py::TestRenameCommand::test_rename_typing_generic_alias
+ )
+ ;;
+ esac
+
+ cd "${BUILD_DIR}/install$(python_get_sitedir)" || die
+ # fixtures
+ ln -s "${S}/native" . || die
+
+ nonfatal epytest
+ local ret=${?}
+
+ rm native || die
+
+ [[ ${ret} -ne 0 ]] && die "Tests failed on ${EPYTHON}"
+}
+
+python_test_all() {
+ cd native || die
+ cargo_src_test
+}
diff --git a/dev-python/libtmux/libtmux-0.46.2.ebuild b/dev-python/libtmux/libtmux-0.46.2.ebuild
index a96cba189ffe..191e5357764f 100644
--- a/dev-python/libtmux/libtmux-0.46.2.ebuild
+++ b/dev-python/libtmux/libtmux-0.46.2.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86"
+KEYWORDS="amd64 ~arm ~arm64 ~ppc64 x86"
RDEPEND="
>=app-misc/tmux-3.0a
diff --git a/dev-python/linode-metadata/Manifest b/dev-python/linode-metadata/Manifest
index 122a5bfeb24d..9bb09f440998 100644
--- a/dev-python/linode-metadata/Manifest
+++ b/dev-python/linode-metadata/Manifest
@@ -1,2 +1 @@
-DIST linode_metadata-0.3.0.tar.gz 17719 BLAKE2B 9dfb95117cbeb6f8e05dce6d43d4b03a831784c5db9e639d4214b72add2cea46152ff9eac800946dffd925ff0eef2a9ad31fcf0088f6e990c09c65561940ef42 SHA512 e0ba3927deb82b1f4f0b596d1f5d12cd2e25713e2e77e79c710bcc055748930c25dcc7b0722a78da9d048f788519856d06584eb17f5f1a80aa4824d1a9a1a14f
DIST linode_metadata-0.3.1.tar.gz 17754 BLAKE2B 64adc7c2a3576032729227b59b218ae5489b9ecb19cbe0ed96dae96fe6e75b02681401fb1be77697779986e63820ff9d770aa985ba7d706cca9c987627c0d40d SHA512 3b80060b9262e6e3d682ebae5a8732c075fa5c08d2285af891c29f5b9a6e5b3e6447442953fa3cadcc518c784ac8fc8c4a3ab7282329cd9963d5de1f1a77212e
diff --git a/dev-python/linode-metadata/linode-metadata-0.3.0.ebuild b/dev-python/linode-metadata/linode-metadata-0.3.0.ebuild
deleted file mode 100644
index 82242014911a..000000000000
--- a/dev-python/linode-metadata/linode-metadata-0.3.0.ebuild
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2023-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
-DISTUTILS_USE_PEP517=setuptools
-inherit distutils-r1 pypi
-
-DESCRIPTION="Python bindings for the Linode Metadata Service"
-HOMEPAGE="https://github.com/linode/py-metadata https://www.linode.com/"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64"
-
-# Tests require network, a linode account, an API key and a ssh key.
-RESTRICT="test"
-
-RDEPEND="
- dev-python/httpx[${PYTHON_USEDEP}]
-"
diff --git a/dev-python/lit/Manifest b/dev-python/lit/Manifest
index f5d097498587..e2ee62a7108c 100644
--- a/dev-python/lit/Manifest
+++ b/dev-python/lit/Manifest
@@ -8,10 +8,11 @@ DIST llvm-project-18.1.8.src.tar.xz 132067260 BLAKE2B a950492f1dbfb874dff63b1ffe
DIST llvm-project-18.1.8.src.tar.xz.sig 566 BLAKE2B 6ab0efc5b38d4483f4e32e8b85774b2edd5d88fdf29f23b88eb0b5130a7a7f0e80549612b025f927e92de4a08ff7c292cff224dbda91a5d598244e98f7ad0fbd SHA512 ddfd1e8a06756759af6cbe488c82a6d6a62ba91f3e8a0eb4cece561321824f5d165b08ed91010588790b76e19790931d2651b24dba8567e3b151d3cb43bec25b
DIST llvm-project-19.1.7.src.tar.xz 141249332 BLAKE2B 1259ed7f9aca7b35e89d818befdee20fd8bed4d2dc2c2c6f6f56451fd43d35ac03a0a5a406e142d22b25137999dc5b17471c196f8fcf79f20a8296832d900f6d SHA512 c7d63286d662707a9cd54758c9e3aaf52794a91900c484c4a6efa62d90bc719d5e7a345e4192feeb0c9fd11c82570d64677c781e5be1d645556b6aa018e47ec8
DIST llvm-project-19.1.7.src.tar.xz.sig 438 BLAKE2B 4015140f4ba77de45039bdbdfbaf6f30e75705123d067ea97175d91d7a5b6a75008df01d99ae7aa16aaa3b101f3f41e38d01f04158f95a261d617b3ede0254cd SHA512 195797b06ac80a742e0ccbc03a50dc06dd2e04377d783d5474e3e72c5a75203b60292b047929312a411d22b137a239943fba414a4d136a2be14cbff978eb6bda
-DIST llvm-project-1d8fdda7b0a9f47c443600bca6af2bc141e4abf7.tar.gz 246773192 BLAKE2B a61c1607586dd6f130c62a78a1f36d0e49d66d47d1244c3fe26df774131b3717cdbb2ab726428bd89d420190125dea5968d11b8094131c3214ab00e00a3ccd3b SHA512 3a1d83b6f016fa677da1eb18836b819e042d67a7a922cba83016147520eb2f44493c0cbc12015c4222804a641f410915efd0bb833a08c24efced7fc26801933b
DIST llvm-project-20.1.8.src.tar.xz 147242952 BLAKE2B 7657ac0b26acc5affb1bfc91b912ade3191c5d77f3979d5a80d5f6ce52f56a7d1c448bd257398390bf10838f02faa6f3ece37a7327cced69d165ec2e2e699316 SHA512 f330e72e6a1da468569049437cc0ba7a41abb816ccece7367189344f7ebfef730f4788ac7af2bef0aa8a49341c15ab1d31e941ffa782f264d11fe0dc05470773
DIST llvm-project-20.1.8.src.tar.xz.sig 566 BLAKE2B 85beedfcff1195a974fab2c667b9efd4b715b3480c1b44b1b887fe32c69f72aca0d3b8fb276c03b6cc5a866622f669047aeee5ccb976640b4008ccd31dce77a4 SHA512 d74369bdb4d1b82775161ea53c9c5f3a23ce810f4df5ff617123023f9d8ce720e7d6ecc9e17f8ebd39fd9e7a9de79560abdf2ffe73bcb907a43148d43665d619
DIST llvm-project-21.1.0.src.tar.xz 158971856 BLAKE2B ac8c3cc8d2c986abcaa523acc872b01311ec118a738654f9cc53a1d5fdba70ba10cfe829e23f3913557e460403ed6a2df81cb5e9a435c8e1ce08e7ead3511bf0 SHA512 1487dcdc041dd6cdcffa6cc95a565e18a9fce2a73215671e366a9601cecce6c8bf70065df5564de5998d1841c3d8d829a9fbd2cad72e3aab4db279e8885ff446
DIST llvm-project-21.1.0.src.tar.xz.sig 438 BLAKE2B c5731350bc7454867da18887628c0e87bf404589097034c7ddfffbeec277b900bd1fa49daabd41d4f8800a8ab76105bf7e910a99dd970819ab987373d4ed4ed9 SHA512 c3cd0a759e22a24f4307d8747b7986f966f4fa3c413092efc73ccca252476f1b59878dc65b444884515bcce3d3bfab902f585cc1d08e2aeb55aa8e588128aeb6
+DIST llvm-project-21.1.1.src.tar.xz 158891056 BLAKE2B 5801ba4ea64e9c55fd1e6a83e1ea463cfb1d2b12c1f25a488ca63fd88254f20388c5e986492e413d795306bc37782487b80485240939227f3beeea860091825c SHA512 a120895e75942d848cc763fd1cb4aeb184e9d4509d69064e8e3f5679fbeb09c73bf916e33d04b842778537d2331067ec9190e0ad75d591d3ba57871770e19bce
+DIST llvm-project-21.1.1.src.tar.xz.sig 438 BLAKE2B 8fdf614e67e31382c65d70a551ef94893b8e4914e855fa96fc3a4a0a4ac916d646758be1c1c9a74028acd776d5d93b77f678d29dc75179ae95909d525d263c85 SHA512 1b9a2c51feaca75ef2f82a89c8e8d741a0b5f05f0dd8ca244d6997deb00f8ded3c37a5cbc6012a4ba8632004383ab4677756d9defe8855fff458e02380d77bd5
DIST llvm-project-645dd324d1b7d028745c2a4045b69e745df2ae6a.tar.gz 247443586 BLAKE2B dd3229c32768e42fd2f311638f1e63f5503fabee3fa414bc3300313b36bbfa062d90900319e4fdbbafae17947537fba699fe5940e1b6553a2d9a716c0ce7b59c SHA512 659dc22e2fd1fd0bced13f941127797dc7703b8d810eeb7a0fc51cf55c274e69e2d6660867c191d5d90615ddee3a1faff7f7cd357ff2eb88d715762be50098c3
-DIST llvm-project-d76bb2bb894a4641ed62447327b40a347a6ae883.tar.gz 245754836 BLAKE2B 487e6396f1b381743dfbbd13e8f55728f1f915c042c717433e498127ecdeb4405a67e998059f5eb1f84e851437b805ba9e9c0e390c61092c7ee336a801d6f342 SHA512 42e38f917357918e8d62d8893a1ba34b431cd8aabf924b89e5352013bb8984c10c0b2796fa9a725bab71e52f99216604b75606bde3b795d20082d97d0f7a82ad
+DIST llvm-project-f059d2bac034acca39ad60a1b13aaec6afa0a3d6.tar.gz 248627883 BLAKE2B e1603ba38fcf70e7f3794a30a42057d0052a422bd0aaf423c65d1fd8f9ec7d3981cd651f309dc3ab5c28183291241732373b9bdb75fc2a11fc8d9f238388b8c3 SHA512 63a1627a8b3cc8f240cefe2066d7e306cab5091317f97dd808b9ad887d4e6eb2d21af3f79bccfdb9387f5f7a5ed0b772013b0261a647c8d50ffaa55914362dfb
diff --git a/dev-python/lit/lit-22.0.0_pre20250831.ebuild b/dev-python/lit/lit-21.1.1.ebuild
index fdf920bda34f..2c41baf16b31 100644
--- a/dev-python/lit/lit-22.0.0_pre20250831.ebuild
+++ b/dev-python/lit/lit-21.1.1.ebuild
@@ -13,6 +13,7 @@ HOMEPAGE="https://llvm.org/"
LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/lit/lit-22.0.0_pre20250820.ebuild b/dev-python/lit/lit-22.0.0_pre20250910.ebuild
index fdf920bda34f..fdf920bda34f 100644
--- a/dev-python/lit/lit-22.0.0_pre20250820.ebuild
+++ b/dev-python/lit/lit-22.0.0_pre20250910.ebuild
diff --git a/dev-python/moddb/Manifest b/dev-python/moddb/Manifest
index ac69f672b581..3cefff26484d 100644
--- a/dev-python/moddb/Manifest
+++ b/dev-python/moddb/Manifest
@@ -1 +1,2 @@
DIST moddb-0.12.0.gh.tar.gz 10528424 BLAKE2B 48a41ee5d150afffbde459bc44c0edb2056cb3674966193a595bc2d6c467746029e3741e9a107edfee3177a5135f2fd5ea040e8d15e1ab88f9c0d0c9bd2cb9f2 SHA512 2c31724093bfcb45c95cf29ae5ad430f77c0061a7d3588688a755101b50a79034c5bf633df5d9a032fa21deb5a8aab12d491289b6937ce1011fe67860c5c769c
+DIST moddb-0.13.0.gh.tar.gz 10529388 BLAKE2B ea645d8bbbfaee9919be4e7dda56e5aa2701c765f43324214f9ce81f9a54f698c4e2a25aab4d389736523f3054ae7c8cde6037b487ba55c4981d8ca59c2f1b15 SHA512 51972d3fd1099f29cb82bd58c98e5542f9d7337aff7b56ff49882a8544337a36e62a0ca0499b8180a054a21b9d836da429caf78ba4752b06b0ff7a1ab4b95f73
diff --git a/dev-python/moddb/moddb-0.13.0.ebuild b/dev-python/moddb/moddb-0.13.0.ebuild
new file mode 100644
index 000000000000..3f48b11a1cdc
--- /dev/null
+++ b/dev-python/moddb/moddb-0.13.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_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1
+
+DESCRIPTION="Python scrapper to access ModDB mods, games and more as objects"
+HOMEPAGE="https://github.com/ClementJ18/moddb"
+SRC_URI="https://github.com/ClementJ18/moddb/archive/refs/tags/v${PV}.tar.gz -> ${P}.gh.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+# Connects to moddb.com
+RESTRICT="test"
+PROPERTIES="test? ( test_network )"
+
+RDEPEND="
+ dev-python/beautifulsoup4[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+"
+
+BDEPEND="test? (
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+)"
+
+EPYTEST_DESELECT=(
+ # These tests require valid moddb.com login information
+ "tests/test_base.py::TestLogin::test_login"
+ "tests/test_client.py::TestClient::test_get_watched"
+ "tests/test_client.py::TestClient::test_get_updates"
+ "tests/test_client.py::TestClient::test_posts"
+ "tests/test_client.py::TestClient::test_friends"
+ "tests/test_client.py::TestClient::test_messages"
+)
+
+distutils_enable_sphinx docs/source dev-python/sphinx-autodoc-typehints
+distutils_enable_tests pytest
+
+python_test() {
+ # Dummy moddb.com login information
+ export USERNAME="portage"
+ export SENDER_USERNAME="portage"
+ export PASSWORD="testing"
+ export SENDER_PASSWORD="testing"
+ epytest
+}
diff --git a/dev-python/mypy/Manifest b/dev-python/mypy/Manifest
index 0fcb3a9c7a51..9605c866e8d9 100644
--- a/dev-python/mypy/Manifest
+++ b/dev-python/mypy/Manifest
@@ -1,3 +1,4 @@
DIST mypy-1.16.1.gh.tar.gz 3340652 BLAKE2B b602a9f7cdacc9cd939f8232261a00059facd99983b8440104c33d30bb8dd173655decd8b1fae7013f085b641155fd51b138a0c488cda5219d5d55e0379bccd8 SHA512 7d14ea3500f97223c128b07df3dce77c34a4e9913f4dc4b623f9b6f6ba0384d566ef2987bdbf8febcbb12e9d8845f26e53c2f098b513180647156f702c1a6d09
DIST mypy-1.17.0.gh.tar.gz 3368639 BLAKE2B fc50dccedd8eab757a543e5f63f710281629f7469debfb96a132eb8d200679ce05e441096c5ba6ba62f9b3a9868601df79d80d885c545829da24a08838935031 SHA512 aee414a6e594b289774187b2c2cf1dfec8a5a27a72d08273c1ef014bb486d8902b39a0f5636722ebdc84f7c71cc99b991ce44ab0284200771f99ee36f820d48b
DIST mypy-1.17.1.gh.tar.gz 3369307 BLAKE2B 0a6b240a2f0532eb457ff2d71737ca4db3a962792db67d8e4dd726e3890a2b057329621062833d5765fc16ce79cb21a43d142944c687794698f543621408eca0 SHA512 cdb808bd593d824ca631b1eca9e00c82e9615b74a2c464cd3ffcd9588f040bb1fc20d7ff8c084d0bb509ab624886c987f11ba5ad5d0429bcaf66a6ba893ed6f8
+DIST mypy-1.18.1.gh.tar.gz 3468445 BLAKE2B 95d3d8151bd09e23e7c1587fccd7f7c52f8008fb4f812132214c3ce6d8d454d317df8dfdf3305dba912a1234b7717517cac6c38877610a00bf679703e5666473 SHA512 8dcc2144e5d9b1c08e445b281c607f8c42b306be80cbc9db2a2f2aa52c830264f0ce76093350181f97d0c67e7ec84c7d18a569061e378d76971be07959007779
diff --git a/dev-python/mypy/mypy-1.18.1.ebuild b/dev-python/mypy/mypy-1.18.1.ebuild
new file mode 100644
index 000000000000..0d6fe933f582
--- /dev/null
+++ b/dev-python/mypy/mypy-1.18.1.ebuild
@@ -0,0 +1,126 @@
+# 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} )
+
+inherit distutils-r1
+
+DESCRIPTION="Optional static typing for Python"
+HOMEPAGE="
+ https://www.mypy-lang.org/
+ https://github.com/python/mypy/
+ https://pypi.org/project/mypy/
+"
+SRC_URI="
+ https://github.com/python/mypy/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="+native-extensions"
+
+# stubgen collides with this package: https://bugs.gentoo.org/585594
+RDEPEND="
+ !dev-util/stubgen
+ >=dev-python/pathspec-0.9.0[${PYTHON_USEDEP}]
+ >=dev-python/psutil-4[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.6.0[${PYTHON_USEDEP}]
+ >=dev-python/mypy-extensions-1.0.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ native-extensions? (
+ ${RDEPEND}
+ dev-python/types-psutil[${PYTHON_USEDEP}]
+ dev-python/types-setuptools[${PYTHON_USEDEP}]
+ )
+ test? (
+ >=dev-python/attrs-18.0[${PYTHON_USEDEP}]
+ >=dev-python/filelock-3.3.0[${PYTHON_USEDEP}]
+ >=dev-python/lxml-4.9.1[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+# frustratingly, mypyc produces non-deterministic output. If ccache is enabled it will be a waste of time,
+# but simultaneously it might trash your system and fill up the cache with a giant wave of non-reproducible
+# test files (https://github.com/mypyc/mypyc/issues/1014)
+export CCACHE_DISABLE=1
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.14.0-no-werror.patch
+)
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # don't force pytest-xdist, in case user asked for EPYTEST_JOBS=1
+ sed -i -e '/addopts/s:-nauto::' pyproject.toml || die
+}
+
+python_compile() {
+ local -x MYPY_USE_MYPYC=$(usex native-extensions 1 0)
+ distutils-r1_python_compile
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # the majority of them require Internet (via pip)
+ mypy/test/testpep561.py
+ # known broken with assertions enabled
+ # https://github.com/python/mypy/issues/16043
+ mypyc/test/test_external.py::TestExternal::test_c_unit_test
+ mypyc/test/test_run.py::TestRun::run-classes.test::testDelException
+ mypyc/test/test_run.py::TestRun::run-floats.test::testFloatOps
+ mypyc/test/test_run.py::TestRun::run-i64.test::testI64GlueMethodsAndInheritance
+ mypyc/test/test_run.py::TestRunStrictDunderTyping::run-floats.test::testFloatOps_dunder_typing
+ # these assume that types-docutils are not installed
+ mypy/test/testpythoneval.py::PythonEvaluationSuite::pythoneval.test::testIgnoreImportIfNoPython3StubAvailable
+ mypy/test/testpythoneval.py::PythonEvaluationSuite::pythoneval.test::testNoPython3StubAvailable
+ # TODO
+ mypy/test/meta/test_parse_data.py
+ mypy/test/meta/test_update_data.py
+ )
+ case ${EPYTHON} in
+ python3.13)
+ ;&
+ python3.12)
+ EPYTEST_DESELECT+=(
+ # more assertions, sigh
+ mypyc/test/test_run.py::TestRun::run-async.test::testRunAsyncMiscTypesInEnvironment
+ mypyc/test/test_run.py::TestRun::run-bools.test::testBoolOps
+ mypyc/test/test_run.py::TestRun::run-i64.test::testI64BasicOps
+ mypyc/test/test_run.py::TestRun::run-i64.test::testI64DefaultArgValues
+ mypyc/test/test_run.py::TestRun::run-i64.test::testI64ErrorValuesAndUndefined
+ )
+ ;;
+ esac
+
+ # Some mypy/test/testcmdline.py::PythonCmdlineSuite tests
+ # fail with high COLUMNS values
+ local -x COLUMNS=80
+
+ # The tests depend on having in-source compiled extensions if you want to
+ # test those compiled extensions. Various crucial test dependencies aren't
+ # installed. Even pyproject.toml is needed because that's where pytest args
+ # are in. Hack them into the build directory and delete them afterwards.
+ # See: https://github.com/python/mypy/issues/16143
+ local -x MYPY_TEST_PREFIX="${S}"
+ cd "${BUILD_DIR}/install$(python_get_sitedir)" || die
+ cp -r "${S}"/{conftest.py,pyproject.toml} . || die
+
+ local failed=
+ nonfatal epytest || failed=1
+
+ rm conftest.py pyproject.toml || die
+
+ [[ ${failed} ]] && die "epytest failed with ${EPYTHON}"
+}
diff --git a/dev-python/narwhals/Manifest b/dev-python/narwhals/Manifest
index eafccbc46c82..09434be6746f 100644
--- a/dev-python/narwhals/Manifest
+++ b/dev-python/narwhals/Manifest
@@ -1,3 +1,4 @@
-DIST narwhals-2.1.2.tar.gz 533772 BLAKE2B 3a2d4508c1c50625484e0d5a056e5a11445a31a209ed485896b9b25f6c88b5cdd288382659caa1a508496de7e2214e775aac2f8c71e38c35957b6c7cfff7859c SHA512 3ad8b45b6187fea5c0ad10563818583a2e4bad72865deb5fb8f9134bacfdb304a41b0be43095a36830db0c01793bc4c13900242ca5191c5a0518fe481f74ebb7
-DIST narwhals-2.2.0.tar.gz 547070 BLAKE2B 6edf4d94f79a3ee643bd9a16ad320a825ef693ba3f791dc0cbcf3d55c9212fbfde53a4f5482855de31554693b06170f97dc6af295f31838d1a4274f392710f69 SHA512 5999feb61590743ca1359ce6c38785dea90b48757a037985578b981322a5456a79e613649556f1d5d4fd92caa0bdd561d14e82281166be39b21eee87143979c5
-DIST narwhals-2.3.0.tar.gz 552774 BLAKE2B 31577fff0dd9351bc74eeccd829e5c69ab0f2b0ad7da671019a48724add5f299c87b5afab90db63af8f053a385d4ff30f285f8315d867b77b7e922b6476323b1 SHA512 aa6a299511f3afa7a1c206df68b852aea877cef6603226e0899aac04bb2f7e1a3a4dfcd51ddfc619e6589648a37d61068a1eb54b09f92abc0da50feb6f5948b6
+DIST narwhals-2.4.0.tar.gz 556886 BLAKE2B 7dbcfe11b90d0462022bc9512eb58dfea185ffd33ee625f3f9a9058ebf599d51c291459b856c8011e60ca205bea0adb46b88373ea5691e1cc52e3f99a8b26222 SHA512 dc462f95ba05c60109a1d2897053eac80bb6082e8ec4e24e25c0d509e1f29a024951c6c8967ea2db89ac728ecc261d71fba7068e375b3939615289ed53482fe9
+DIST narwhals-2.4.0.tar.gz.provenance 9563 BLAKE2B 581aa7997ff6b37df4c30bae2d393ff34ac4b76c7a78b66b0cd988a6f2e93f338f07bae13d3c449db86fbabe5964fa70e23df69c63fce59e44afe2308bcc6f88 SHA512 9df638ef9f15db137e73727e78553f76d46c84aef2442c242ad1b2b75c45d73e341a0e55aa7f00168a274db35651fc47a1949b8e645479c5b75cdec0467e748a
+DIST narwhals-2.5.0.tar.gz 558573 BLAKE2B f09121d35150efdeb328685ac09569c852357c79d1ffd85931a4922090bc84de8ec6c7401d69d1444c84e823e2e65d79f4c3f3f5f8cab147e4e0bb081c446d02 SHA512 b33f22c05935b12aad87809cea8aeafd8f17873725b1a0665a9845f71ab4caf5caa22c6f5612b7a334eebf37efab3f971c6599bd7d93a41c21c4c0f8303447fa
+DIST narwhals-2.5.0.tar.gz.provenance 9939 BLAKE2B 3f7b0e304584d3cc18f500f9310e97af5609c598f5e4e74b01d50138b42898983611c89644682f2453eb27830893e98b02406e0a1d93086a5be6f0fc55b0b95a SHA512 f3367e78f6c0897543d208b56a886280d217fc7beff6b647892b970aa38436cb9cd70ebd899a39729040f1fa193d21c7bce36701ce078556f5d7e7381660c5b4
diff --git a/dev-python/narwhals/narwhals-2.3.0.ebuild b/dev-python/narwhals/narwhals-2.3.0.ebuild
deleted file mode 100644
index 3438ae88552e..000000000000
--- a/dev-python/narwhals/narwhals-2.3.0.ebuild
+++ /dev/null
@@ -1,43 +0,0 @@
-# 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} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Extremely lightweight compatibility layer between dataframe libraries"
-HOMEPAGE="
- https://github.com/narwhals-dev/narwhals/
- https://pypi.org/project/narwhals/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64 ~arm64"
-
-BDEPEND="
- test? (
- >=dev-python/pandas-1.1.3[${PYTHON_USEDEP}]
- >=dev-python/pyarrow-13.0.0[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=( hypothesis pytest-env )
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-python_test() {
- local EPYTEST_DESELECT=(
- # segfaults
- # https://github.com/apache/arrow/issues/47252
- 'tests/modern_polars/unpivot_test.py::test_unpivot[pyarrow]'
- # fragile to parallel merges that can cause non-atomic .dist-info
- # changes
- tests/system_info_test.py::test_get_sys_info
- )
-
- epytest --runslow --constructors="pandas,pandas[nullable],pandas[pyarrow],pyarrow"
-}
diff --git a/dev-python/narwhals/narwhals-2.1.2.ebuild b/dev-python/narwhals/narwhals-2.4.0.ebuild
index 3438ae88552e..f92dfab8ea90 100644
--- a/dev-python/narwhals/narwhals-2.1.2.ebuild
+++ b/dev-python/narwhals/narwhals-2.4.0.ebuild
@@ -4,6 +4,7 @@
EAPI=8
DISTUTILS_USE_PEP517=hatchling
+PYPI_VERIFY_REPO=https://github.com/narwhals-dev/narwhals
PYTHON_COMPAT=( python3_{9,10,11,12,13} )
inherit distutils-r1 pypi
diff --git a/dev-python/narwhals/narwhals-2.2.0.ebuild b/dev-python/narwhals/narwhals-2.5.0.ebuild
index 3438ae88552e..f92dfab8ea90 100644
--- a/dev-python/narwhals/narwhals-2.2.0.ebuild
+++ b/dev-python/narwhals/narwhals-2.5.0.ebuild
@@ -4,6 +4,7 @@
EAPI=8
DISTUTILS_USE_PEP517=hatchling
+PYPI_VERIFY_REPO=https://github.com/narwhals-dev/narwhals
PYTHON_COMPAT=( python3_{9,10,11,12,13} )
inherit distutils-r1 pypi
diff --git a/dev-python/nox/nox-2025.05.01.ebuild b/dev-python/nox/nox-2025.05.01.ebuild
index 861e88135508..188160398c9c 100644
--- a/dev-python/nox/nox-2025.05.01.ebuild
+++ b/dev-python/nox/nox-2025.05.01.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64"
+KEYWORDS="~amd64 ~arm64"
RDEPEND="
>=dev-python/argcomplete-1.9.4[${PYTHON_USEDEP}]
diff --git a/dev-python/nuitka/Manifest b/dev-python/nuitka/Manifest
index 2f5faa3bae9c..58bf71a58abd 100644
--- a/dev-python/nuitka/Manifest
+++ b/dev-python/nuitka/Manifest
@@ -1,2 +1,2 @@
-DIST Nuitka-2.7.12.tar.gz 3887702 BLAKE2B d3b642043539edfcd3546345a84cd384ff50b178da42e0fa8ee4e05301ea1be5f6780c1dec451e1aedd7baf3d38c02470d50da6786b1b2ca564a4215d2fb39bc SHA512 f13f830448267ed49860cbbb4777fe40cbf7f441f294044564a1f1d861be6404cc438312dc4b5177180fc55ac46664d316d1d43ffe4f2777c3db478e0508ddd0
DIST Nuitka-2.7.13.tar.gz 3888165 BLAKE2B c08c64db319f0d92bbe377bb667aa8496a8ff8dda0e5f86da66dedd02aa7341795ffae99a054481402f51058981fbe9c9d6ddd4c1d481ff2b89e61108ccde068 SHA512 6f39c35ed63f7f3598a6684a0ee911f73ae61937c9c630c26154c17fa5d9e6a71180353fd13f337dfd982d2f79071418ba893cf37d722835464c6ccc1b2efadd
+DIST Nuitka-2.7.14.tar.gz 3888306 BLAKE2B 84f2aa6de7d9a29054aa84fbcbebb8724eca882d664980d7a2bc2cf597dc61e1f2416b161baaaa91b5d25a84d5d1e0dbe12d6fd0216bd0c6193352a9bb256063 SHA512 260800d577810eba08dd1ee9a85cfef1a2df4449240d32c7b95016bddde0addb9a6bfa95e5d44a647c85bfdf3372eadcb5cfe7e050bee95069a44f1d2611c4df
diff --git a/dev-python/nuitka/nuitka-2.7.12.ebuild b/dev-python/nuitka/nuitka-2.7.14.ebuild
index c97d7f3c6ae8..c97d7f3c6ae8 100644
--- a/dev-python/nuitka/nuitka-2.7.12.ebuild
+++ b/dev-python/nuitka/nuitka-2.7.14.ebuild
diff --git a/dev-python/numexpr/Manifest b/dev-python/numexpr/Manifest
index d8b582d5e1bb..a66909e36e72 100644
--- a/dev-python/numexpr/Manifest
+++ b/dev-python/numexpr/Manifest
@@ -1,2 +1,4 @@
DIST numexpr-2.10.2.gh.tar.gz 122622 BLAKE2B 762bab8166989ca6839c029289ce3c196b13f2698c377095c1baaefbe333c75a4a27d552ad7c69c97ca63ed91b5343464c9b36aee118f1ec6a8c039e8719997a SHA512 d1414300fb173b3b66e48fe1d782649e8d4085f6da2c72eec89d37deb01686505bb33514b003d01fcd6c645e2a5cf8a967739fc360e62172beee30b4e02d1e9e
DIST numexpr-2.11.0.gh.tar.gz 124469 BLAKE2B c00d2175925e5745e474d5b311faebf6bf8cf551a8d8d4ce679892c0b57a66bd9b007a51e8913ebc7d24924d46b1aa41476d3cefa358cb6cc3143dbbcf8cb835 SHA512 6a6d504a7eeb4aff16c975b204735befb2ca9152cf351b45c439e18e8a5a9b74b811271407da35c62a7d3a6e69012c70f686ee08740a10c0fddf91ae8a4c98f0
+DIST numexpr-2.12.0.gh.tar.gz 128700 BLAKE2B 3a3ff19b9e5993e4d3a846a348e6f91332f63bc5ca0640e4f5f45e3de43617e661004208e5d0fb8f6904a6772c9d267412196334fc22ed355f9026705356fdc5 SHA512 f83c53b7cf53616acf155de29f681c6dcd99b5d32615e14fd2875e5995268d0ba6af2bf4d812a99f189a7ade184baea1f4dda51985c2835ac11d43b66bbab92e
+DIST numexpr-2.12.1.gh.tar.gz 129597 BLAKE2B 7b820754eb58d5cb1514eafa12a978c3fc1146dd32479ec806fe6f68805bed20c28ad17d6cb5309f4cb74b22e3229080fec0fd65db9f15d1116eba7f9107c7bb SHA512 fab6b97320bf297588ca7f775f8ecec10cefb170309ef5a68ec300cd982f6998cbc642e63e41f732b3f3c732bb997bdd1748d58705b484c9fb89f7d57c791d1a
diff --git a/dev-python/numexpr/numexpr-2.11.0.ebuild b/dev-python/numexpr/numexpr-2.11.0.ebuild
index 018c84c265d4..d02d942a0b5b 100644
--- a/dev-python/numexpr/numexpr-2.11.0.ebuild
+++ b/dev-python/numexpr/numexpr-2.11.0.ebuild
@@ -32,8 +32,8 @@ RDEPEND="
python_test() {
pushd "${BUILD_DIR}/install/$(python_get_sitedir)" >/dev/null || die
"${EPYTHON}" -c '
- import sys,numexpr
- sys.exit(0 if numexpr.test(verbosity=2).wasSuccessful() else 1)
+import sys,numexpr
+sys.exit(0 if numexpr.test(verbosity=2).wasSuccessful() else 1)
' || die "Tests failed with ${EPYTHON}"
pushd >/dev/null || die
}
diff --git a/dev-python/numexpr/numexpr-2.12.0.ebuild b/dev-python/numexpr/numexpr-2.12.0.ebuild
new file mode 100644
index 000000000000..296cef371d31
--- /dev/null
+++ b/dev-python/numexpr/numexpr-2.12.0.ebuild
@@ -0,0 +1,42 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_REQ_USE="threads(+)"
+
+inherit distutils-r1
+
+DESCRIPTION="Fast numerical array expression evaluator for Python and NumPy"
+HOMEPAGE="
+ https://github.com/pydata/numexpr/
+ https://pypi.org/project/numexpr/
+"
+SRC_URI="
+ https://github.com/pydata/numexpr/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
+
+DEPEND="
+ >=dev-python/numpy-2.0.0_rc:=[${PYTHON_USEDEP}]
+"
+RDEPEND="
+ ${DEPEND}
+ dev-python/packaging[${PYTHON_USEDEP}]
+"
+
+python_test() {
+ pushd "${BUILD_DIR}/install/$(python_get_sitedir)" >/dev/null || die
+ "${EPYTHON}" -c '
+import sys,numexpr
+sys.exit(0 if numexpr.test(verbosity=2).wasSuccessful() else 1)
+ ' || die "Tests failed with ${EPYTHON}"
+ pushd >/dev/null || die
+}
diff --git a/dev-python/numexpr/numexpr-2.12.1.ebuild b/dev-python/numexpr/numexpr-2.12.1.ebuild
new file mode 100644
index 000000000000..296cef371d31
--- /dev/null
+++ b/dev-python/numexpr/numexpr-2.12.1.ebuild
@@ -0,0 +1,42 @@
+# 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 )
+PYTHON_REQ_USE="threads(+)"
+
+inherit distutils-r1
+
+DESCRIPTION="Fast numerical array expression evaluator for Python and NumPy"
+HOMEPAGE="
+ https://github.com/pydata/numexpr/
+ https://pypi.org/project/numexpr/
+"
+SRC_URI="
+ https://github.com/pydata/numexpr/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
+
+DEPEND="
+ >=dev-python/numpy-2.0.0_rc:=[${PYTHON_USEDEP}]
+"
+RDEPEND="
+ ${DEPEND}
+ dev-python/packaging[${PYTHON_USEDEP}]
+"
+
+python_test() {
+ pushd "${BUILD_DIR}/install/$(python_get_sitedir)" >/dev/null || die
+ "${EPYTHON}" -c '
+import sys,numexpr
+sys.exit(0 if numexpr.test(verbosity=2).wasSuccessful() else 1)
+ ' || die "Tests failed with ${EPYTHON}"
+ pushd >/dev/null || die
+}
diff --git a/dev-python/numpy/Manifest b/dev-python/numpy/Manifest
index 4abd85d2c408..18f38419a41b 100644
--- a/dev-python/numpy/Manifest
+++ b/dev-python/numpy/Manifest
@@ -1,5 +1,5 @@
DIST numpy-1.26.4.tar.gz 15786129 BLAKE2B ee759d3a857111bc494d5e989a7b005375d942b2a89cda69be4a3bd7c6cb195003fd2a8a0535f1858d8977ff688b0ec36360dcba9c3160206eedce5e28f191ef SHA512 f7121ab4099fa0686f9c095d456baa4a5869d651d7b7a06385f885f329cf08f11024b5df5e7b4ee705970062a8102ec4f709512eabbfd5c9fccce4ef83b9c208
DIST numpy-2.2.6.tar.gz 20276440 BLAKE2B 597ebbc72b2b3901bba4e0946f4f63ff13baf3b04d2f44d6e1ce8d05112f5d7191cb2e2f80e20006f0bc57a5a3f395fcc6003d9593e41b057394c12ad44f69f7 SHA512 00c82476c6cc8e68c4cd3210896172d91bdb52a46676931d173a3bbd772b29cebc8e819dfbbaf621eba9225fff3fa3f81426fe864d8812de4ff2975e7ac5c338
-DIST numpy-2.3.0.tar.gz 20382813 BLAKE2B 684eed2d207b633feec03cb7c9517e4dff30033b498e6622448d278f2e3b442fa9f08a30c9d8d74f746d0524b9e4725348ccae10f1f3952df03b72d60af7f5c6 SHA512 d3fdae873fc50a692135045ee7fb542b0206ff167ffbe575a975ace4786b2a2f2d4b52034de3f61653feddffb5a850f5b2a499a32ec5214c0872c20b319d4d65
DIST numpy-2.3.1.tar.gz 20390372 BLAKE2B a52f39f8b7e4cf75bed3bbf32b92be7d118c7bab0b3cdbb1428b24daf71d4813641ade390bb20848156fc0ead3768383f272b755d130fb36348859b8c435c954 SHA512 aedb917cc6d8fcb923edb5b32e8b84bddb31fcf0159cfbda88b7ea9a5bc9e0ef58f27391746c6e9140777daf928c3e9de2a73758555130e5c00725d7082f7c2a
DIST numpy-2.3.2.tar.gz 20489306 BLAKE2B 66a683a62daf3971c01a484d6e8c56e592744b93ec2648b61246d9969b02c62256153fb7c643002d7f82ebf1bfd5c9f34c14449b9daf85007e6cb854e97852dd SHA512 8f315a681704f1a18712828b5b9d5cd602576230fb08ff00c293ce129656faa49c9e01a446989dbd4d678166975432b531915e4838be66655ead1f0fc05be861
+DIST numpy-2.3.3.tar.gz 20576648 BLAKE2B 285c3ea4852618c9a7af339f117b12e06c736a765c6b97437ac8b2c0c02085126a89cc8d6d9e0e6f7d5ebb69d63a972c1619bf6c407197882e01c7cddfb8d79b SHA512 5555f68d75342054c240695a7a7aaaaec09c45e04965b4100732a7f8f49f53a203ec438e35c12040481d6ee9f4649e43c83ac96fdc08526cdcf93463b9fe7bd9
diff --git a/dev-python/numpy/numpy-2.3.0.ebuild b/dev-python/numpy/numpy-2.3.0.ebuild
deleted file mode 100644
index 0107b72d284b..000000000000
--- a/dev-python/numpy/numpy-2.3.0.ebuild
+++ /dev/null
@@ -1,199 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=meson-python
-PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
-PYTHON_REQ_USE="threads(+)"
-FORTRAN_NEEDED=lapack
-
-inherit distutils-r1 flag-o-matic fortran-2 pypi
-
-DESCRIPTION="Fast array and numerical python library"
-HOMEPAGE="
- https://numpy.org/
- https://github.com/numpy/numpy/
- https://pypi.org/project/numpy/
-"
-
-LICENSE="BSD"
-SLOT="0/2"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
-# +lapack because the internal fallbacks are pretty slow. Building without blas
-# is barely supported anyway, see bug #914358.
-IUSE="big-endian +lapack"
-
-RDEPEND="
- lapack? (
- >=virtual/cblas-3.8
- >=virtual/lapack-3.8
- )
-"
-BDEPEND="
- ${RDEPEND}
- >=dev-build/meson-1.5.2
- >=dev-python/cython-3.0.6[${PYTHON_USEDEP}]
- lapack? (
- virtual/pkgconfig
- )
- test? (
- $(python_gen_cond_dep '
- >=dev-python/cffi-1.14.0[${PYTHON_USEDEP}]
- ' 'python*')
- dev-python/charset-normalizer[${PYTHON_USEDEP}]
- >=dev-python/hypothesis-5.8.0[${PYTHON_USEDEP}]
- dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
- dev-python/pytest-timeout[${PYTHON_USEDEP}]
- >=dev-python/pytz-2019.3[${PYTHON_USEDEP}]
- )
-"
-
-QA_CONFIG_IMPL_DECL_SKIP=(
- # https://bugs.gentoo.org/925367
- vrndq_f32
-)
-
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-python_prepare_all() {
- local PATCHES=(
- # https://github.com/google/highway/issues/2577
- # github.com/google/highway/commit/7cde540171a1718a9bdfa8f896d70e47eb0785d5
- "${FILESDIR}/${PN}-2.2.6-gcc16.patch"
- )
-
- # bug #922457
- filter-lto
- # https://github.com/numpy/numpy/issues/25004
- append-flags -fno-strict-aliasing
-
- distutils-r1_python_prepare_all
-}
-
-python_configure_all() {
- DISTUTILS_ARGS=(
- -Dallow-noblas=$(usex !lapack true false)
- -Dblas=$(usev lapack cblas)
- -Dlapack=$(usev lapack lapack)
- # TODO: cpu-* options
- )
-}
-
-python_test() {
- # don't run tests that require more than 4 GiB of RAM (per process)
- local -x NPY_AVAILABLE_MEM="4 GiB"
-
- local EPYTEST_DESELECT=(
- # Very disk-and-memory-hungry
- numpy/lib/tests/test_io.py::TestSavezLoad::test_closing_fid
- numpy/lib/tests/test_io.py::TestSavezLoad::test_closing_zipfile_after_load
-
- # Precision problems
- numpy/_core/tests/test_umath_accuracy.py::TestAccuracy::test_validate_transcendentals
-
- numpy/typing/tests/test_typing.py
- )
-
- if [[ $(uname -m) == armv8l ]]; then
- # Degenerate case of arm32 chroot on arm64, bug #774108
- EPYTEST_DESELECT+=(
- numpy/_core/tests/test_cpu_features.py::Test_ARM_Features::test_features
- )
- fi
-
- case ${ARCH} in
- arm)
- EPYTEST_DESELECT+=(
- # TODO: warnings
- numpy/_core/tests/test_umath.py::TestSpecialFloats::test_unary_spurious_fpexception
-
- # TODO
- numpy/_core/tests/test_function_base.py::TestLinspace::test_denormal_numbers
- numpy/f2py/tests/test_kind.py::TestKind::test_real
- numpy/f2py/tests/test_kind.py::TestKind::test_quad_precision
-
- # require too much memory
- 'numpy/_core/tests/test_multiarray.py::TestDot::test_huge_vectordot[complex128]'
- 'numpy/_core/tests/test_multiarray.py::TestDot::test_huge_vectordot[float64]'
- )
- ;;
- hppa)
- EPYTEST_DESELECT+=(
- # https://bugs.gentoo.org/942689
- "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype[int]"
- "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype[float]"
- "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype_bytes_str_equivalence[datetime64]"
- "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype_bytes_str_equivalence[timedelta64]"
- "numpy/_core/tests/test_dtype.py::TestBuiltin::test_dtype_bytes_str_equivalence[<f]"
- "numpy/_core/tests/test_dtype.py::TestPickling::test_pickle_dtype[dt28]"
- numpy/f2py/tests/test_kind.py::TestKind::test_real
- numpy/f2py/tests/test_kind.py::TestKind::test_quad_precision
- numpy/tests/test_ctypeslib.py::TestAsArray::test_reference_cycles
- numpy/tests/test_ctypeslib.py::TestAsArray::test_segmentation_fault
- numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_scalar
- numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_subarray
- numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_structure
- numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_structure_aligned
- numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_union
- numpy/tests/test_ctypeslib.py::TestAsCtypesType::test_padded_union
- )
- ;;
- ppc|x86)
- EPYTEST_DESELECT+=(
- # require too much memory
- 'numpy/_core/tests/test_multiarray.py::TestDot::test_huge_vectordot[complex128]'
- 'numpy/_core/tests/test_multiarray.py::TestDot::test_huge_vectordot[float64]'
- )
- ;;
- esac
-
- if [[ ${CHOST} == powerpc64le-* ]]; then
- EPYTEST_DESELECT+=(
- # long double thingy
- numpy/_core/tests/test_scalarprint.py::TestRealScalars::test_ppc64_ibm_double_double128
- )
- fi
-
- if use big-endian; then
- EPYTEST_DESELECT+=(
- # ppc64 and sparc
- numpy/linalg/tests/test_linalg.py::TestDet::test_generalized_sq_cases
- numpy/linalg/tests/test_linalg.py::TestDet::test_sq_cases
- "numpy/f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f77[s1]"
- "numpy/f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f77[t1]"
- "numpy/f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f90[s1]"
- "numpy/f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f90[t1]"
- )
- fi
-
- if ! has_version -b "~${CATEGORY}/${P}[${PYTHON_USEDEP}]" ; then
- # depends on importing numpy.random from system namespace
- EPYTEST_DESELECT+=(
- 'numpy/random/tests/test_extending.py::test_cython'
- )
- fi
-
- if has_version ">=dev-python/setuptools-74[${PYTHON_USEDEP}]"; then
- # msvccompiler removal
- EPYTEST_DESELECT+=(
- numpy/tests/test_public_api.py::test_all_modules_are_expected_2
- numpy/tests/test_public_api.py::test_api_importable
- )
- EPYTEST_IGNORE+=(
- numpy/distutils/tests/test_mingw32ccompiler.py
- numpy/distutils/tests/test_system_info.py
- )
- fi
-
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- cd "${BUILD_DIR}/install$(python_get_sitedir)" || die
- epytest -p rerunfailures --reruns=5
-}
-
-python_install_all() {
- local DOCS=( LICENSE.txt README.md THANKS.txt )
- distutils-r1_python_install_all
-}
diff --git a/dev-python/numpy/numpy-2.3.2.ebuild b/dev-python/numpy/numpy-2.3.2.ebuild
index 712395df1b0c..269250c65b43 100644
--- a/dev-python/numpy/numpy-2.3.2.ebuild
+++ b/dev-python/numpy/numpy-2.3.2.ebuild
@@ -20,7 +20,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0/2"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha ~amd64 ~arm arm64 ~hppa ~loong ~m68k ~mips ~ppc ppc64 ~riscv ~s390 ~sparc ~x86"
# +lapack because the internal fallbacks are pretty slow. Building without blas
# is barely supported anyway, see bug #914358.
IUSE="big-endian +lapack"
diff --git a/dev-python/numpy/numpy-2.3.1-r1.ebuild b/dev-python/numpy/numpy-2.3.3.ebuild
index c2f460bee39c..59ba10bc6dbe 100644
--- a/dev-python/numpy/numpy-2.3.1-r1.ebuild
+++ b/dev-python/numpy/numpy-2.3.3.ebuild
@@ -23,7 +23,21 @@ SLOT="0/2"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
# +lapack because the internal fallbacks are pretty slow. Building without blas
# is barely supported anyway, see bug #914358.
-IUSE="big-endian +lapack"
+IUSE="big-endian +cpudetection +lapack"
+
+# upstream-flag[:gentoo-flag]
+ARM_FLAGS=( neon{,-fp16} vfpv4 asimd{,hp,dp,fhm} sve )
+PPC_FLAGS=( vsx vsx2 vsx3 vsx4 )
+X86_FLAGS=(
+ sse{,2,3,4_1,4_2} ssse3 popcnt avx{,2} xop fma{3,4}
+ f16c avx512{f,cd,pf,er,dq,bw,vl,ifma,vbmi}
+ avx512_{vpopcntdq,4vnniw,4fmaps,vbmi2,bitalg,fp16,vnni}
+)
+IUSE+="
+ ${ARM_FLAGS[*]/#/cpu_flags_arm_}
+ ${PPC_FLAGS[*]/#/cpu_flags_ppc_}
+ ${X86_FLAGS[*]/#/cpu_flags_x86_}
+"
RDEPEND="
lapack? (
@@ -43,9 +57,6 @@ BDEPEND="
>=dev-python/cffi-1.14.0[${PYTHON_USEDEP}]
' 'python*')
dev-python/charset-normalizer[${PYTHON_USEDEP}]
- >=dev-python/hypothesis-5.8.0[${PYTHON_USEDEP}]
- dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
- dev-python/pytest-timeout[${PYTHON_USEDEP}]
>=dev-python/pytz-2019.3[${PYTHON_USEDEP}]
)
"
@@ -55,33 +66,166 @@ QA_CONFIG_IMPL_DECL_SKIP=(
vrndq_f32
)
+EPYTEST_PLUGINS=( hypothesis pytest-timeout )
EPYTEST_XDIST=1
distutils_enable_tests pytest
-python_prepare_all() {
- local PATCHES=(
- # https://github.com/google/highway/issues/2577
- # github.com/google/highway/commit/7cde540171a1718a9bdfa8f896d70e47eb0785d5
- "${FILESDIR}/${PN}-2.2.6-gcc16.patch"
- # https://github.com/numpy/numpy/pull/29392
- "${FILESDIR}/${PN}-2.3.1-fix-vector.patch"
- )
-
- # bug #922457
- filter-lto
- # https://github.com/numpy/numpy/issues/25004
- append-flags -fno-strict-aliasing
+PATCHES=(
+ # https://github.com/numpy/numpy/pull/29459
+ "${FILESDIR}"/${PN}-2.3.2-no-detect.patch
+ # https://github.com/numpy/numpy/pull/29579
+ "${FILESDIR}"/${PN}-2.3.2-arm-asimddp.patch
+)
- distutils-r1_python_prepare_all
+has_all_x86() {
+ local flag
+ for flag; do
+ if ! use "cpu_flags_x86_${flag}"; then
+ return 1
+ fi
+ done
+ return 0
}
python_configure_all() {
+ local cpu_baseline=()
+ local map flag
+ case ${ARCH} in
+ arm)
+ # every flag implies the previous one
+ for map in NEON:neon NEON_FP16:neon-fp16 NEON_VFPV4:vfpv4; do
+ if ! use "cpu_flags_arm_${map#*:}"; then
+ break
+ fi
+ cpu_baseline+=( "${map%:*}" )
+ done
+ ;&
+ arm64)
+ # on 32-bit ARM, ASIMD implies all NEON* flags
+ # on 64-bit ARM, they are all linked together
+ if use arm64 ||
+ [[ ${cpu_baseline[@]} && ${cpu_baseline[-1]} == NEON_VFPV4 ]]
+ then
+ cpu_baseline+=( $(usev cpu_flags_arm_asimd ASIMD) )
+ fi
+
+ # these two imply ASIMD
+ if [[ ${cpu_baseline[@]} && ${cpu_baseline[-1]} == ASIMD ]]; then
+ for flag in dp hp; do
+ cpu_baseline+=(
+ $(usev "cpu_flags_arm_asimd${flag}" "ASIMD${flag^^}")
+ )
+ done
+ fi
+
+ # these two imply ASIMDHP
+ if [[ ${cpu_baseline[@]} && ${cpu_baseline[-1]} == ASIMDHP ]]; then
+ for flag in asimdfhm sve; do
+ cpu_baseline+=(
+ $(usev "cpu_flags_arm_${flag}" "${flag^^}")
+ )
+ done
+ fi
+ ;;
+ ppc64)
+ # every flag implies the previous one
+ for flag in '' 2 3 4; do
+ if ! use "cpu_flags_ppc_vsx${flags}"; then
+ break
+ fi
+ cpu_baseline+=( "VSX${flag}" )
+ done
+ ;;
+ amd64|x86)
+ # every flag implies the previous one
+ for flag in sse{,2,3} ssse3 sse4_1 popcnt sse4_2 avx; do
+ if ! use "cpu_flags_x86_${flag}"; then
+ break
+ fi
+ flag=${flag/_}
+ cpu_baseline+=( "${flag^^}" )
+ done
+
+ # these imply AVX
+ if [[ ${cpu_baseline[@]} && ${cpu_baseline[-1]} == AVX ]]; then
+ for flag in xop fma4 f16c; do
+ if use "cpu_flags_x86_${flag}"; then
+ cpu_baseline+=( "${flag^^}" )
+ fi
+ done
+ fi
+
+ # another chain started on implying F16C
+ if [[ ${cpu_baseline[@]} && ${cpu_baseline[-1]} == F16C ]]; then
+ for flag in fma3 avx2 avx512f avx512cd; do
+ if ! use "cpu_flags_x86_${flag}"; then
+ break
+ fi
+ cpu_baseline+=( "${flag^^}" )
+ done
+ fi
+
+ if [[ ${cpu_baseline[@]} && ${cpu_baseline[-1]} == AVX512CD ]]; then
+ # upstream combines multiple instructions into per-CPU sets
+ local -A avx512_mapping=(
+ [AVX512_KNL]="avx512pf avx512er"
+ [AVX512_KNM]="avx512_vpopcntdq avx512_4vnniw avx512_4fmaps"
+ [AVX512_SKX]="avx512dq avx512bw avx512vl"
+ [AVX512_CLX]="avx512_vnni"
+ [AVX512_CNL]="avx512ifma avx512vbmi"
+ [AVX512_ICL]="avx512_vbmi2 avx512_bitalg"
+ [AVX512_SPR]="avx512_fp16"
+ )
+
+ # 1. AVX512CD -> AVX512_KNL -> AVX512_KNM
+ if has_all_x86 ${avx512_mapping[AVX512_KNL]}; then
+ cpu_baseline+=( AVX512_KNL )
+ if has_all_x86 ${avx512_mapping[AVX512_KNM]}; then
+ cpu_baseline+=( AVX512_KNM )
+ fi
+ fi
+ # 2. AVX512CD -> AVX512_SKX -> [AVX512_CLX, AVX512_CNL]
+ if has_all_x86 ${avx512_mapping[AVX512_SKX]}; then
+ cpu_baseline+=( AVX512_SKX )
+ if has_all_x86 ${avx512_mapping[AVX512_CLX]}; then
+ cpu_baseline+=( AVX512_CLX )
+ fi
+ if has_all_x86 ${avx512_mapping[AVX512_CNL]}; then
+ cpu_baseline+=( AVX512_CNL )
+ fi
+ fi
+ # 3. [AVX512_CLX, AVX512_CNL] -> AVX512_ICL -> AVX512_SPR
+ if [[ ${cpu_baseline[-1]} == AVX512_CNL &&
+ ${cpu_baseline[-2]} == AVX512_CLX ]]
+ then
+ if has_all_x86 ${avx512_mapping[AVX512_ICL]}; then
+ cpu_baseline+=( AVX512_ICL )
+ if has_all_x86 ${avx512_mapping[AVX512_SPR]}; then
+ cpu_baseline+=( AVX512_SPR )
+ fi
+ fi
+ fi
+ fi
+ ;;
+ *)
+ cpu_baseline=MIN
+ ;;
+ esac
+
DISTUTILS_ARGS=(
-Dallow-noblas=$(usex !lapack true false)
-Dblas=$(usev lapack cblas)
-Dlapack=$(usev lapack lapack)
- # TODO: cpu-* options
+ -Dcpu-baseline="${cpu_baseline[*]}"
+ -Dcpu-baseline-detect=disabled
+ # '-XOP -FMA4' is upstream default, since these are deprecated
+ -Dcpu-dispatch="$(usev cpudetection 'MAX -XOP -FMA4')"
)
+
+ # bug #922457
+ filter-lto
+ # https://github.com/numpy/numpy/issues/25004
+ append-flags -fno-strict-aliasing
}
python_test() {
@@ -97,6 +241,11 @@ python_test() {
numpy/_core/tests/test_umath_accuracy.py::TestAccuracy::test_validate_transcendentals
numpy/typing/tests/test_typing.py
+
+ # Flaky, reruns don't help
+ numpy/f2py/tests/test_crackfortran.py
+ numpy/f2py/tests/test_f2py2e.py::test_gh22819_cli
+ numpy/f2py/tests/test_data.py::TestData{,F77}::test_crackedlines
)
if [[ $(uname -m) == armv8l ]]; then
@@ -190,9 +339,8 @@ python_test() {
)
fi
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
cd "${BUILD_DIR}/install$(python_get_sitedir)" || die
- epytest -p rerunfailures --reruns=5
+ epytest
}
python_install_all() {
diff --git a/dev-python/opensearch-py/Manifest b/dev-python/opensearch-py/Manifest
index ce4e826183b6..b19ac0c65eff 100644
--- a/dev-python/opensearch-py/Manifest
+++ b/dev-python/opensearch-py/Manifest
@@ -1 +1,2 @@
DIST opensearch-py-2.7.1.gh.tar.gz 479006 BLAKE2B 17203e9c65e9bc2ec0b73b3b2f1ccdf0ad053ebf5173aa5b21423e607b68c1c0e4349b99be593eb982cb6cb9cfa2331a30668b9a74ce425591d966728d86254d SHA512 84041a075667b54b0afeae11221bb56d41a86d7bf4b3fae3f9406822bb8c8f55a6ba67c4ca1a2cfea70d3ed6e089b0921a535b32fccc04a1016549bcf66ac03c
+DIST opensearch-py-3.0.0.gh.tar.gz 510299 BLAKE2B 736fe83372661d811ea9e286e840f283d1f2b66d85035452f427e2984cbf40c974f3531f9749270bb93975a3f8a325023849fbac6e59fc6b098f6064f59f1f75 SHA512 f1caf35582093ad101b96ff9fbaabf795733f1b6b690744b1fda1933c1c7bc63c30700cc49ea3b7911960166a350f3628cd1d811591d742f30ae8ef70ec4d2d3
diff --git a/dev-python/opensearch-py/opensearch-py-3.0.0.ebuild b/dev-python/opensearch-py/opensearch-py-3.0.0.ebuild
new file mode 100644
index 000000000000..2b1d3ae87f09
--- /dev/null
+++ b/dev-python/opensearch-py/opensearch-py-3.0.0.ebuild
@@ -0,0 +1,34 @@
+# Copyright 2023-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="Python client for OpenSearch"
+HOMEPAGE="
+ https://pypi.org/project/opensearch-py/
+ https://github.com/opensearch-project/opensearch-py
+"
+SRC_URI="
+ https://github.com/opensearch-project/opensearch-py/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+
+# Uses 156 GB of RAM for the test suite, needs more work.
+RESTRICT="test"
+
+RDEPEND="
+ >=dev-python/urllib3-1.26.19[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.32.0[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ dev-python/certifi[${PYTHON_USEDEP}]
+ dev-python/events[${PYTHON_USEDEP}]
+"
diff --git a/dev-python/openstacksdk/Manifest b/dev-python/openstacksdk/Manifest
index 0f60312f426e..8e595d1c7813 100644
--- a/dev-python/openstacksdk/Manifest
+++ b/dev-python/openstacksdk/Manifest
@@ -1,2 +1,3 @@
DIST openstacksdk-4.6.0.tar.gz 1287222 BLAKE2B cd2af29901c89bee15ed01fc2d19d75c75a5e2bacd860f999f6696292d171967e7f129ad295fc4556222ba4bf7786cccc4e20bd612b19bf3b6c6507752a88e25 SHA512 9c11a537734e11a25a8e4c664fa700071a47743b12bd8656ce6b91294650c2cd9e119d1f9fe2e68b230c46c1435040ca6b33e28f6e750f3bf88d1686dc66a42c
DIST openstacksdk-4.7.0.tar.gz 1297106 BLAKE2B 65a351ad27f73751cafb968f2c7071402f1fc1415dafd768f30fe099a665d9c3718626b3d61f1fa7fba420c6d847c84385d7914a7e4128a364d2568979387227 SHA512 64a1e9ec712d24543ee84f67bb18320ff55adf10a35943070871d53ba4c210d13069cce33a3416df495394f3ac8f9d990c1efdfc02930a6215c83a94deeba4fb
+DIST openstacksdk-4.7.1.tar.gz 1297628 BLAKE2B 60c028354e21b82c3a9bfc0db339729e6a96c925ae514927caec1ca46f435737d4c83d6219e1af892525ea5ca9a68fa0f09e2fd53d4b591554ce7bf3ac995417 SHA512 0319cbd9b53d117b212d2659ae4d11b5fce7f2d5f501c518e93e3c7bed10eb768bbc8eccf7b4a558b957de59a1ebda59582102fb7f107a966aa2b70b5702a6be
diff --git a/dev-python/openstacksdk/openstacksdk-4.7.1.ebuild b/dev-python/openstacksdk/openstacksdk-4.7.1.ebuild
new file mode 100644
index 000000000000..00aae8278bb2
--- /dev/null
+++ b/dev-python/openstacksdk/openstacksdk-4.7.1.ebuild
@@ -0,0 +1,91 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=pbr
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A collection of libraries for building applications to work with OpenStack"
+HOMEPAGE="
+ https://opendev.org/openstack/openstacksdk/
+ https://github.com/openstack/openstacksdk/
+ https://pypi.org/project/openstacksdk/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/cryptography-2.7[${PYTHON_USEDEP}]
+ >=dev-python/decorator-4.4.1[${PYTHON_USEDEP}]
+ >=dev-python/dogpile-cache-0.6.5[${PYTHON_USEDEP}]
+ >=dev-python/iso8601-0.1.11[${PYTHON_USEDEP}]
+ >=dev-python/jmespath-0.9.0[${PYTHON_USEDEP}]
+ >=dev-python/jsonpatch-1.21[${PYTHON_USEDEP}]
+ >=dev-python/keystoneauth1-5.10.0[${PYTHON_USEDEP}]
+ >=dev-python/os-service-types-1.8.0[${PYTHON_USEDEP}]
+ >=dev-python/pbr-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-3[${PYTHON_USEDEP}]
+ >=dev-python/psutil-3.2.2[${PYTHON_USEDEP}]
+ >=dev-python/pyyaml-3.13[${PYTHON_USEDEP}]
+ >=dev-python/requestsexceptions-1.2.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ >=dev-python/ddt-1.0.1[${PYTHON_USEDEP}]
+ >=dev-python/fixtures-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/jsonschema-3.2.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-config-6.1.0[${PYTHON_USEDEP}]
+ >=dev-python/oslotest-3.2.0[${PYTHON_USEDEP}]
+ >=dev-python/prometheus-client-0.4.2[${PYTHON_USEDEP}]
+ >=dev-python/requests-mock-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/statsd-3.3.0[${PYTHON_USEDEP}]
+ >=dev-python/testscenarios-0.4[${PYTHON_USEDEP}]
+ >=dev-python/testtools-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.12.0[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests unittest
+
+src_prepare() {
+ # Internet?
+ sed -e 's:test_create_dynamic_large_object:_&:' \
+ -i openstack/tests/unit/cloud/test_object.py || die
+
+ # TODO
+ sed -e 's:test_generate_form:_&:' \
+ -e 's:test_create_static_large_object:_&:' \
+ -e 's:test_object_segment_retries:_&:' \
+ -e 's:test_object_segment_retry_failure:_&:' \
+ -e 's:test_slo_manifest_retry:_&:' \
+ -i openstack/tests/unit/cloud/test_object.py || die
+ sed -e 's:test_servers:_&:' \
+ -i openstack/tests/unit/test_stats.py || die
+
+ # unhappy about paths due to test runner
+ sed -e 's:test_method_not_supported:_&:' \
+ -i openstack/tests/unit/test_exceptions.py || die
+ sed -e 's:test_repr:_&:' \
+ -i openstack/tests/unit/test_resource.py || die
+
+ # requires hacking
+ rm openstack/tests/unit/test_hacking.py || die
+
+ # fragile warning-based tests
+ sed -e 's:test_unsupported_version_override:_&:' \
+ -i openstack/tests/unit/test_missing_version.py || die
+ sed -e 's:test_create_unknown_proxy:_&:' \
+ -i openstack/tests/unit/test_connection.py || die
+
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ # functional tests require cloud instance access
+ eunittest -b openstack/tests/unit
+}
diff --git a/dev-python/opentelemetry-api/Manifest b/dev-python/opentelemetry-api/Manifest
index 4d75bf93bfda..6ab343764c96 100644
--- a/dev-python/opentelemetry-api/Manifest
+++ b/dev-python/opentelemetry-api/Manifest
@@ -1,2 +1,3 @@
DIST opentelemetry-python-1.35.0.gh.tar.gz 1248960 BLAKE2B ecb5a671300f60657a77d9b86a9dd673c23ee916020f5fbd658d373b0e6b25a1b448cb5ea5ec7ebcf8ca662f87c728316f260d2809c74e193fab5a2f0762ef4a SHA512 5f530f651df307476af5e364f1a0ae20c0b9600e3ce6dd78e66fddaa012fd398a2ff9539c75d8970e162d969809655478604666e79f88a00918421e186cdfb37
DIST opentelemetry-python-1.36.0.gh.tar.gz 1251116 BLAKE2B 4b2df24523b5f05c0f5efdec895ab641bc7bd6607a71aee91c7db4bc35b4f3cd29e7da17bd4e487f72d645a3cffd572504de9f5987db051e1c74ee14d4074a59 SHA512 6e142e1dc33a8aa1313d61c15b00619b8df9fbff73dd1b9f187370cc6396a1d37b83dfb8d6effad795a37e851f05b88ef2cf487ece3008e172ad9759ceb697c4
+DIST opentelemetry-python-1.37.0.gh.tar.gz 1270475 BLAKE2B e3739e70de1f612f2f7ce477810106ef4f9bc444a4001e5e7c20652b185c60b15370675a4da7a877799839076c5fc357bd4dab8e0d82cccbd7b49908a8c6ea42 SHA512 9e8f309b8bdbedb6040acb1f29d1bbfdd4dabc8b5dae01554363431dbdfd7e5d26fdf76e3ca63f1d9b1ab31d570ce24dc41418d85e8cc3b5d65530a52069e8e3
diff --git a/dev-python/opentelemetry-api/opentelemetry-api-1.37.0.ebuild b/dev-python/opentelemetry-api/opentelemetry-api-1.37.0.ebuild
new file mode 100644
index 000000000000..d366292b8f82
--- /dev/null
+++ b/dev-python/opentelemetry-api/opentelemetry-api-1.37.0.ebuild
@@ -0,0 +1,61 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1
+
+MY_P="opentelemetry-python-${PV}"
+DESCRIPTION="OpenTelemetry Python API"
+HOMEPAGE="
+ https://opentelemetry.io/
+ https://pypi.org/project/opentelemetry-api/
+ https://github.com/open-telemetry/opentelemetry-python/
+"
+SRC_URI="
+ https://github.com/open-telemetry/opentelemetry-python/archive/refs/tags/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S="${WORKDIR}/${MY_P}/${PN}"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ >=dev-python/importlib-metadata-6.0[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.5.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+src_prepare() {
+ default
+
+ # Unnecessary restriction
+ sed -i -e '/importlib-metadata/s:, < [0-9.]*::' pyproject.toml || die
+}
+
+python_test() {
+ cp -a "${BUILD_DIR}"/{install,test} || die
+ local -x PATH=${BUILD_DIR}/test/usr/bin:${PATH}
+
+ for dep in opentelemetry-semantic-conventions opentelemetry-sdk \
+ tests/opentelemetry-test-utils
+ do
+ pushd "${WORKDIR}/${MY_P}/${dep}" >/dev/null || die
+ distutils_pep517_install "${BUILD_DIR}"/test
+ popd >/dev/null || die
+ done
+
+ epytest
+}
diff --git a/dev-python/opentelemetry-sdk/Manifest b/dev-python/opentelemetry-sdk/Manifest
index 4d75bf93bfda..6ab343764c96 100644
--- a/dev-python/opentelemetry-sdk/Manifest
+++ b/dev-python/opentelemetry-sdk/Manifest
@@ -1,2 +1,3 @@
DIST opentelemetry-python-1.35.0.gh.tar.gz 1248960 BLAKE2B ecb5a671300f60657a77d9b86a9dd673c23ee916020f5fbd658d373b0e6b25a1b448cb5ea5ec7ebcf8ca662f87c728316f260d2809c74e193fab5a2f0762ef4a SHA512 5f530f651df307476af5e364f1a0ae20c0b9600e3ce6dd78e66fddaa012fd398a2ff9539c75d8970e162d969809655478604666e79f88a00918421e186cdfb37
DIST opentelemetry-python-1.36.0.gh.tar.gz 1251116 BLAKE2B 4b2df24523b5f05c0f5efdec895ab641bc7bd6607a71aee91c7db4bc35b4f3cd29e7da17bd4e487f72d645a3cffd572504de9f5987db051e1c74ee14d4074a59 SHA512 6e142e1dc33a8aa1313d61c15b00619b8df9fbff73dd1b9f187370cc6396a1d37b83dfb8d6effad795a37e851f05b88ef2cf487ece3008e172ad9759ceb697c4
+DIST opentelemetry-python-1.37.0.gh.tar.gz 1270475 BLAKE2B e3739e70de1f612f2f7ce477810106ef4f9bc444a4001e5e7c20652b185c60b15370675a4da7a877799839076c5fc357bd4dab8e0d82cccbd7b49908a8c6ea42 SHA512 9e8f309b8bdbedb6040acb1f29d1bbfdd4dabc8b5dae01554363431dbdfd7e5d26fdf76e3ca63f1d9b1ab31d570ce24dc41418d85e8cc3b5d65530a52069e8e3
diff --git a/dev-python/opentelemetry-sdk/opentelemetry-sdk-1.37.0.ebuild b/dev-python/opentelemetry-sdk/opentelemetry-sdk-1.37.0.ebuild
new file mode 100644
index 000000000000..b181575ea33e
--- /dev/null
+++ b/dev-python/opentelemetry-sdk/opentelemetry-sdk-1.37.0.ebuild
@@ -0,0 +1,51 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1
+
+MY_P="opentelemetry-python-${PV}"
+DESCRIPTION="OpenTelemetry Python SDK"
+HOMEPAGE="
+ https://opentelemetry.io/
+ https://pypi.org/project/opentelemetry-sdk/
+ https://github.com/open-telemetry/opentelemetry-python/
+"
+SRC_URI="
+ https://github.com/open-telemetry/opentelemetry-python/archive/refs/tags/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+
+S="${WORKDIR}/${MY_P}/${PN}"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ ~dev-python/opentelemetry-api-${PV}[${PYTHON_USEDEP}]
+ ~dev-python/opentelemetry-semantic-conventions-${PV}[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.5.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=( pytest-rerunfailures )
+# Tests cannot handle xdist with high makeopts
+# https://bugs.gentoo.org/928132
+distutils_enable_tests pytest
+
+python_test() {
+ cp -a "${BUILD_DIR}"/{install,test} || die
+ local -x PATH=${BUILD_DIR}/test/usr/bin:${PATH}
+
+ for dep in tests/opentelemetry-test-utils; do
+ pushd "${WORKDIR}/${MY_P}/${dep}" >/dev/null || die
+ distutils_pep517_install "${BUILD_DIR}"/test
+ popd >/dev/null || die
+ done
+
+ epytest tests
+}
diff --git a/dev-python/opentelemetry-semantic-conventions/Manifest b/dev-python/opentelemetry-semantic-conventions/Manifest
index 4d75bf93bfda..6ab343764c96 100644
--- a/dev-python/opentelemetry-semantic-conventions/Manifest
+++ b/dev-python/opentelemetry-semantic-conventions/Manifest
@@ -1,2 +1,3 @@
DIST opentelemetry-python-1.35.0.gh.tar.gz 1248960 BLAKE2B ecb5a671300f60657a77d9b86a9dd673c23ee916020f5fbd658d373b0e6b25a1b448cb5ea5ec7ebcf8ca662f87c728316f260d2809c74e193fab5a2f0762ef4a SHA512 5f530f651df307476af5e364f1a0ae20c0b9600e3ce6dd78e66fddaa012fd398a2ff9539c75d8970e162d969809655478604666e79f88a00918421e186cdfb37
DIST opentelemetry-python-1.36.0.gh.tar.gz 1251116 BLAKE2B 4b2df24523b5f05c0f5efdec895ab641bc7bd6607a71aee91c7db4bc35b4f3cd29e7da17bd4e487f72d645a3cffd572504de9f5987db051e1c74ee14d4074a59 SHA512 6e142e1dc33a8aa1313d61c15b00619b8df9fbff73dd1b9f187370cc6396a1d37b83dfb8d6effad795a37e851f05b88ef2cf487ece3008e172ad9759ceb697c4
+DIST opentelemetry-python-1.37.0.gh.tar.gz 1270475 BLAKE2B e3739e70de1f612f2f7ce477810106ef4f9bc444a4001e5e7c20652b185c60b15370675a4da7a877799839076c5fc357bd4dab8e0d82cccbd7b49908a8c6ea42 SHA512 9e8f309b8bdbedb6040acb1f29d1bbfdd4dabc8b5dae01554363431dbdfd7e5d26fdf76e3ca63f1d9b1ab31d570ce24dc41418d85e8cc3b5d65530a52069e8e3
diff --git a/dev-python/opentelemetry-semantic-conventions/opentelemetry-semantic-conventions-1.37.0.ebuild b/dev-python/opentelemetry-semantic-conventions/opentelemetry-semantic-conventions-1.37.0.ebuild
new file mode 100644
index 000000000000..238e386e8153
--- /dev/null
+++ b/dev-python/opentelemetry-semantic-conventions/opentelemetry-semantic-conventions-1.37.0.ebuild
@@ -0,0 +1,52 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1 pypi
+
+MY_P="opentelemetry-python-${PV}"
+DESCRIPTION="OpenTelemetry Semantic Conventions"
+HOMEPAGE="
+ https://opentelemetry.io/
+ https://pypi.org/project/opentelemetry-sdk/
+ https://github.com/open-telemetry/opentelemetry-python/
+"
+SRC_URI="
+ https://github.com/open-telemetry/opentelemetry-python/archive/refs/tags/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S="${WORKDIR}/${MY_P}/${PN}"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ ~dev-python/opentelemetry-api-${PV}[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.5.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_test() {
+ cp -a "${BUILD_DIR}"/{install,test} || die
+ local -x PATH=${BUILD_DIR}/test/usr/bin:${PATH}
+
+ for dep in opentelemetry-sdk tests/opentelemetry-test-utils; do
+ pushd "${WORKDIR}/${MY_P}/${dep}" >/dev/null || die
+ distutils_pep517_install "${BUILD_DIR}"/test
+ popd >/dev/null || die
+ done
+
+ epytest
+}
diff --git a/dev-python/ovs/Manifest b/dev-python/ovs/Manifest
index 2b97f161cb7e..e12f4c4733a4 100644
--- a/dev-python/ovs/Manifest
+++ b/dev-python/ovs/Manifest
@@ -1,3 +1,4 @@
DIST ovs-2.17.1.post1.tar.gz 104766 BLAKE2B e1cb471f7f3f3b8461292c79ee5318a36d70c2ee55947bfa0274277e36514d20ad9293cb8c602e0b2c82a590397869fe51f52ee2579255bb8163014d58dccaf7 SHA512 772e7b4768f1e7fe1f2be700a0eb6bc539459e4c70432c45e7f7877b060f4c845eaa5a974f2b2264af621f5f43b97da30a9fe344a53904ec0008393689e6b895
DIST ovs-2.17.12.tar.gz 107261 BLAKE2B 90fee024c21085308c559839364fc8a900b71058cda48cc7accb3992e018bd34dbdf2e1adde787702094168b005a72b018f5c9d6252eb24f2f9e915ab1cf7003 SHA512 771647b098e3a6f3eb696e4f3892f18cf4e494eb1a4d62ef4ec44853333c9801037635db7c8ceeb68e4957489e99082d55965baa185f467c60cc988ae8bdbe9b
DIST ovs-2.17.9.tar.gz 110350 BLAKE2B 68f6fb154c830877fa404a24e5283e17cbb9e9d0c138e26da897835741457bab53be99754959eb01bdc8c5ea61a67327655ad6b1deba941b37ba4e86dab61375 SHA512 05ba60f585b576757bf0d2799dda2d17f0b4fd06bbdeaf4810c64f48c1a74dbc8bdba4348800fcb0c343415317104556cf4f2ab2dcabd9d438a0c31de1c45cd6
+DIST ovs-3.6.0.tar.gz 161659 BLAKE2B ed92d5b72903bb6df0f0cfe086e9967968ab9bae45d79818e43619743eb1cd553d17976669d275e7b3a37d38896b68c8358268628fd92811cca466eccdd81aee SHA512 efde7ecc255ea9065a1af29d0236ee6b2484229b7bc8692b03df0e979136aad5b9ec1f1366edebcb305eb111b011ea2fe2e17423fab6bc2eff90d19f6a1fa997
diff --git a/dev-python/ovs/ovs-3.6.0.ebuild b/dev-python/ovs/ovs-3.6.0.ebuild
new file mode 100644
index 000000000000..9842b2f9b383
--- /dev/null
+++ b/dev-python/ovs/ovs-3.6.0.ebuild
@@ -0,0 +1,17 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+inherit distutils-r1 pypi
+
+DESCRIPTION="OVS bindings for python"
+HOMEPAGE="https://github.com/openvswitch/ovs/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+
+RDEPEND="dev-python/sortedcontainers[${PYTHON_USEDEP}]"
diff --git a/dev-python/path/path-17.1.1.ebuild b/dev-python/path/path-17.1.1.ebuild
index d5809c318bfd..7ea3a9e1cefd 100644
--- a/dev-python/path/path-17.1.1.ebuild
+++ b/dev-python/path/path-17.1.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
RDEPEND="
dev-python/appdirs[${PYTHON_USEDEP}]
diff --git a/dev-python/phonenumbers/phonenumbers-9.0.11.ebuild b/dev-python/phonenumbers/phonenumbers-9.0.11.ebuild
index a4046879a533..194e0165d2af 100644
--- a/dev-python/phonenumbers/phonenumbers-9.0.11.ebuild
+++ b/dev-python/phonenumbers/phonenumbers-9.0.11.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P}/python
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86"
+KEYWORDS="amd64 ~arm64 ~ppc64 ~riscv x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/pikepdf/Manifest b/dev-python/pikepdf/Manifest
index 0a759fb4216b..e69377a74d05 100644
--- a/dev-python/pikepdf/Manifest
+++ b/dev-python/pikepdf/Manifest
@@ -1,4 +1,5 @@
DIST pikepdf-9.10.1.tar.gz 4545682 BLAKE2B 164647ec13bbba5685c5965a68ff8530f66b7c015dba7394f84b32963fae318aa9c9f1b99733b5c5052e3b90fe52c4470bd92e829a8cfb0e5d12588cc996df0c SHA512 bfe95eb94b2738769bf1af537d853d7c8396f5d1ff3c155f9958a4646eed35fa98118c50febd8002863feac5075645fa2eb6fcd5be3b726d5f185833d28c5cf3
DIST pikepdf-9.10.2.tar.gz 4545737 BLAKE2B 3ac3c0c39a849b1d4c62f4435bef87cd8cb5b09c3e5cd9f1598cc0c1e1611fc0db0b80e7818c98505c021c61fdfc6ef2d9b6a901b6f4f730efe13a8c6fe37dd7 SHA512 3dc41d4f547cf68f6d05cefbef74f5e18b25a9f5900d2b5352aea50eda253a4c01ac4e1f69384a924d9ff5b042ed7c93ce7d5424e476dd3e8b8b52daeef15229
+DIST pikepdf-9.11.0.tar.gz 4546289 BLAKE2B 267a8f834cf9da21a5d8f4b5e4734eaaaa9889f9ae919e6c9f030ffda3a36e951f3a8aedecc8168234264ffd5792ca1eefc2e1833ec8a6b540b0978a5638e8e4 SHA512 b92c1aa285935faccf8f1058aff25bf1ba906d8e6e4cca986f6fed59c2faf9cb9f1c5a3aeebd2899dac7fbe2489af627c76a751963657aa476c16eb1374b34ad
DIST pikepdf-9.5.2.tar.gz 2916549 BLAKE2B 821fe21cb2ef471ab7313e2dab371f0a5290659225647ca4059995af9112e4f5425e0a9e11f9691dc2da9786beeffb2abc33ec374bb97b3fe1f25bd6feba042a SHA512 ac7c33c7cd23e34eb1bd518aae7167285cca6cc710e37f05cac03512666777848a2ad3d17a72654832564a8521e69ea0d124c70c61aca0bed7123475bf03a359
DIST pikepdf-9.9.0.tar.gz 4544960 BLAKE2B c87f9c559e17ce327d77d81d652d37cbbc369dd373901c406d4dd29ba5e357e3234759d0e322cb87db3184fc825bda625f39e4bfedd884d07492751096a14bf5 SHA512 d2fc9218e0c7393156d035f4babad54802d1ce0946fdd5938c6c5f291ba59c40ecaeac9a0edd05f986827fbab2037589badfc8c57d16caa59eaf6e4832b8f74e
diff --git a/dev-python/pikepdf/pikepdf-9.11.0.ebuild b/dev-python/pikepdf/pikepdf-9.11.0.ebuild
new file mode 100644
index 000000000000..c0774d1d53fe
--- /dev/null
+++ b/dev-python/pikepdf/pikepdf-9.11.0.ebuild
@@ -0,0 +1,59 @@
+# 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="Python library to work with pdf files based on qpdf"
+HOMEPAGE="
+ https://github.com/pikepdf/pikepdf/
+ https://pypi.org/project/pikepdf/
+"
+
+LICENSE="MPL-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="big-endian"
+
+# Check QPDF_MIN_VERSION in pyproject.toml on bumps, as well as
+# https://qpdf.readthedocs.io/en/stable/release-notes.html.
+DEPEND="
+ >=app-text/qpdf-11.5.0:0=
+"
+RDEPEND="
+ ${DEPEND}
+ dev-python/deprecated[${PYTHON_USEDEP}]
+ >=dev-python/lxml-4.0[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ >=dev-python/pillow-10.0.1[lcms,${PYTHON_USEDEP}]
+"
+BDEPEND="
+ >=dev-python/pybind11-3[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-77.0.3[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-scm-7.0.5[${PYTHON_USEDEP}]
+ test? (
+ >=dev-python/attrs-20.2.0[${PYTHON_USEDEP}]
+ >=dev-python/numpy-1.21.0[${PYTHON_USEDEP}]
+ >=dev-python/pillow-5.0.0[${PYTHON_USEDEP},jpeg,lcms,tiff]
+ >=dev-python/psutil-5.9[${PYTHON_USEDEP}]
+ >=dev-python/python-dateutil-2.8.1[${PYTHON_USEDEP}]
+ !big-endian? (
+ >=dev-python/python-xmp-toolkit-2.0.1[${PYTHON_USEDEP}]
+ )
+ media-libs/tiff[zlib]
+ )
+"
+
+EPYTEST_PLUGINS=( hypothesis pytest-timeout )
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ sed -e '/-n auto/d' -i pyproject.toml || die
+}
diff --git a/dev-python/pip/pip-25.2.ebuild b/dev-python/pip/pip-25.2.ebuild
index 30952dc2877a..dd464aecbc3c 100644
--- a/dev-python/pip/pip-25.2.ebuild
+++ b/dev-python/pip/pip-25.2.ebuild
@@ -24,7 +24,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="test test-rust"
RESTRICT="!test? ( test )"
diff --git a/dev-python/prometheus-client/Manifest b/dev-python/prometheus-client/Manifest
index 1e9e3e06acdd..c39b61cd21f9 100644
--- a/dev-python/prometheus-client/Manifest
+++ b/dev-python/prometheus-client/Manifest
@@ -1 +1,2 @@
DIST client_python-0.22.1.gh.tar.gz 4648230 BLAKE2B 3b6df3195c73f1541266d6050bb5b8208966afddd31763f0110007c8568a5307d7a3971d3f20271f2ff6dab652a6e0d6bb52dcaad2b293b1aa2cdc23792e5d05 SHA512 875bb70478e5a01a209c656692298735df21aed18861bd269b40fc70aac1e99843a95a39dc2a8999b0684d15c754d77bd913b409a275ccc2c4007f9128643ed2
+DIST client_python-0.23.0.gh.tar.gz 4654437 BLAKE2B 2e0fd4c93e95d330059efcdc72c525808915970a425e687a190a602174b4a7fe0eed1f425583acd14cd749459c7ca72efa0cef5f385009e4030bed47e2a9ccd7 SHA512 14eb53b3c29b6d38de642f6b6187af34a2d7a271fc34b2a0d62f25e02551d02cefc1096f2a7bf7e4b8d9f7d4679fc48fde47df35aeb501798cbfeda8abe1c073
diff --git a/dev-python/prometheus-client/prometheus-client-0.23.0.ebuild b/dev-python/prometheus-client/prometheus-client-0.23.0.ebuild
new file mode 100644
index 000000000000..d2d341f33ec9
--- /dev/null
+++ b/dev-python/prometheus-client/prometheus-client-0.23.0.ebuild
@@ -0,0 +1,45 @@
+# 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
+
+MY_P=client_python-${PV}
+DESCRIPTION="Python client for the Prometheus monitoring system"
+HOMEPAGE="
+ https://github.com/prometheus/client_python/
+ https://pypi.org/project/prometheus-client/
+"
+# missing test data in sdist
+# https://github.com/prometheus/client_python/issues/1112
+SRC_URI="
+ https://github.com/prometheus/client_python/archive/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ dev-python/twisted[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ tests/test_parser.py::test_benchmark_text_string_to_metric_families
+)
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # https://github.com/prometheus/client_python/pull/1138
+ sed -i -e 's:get_event_loop:new_event_loop:' tests/test_asgi.py || die
+}
diff --git a/dev-python/protobuf/Manifest b/dev-python/protobuf/Manifest
index 741ce24613d0..862a682fef99 100644
--- a/dev-python/protobuf/Manifest
+++ b/dev-python/protobuf/Manifest
@@ -1,4 +1,5 @@
DIST protobuf-32.0.gh.tar.gz 9692366 BLAKE2B 37e09bec62a5c35a3ca45d4bd4fd27e719a4f04b95f049b265ca7c231459d8333eafc13cfd1126dda5ccf799ab2e2e9f305fcae5525a64b4b1eb45b1fb3a897b SHA512 89806b219fa2132e46bf01b7a5831c2977ad7ebe06750956d0e17bcdc028498e883704445fca56bb813f4b78e935709f67f8fa1b46b597840c58a843483cdafb
+DIST protobuf-32.1.gh.tar.gz 9694736 BLAKE2B 37a310799eaa58b14f67c62410f1e150c031b94db5a499ceeda749bd13a1165403a5d4c86ffa45729ae333080697ce0619b29a51d2bc345de012f99a3ce5dd20 SHA512 840239f4fb57450ffe61f2cdc73daf5f1f3ea317b1ab1135a90303783e62722cfa410ff27bb2c5c6d3106be39ccdc95cdfbc5bf271ba79f935ab85f9b8ce3075
DIST protobuf-5.29.4.py.tar.gz 424902 BLAKE2B 54941b008ff5ebd007076448828564128d98e9a6a4613c87057c359124940d341358fe28107b929e3e842ac7e1b34ed54c30219ed95cbb418826592e2458a01f SHA512 634faf103ed8320762593689796d26e6b988e1b40277b12dc7356983c07d5d1da8cac1530e4f16c0a1494abfb885f26bf9884988029e863515cf535c62d96c77
DIST protobuf-5.29.5.py.tar.gz 425226 BLAKE2B 1d7461e94ba8bc097d6f52170678665e3cd97ef44e4757e6c20bcb1bdfbfe673d26cd4a63f8e6972af964e381dfffedeb9a4959ec7a7d5a3a3f87f917c8aa329 SHA512 cbb39efe7f6499362b3e4cc9f073df921c8b83d3aafde245a2ca3432f3e744a428e946799c48b2797e08312342e164eced0bf2b8865b8d042b54913855abb1c8
DIST protobuf-6.30.2.gh.tar.gz 9523913 BLAKE2B d3950abfe8b3b61dc2bb61f683b014de29451252c46b670dee75a81eb0b8ed30a3209227aa9483800244af16058469deb281521609d769a3456a798ca8a9a4a3 SHA512 f2ee857a36b49f87257a306b3f3c361770d74aaf24c4650b9d00994e1e1a0b09079fb0ce5ffb4d5a4a32d8ca46e3247d6db454918fa0b104fc8d58e8a0546a96
@@ -6,3 +7,4 @@ DIST protobuf-6.30.2.py.tar.gz 429315 BLAKE2B 6b56e23a8a962ce9da282ec49c4807877f
DIST protobuf-6.31.1.gh.tar.gz 9602805 BLAKE2B 349a528acaad6bae8c39be2888fcfe855dc71605d2b52e20c24e63b3171a855b0f16c60e4fa8a69bcad8b484edd46232132e7b0256634f420aea2dd207da129e SHA512 9138ac1b1c248246ed9840ab3879a6e18da60c709454ede2cb8e45e66e949998ab6e2c8aba557f0bb0b650ec430caeb546695b23387321ced5bc288866e04ad7
DIST protobuf-6.31.1.py.tar.gz 441797 BLAKE2B 867ee81473a733020098f76c2ccf22161a73b3a1219e08f0f339f202cff871447d874cc6c13d42ef314a0134d65c56631ba4ab6feb806749f3d18443f666f5d9 SHA512 595c125a116020344d5706adf444e1a3259eae5bce3ca61b92c1ab4cb63c167f97210c71e5e24b8c49c6489777ca6de95abdd398125ba3925313ad5ebe09cc18
DIST protobuf-6.32.0.py.tar.gz 440614 BLAKE2B 615338e96a26c5a9f254b41da41598d9826fa039cff088c94fe3693a1f042631a7b48ac9a3a9bf6de2f6c5d61209796e227df080f4388f46d76afa9fecc94ddd SHA512 c29d1b01984e0cc204bffa5c757e4df4eb8ee696b6f5557414e65310b15956192fc73db5daae176f2b4db03e98c36a46cc74ca8b377df193bc9461142c8269cf
+DIST protobuf-6.32.1.py.tar.gz 440635 BLAKE2B 4d6c7c398378e04f130ec281234a96ef59fc34511d9c1c3153851a2623b894dc64d559e02bd8f55c9b7f82d98d43e914ca5967481dcf4eb92f7cd22aa47a4e77 SHA512 f8aeb9cdbde385e728f3006d16f26c540a5ec46f7046486b34cdf254a22acdcf6a152791517cd852cfa866809b0b79b3233757c4f898e4768d00b0d902c30776
diff --git a/dev-python/protobuf/protobuf-6.32.1.ebuild b/dev-python/protobuf/protobuf-6.32.1.ebuild
new file mode 100644
index 000000000000..fe90bd760180
--- /dev/null
+++ b/dev-python/protobuf/protobuf-6.32.1.ebuild
@@ -0,0 +1,155 @@
+# Copyright 2008-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Default implementation currently is upb, which doesn't match dev-libs/protobuf
+# https://github.com/protocolbuffers/protobuf/blob/main/python/README.md#implementation-backends
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1 pypi
+
+GH_PV=$(ver_cut 2-3)
+GH_P=${PN}-${GH_PV}
+
+DESCRIPTION="Google's Protocol Buffers - Python bindings"
+HOMEPAGE="
+ https://protobuf.dev/
+ https://pypi.org/project/protobuf/
+"
+# Rename sdist to avoid conflicts with dev-libs/protobuf
+SRC_URI="
+ $(pypi_sdist_url) -> ${P}.py.tar.gz
+ test? (
+ https://github.com/protocolbuffers/protobuf/archive/v${GH_PV}.tar.gz
+ -> ${GH_P}.gh.tar.gz
+ )
+"
+
+LICENSE="BSD"
+SLOT="0/$(ver_cut 1-3)"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+# need protobuf compiler
+BDEPEND="
+ test? (
+ dev-libs/protobuf
+ dev-python/absl-py[${PYTHON_USEDEP}]
+ dev-python/numpy[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-forked )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_unpack() {
+ unpack "${P}.py.tar.gz"
+
+ if use test; then
+ mkdir "${WORKDIR}/test" || die
+ cd "${WORKDIR}/test" || die
+ unpack "${GH_P}.gh.tar.gz"
+ fi
+}
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # strip old-style namespace
+ rm google/__init__.py || die
+}
+
+python_test() {
+ local EPYTEST_DESELECT=()
+ local EPYTEST_IGNORE=(
+ # TODO: figure out how to build the pybind11 test extension
+ google/protobuf/internal/recursive_message_pybind11_test.py
+ )
+
+ case ${EPYTHON} in
+ python3.11)
+ EPYTEST_IGNORE+=(
+ # syntax error...
+ google/protobuf/internal/json_format_test.py
+ )
+ ;;
+ python3.14*)
+ EPYTEST_DESELECT+=(
+ # exception message mismatch
+ google/protobuf/internal/json_format_test.py::JsonFormatTest::testInvalidTimestamp
+ google/protobuf/internal/well_known_types_test.py::TimeUtilTest::testInvalidTimestamp
+ )
+ ;;
+ esac
+
+ cp -r "${BUILD_DIR}"/{install,test} || die
+ local -x PATH="${BUILD_DIR}/test${EPREFIX}/usr/bin:${PATH}"
+ cd "${BUILD_DIR}/test$(python_get_sitedir)" || die
+
+ # copy test files from the source tree
+ cp -r "${WORKDIR}/test/${GH_P}/python/google/protobuf/internal/." \
+ google/protobuf/internal/ || die
+ # link the test data for text_format_test.py
+ # (it traverses directories upwards until to finds src/google...)
+ ln -s "${WORKDIR}/test/${GH_P}/src" ../src || die
+
+ # compile test-related protobufs
+ local test_protos=(
+ # from src
+ any_test.proto
+ map_proto2_unittest.proto
+ map_unittest.proto
+ unittest.proto
+ unittest_custom_options.proto
+ unittest_delimited.proto
+ unittest_delimited_import.proto
+ unittest_features.proto
+ unittest_import.proto
+ unittest_import_public.proto
+ unittest_legacy_features.proto
+ unittest_mset.proto
+ unittest_mset_wire_format.proto
+ unittest_no_field_presence.proto
+ unittest_no_generic_services.proto
+ unittest_proto3.proto
+ unittest_proto3_arena.proto
+ unittest_proto3_extensions.proto
+ unittest_retention.proto
+ util/json_format.proto
+ util/json_format_proto3.proto
+ # from python
+ internal/descriptor_pool_test1.proto
+ internal/descriptor_pool_test2.proto
+ internal/factory_test1.proto
+ internal/factory_test2.proto
+ internal/file_options_test.proto
+ internal/import_test_package/import_public.proto
+ internal/import_test_package/import_public_nested.proto
+ internal/import_test_package/inner.proto
+ internal/import_test_package/outer.proto
+ internal/message_set_extensions.proto
+ internal/missing_enum_values.proto
+ internal/more_extensions.proto
+ internal/more_messages.proto
+ internal/no_package.proto
+ internal/packed_field_test.proto
+ internal/self_recursive.proto
+ internal/test_bad_identifiers.proto
+ internal/test_proto2.proto
+ internal/test_proto3_optional.proto
+ internal/well_known_types_test.proto
+ )
+ local proto
+ for proto in "${test_protos[@]}"; do
+ protoc --python_out=. -I"${WORKDIR}/test/${GH_P}/src" -I. \
+ "google/protobuf/${proto}" || die
+ done
+
+ # pytest-forked prevents segfault on py3.13
+ # https://github.com/protocolbuffers/protobuf/issues/22067
+ epytest --forked
+}
diff --git a/dev-python/psycopg/Manifest b/dev-python/psycopg/Manifest
index fc280e606c54..2a6fcad428b8 100644
--- a/dev-python/psycopg/Manifest
+++ b/dev-python/psycopg/Manifest
@@ -1,4 +1,3 @@
-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.10.gh.tar.gz 572879 BLAKE2B 20950385767bdb3d9d1553919424b8a80343f8a611de619da2888197ca2a139e5e2837e0521762d605b17ec3c1ee2bb73088a21709856f32351490588260f37e SHA512 aca15ce2563b3aa03d53c13ecd6a0f3a17e267a6214e899dc7aad8867dc944503c3cd23aec766903cff083df2c860d1c3a888539c684d38444b2a9af4781252a
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.8.ebuild b/dev-python/psycopg/psycopg-3.2.10.ebuild
index eb1de30fe34c..7790944de5f1 100644
--- a/dev-python/psycopg/psycopg-3.2.8.ebuild
+++ b/dev-python/psycopg/psycopg-3.2.10.ebuild
@@ -43,11 +43,11 @@ BDEPEND="
)
test? (
>=dev-db/postgresql-8.1[server]
- >=dev-python/anyio-4.0[${PYTHON_USEDEP}]
>=dev-python/dnspython-2.1[${PYTHON_USEDEP}]
)
"
+EPYTEST_PLUGINS=( anyio )
distutils_enable_tests pytest
python_compile() {
@@ -106,12 +106,11 @@ python_test() {
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" \
+ epytest -k "not leak" \
-m "not timing and not slow and not flakey"
done
}
diff --git a/dev-python/psycopg/psycopg-3.2.7.ebuild b/dev-python/psycopg/psycopg-3.2.7.ebuild
deleted file mode 100644
index 310245a7b65d..000000000000
--- a/dev-python/psycopg/psycopg-3.2.7.ebuild
+++ /dev/null
@@ -1,120 +0,0 @@
-# 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}]
- $(python_gen_cond_dep '
- dev-python/tomli[${PYTHON_USEDEP}]
- ' 3.10)
- )
- 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/pyarrow/pyarrow-21.0.0.ebuild b/dev-python/pyarrow/pyarrow-21.0.0.ebuild
index 154a71d245da..c438246e8125 100644
--- a/dev-python/pyarrow/pyarrow-21.0.0.ebuild
+++ b/dev-python/pyarrow/pyarrow-21.0.0.ebuild
@@ -43,7 +43,6 @@ RDEPEND="
BDEPEND="
test? (
dev-python/cffi[${PYTHON_USEDEP}]
- dev-python/hypothesis[${PYTHON_USEDEP}]
dev-python/packaging[${PYTHON_USEDEP}]
dev-python/pandas[${PYTHON_USEDEP}]
dev-python/pytz[${PYTHON_USEDEP}]
@@ -51,7 +50,7 @@ BDEPEND="
)
"
-EPYTEST_PLUGINS=()
+EPYTEST_PLUGINS=( hypothesis )
EPYTEST_XDIST=1
distutils_enable_tests pytest
diff --git a/dev-python/pyarrow/pyarrow-9999.ebuild b/dev-python/pyarrow/pyarrow-9999.ebuild
new file mode 100644
index 000000000000..c8fbff42c0d0
--- /dev/null
+++ b/dev-python/pyarrow/pyarrow-9999.ebuild
@@ -0,0 +1,95 @@
+# Copyright 2023-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} )
+
+inherit distutils-r1 git-r3 multiprocessing
+
+DESCRIPTION="Python library for Apache Arrow"
+HOMEPAGE="
+ https://arrow.apache.org/
+ https://github.com/apache/arrow/
+ https://pypi.org/project/pyarrow/
+"
+EGIT_REPO_URI="https://github.com/apache/arrow.git"
+EGIT_SUBMODULES=( '*' )
+S="${WORKDIR}/${P}/python"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="+parquet +snappy ssl"
+
+RDEPEND="
+ ~dev-libs/apache-arrow-${PV}[compute,dataset,json,parquet?,re2,snappy?,ssl?]
+ >=dev-python/numpy-1.16.6:=[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/cffi[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/pandas[${PYTHON_USEDEP}]
+ dev-python/pytz[${PYTHON_USEDEP}]
+ dev-libs/apache-arrow[lz4,zlib]
+ )
+"
+
+EPYTEST_PLUGINS=( hypothesis )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # cython's -Werror
+ sed -i -e '/--warning-errors/d' CMakeLists.txt || die
+}
+
+src_compile() {
+ export PYARROW_PARALLEL="$(makeopts_jobs)"
+ export PYARROW_BUILD_VERBOSE=1
+ export PYARROW_CXXFLAGS="${CXXFLAGS}"
+ export PYARROW_BUNDLE_ARROW_CPP_HEADERS=0
+ export PYARROW_CMAKE_GENERATOR=Ninja
+ export PYARROW_WITH_HDFS=1
+ if use parquet; then
+ export PYARROW_WITH_DATASET=1
+ export PYARROW_WITH_PARQUET=1
+ use ssl && export PYARROW_WITH_PARQUET_ENCRYPTION=1
+ fi
+ if use snappy; then
+ export PYARROW_WITH_SNAPPY=1
+ fi
+
+ distutils-r1_src_compile
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # wtf?
+ tests/test_fs.py::test_localfs_errors
+ # these require apache-arrow with jemalloc that doesn't seem
+ # to be supported by the Gentoo package
+ tests/test_memory.py::test_env_var
+ tests/test_memory.py::test_specific_memory_pools
+ tests/test_memory.py::test_supported_memory_backends
+ # require mimalloc
+ tests/test_memory.py::test_memory_pool_factories
+ # fragile memory tests
+ tests/test_csv.py::TestSerialStreamingCSVRead::test_batch_lifetime
+ tests/test_csv.py::TestThreadedStreamingCSVRead::test_batch_lifetime
+ # takes forever, and manages to generate timedeltas over 64 bits
+ tests/test_strategies.py
+ "tests/test_array.py::test_pickling[builtin_pickle]"
+ # scipy.sparse does not support dtype float16
+ "tests/test_sparse_tensor.py::test_sparse_coo_tensor_scipy_roundtrip[f2-arrow_type8]"
+ )
+
+ cd "${T}" || die
+ local -x PARQUET_TEST_DATA="${WORKDIR}/${P}/cpp/submodules/parquet-testing/data"
+ local -x ARROW_TEST_DATA="${WORKDIR}/${P}/testing/data"
+ epytest --pyargs pyarrow
+}
diff --git a/dev-python/pycares/Manifest b/dev-python/pycares/Manifest
index 88de8eda5d93..e056bf418a6c 100644
--- a/dev-python/pycares/Manifest
+++ b/dev-python/pycares/Manifest
@@ -1,2 +1,2 @@
DIST pycares-4.10.0.tar.gz 654318 BLAKE2B fc5d9315d26f5b55150d0fc623775ecbc0fabf4f0c0bdee1cdda6828d674a95c78bb804e26a48591ffb2aba1bffe0d0fd798a8032dcd04731c277fc87b6f59cd SHA512 e4f21c2fa08142f46fccb18f3ff1de106b567daba565375e2ef58e819a56a98a2950f9a396b19092a3b720269e7112509698c325d51ad52fd49d84c4e84d7ba5
-DIST pycares-4.9.0.tar.gz 655365 BLAKE2B c30ccd57f31dbaad4dc7689ca4997dc909363a175a33d672e3e9167573c9c7935eb002d2d0ff97aa2f90ccd6ed76b8d1f2a82b17c26378db08422764b6e936ba SHA512 3be5aa36fbfbc47e54f7b41e14ef951bdb1528a60f51a11ef7d010da2ef9ca2830f89d277063788c44468f27fb4d875ce472729106cf1c0bb32000727d2841b7
+DIST pycares-4.11.0.tar.gz 654473 BLAKE2B 2e2ce4330258307ec593641fe26e6441b06578d0bac9c58c9bca89f24979efe0099f926b72b991fbaf4a30a128bfb93cb272896c18136c9007efb38f5b23779f SHA512 5ded9356942233f8c77792cdf5061018ec6c7ccc0ce144657c0ca7473d18fbd649699e4814047c41dec3ca393d4fc2402b1b60fbdbd947c05dc881f574edff4b
diff --git a/dev-python/pycares/pycares-4.9.0.ebuild b/dev-python/pycares/pycares-4.11.0.ebuild
index 3669e7b1ba2f..01b58f1d515a 100644
--- a/dev-python/pycares/pycares-4.9.0.ebuild
+++ b/dev-python/pycares/pycares-4.11.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
IUSE="test"
# Tests fail with network-sandbox, since they try to resolve google.com
PROPERTIES="test_network"
@@ -36,22 +36,9 @@ RDEPEND="
${DEPEND}
${BDEPEND}
"
-BDEPEND+="
- test? (
- dev-python/idna[${PYTHON_USEDEP}]
- )
-"
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
distutils_enable_tests pytest
-EPYTEST_DESELECT=(
- # regression due to Internet changing (probably)
- # https://github.com/saghul/pycares/issues/187
- tests/test_all.py::DNSTest::test_query_class_chaos
- tests/test_all.py::DNSTest::test_idna_encoding_query_a
- tests/test_all.py::DNSTest::test_query_txt_chunked
- # TODO
- tests/test_all.py::DNSTest::test_custom_resolvconf
-)
-
export PYCARES_USE_SYSTEM_LIB=1
diff --git a/dev-python/pychromecast/Manifest b/dev-python/pychromecast/Manifest
index 6f3be76a66a7..a4657f80f1f7 100644
--- a/dev-python/pychromecast/Manifest
+++ b/dev-python/pychromecast/Manifest
@@ -1,2 +1,3 @@
DIST PyChromecast-14.0.5.tar.gz 60934 BLAKE2B b42e5242d67a0f964e47b381a57c6ddb4714ee2714b92aeea763faf35bd919290beb84f198fbe3437396ec61458c657c9b1eaa3c644ae5eb4436f62ee49f439b SHA512 9627ad6f67b4625e44b56f72e05e0a673396b8c89a542de896beb14f186c86974397878eab8ff42652b987a0524541575797ebea18098a8cdaadf78f9bdfa6d7
DIST pychromecast-14.0.7.tar.gz 61421 BLAKE2B 5fcf65d1033a2f7726fa094e0d25a0f568e69ee5c1db2fcbaff3e6b20b461a8979eea71b7066a7e1ed64e4d661484117d2b244737dceb214ec8219c1aff0034e SHA512 1f0ff0ed73e29535987210f199af25edd5678ea42bf9a2c849df703f864b866f505e6cb486dc7f18ed2c1225ea396c2dacd605bfc4a1e1b4b2248f34fab3eb97
+DIST pychromecast-14.0.9.tar.gz 61484 BLAKE2B 46e6b48c8a4d38732af951c1c676deaaaf30f6b7acdd8b8b61b3b05ad4db5c303eed2f31d48f2c9b1cef5ab3345900c9ef05727413059c8b5095e89cb67638f7 SHA512 39d634f214214204408fe04efedcfaa68b8e95df0790743edd6e894ded7e6c5a5924b4a6f5fce85d0dbd6f12a85caff841addb294fd2e9b84f569c8fc0dbe1c2
diff --git a/dev-python/pychromecast/pychromecast-14.0.9.ebuild b/dev-python/pychromecast/pychromecast-14.0.9.ebuild
new file mode 100644
index 000000000000..17f47a084216
--- /dev/null
+++ b/dev-python/pychromecast/pychromecast-14.0.9.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2020-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="Python module to talk to Google Chromecast"
+HOMEPAGE="
+ https://github.com/home-assistant-libs/pychromecast/
+ https://pypi.org/project/PyChromecast/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ >=dev-python/casttube-0.2.0[${PYTHON_USEDEP}]
+ >=dev-python/protobuf-4.25.1[${PYTHON_USEDEP}]
+ >=dev-python/zeroconf-0.25.1[${PYTHON_USEDEP}]
+"
diff --git a/dev-python/pycparser/Manifest b/dev-python/pycparser/Manifest
index 92399af68de9..ce3cbc3af6d2 100644
--- a/dev-python/pycparser/Manifest
+++ b/dev-python/pycparser/Manifest
@@ -1 +1,2 @@
DIST pycparser-2.22.tar.gz 172736 BLAKE2B a080df68cf114c355949b2911a80e89ed02a64b8d1d03e3c5807222249e5dfd2491f691962885dbadcdaf323b55a05c5597319ac082dcf6c67a9ac952be9a7e2 SHA512 c9a81c78d87162f71281a32a076b279f4f7f2e17253fe14c89c6db5f9b3554a6563ff700c385549a8b51ef8832f99f7bb4ac07f22754c7c475dd91feeb0cf87f
+DIST pycparser-2.23.tar.gz 173734 BLAKE2B f9a11de129f6b5495df9a25778cfc73c1ed236f522b2c8ca2676fac14b78f35e2928547ea654adff4ea28a2dfa8a51d3a5b2085ab9f40e0d7b9ed5ec4568eb2b SHA512 317f02bf58482b9d80b7395fe6fe5f756230915473b65b219755ccf0f4f1d3b227f508925fcf81fe28bcd6c113cf93e0075bf16a9a499cb306e1627222b1b1a7
diff --git a/dev-python/pycparser/pycparser-2.23.ebuild b/dev-python/pycparser/pycparser-2.23.ebuild
new file mode 100644
index 000000000000..c3aac24e7bdd
--- /dev/null
+++ b/dev-python/pycparser/pycparser-2.23.ebuild
@@ -0,0 +1,69 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# please keep this ebuild at EAPI 8 -- sys-apps/portage dep
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="C parser and AST generator written in Python"
+HOMEPAGE="
+ https://github.com/eliben/pycparser/
+ https://pypi.org/project/pycparser/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
+
+RDEPEND="
+ dev-python/ply:=[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ ${RDEPEND}
+"
+
+distutils_enable_tests unittest
+
+python_prepare_all() {
+ # remove the original files to guarantee their regen
+ rm pycparser/{c_ast,lextab,yacctab}.py || die
+
+ # kill sys.path manipulations to force the tests to use built files
+ sed -i -e '/sys\.path/d' tests/*.py || die
+
+ # Ensure we can find tests in our directory
+ sed -i -e 's/from tests.test_util/from test_util/g' tests/test_*.py || die
+
+ # unbundle ply
+ rm -r pycparser/ply || die
+ sed -i -e 's:\(from \)[.]\(ply\b\):\1\2:' pycparser/*.py || die
+ sed -i -e "s:'pycparser.ply'::" setup.py || die
+
+ ln -s "${S}"/examples tests/examples || die
+
+ rm tests/test_examples.py || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ # Skip tests if cpp is not in PATH
+ type -P cpp >/dev/null || return 0
+ # change workdir to avoid '.' import
+ cd tests || die
+
+ # Ensure that 'cpp' is called with the right arguments
+ # Tests don't seem to always pass the include they intend to use.
+ mkdir -p "${T}"/bin || die
+ cat > "${T}"/bin/cpp <<-EOF || die
+ #!${BROOT}/bin/bash
+ exec ${BROOT}/usr/bin/cpp -I${S}/utils/fake_libc_include/ \$@
+ EOF
+ chmod +x "${T}"/bin/cpp || die
+
+ PATH="${T}/bin:${PATH}" eunittest
+}
diff --git a/dev-python/pydantic/Manifest b/dev-python/pydantic/Manifest
index 2bfd7bcb3063..73cbcebe6587 100644
--- a/dev-python/pydantic/Manifest
+++ b/dev-python/pydantic/Manifest
@@ -1,2 +1,4 @@
DIST pydantic-2.11.7.tar.gz 788350 BLAKE2B 4767f593beb649fe3139f3b22e3814a9f56793494dc17428cf70952451e9112d03b275c0af979f0f0159b25deae2e2794bfdb1392e2c3499220ad3cd67945414 SHA512 54ee1a49d5a429cad31928425c197139ae3cce004d8f3530835ce39897be9afa6aea35e639af1d6290bace7148e1369ce66840e26bced329bc2e7d93b3dad6e5
+DIST pydantic-2.11.8.tar.gz 788452 BLAKE2B 91c967ddf3f6ad6ec3713e1503e35d43adffc3160d9a4df2710db4ccab4c313ef8009de379473f7438d3f0ce716408b924963974d381bf27232aafb5afb960b1 SHA512 f06b821d84cecc6b1b9f364d35ae67cd79fd25dc356922d4af4418ad77dacc57ba327febc7fd33dee5cf070f8e9018ee3362c8f0aa8a5802a6af2ff327018254
+DIST pydantic-2.11.9.tar.gz 788495 BLAKE2B d22e4aef09d65c30829dfb31d161c82511cc8e1a1b57dde08008462f42a23e4653979ff0578ab571314538d1267b8628bb4ab0eb4fe9af59ed2023c83f33a530 SHA512 32bcaf1de12d2df2344222389c8deefb88432886449ad52b420b4ff760b7b882522d416996fdea4d44a6cf4d24f96b2aec55d003e9772e28b2cacd654eed64fb
DIST pydantic-2.12.0a1.tar.gz 802751 BLAKE2B e0e8a9ed89a7cb3a8a8d4f09e81965a98ceb9d68a74fc6c60417d49fc9f86f7e99077f7209a737d8c8defadc2fa7312b83dbae1ecb8781d6595b4a5f48f66941 SHA512 ce78aee6ebe98eb40ebde832e82e75688e82bd9b2d703ef8d86044ae904d1760ad920d7d4c9b2efe2e61d9e476499c9c038ffd3dfc3ee9a1b3218a84d94dad30
diff --git a/dev-python/pydantic/pydantic-2.11.8.ebuild b/dev-python/pydantic/pydantic-2.11.8.ebuild
new file mode 100644
index 000000000000..40fd6d6d2fb1
--- /dev/null
+++ b/dev-python/pydantic/pydantic-2.11.8.ebuild
@@ -0,0 +1,71 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+# py3.14: https://github.com/pydantic/pydantic/issues/11613
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Data parsing and validation using Python type hints"
+HOMEPAGE="
+ https://github.com/pydantic/pydantic/
+ https://pypi.org/project/pydantic/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/annotated-types-0.6.0[${PYTHON_USEDEP}]
+ ~dev-python/pydantic-core-2.33.2[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.12.2[${PYTHON_USEDEP}]
+ >=dev-python/typing-inspection-0.4.0[${PYTHON_USEDEP}]
+ dev-python/tzdata[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ >=dev-python/hatch-fancy-pypi-readme-22.5.0[${PYTHON_USEDEP}]
+ test? (
+ $(python_gen_cond_dep '
+ dev-python/cloudpickle[${PYTHON_USEDEP}]
+ ' 'python3*')
+ dev-python/dirty-equals[${PYTHON_USEDEP}]
+ >=dev-python/email-validator-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/faker-18.13.0[${PYTHON_USEDEP}]
+ >=dev-python/jsonschema-4.23.0[${PYTHON_USEDEP}]
+ dev-python/pytz[${PYTHON_USEDEP}]
+ dev-python/rich[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-mock )
+distutils_enable_tests pytest
+
+src_prepare() {
+ sed -i -e '/benchmark/d' pyproject.toml || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # -Werror, sigh
+ tests/test_types_typeddict.py::test_readonly_qualifier_warning
+ )
+ local EPYTEST_IGNORE=(
+ # require pytest-examples
+ tests/test_docs.py
+ # benchmarks
+ tests/benchmarks
+ )
+
+ if ! has_version "dev-python/cloudpickle[${PYTHON_USEDEP}]"; then
+ EPYTEST_IGNORE+=(
+ tests/test_pickle.py
+ )
+ fi
+
+ epytest
+}
diff --git a/dev-python/pydantic/pydantic-2.11.9.ebuild b/dev-python/pydantic/pydantic-2.11.9.ebuild
new file mode 100644
index 000000000000..40fd6d6d2fb1
--- /dev/null
+++ b/dev-python/pydantic/pydantic-2.11.9.ebuild
@@ -0,0 +1,71 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+# py3.14: https://github.com/pydantic/pydantic/issues/11613
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Data parsing and validation using Python type hints"
+HOMEPAGE="
+ https://github.com/pydantic/pydantic/
+ https://pypi.org/project/pydantic/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/annotated-types-0.6.0[${PYTHON_USEDEP}]
+ ~dev-python/pydantic-core-2.33.2[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.12.2[${PYTHON_USEDEP}]
+ >=dev-python/typing-inspection-0.4.0[${PYTHON_USEDEP}]
+ dev-python/tzdata[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ >=dev-python/hatch-fancy-pypi-readme-22.5.0[${PYTHON_USEDEP}]
+ test? (
+ $(python_gen_cond_dep '
+ dev-python/cloudpickle[${PYTHON_USEDEP}]
+ ' 'python3*')
+ dev-python/dirty-equals[${PYTHON_USEDEP}]
+ >=dev-python/email-validator-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/faker-18.13.0[${PYTHON_USEDEP}]
+ >=dev-python/jsonschema-4.23.0[${PYTHON_USEDEP}]
+ dev-python/pytz[${PYTHON_USEDEP}]
+ dev-python/rich[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-mock )
+distutils_enable_tests pytest
+
+src_prepare() {
+ sed -i -e '/benchmark/d' pyproject.toml || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # -Werror, sigh
+ tests/test_types_typeddict.py::test_readonly_qualifier_warning
+ )
+ local EPYTEST_IGNORE=(
+ # require pytest-examples
+ tests/test_docs.py
+ # benchmarks
+ tests/benchmarks
+ )
+
+ if ! has_version "dev-python/cloudpickle[${PYTHON_USEDEP}]"; then
+ EPYTEST_IGNORE+=(
+ tests/test_pickle.py
+ )
+ fi
+
+ epytest
+}
diff --git a/dev-python/pydata-sphinx-theme/Manifest b/dev-python/pydata-sphinx-theme/Manifest
index bd7da5ede867..92e01d8268cc 100644
--- a/dev-python/pydata-sphinx-theme/Manifest
+++ b/dev-python/pydata-sphinx-theme/Manifest
@@ -1,2 +1,4 @@
DIST pydata-sphinx-theme-0.16.0.gh.tar.gz 2402696 BLAKE2B a56fe7accb28a82973076d19380600f188dc1e682158b2b77e7b1b0a0e6d6c2bfbed7ea4ac9bf2591ae8e4cccf529f7cf8c187afc044f152e22edd4515938ddd SHA512 4f5c48708d5aae21ed8f1827a4d805c893652b02612699468875d283180087c2193b4dd12b8cbe24a1cee1a748d5de9ebbe378d1ff0b07b2a57c0b349ea3c173
+DIST pydata-sphinx-theme-0.16.1.gh.tar.gz 2408737 BLAKE2B d41d6ab845b6af795d609ed38810597528e6a3d07133467f45adf941ad40d45d6b157ba0f9666e115c101f86139628c705991f2afbd95b2f2a7ac606d09afcc0 SHA512 a72d5be0dfdd11ffac8ed60521121053343869234b7fc1a5d2ac3b5a78cc3b00afdb7875608bd7cdb455d1bfa92dfdffcf541310aed211f6eb49a6ce29f2c045
DIST pydata_sphinx_theme-0.16.0-py3-none-any.whl 6739948 BLAKE2B 070ede0cd030b6c1919f5f7b54bb1738c5e6af8f74bda49d2d4be4ea99b79b0adf9283b6f837a785203e5c442f845f8f8fd0139c189b927b5d5642aff17894e3 SHA512 947f0a0c910f9ced070e3128822292d1a4a1bfe99f46802abe9589d7d5216aa5294d81adae3d47db5e88942184d7455a624a9061030ea9e6648b031cd37b2fef
+DIST pydata_sphinx_theme-0.16.1-py3-none-any.whl 6723264 BLAKE2B 64a6379809230481b8c9aca05d46b8dfe725b74ea1c9b3b2de24f81f2e559eced30268a374d6879ada809edba3c5294305ba341d5037671989f3b9d40d8a3946 SHA512 a2923f2bdaa3928136ccd7e381bc2324f9fca516ac0b7892f88f2651624f7b286c2d68fae2f90964a1d0957d4679abf70c0f774cfabd5bef18ab96ad7fd54bcc
diff --git a/dev-python/pydata-sphinx-theme/pydata-sphinx-theme-0.16.1.ebuild b/dev-python/pydata-sphinx-theme/pydata-sphinx-theme-0.16.1.ebuild
new file mode 100644
index 000000000000..c5aedf0ccc51
--- /dev/null
+++ b/dev-python/pydata-sphinx-theme/pydata-sphinx-theme-0.16.1.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=standalone
+PYPI_NO_NORMALIZE=1
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1 pypi
+
+MY_P=${P/_/}
+DESCRIPTION="Bootstrap-based Sphinx theme from the PyData community"
+HOMEPAGE="
+ https://github.com/pydata/pydata-sphinx-theme/
+ https://pypi.org/project/pydata-sphinx-theme/
+"
+SRC_URI="
+ https://github.com/pydata/pydata-sphinx-theme/archive/v${PV/_/}.tar.gz
+ -> ${P}.gh.tar.gz
+ $(pypi_wheel_url)
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="BSD-with-disclosure"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ dev-python/accessible-pygments[${PYTHON_USEDEP}]
+ dev-python/babel[${PYTHON_USEDEP}]
+ dev-python/beautifulsoup4[${PYTHON_USEDEP}]
+ dev-python/docutils[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.7[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-6.1[${PYTHON_USEDEP}]
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=( pytest-{datadir,regressions} )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # Requires sphinx-intl
+ 'tests/test_build.py::test_translations'
+ # sphinx mismatch?
+ tests/test_build.py::test_pygments_fallbacks
+ tests/test_build.py::test_render_secondary_sidebar_dict
+ tests/test_build.py::test_render_secondary_sidebar_dict_glob_subdir
+ tests/test_build.py::test_render_secondary_sidebar_dict_multiple_glob_matches
+)
+
+python_compile() {
+ distutils_wheel_install "${BUILD_DIR}/install" \
+ "${DISTDIR}/$(pypi_wheel_name)"
+}
diff --git a/dev-python/pyenchant/Manifest b/dev-python/pyenchant/Manifest
index 8d495f202044..8148f9a5c686 100644
--- a/dev-python/pyenchant/Manifest
+++ b/dev-python/pyenchant/Manifest
@@ -1 +1,2 @@
DIST pyenchant-3.2.2.gh.tar.gz 75565 BLAKE2B 150bdca0d316b2242d60d8c42baf2e5e8cee3df2c57bf47be61170af956cb8c4ee1a584ad2aedd1ed8f203028938c8c0ada40ea45045746deeb4e67c53dc5c70 SHA512 42ab2e0cc38af4223ec0233c9e22cd151aa9bda5b56b7bd642e39e3a323ab3c034391123af5d3a5399551533ba1c1746abd6bc9ee2ab4c7879b9bf0ac91e056d
+DIST pyenchant-3.3.0.gh.tar.gz 77934 BLAKE2B 9773effc74dc93ce43383b2a03fccd655ce93bb48220e4422acde7f6baefabd8f4a6a77adcb856340a342f85ffd6d2817d115e54053df682d9e6e2f7eb2b5c32 SHA512 4b18d40a17ea0826c9ce042fb39dafde32e28809f4deae74e6a7ff62a4b92a3e351274d0fcaecd4f14fd408c1c8e67270bb124b3b562865e73779875e6550aee
diff --git a/dev-python/pyenchant/pyenchant-3.3.0.ebuild b/dev-python/pyenchant/pyenchant-3.3.0.ebuild
new file mode 100644
index 000000000000..a97214d9fd09
--- /dev/null
+++ b/dev-python/pyenchant/pyenchant-3.3.0.ebuild
@@ -0,0 +1,35 @@
+# 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
+
+DESCRIPTION="Python bindings for the Enchant spellchecking system"
+HOMEPAGE="
+ https://github.com/pyenchant/pyenchant/
+ https://pypi.org/project/pyenchant/
+"
+SRC_URI="
+ https://github.com/pyenchant/pyenchant/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ app-text/enchant:*
+"
+BDEPEND="
+ test? (
+ app-dicts/myspell-en
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/pyfakefs/Manifest b/dev-python/pyfakefs/Manifest
index 3916112d2c29..ec1df1bf5ffd 100644
--- a/dev-python/pyfakefs/Manifest
+++ b/dev-python/pyfakefs/Manifest
@@ -1,3 +1,2 @@
-DIST pyfakefs-5.9.1.gh.tar.gz 255569 BLAKE2B 510e04d23eba15fe3b74c973ef8856851a2cc5b9411273456f631b086af6fa72a4444c1cf4fcd0bb1f59ccc3e551144883181897a8d74736f7e1ed9f16efa303 SHA512 4d869897b98c73e73397032513304116ec1f3740f35831df053e9e80a6d50a5b063034c44269b6c8488119845246f7a4201af6d06ea7611ed988a11564fa0c5a
DIST pyfakefs-5.9.2.gh.tar.gz 256364 BLAKE2B 2efa560d8492075570f3e06ea254fbfa550d0edc0bde52b4c94ffeb1a0cbbe246d89d71bb3925129164140793a2ec629b41ba36675c5673781aafa6104b24370 SHA512 323ba306cf7252645eeafb33dc8c7c5c7296dc7418acac7c9c62b8673d658ad737bd1541f5b18e988d718a6442c193d30608720ece6414a1fbb6dbf464f5ddd5
DIST pyfakefs-5.9.3.gh.tar.gz 256673 BLAKE2B 638720a82f06a0c54298959e4f9d32195fc9ffb2bae00f21fb6c4cc93862e6cb6c5680d7c4e5340ffd6259505f1ce291fdcdbcced077ab89a2b0ba58c365e732 SHA512 5a79fc56836bd8c3416f653c3222f7d93203cff112f08b9ae357b271c695a720f65fc90a8a3bfff2b8b6168ddd8dfba0219ba8582e0f54ec4d9ce393ab55dab9
diff --git a/dev-python/pyfakefs/pyfakefs-5.9.1.ebuild b/dev-python/pyfakefs/pyfakefs-5.9.1.ebuild
deleted file mode 100644
index b637908127cc..000000000000
--- a/dev-python/pyfakefs/pyfakefs-5.9.1.ebuild
+++ /dev/null
@@ -1,60 +0,0 @@
-# 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
-
-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"
-
-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
-
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- epytest -p pyfakefs.pytest_plugin
-}
diff --git a/dev-python/pyfakefs/pyfakefs-5.9.2.ebuild b/dev-python/pyfakefs/pyfakefs-5.9.2.ebuild
index d9374aa09c61..80c0625e139c 100644
--- a/dev-python/pyfakefs/pyfakefs-5.9.2.ebuild
+++ b/dev-python/pyfakefs/pyfakefs-5.9.2.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
EPYTEST_PLUGINS=( "${PN}" )
distutils_enable_tests pytest
diff --git a/dev-python/pygit2/pygit2-1.18.2.ebuild b/dev-python/pygit2/pygit2-1.18.2.ebuild
index 34a65ac2a6c1..b4b942396145 100644
--- a/dev-python/pygit2/pygit2-1.18.2.ebuild
+++ b/dev-python/pygit2/pygit2-1.18.2.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="GPL-2-with-linking-exception"
SLOT="0"
-KEYWORDS="~amd64 ~loong ~riscv ~x86"
+KEYWORDS="amd64 ~loong ~riscv x86"
DEPEND="
<dev-libs/libgit2-1.10:=
diff --git a/dev-python/pykka/Manifest b/dev-python/pykka/Manifest
index b9bd9393e08d..4bb142f4b027 100644
--- a/dev-python/pykka/Manifest
+++ b/dev-python/pykka/Manifest
@@ -1 +1,2 @@
DIST pykka-4.2.0.gh.tar.gz 48384 BLAKE2B 23d0300a6cefc0dac720bd6da4a3fa5a1eb4644efbc7211e68e3fe4ff65457ccc45908e8aa02f2bfb0a4b16586cccb809e7cba95e96ac230de3b2ed69fd2fe8b SHA512 55de2fb603e642ffa91887d0fc69b3785bfae7de71911b45b336285f487c38feb07bd8033188b3ddaef884d5b0c0b789809be8ad8c0cfa9ac84c95485870178d
+DIST pykka-4.3.0.gh.tar.gz 48817 BLAKE2B 20c3c98fb3e2628af161dcbc9b22956e1ff6196f842430302b9c6bcba8a077ef11bd666411a48b02122c230f3056c2825122b255fc237b2bd57dca78b8bb28e0 SHA512 4b08f8501ed5bf8fe937fa1f9cac276e77c25ca97968f61067c79911fce24e85aabf9c08cfe180ec15f15b84ecdeadafeebc72e9975b4df114a472e6e44d8baf
diff --git a/dev-python/pykka/pykka-4.3.0.ebuild b/dev-python/pykka/pykka-4.3.0.ebuild
new file mode 100644
index 000000000000..1ec5afbf6876
--- /dev/null
+++ b/dev-python/pykka/pykka-4.3.0.ebuild
@@ -0,0 +1,27 @@
+# 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_{11..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="A Python implementation of the actor model"
+HOMEPAGE="
+ https://pykka.org/en/latest/
+ https://github.com/jodal/pykka/
+ https://pypi.org/project/pykka/
+"
+SRC_URI="
+ https://github.com/jodal/pykka/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+
+EPYTEST_PLUGINS=( pytest-mock )
+distutils_enable_tests pytest
diff --git a/dev-python/pylint/pylint-3.3.8.ebuild b/dev-python/pylint/pylint-3.3.8.ebuild
index 5f9b58f2a2cd..242fb59b6050 100644
--- a/dev-python/pylint/pylint-3.3.8.ebuild
+++ b/dev-python/pylint/pylint-3.3.8.ebuild
@@ -23,7 +23,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="GPL-2"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="examples"
RDEPEND="
diff --git a/dev-python/pymongo/Manifest b/dev-python/pymongo/Manifest
index 76500da488c1..0277e45f750a 100644
--- a/dev-python/pymongo/Manifest
+++ b/dev-python/pymongo/Manifest
@@ -4,3 +4,4 @@ DIST mongo-python-driver-4.13.1.gh.tar.gz 2225917 BLAKE2B 2c02e608f54c68abebb69c
DIST mongo-python-driver-4.13.2.gh.tar.gz 2227437 BLAKE2B 3aa6d0feedc6a33eb4e9299d85eeab2a9638bf713cfadf9f4018f6bd668758d3afd5b9b4b71dec037fb3f99e89cc34e299e1d9b4521c8ace9da9ce50ae95142b SHA512 845cf92e702a9970f2ef1b5085fffcca96021e0f2fc5133e24b2860482dafabe7770d9421922659d0c6008aac1d5a70834ee4f1728a648fd83e6d33bc33568b0
DIST mongo-python-driver-4.14.0.gh.tar.gz 2270296 BLAKE2B 9e417ff0078dcc84992d9f7238b42aece900b7d1345fdd073a0dcc6a01377f40f51a8ad1318bab62d96c3739910f2c3be96f355aafadac805abfe5dd801a6155 SHA512 be26f052226784c2b19454740d956b129353afe75d67649504fba208c7fa9c599b782ab40cf4574577759de54a13ed817e295ba7f8b36667181095b5cb67a4bd
DIST mongo-python-driver-4.14.1.gh.tar.gz 2271379 BLAKE2B 5a1ce13c5275657ee3d64fc0450a20e9c6c3bbfd91bfde6e6e3e8f143b95ea63d18b5cf2b8ba3b707f642eea900894a56889d6bf1d7d9f11f6cfa556a9b7b10b SHA512 087c0450ee1d261cdcb8558d75b4749395058773a33849d94824e2fca0157d0eb4c3f5545a4ddfc0b1bc645a52988f515a90be978f4f88c6a3db4dffa2f9ff9e
+DIST mongo-python-driver-4.15.0.gh.tar.gz 2535131 BLAKE2B 6d8915d0fc2f2aff41a085d11d64d761cbf6d8edf7636200fefd1e8e8060b14f6f3cdc2e437b0328f586bd575ad1ea8b212e415279162e47c590de95508752c8 SHA512 a1c3674f4abf09ee1e97fb0a5acfa00c7be111a75457ca50d777c949bb09e4e6f0b11bc718c8d416e72710107812efbeb4302f46b679a73514348a8cfcc69f1a
diff --git a/dev-python/pymongo/pymongo-4.15.0.ebuild b/dev-python/pymongo/pymongo-4.15.0.ebuild
new file mode 100644
index 000000000000..785882f3e12a
--- /dev/null
+++ b/dev-python/pymongo/pymongo-4.15.0.ebuild
@@ -0,0 +1,201 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit check-reqs distutils-r1
+
+MY_P=mongo-python-driver-${PV}
+DESCRIPTION="Python driver for MongoDB"
+HOMEPAGE="
+ https://github.com/mongodb/mongo-python-driver/
+ https://pypi.org/project/pymongo/
+"
+SRC_URI="
+ https://github.com/mongodb/mongo-python-driver/archive/${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="doc kerberos +native-extensions +test-full"
+
+RDEPEND="
+ <dev-python/dnspython-3.0.0[${PYTHON_USEDEP}]
+ kerberos? ( dev-python/kerberos[${PYTHON_USEDEP}] )
+"
+BDEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ test? (
+ test-full? (
+ >=dev-db/mongodb-2.6.0
+ )
+ )
+"
+
+distutils_enable_sphinx doc
+
+EPYTEST_PLUGINS=( pytest-asyncio )
+EPYTEST_RERUNS=5
+distutils_enable_tests pytest
+
+reqcheck() {
+ if use test && use test-full; then
+ # During the tests, database size reaches 1.5G.
+ local CHECKREQS_DISK_BUILD=1536M
+
+ check-reqs_${1}
+ fi
+}
+
+pkg_pretend() {
+ reqcheck pkg_pretend
+}
+
+pkg_setup() {
+ reqcheck pkg_setup
+}
+
+src_prepare() {
+ distutils-r1_src_prepare
+ # we do not want hatch-requirements-txt and its ton of NIH deps
+ sed -i -e '/requirements/d' pyproject.toml || die
+}
+
+python_compile() {
+ # causes build errors to be fatal
+ local -x TOX_ENV_NAME=whatever
+ local DISTUTILS_ARGS=()
+ # unconditionally implicitly disabled on pypy3
+ if ! use native-extensions; then
+ export NO_EXT=1
+ else
+ export PYMONGO_C_EXT_MUST_BUILD=1
+ unset NO_EXT
+ fi
+
+ distutils-r1_python_compile
+
+ # upstream forces setup.py build_ext -i in their setuptools hack
+ find -name '*.so' -delete || die
+}
+
+python_test() {
+ rm -rf bson pymongo || die
+
+ local EPYTEST_DESELECT=(
+ # network-sandbox
+ test/asynchronous/test_async_loop_unblocked.py::TestClientLoopUnblocked::test_client_does_not_block_loop
+ test/asynchronous/test_client.py::AsyncClientUnitTest::test_connection_timeout_ms_propagates_to_DNS_resolver
+ test/asynchronous/test_client.py::AsyncClientUnitTest::test_detected_environment_logging
+ test/asynchronous/test_client.py::AsyncClientUnitTest::test_detected_environment_warning
+ test/asynchronous/test_client.py::TestClient::test_service_name_from_kwargs
+ test/asynchronous/test_client.py::TestClient::test_srv_max_hosts_kwarg
+ test/test_client.py::ClientUnitTest::test_connection_timeout_ms_propagates_to_DNS_resolver
+ test/test_client.py::ClientUnitTest::test_detected_environment_logging
+ test/test_client.py::ClientUnitTest::test_detected_environment_warning
+ test/test_client.py::TestClient::test_service_name_from_kwargs
+ test/test_client.py::TestClient::test_srv_max_hosts_kwarg
+ test/test_dns.py::TestCaseInsensitive::test_connect_case_insensitive
+ test/asynchronous/test_dns.py::IsolatedAsyncioTestCaseInsensitive::test_connect_case_insensitive
+ test/test_srv_polling.py
+ test/asynchronous/test_srv_polling.py
+ test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_custom_srvServiceName
+ test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_invalid_type_for_srvMaxHosts
+ test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_negative_integer_for_srvMaxHosts
+ test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_positive_srvMaxHosts_and_loadBalanced=fa
+ test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts
+ test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts=0_and_loadBalanced=true
+ test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts=0_and_replicaSet
+
+ # broken regularly by changes in mypy
+ test/test_typing.py::TestMypyFails::test_mypy_failures
+
+ # fragile to timing? fails because we're getting too many logs
+ test/test_connection_logging.py::TestConnectionLoggingConnectionPoolOptions::test_maxConnecting_should_be_included_in_connection_pool_created_message_when_specified
+
+ # hangs?
+ test/asynchronous/test_grid_file.py::AsyncTestGridFile::test_small_chunks
+
+ # broken async tests?
+ test/asynchronous/test_encryption.py
+
+ # -Werror
+ test/test_read_preferences.py::TestMongosAndReadPreference::test_read_preference_hedge_deprecated
+ test/asynchronous/test_read_preferences.py::TestMongosAndReadPreference::test_read_preference_hedge_deprecated
+
+ # fragile to timing? Internet?
+ test/test_client.py::TestClient::test_repr_srv_host
+ test/asynchronous/test_client.py::TestClient::test_repr_srv_host
+ test/asynchronous/test_ssl.py::TestSSL::test_pyopenssl_ignored_in_async
+ )
+
+ if ! use test-full; then
+ # .invalid is guaranteed to return NXDOMAIN per RFC 6761
+ local -x DB_IP=mongodb.invalid
+ epytest -p asyncio
+ return
+ fi
+
+ # Yes, we need TCP/IP for that...
+ local -x DB_IP=127.0.0.1
+ local -x DB_PORT=27000
+
+ local dbpath=${TMPDIR}/mongo.db
+ local logpath=${TMPDIR}/mongod.log
+
+ local failed=
+ mkdir -p "${dbpath}" || die
+ while true; do
+ ebegin "Trying to start mongod on port ${DB_PORT}"
+
+ # mongodb is extremely inefficient
+ # https://www.mongodb.com/docs/manual/reference/ulimit/#review-and-set-resource-limits
+ ulimit -n 64000 || die
+
+ local mongod_options=(
+ --dbpath "${dbpath}"
+ --bind_ip "${DB_IP}"
+ --port "${DB_PORT}"
+ --unixSocketPrefix "${TMPDIR}"
+ --logpath "${logpath}"
+ --fork
+
+ # try to reduce resource use
+ --wiredTigerCacheSizeGB 0.25
+ )
+
+ LC_ALL=C mongod "${mongod_options[@]}" && sleep 2
+
+ # Now we need to check if the server actually started...
+ if [[ ${?} -eq 0 && -S "${TMPDIR}"/mongodb-${DB_PORT}.sock ]]; then
+ # yay!
+ eend 0
+ break
+ elif grep -q 'Address already in use' "${logpath}"; then
+ # ay, someone took our port!
+ eend 1
+ : $(( DB_PORT += 1 ))
+ continue
+ else
+ eend 1
+ eerror "Unable to start mongod for tests. See the server log:"
+ eerror " ${logpath}"
+ die "Unable to start mongod for tests."
+ fi
+ done
+
+ nonfatal epytest -m "default or default_async or encryption" || failed=1
+
+ mongod --dbpath "${dbpath}" --shutdown || die
+
+ [[ ${failed} ]] && die "Tests fail with ${EPYTHON}"
+
+ rm -rf "${dbpath}" || die
+}
diff --git a/dev-python/pynacl/Manifest b/dev-python/pynacl/Manifest
index d5c413dff618..45a11a46c0be 100644
--- a/dev-python/pynacl/Manifest
+++ b/dev-python/pynacl/Manifest
@@ -1 +1,2 @@
DIST pynacl-1.5.0.gh.tar.gz 20350195 BLAKE2B 56ca4f47867cce6e22fdacb0558b5f901aae318b47bacfe5f4ad02d8923e1c86d0a2dd186ec29c820a786ab844d928479fca2d1472a8345b82be6bcbc67c3328 SHA512 905d3a7ce7f758b31a5d34471d5a0202fd2ba3d904a7ec59a158bcd1ea572fc87e29fc144c733d151cbaa48788c939808bc51d00acc973fe6d190eefdd3bfd59
+DIST pynacl-1.6.0.gh.tar.gz 27611198 BLAKE2B 6b2ea8e96f39d758b3fb6d942a45909e5b6ed4f671c9ebb7aee4d089a0b0ae34b09c020518c69dfef2d9ec900455c83a4d01145f58b6e84a8613cd6f6fb852a1 SHA512 b068fb5877fd084d927471233c0678d04582f49cdcd1a298d38f39c2a775bbf83011a6279df894c6c92732dc947a467e4f628449f5f8419b254886c2b789e17e
diff --git a/dev-python/pynacl/pynacl-1.6.0.ebuild b/dev-python/pynacl/pynacl-1.6.0.ebuild
new file mode 100644
index 000000000000..39e5f1731261
--- /dev/null
+++ b/dev-python/pynacl/pynacl-1.6.0.ebuild
@@ -0,0 +1,48 @@
+# 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="Python binding to the Networking and Cryptography (NaCl) library"
+HOMEPAGE="
+ https://github.com/pyca/pynacl/
+ https://pypi.org/project/PyNaCl/
+"
+SRC_URI="
+ https://github.com/pyca/pynacl/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+DEPEND="
+ dev-libs/libsodium:=
+"
+RDEPEND="
+ ${DEPEND}
+ $(python_gen_cond_dep '
+ >=dev-python/cffi-1.4.1[${PYTHON_USEDEP}]
+ ' 'python*')
+"
+BDEPEND="
+ $(python_gen_cond_dep '
+ >=dev-python/cffi-1.4.1[${PYTHON_USEDEP}]
+ ' 'python*')
+"
+
+EPYTEST_PLUGINS=( hypothesis )
+distutils_enable_tests pytest
+
+src_compile() {
+ # For not using the bundled libsodium
+ local -x SODIUM_INSTALL=system
+ distutils-r1_src_compile
+}
diff --git a/dev-python/pyopenssl/Manifest b/dev-python/pyopenssl/Manifest
index 39ebe74bb88e..e76e5070cc64 100644
--- a/dev-python/pyopenssl/Manifest
+++ b/dev-python/pyopenssl/Manifest
@@ -1 +1,2 @@
DIST pyopenssl-25.1.0.tar.gz 179937 BLAKE2B 4c3f9d70c9e1929ae4af04408f6b20585829ca3cffc08444a1ed615e2a864495a93ed09e46f59b2079e603adf89770a1f540ade336545eb9c139ee0d7ef8340e SHA512 a2783d02011b09669fb215b0ab44d0c91bea10bcd72d6369c4f680768fd9eb9d1b7622566c22cd29fcedacea2b21f60a86311f5cf996d2acea1a4b51cbd82ef1
+DIST pyopenssl-25.2.0.tar.gz 184020 BLAKE2B 4d6a87e429762625ec9828ee51d890b73553c58b51260f369e5b069605350ea883751e7c8caafe780f52e0095c4f3268180348362b32347d658befc2ff97d737 SHA512 7c76506841fbcfc227e7cbc1681dfeede340c6d556900cd32d524aecc83ba3aef81f7bbd0c9583bc921c029f635b63f65a05e0528b99521eafe9e85f5c6a3896
diff --git a/dev-python/pyopenssl/pyopenssl-25.2.0.ebuild b/dev-python/pyopenssl/pyopenssl-25.2.0.ebuild
new file mode 100644
index 000000000000..dc632bd19758
--- /dev/null
+++ b/dev-python/pyopenssl/pyopenssl-25.2.0.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_PN=pyOpenSSL
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_REQ_USE="threads(+)"
+
+inherit distutils-r1 toolchain-funcs pypi
+
+DESCRIPTION="Python interface to the OpenSSL library"
+HOMEPAGE="
+ https://www.pyopenssl.org/
+ https://github.com/pyca/pyopenssl/
+ https://pypi.org/project/pyOpenSSL/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ <dev-python/cryptography-46[${PYTHON_USEDEP}]
+ >=dev-python/cryptography-45.0.7[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/typing-extensions-4.9[${PYTHON_USEDEP}]
+ ' 3.{11..12})
+"
+BDEPEND="
+ test? (
+ $(python_gen_cond_dep '
+ dev-python/cffi[${PYTHON_USEDEP}]
+ ' 'python*')
+ dev-python/pretend[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_sphinx doc \
+ dev-python/sphinx-rtd-theme
+EPYTEST_PLUGINS=( pytest-rerunfailures )
+distutils_enable_tests pytest
+
+src_test() {
+ local -x TZ=UTC
+ local EPYTEST_DESELECT=(
+ tests/test_ssl.py::TestContext::test_set_default_verify_paths
+ )
+
+ if ! tc-has-64bit-time_t; then
+ einfo "time_t is smaller than 64 bits, will skip broken tests"
+ EPYTEST_DESELECT+=(
+ tests/test_crypto.py::TestX509StoreContext::test_verify_with_time
+ )
+ fi
+
+ distutils-r1_src_test
+}
diff --git a/dev-python/pyparsing/Manifest b/dev-python/pyparsing/Manifest
index 8d218af6e203..5c5cceeed3f0 100644
--- a/dev-python/pyparsing/Manifest
+++ b/dev-python/pyparsing/Manifest
@@ -1 +1,2 @@
DIST pyparsing-3.2.3.tar.gz 1088608 BLAKE2B e16ac59455011e22a86303f578501a141dd65403b30168c0106e7152c58ebd96a3ee479a08c2a084da218a8db1a72dffdecfda896f7210794b871f75c374b60d SHA512 ef01403a158f15215b3be7f7c4aad2ceb6020d578dac68351b732df3447c685aa478d23ab645d554070ad2aec14ee565a0407f428b91f398e4429c0e53eb4a6d
+DIST pyparsing-3.2.4.tar.gz 1098809 BLAKE2B 3dbf56f633b6a1503f794aa8b1ce2a36f06232228a970037908971dd4d2224952cfff9feebe77c37c7a11410521f5c77463efb7d9982a7622ac2c627a9f5d754 SHA512 a7cd44fb37aba3b0fb92bf8f64ba192136c892c6bf41f9a5ebda694c2263a121b0123406e4e3e8ea203b01b0185e05a12f8937fc7a4f494d9be7ddaea43faf65
diff --git a/dev-python/pyparsing/pyparsing-3.2.4.ebuild b/dev-python/pyparsing/pyparsing-3.2.4.ebuild
new file mode 100644
index 000000000000..55c6966261a8
--- /dev/null
+++ b/dev-python/pyparsing/pyparsing-3.2.4.ebuild
@@ -0,0 +1,58 @@
+# Copyright 2004-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# please keep this ebuild at EAPI 8 -- sys-apps/portage dep
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Easy-to-use Python module for text parsing"
+HOMEPAGE="
+ https://github.com/pyparsing/pyparsing/
+ https://pypi.org/project/pyparsing/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
+IUSE="examples"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ # railroad-diagrams not packaged (and not suitable for packaging yet)
+ tests/test_diagram.py
+ )
+ local EPYTEST_DESELECT=(
+ # also railroad-diagrams
+ tests/test_examples.py::TestExamples::test_range_check
+ tests/test_examples.py::TestExamples::test_rosettacode
+ tests/test_unit.py::Test02_WithoutPackrat::testEmptyExpressionsAreHandledProperly
+ tests/test_unit.py::Test04_WithPackrat::testEmptyExpressionsAreHandledProperly
+ tests/test_unit.py::Test06_WithBoundedPackrat::testEmptyExpressionsAreHandledProperly
+ tests/test_unit.py::Test08_WithUnboundedPackrat::testEmptyExpressionsAreHandledProperly
+ tests/test_unit.py::Test09_WithLeftRecursionParsing::testEmptyExpressionsAreHandledProperly
+ tests/test_unit.py::Test10_WithLeftRecursionParsingBoundedMemo::testEmptyExpressionsAreHandledProperly
+ )
+
+ if ! has_version "dev-python/matplotlib[${PYTHON_USEDEP}]"; then
+ EPYTEST_IGNORE+=(
+ tests/test_matplotlib_cases.py
+ )
+ fi
+
+ epytest
+}
+
+python_install_all() {
+ if use examples; then
+ docompress -x /usr/share/doc/${PF}/examples
+ dodoc -r examples
+ fi
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/pyroute2/Manifest b/dev-python/pyroute2/Manifest
index c7ec15491121..c976ebad5a42 100644
--- a/dev-python/pyroute2/Manifest
+++ b/dev-python/pyroute2/Manifest
@@ -1,2 +1 @@
-DIST pyroute2-0.9.2.tar.gz 470901 BLAKE2B 64cf2fd568b95914cef50c0c77dc0e4fd72a9ab766fca357204b82ca68a37e544c58cd53835bfa95415e8677c61ec8db2561d02d48bff7ea2a39e5dc1058ac66 SHA512 b6012f4ab20bed3630a90bcd1672f9f5a467b0ddb6ea180d8bd11868ac2361898e2fa33fafcda857026384fde5952a03b5b7b9d1f2672b963019fd7b2a83a6c3
DIST pyroute2-0.9.4.tar.gz 463980 BLAKE2B 6557bf74a20b56295868cc1a8c0e31c0e052665edf0adbf534b281c0ec958a0cfc101d3dfce4d29b1314499d71fd05901636e028d6f11413ba85cd609132cedc SHA512 77f1023622730ed45f1e1bda81f5e31c5de10afc0821856152564c1663bc60659411f6695c2826239cd8137edb5831578393a746a5a6dc1afe129bc1dc55eb02
diff --git a/dev-python/pyroute2/pyroute2-0.9.2.ebuild b/dev-python/pyroute2/pyroute2-0.9.2.ebuild
deleted file mode 100644
index 4abd4f27aa12..000000000000
--- a/dev-python/pyroute2/pyroute2-0.9.2.ebuild
+++ /dev/null
@@ -1,26 +0,0 @@
-# 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_{11..14} )
-PYTHON_REQ_USE="sqlite"
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="A pure Python netlink and Linux network configuration library"
-HOMEPAGE="
- https://github.com/svinota/pyroute2/
- https://pypi.org/project/pyroute2/
-"
-
-LICENSE="|| ( GPL-2+ Apache-2.0 )"
-SLOT="0"
-KEYWORDS="amd64 ~arm64 x86"
-# tests need root access
-RESTRICT="test"
-
-BDEPEND="
- dev-python/setuptools-scm[${PYTHON_USEDEP}]
-"
diff --git a/dev-python/pyroute2/pyroute2-0.9.4.ebuild b/dev-python/pyroute2/pyroute2-0.9.4.ebuild
index 339212774a9d..4abd4f27aa12 100644
--- a/dev-python/pyroute2/pyroute2-0.9.4.ebuild
+++ b/dev-python/pyroute2/pyroute2-0.9.4.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="|| ( GPL-2+ Apache-2.0 )"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
+KEYWORDS="amd64 ~arm64 x86"
# tests need root access
RESTRICT="test"
diff --git a/dev-python/pytest-asyncio/Manifest b/dev-python/pytest-asyncio/Manifest
index b0014f3365ed..b2d37371c131 100644
--- a/dev-python/pytest-asyncio/Manifest
+++ b/dev-python/pytest-asyncio/Manifest
@@ -1,3 +1,5 @@
DIST pytest_asyncio-0.26.0.tar.gz 54156 BLAKE2B 763053772ff148a80773bb22457bd1a14e23f8b8c10279731ad356b168618a675f5e5ac20eff11bc5db0989a53ca079fbe3fd00d2afdbee41f61848b375b018e SHA512 60cb6e9bf7554b5d94d8e9c3bb8e60fba92ecb2fd4258ea8967eebf5af2b2050913e08917dafeddf4e27ad09bc52c800f38739eed9705330ce70f653bcd765a0
DIST pytest_asyncio-1.0.0.tar.gz 46960 BLAKE2B e72564ea0f125358c16a1dde81b3d139ffee4f698fe6ccde1c7daba83037eea9b405658c4f919220a29329f4691bc00b1ea530eefeba846d93fb4dd0fddb0ce4 SHA512 d3ae6729e1cc798adc0707c0a08ee32bded6430776e224d5565d7e93b51ec05e2ab0e64b9244d4b69e42275b1c73bdea4a3fe5d38edbfc4bf256857e22e41322
DIST pytest_asyncio-1.1.0.tar.gz 46652 BLAKE2B e0ce03326320b4e6ab4470d8b982eebd0c1628c94497d2a1a2a1a1ebed56d886de026163b56eef15c0037b2e3ee227077dbb798808bce64174b94b5710f064f6 SHA512 f2f8efcfe965edf3a9ff29dffe776f60240b229235391b09ff266d97568c01c6014d5b0a9fb9963af728f6e30e3eda8deb726b9ff2616f524f3228e4f66535e4
+DIST pytest_asyncio-1.1.1.tar.gz 46590 BLAKE2B 9e629a879431ad92b8699651e99277526b187d9e24e876f0c53802c32530f056db3dc7b537e245e62c4eda5d6dde8ed23c1a6ab1a2dc2c2e60af7aed5349674b SHA512 7c242318b07593dc511baef46f1fe9469a8731a9ee79f88bfce1229370dc06c25c80ed1bf2902d018f40b5651687e4cbcf004c9187c7c97d955e8ab35e6bb481
+DIST pytest_asyncio-1.2.0.tar.gz 50119 BLAKE2B e013b58c49f53f9785203ca8e6162899537c3c64ea4a8acd32c184ed8d5252145ed26e73b2032a216ab290b630a7555811e1504971224a0490b2ee56de417b22 SHA512 290850d18d915eb9230c3658817ff35555f78ef5901cde84a914d2231c7c036f3644e954790e53eb2cd3da26acffd0d124c17f51c054a6477fe19fcda77ef5e4
diff --git a/dev-python/pytest-asyncio/pytest-asyncio-1.1.1.ebuild b/dev-python/pytest-asyncio/pytest-asyncio-1.1.1.ebuild
new file mode 100644
index 000000000000..eed31775d8bc
--- /dev/null
+++ b/dev-python/pytest-asyncio/pytest-asyncio-1.1.1.ebuild
@@ -0,0 +1,38 @@
+# Copyright 2019-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Library for testing asyncio code with pytest"
+HOMEPAGE="
+ https://github.com/pytest-dev/pytest-asyncio/
+ https://pypi.org/project/pytest-asyncio/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+
+RDEPEND="
+ >=dev-python/pytest-8.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=( hypothesis "${PN}" )
+EPYTEST_PLUGIN_LOAD_VIA_ENV=1
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # fail due to mismatched warning count
+ tests/test_event_loop_fixture.py::test_closing_event_loop_in_sync_fixture_teardown_raises_warning
+ tests/test_event_loop_fixture.py::test_event_loop_fixture_asyncgen_error
+ tests/test_event_loop_fixture.py::test_event_loop_fixture_handles_unclosed_async_gen
+)
diff --git a/dev-python/pytest-asyncio/pytest-asyncio-1.2.0.ebuild b/dev-python/pytest-asyncio/pytest-asyncio-1.2.0.ebuild
new file mode 100644
index 000000000000..68fce91f6809
--- /dev/null
+++ b/dev-python/pytest-asyncio/pytest-asyncio-1.2.0.ebuild
@@ -0,0 +1,41 @@
+# Copyright 2019-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Library for testing asyncio code with pytest"
+HOMEPAGE="
+ https://github.com/pytest-dev/pytest-asyncio/
+ https://pypi.org/project/pytest-asyncio/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+
+RDEPEND="
+ >=dev-python/pytest-8.2[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/typing-extensions-4.12[${PYTHON_USEDEP}]
+ ' 3.{11..12})
+"
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=( hypothesis "${PN}" )
+EPYTEST_PLUGIN_LOAD_VIA_ENV=1
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # fail due to mismatched warning count
+ tests/test_event_loop_fixture.py::test_closing_event_loop_in_sync_fixture_teardown_raises_warning
+ tests/test_event_loop_fixture.py::test_event_loop_fixture_asyncgen_error
+ tests/test_event_loop_fixture.py::test_event_loop_fixture_handles_unclosed_async_gen
+)
diff --git a/dev-python/pytest-cov/Manifest b/dev-python/pytest-cov/Manifest
index 38875bf5d502..d717fdc2c007 100644
--- a/dev-python/pytest-cov/Manifest
+++ b/dev-python/pytest-cov/Manifest
@@ -1,2 +1,3 @@
DIST pytest_cov-6.2.0.tar.gz 68872 BLAKE2B 2d1b011885db80497a3de6cda907b2d7e9ed6b4f5cdbe7da7e5d824ffc95c47d0603885deb227698c8536c77c98ceb8604c8bc00ac7a5aec73c867c6efad1a37 SHA512 11d4916b2a826981845b93944737813e2683a48e36cfe9c4a2a1b5a3f4009f8a3e87d1606636fdaf813dffc017bd5a81fd1769bbaca5ce360e1e89f51130c934
DIST pytest_cov-6.3.0.tar.gz 70398 BLAKE2B 8082e94bf2430122f07dcf07c423f2cb4d4c41c1383baad36a6b89a1bb350f30dd8f53ad66efcb56f998d7e35d553fc0f1f41d47bf149cecca13b813100f8b2a SHA512 163b13aae0e335c7158614411f6ae2dc259b0c9de09e324ee909dc07992c2ee45b81e850bd13a0e00bf211af1a5262ef6cc2883c883b739a2be2e0efef5aee7c
+DIST pytest_cov-7.0.0.tar.gz 54328 BLAKE2B e4c3e01a2a7f09bbbf53889d984e835d40d50ed89616f43027ecdffc299a5f917f6cdcaf76b87053e687f39d5eca951d8bf3602d1cf1ac214017cf7074b5163b SHA512 6a3822209b139b06f175e20549f997c532d1c1d9bc79fa3fdff9dca8ea870a110cf75056ddfb68fc447018033bd223c0de492be9a8c756a02739b70d3f2772a7
diff --git a/dev-python/pytest-cov/pytest-cov-7.0.0.ebuild b/dev-python/pytest-cov/pytest-cov-7.0.0.ebuild
new file mode 100644
index 000000000000..aaa06f9f8817
--- /dev/null
+++ b/dev-python/pytest-cov/pytest-cov-7.0.0.ebuild
@@ -0,0 +1,70 @@
+# 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="pytest plugin for coverage reporting"
+HOMEPAGE="
+ https://github.com/pytest-dev/pytest-cov/
+ https://pypi.org/project/pytest-cov/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/coverage-7.10.6[${PYTHON_USEDEP}]
+ >=dev-python/pluggy-1.2[${PYTHON_USEDEP}]
+ >=dev-python/pytest-7[${PYTHON_USEDEP}]
+"
+# NB: xdist is also used directly in the test suite
+BDEPEND="
+ dev-python/hatch-fancy-pypi-readme[${PYTHON_USEDEP}]
+ test? (
+ dev-python/fields[${PYTHON_USEDEP}]
+ >=dev-python/process-tests-2.0.2[${PYTHON_USEDEP}]
+ >=dev-python/py-1.4.22[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_sphinx docs \
+ dev-python/furo
+
+EPYTEST_PLUGIN_LOAD_VIA_ENV=1
+EPYTEST_PLUGINS=( "${PN}" pytest-xdist )
+EPYTEST_RERUNS=5
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ # https://github.com/pytest-dev/pytest-cov/issues/517
+ local sitedir="$(python_get_sitedir)"
+ local -x PYTHONPATH="${BUILD_DIR}/install${sitedir}:${BROOT}${sitedir#${EPREFIX}}:${PYTHONPATH}"
+ local -x PYTHONUSERBASE=/usr
+
+ local EPYTEST_DESELECT=(
+ # no celery in ::gentoo
+ tests/test_pytest_cov.py::test_celery
+ # TODO
+ tests/test_pytest_cov.py::test_filterwarnings_error
+ )
+
+ case ${EPYTHON} in
+ python3.14*)
+ EPYTEST_DESELECT+=(
+ # https://github.com/pytest-dev/pytest-cov/issues/719
+ # (skipped previously)
+ tests/test_pytest_cov.py::test_contexts
+ )
+ ;;
+ esac
+
+ epytest
+}
diff --git a/dev-python/pytest-embedded/Manifest b/dev-python/pytest-embedded/Manifest
index 4bfd2285201d..59e7511bee39 100644
--- a/dev-python/pytest-embedded/Manifest
+++ b/dev-python/pytest-embedded/Manifest
@@ -1,2 +1,2 @@
-DIST pytest_embedded-1.16.1.tar.gz 32837 BLAKE2B 11e28994a9e515656bb7b3416fdac8601e976a75d052e1651064298d00feefee7a81996555dfcd99ae7cf7e1727ba4a67ab0c633ce1c25b85a93565674627657 SHA512 e64bd135c6dbcca8501feb367c5aea7f02381cff034aa65c529f372ae7dd7f3821a58a77419af299aeea3800c44dd9cc80140ac88baa4d45f3eeeee21af2118d
DIST pytest_embedded-1.16.2.tar.gz 32920 BLAKE2B 99ae73c583560135644ffb3afbce483d0856ac39abac6e953ea89634bb7c363c630d2455f376ab21d6d9912e200e2cd663dd02488aa22777259acb9823143c92 SHA512 6d83d05237f4e574238b5c641023a0de9171cc330802d11286887b94cd1d12485237092801217cce06bec6746fd4b9590ec30004617c8178f12505a92165d3ad
+DIST pytest_embedded-1.17.0.tar.gz 32992 BLAKE2B 96fbaa25686f04b0cb8d5a5c517edcc1a25e9ad2515aa27a1672b1429cbba2b973474b3a456b0945dc4792ebe5d18273c66426dffe19d3222c97101d3ee5e3ed SHA512 056c169f8f5a09322a7084be8b14e964636fd8453dc212970f5689037474ec269aa8b7f97c373916604a276ab7df9ac073a2408e7bbb1af424f80ec08b99efdc
diff --git a/dev-python/pytest-embedded/pytest-embedded-1.16.1.ebuild b/dev-python/pytest-embedded/pytest-embedded-1.17.0.ebuild
index 9db7ca97b3ea..9db7ca97b3ea 100644
--- a/dev-python/pytest-embedded/pytest-embedded-1.16.1.ebuild
+++ b/dev-python/pytest-embedded/pytest-embedded-1.17.0.ebuild
diff --git a/dev-python/python-dbusmock/Manifest b/dev-python/python-dbusmock/Manifest
index b37def62891c..1ef8466ee596 100644
--- a/dev-python/python-dbusmock/Manifest
+++ b/dev-python/python-dbusmock/Manifest
@@ -1 +1,2 @@
DIST python_dbusmock-0.36.0.tar.gz 111529 BLAKE2B 38ace6e85858d8f6a275872d7b740f81d44db517216bff03360e92644709bfb7885c7b9884b4cd84bf8fa1d3ed0e2c238cdb496544820a73e97d0b4621ac4d6d SHA512 be5fe55c5da7fd0aea57239ab556e2eb668e692c55f2606895dd88bd4d7d0ba406a1e1c86f705b7f87f00204690eb7982b6534a7f85f83400103a78b4d323d5a
+DIST python_dbusmock-0.37.0.tar.gz 107409 BLAKE2B 53da55e56eaa836b79e90d4f1a992929cac44941fc91f48df683263297425c7a036684d71c8ff90bf367f0a6fe0e249d9fc645646e00444768cee8f6cc41f42d SHA512 09a0e9b38c1286c69ef371411c75363068eb9bcc487a69587f7098653bf9d1b1326bdefa01fab9913879e6faf96e3ddedefd798b236697ec186f7a5051eba64d
diff --git a/dev-python/python-dbusmock/python-dbusmock-0.37.0.ebuild b/dev-python/python-dbusmock/python-dbusmock-0.37.0.ebuild
new file mode 100644
index 000000000000..1f4e01d1cadf
--- /dev/null
+++ b/dev-python/python-dbusmock/python-dbusmock-0.37.0.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_{11..14} )
+PYTHON_REQ_USE="xml(+)"
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Easily create mock objects on D-Bus for software testing"
+HOMEPAGE="
+ https://github.com/martinpitt/python-dbusmock/
+ https://pypi.org/project/python-dbusmock/
+"
+
+LICENSE="LGPL-3+"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ dev-python/dbus-python[${PYTHON_USEDEP}]
+ dev-python/pygobject:3[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ sys-power/upower
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+EPYTEST_IGNORE=(
+ # linter tests, fragile to newer linter versions
+ tests/test_code.py
+)
+
+src_prepare() {
+ # dev-python/dbus-python uses autotools, so no .dist-info there
+ sed -i '/dbus-python/d' pyproject.toml setup.cfg || die
+
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ # tests are fragile to long socket paths
+ local -x TMPDIR=/tmp
+ # Tests break if XDG_DATA_DIRS is modified by flatpak install
+ unset XDG_DATA_DIRS
+ epytest
+}
diff --git a/dev-python/python-gnupg/python-gnupg-0.5.5.ebuild b/dev-python/python-gnupg/python-gnupg-0.5.5.ebuild
index f0fb11355910..f1f61e90342c 100644
--- a/dev-python/python-gnupg/python-gnupg-0.5.5.ebuild
+++ b/dev-python/python-gnupg/python-gnupg-0.5.5.ebuild
@@ -23,7 +23,7 @@ SRC_URI="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~sparc x86"
# Need gnupg[nls] for avoiding decode errors and possible hangs
# w/ e.g. sec-keys/openpgp-keys-gentoo-developers but other pkgs too.
diff --git a/dev-python/python-socks/python-socks-2.7.2.ebuild b/dev-python/python-socks/python-socks-2.7.2.ebuild
index 5268e6a98043..883905ce27dc 100644
--- a/dev-python/python-socks/python-socks-2.7.2.ebuild
+++ b/dev-python/python-socks/python-socks-2.7.2.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
# curio is not packaged
# asyncio is the only backend we have, so dep on its deps unconditionally
diff --git a/dev-python/pyzmq/Manifest b/dev-python/pyzmq/Manifest
index a82c4b55d7b9..d3951ddd72a8 100644
--- a/dev-python/pyzmq/Manifest
+++ b/dev-python/pyzmq/Manifest
@@ -2,3 +2,4 @@ DIST pyzmq-26.4.0.gh.tar.gz 279710 BLAKE2B 45d798d8abeed1ebcaa39c1a53f4669a84e1f
DIST pyzmq-27.0.0.gh.tar.gz 281941 BLAKE2B ced2cd9c90db1bb3021c3216f5102131e7d60800f3e3db64ea6f646d5972f84c84161f2b62f779fc0ce57b07c430b889654176b1bdfa8634171289933631b894 SHA512 91a91cae21643018d57f9c239719be5a4a644422c12b09860aa8f124d8fc81a60e07581481dc29eef6523e5aac37e253aacc057b5cc9c9ce6c5937256044f1e3
DIST pyzmq-27.0.1.gh.tar.gz 282571 BLAKE2B 7d65c4ebdc98308c908e809c9f56c9521e7352c222b554052b5d2a1db602752dad29c150e8bb5512e9f0c10557962a8cb9a50931ee84b6d8f411eb7d61fe289a SHA512 bc80ae7df6692b9b94e5ff801962f5927f071757374a79aeeeddd3e0e631e6e6b0d12987e75b0758977707dab5e22a14a0dd08cf2980bf022a100a40f5e67aa2
DIST pyzmq-27.0.2.gh.tar.gz 282779 BLAKE2B 99e6b9eb911902a8838bcd8e361cfe1b228b259815cd2dfb83d966400e4a21171eb566ebc562d776b155f2b32f17d121bcbfd73e88b0e85e104479d52246a171 SHA512 4814a7b2df6c39151b0ac9a3c1fbe13a127e620c916d9f96b1c515de14b0bb8cca5a49930b76c490634c07bfb1a69f6c096335151a1213dbb795e53b77565e79
+DIST pyzmq-27.1.0.gh.tar.gz 283119 BLAKE2B 0d9115c32f93ca4f204030afbec3ac2e86efaadfe0d6293a0c7af81737558df8cd1b33506294ca3249a111c33333423b344c668ae32acd206cce792b2128e291 SHA512 621f7374861198dfddf1f667e4af24dd874a239a623961c27c148b1e525492d409ba830a3bfe5cf8eed1d61a094b3993daf6911fb11734e398d7594b15c06543
diff --git a/dev-python/pyzmq/pyzmq-27.1.0.ebuild b/dev-python/pyzmq/pyzmq-27.1.0.ebuild
new file mode 100644
index 000000000000..bab90838e89a
--- /dev/null
+++ b/dev-python/pyzmq/pyzmq-27.1.0.ebuild
@@ -0,0 +1,85 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=scikit-build-core
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_REQ_USE="threads(+)"
+
+inherit distutils-r1
+
+DESCRIPTION="Lightweight and super-fast messaging library built on top of the ZeroMQ library"
+HOMEPAGE="
+ https://zeromq.org/languages/python/
+ https://pypi.org/project/pyzmq/
+ https://github.com/zeromq/pyzmq/
+"
+SRC_URI="
+ https://github.com/zeromq/pyzmq/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="LGPL-3"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
+IUSE="drafts"
+
+# There are additional test failures if zeromq has the draft api enabled, but pyzmq has it disabled.
+DEPEND="
+ >=net-libs/zeromq-4.2.2-r2:=[drafts=]
+"
+# It uses cffi backend for pypy, cython backend for cpython
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ dev-python/packaging[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/cython-3.0.0[${PYTHON_USEDEP}]
+ ' 'python*')
+ test? (
+ >=dev-python/tornado-5.0.2[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{asyncio,rerunfailures} )
+distutils_enable_tests pytest
+# TODO: Package enum_tools
+# distutils_enable_sphinx docs/source \
+# dev-python/numpydoc \
+# dev-python/sphinx-rtd-theme \
+# dev-python/myst-parser
+
+src_configure() {
+ DISTUTILS_ARGS=(
+ -DZMQ_DRAFT_API="$(usex drafts)"
+ -DPYZMQ_NO_BUNDLE=ON
+ # unnecessarily adds /usr/lib* to rpath
+ -DPYZMQ_LIBZMQ_RPATH=OFF
+ )
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # often crashes zmq?
+ tests/test_log.py::TestPubLog
+ )
+ local EPYTEST_IGNORE=(
+ # Avoid dependency on mypy
+ tests/test_mypy.py
+ )
+
+ case ${EPYTHON} in
+ pypy3*)
+ EPYTEST_DESELECT+=(
+ # not implemented in cffi variant?
+ tests/test_draft.py::TestDraftSockets
+ )
+ esac
+
+ rm -rf zmq || die
+ # avoid large to reduce memory consumption
+ epytest tests -m "not large"
+}
diff --git a/dev-python/rapidfuzz/Manifest b/dev-python/rapidfuzz/Manifest
index fefbbe0aabd8..1a65efbebe6f 100644
--- a/dev-python/rapidfuzz/Manifest
+++ b/dev-python/rapidfuzz/Manifest
@@ -1,2 +1,3 @@
DIST rapidfuzz-3.13.0.tar.gz 57904226 BLAKE2B c71b8a5642d4f15ec96a7ad17b9053d06a46a2a7cc86083f119082325fbfe11558c44682f6c555ce9212510e2336f5ec13f91007c165afce74faf9662ca32f71 SHA512 6890d9a00e67b2efd89fd8582b7055ac006ed323ad254d8c640826b724f107063e1e4b8a88a905194f0b61d044cd0765a6715647cbaf04290165bcc5658550f3
DIST rapidfuzz-3.14.0.tar.gz 58073448 BLAKE2B 550febc3093d53de93e4ae9271d2a2928bead0d73ad52ea9091c59db898f2bd95e13a7f01f27d5080601208acac70b3793b1eb6fb393d29fccf5ac25b43c21ef SHA512 1b20802b794993aa727a76622b0666e4f5986f8b99c282fd6adc44c0dc4a21ec941959db7d5bd2556754e4d715d749e7dc0f549170690269d5a78dd67ec8ecfa
+DIST rapidfuzz-3.14.1.tar.gz 57869570 BLAKE2B 6eccd859b80413652ab055c3802deec650945f77e4addba3f6fe062c3c1054bcfcabfb98d17aa317f81de41722982229ca83c419609a341d116c8ba85d7d71c8 SHA512 26a27055d9b591883d35805945b54e4b0710aaa11703874e30ecf40ecfe091628dcf03a98fdc060fa5f20b6c4d7e23fd977fc0ca134bd1993a33c2a52cb57395
diff --git a/dev-python/rapidfuzz/rapidfuzz-3.14.1.ebuild b/dev-python/rapidfuzz/rapidfuzz-3.14.1.ebuild
new file mode 100644
index 000000000000..bcb15f4b53d3
--- /dev/null
+++ b/dev-python/rapidfuzz/rapidfuzz-3.14.1.ebuild
@@ -0,0 +1,50 @@
+# Copyright 2022-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=scikit-build-core
+PYPI_PN=RapidFuzz
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Rapid fuzzy string matching in Python using various string metrics"
+HOMEPAGE="
+ https://github.com/rapidfuzz/RapidFuzz/
+ https://pypi.org/project/RapidFuzz/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+# all these are header-only libraries
+DEPEND="
+ >=dev-cpp/taskflow-3.0.0
+ >=dev-cpp/rapidfuzz-cpp-3.3.3
+ dev-python/numpy[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ >=dev-python/cython-3[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=( hypothesis )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ # sterilize build flags
+ sed -i -e '/CMAKE_INTERPROCEDURAL_OPTIMIZATION/d' CMakeLists.txt || die
+ # remove bundled libraries
+ rm -r extern || die
+ # force recythonization
+ find src -name '*.cxx' -delete || die
+ # do not require exact taskflow version
+ sed -i -e '/Taskflow/s:3\.10\.0::' CMakeLists.txt || die
+
+ distutils-r1_src_prepare
+
+ export RAPIDFUZZ_BUILD_EXTENSION=1
+}
diff --git a/dev-python/redis/Manifest b/dev-python/redis/Manifest
index 7b1385653d7f..50650ccf34d1 100644
--- a/dev-python/redis/Manifest
+++ b/dev-python/redis/Manifest
@@ -1,3 +1,3 @@
-DIST redis-py-6.2.0.gh.tar.gz 4865662 BLAKE2B c341983e7eaa2cff959170bd970a596f4585a169158cc526de2117791a0bec78e1eef633fce02fe5d130e6a73fe76c1396b3e8e2e5f9037013ed526614144406 SHA512 d7f170021026bc7377b46cb9dce4ef3d9307ed9bddeed554ab64a08b2d1f1dd66f7ae7a31e51704176dab1b52367e94ac1596c1c1d125c9bab60675ed2f4d9f8
DIST redis-py-6.3.0.gh.tar.gz 4878636 BLAKE2B e6eb22f563c197bb30538636aa0aff3cb5b1921805f9d7312214cbf06673e9eca6bef2d6dad805ed9382ac72922f78a47aa3fe476aa468d259b1abf0278bb9e0 SHA512 066d68e04477885d078ff825d33ca2f6a9d87ea5e7b80d76153edc47908b8216abab18f905b1e10bff9efd3f4f4d3c3905c372e411328da069a36712ab5b4215
DIST redis-py-6.4.0.gh.tar.gz 4878820 BLAKE2B 672421ec98cec3c908f3980fb995433e2e52137d9e6786b43fe7d6412884e6774d234698cac96f9a96a6176e14c55cc2742b3697b70c1d9a308a8a6ee0e5b8ce SHA512 94df8fb65e991d98be6e776b8c889d73615f5b1ab8727a9b5f6982f50ef441bc2c3aff0db3383cd8001df2fd525f98513046f7a1ff7f067fc16c479aecf507ae
+DIST redis-py-7.0.0b1.gh.tar.gz 4917679 BLAKE2B 673ccf60415a81de80dd460f783602adf182b9d778a30d88ddd16b326d1e9a2ca539d9dfe8d935f6c86affdeaa590882c244d8216b2c606d4562038f6a9b96f7 SHA512 d68ac25f39a83a02b70c41d35fd481f272320f206cb8d595b3af5d7a407af81212e770c13d1591d619044e97beee9264660bcb997761b4b5807bbf97f04979f4
diff --git a/dev-python/redis/redis-6.4.0.ebuild b/dev-python/redis/redis-6.4.0.ebuild
index a3d89451285b..4e64d3184910 100644
--- a/dev-python/redis/redis-6.4.0.ebuild
+++ b/dev-python/redis/redis-6.4.0.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~sparc ~x86"
+KEYWORDS="amd64 arm arm64 ~hppa ppc ppc64 ~riscv ~sparc x86"
BDEPEND="
test? (
diff --git a/dev-python/redis/redis-6.2.0.ebuild b/dev-python/redis/redis-7.0.0_beta1.ebuild
index 410bce772d96..94938e5038ed 100644
--- a/dev-python/redis/redis-6.2.0.ebuild
+++ b/dev-python/redis/redis-7.0.0_beta1.ebuild
@@ -8,40 +8,31 @@ PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
inherit distutils-r1
-MY_P=redis-py-${PV}
+MY_P=redis-py-${PV/_beta/b}
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
+ https://github.com/redis/redis-py/archive/v${PV/_beta/b}.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}]
)
"
+EPYTEST_PLUGINS=( pytest-{asyncio,timeout} )
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
@@ -67,6 +58,11 @@ python_test() {
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]
+ # requires sentinel?
+ tests/{,test_asyncio/}test_sentinel.py
+ # require REDIS_ENDPOINTS_CONFIG_PATH, except there's zero documentation
+ # or examples of what this is
+ tests/test_scenario/test_hitless_upgrade.py::TestPushNotifications
)
local EPYTEST_IGNORE=(
# fails over missing certs, we don't do cluster anyway
diff --git a/dev-python/regex/Manifest b/dev-python/regex/Manifest
index b366988b575b..af18035ca7a9 100644
--- a/dev-python/regex/Manifest
+++ b/dev-python/regex/Manifest
@@ -1,5 +1,3 @@
-DIST regex-2024.11.6.tar.gz 399494 BLAKE2B 5b805e71d505516f1b1454d5198591c902eadf56887529bff988e301af639e891b25196467d4b7e2a55144e223ae731e878e2237c1b1ac7852f282aad1d34e13 SHA512 e04c611c22c07cf649ca01517c2508ea5ffbc0c729c43e6f9e0274a7ede68ace88a452987b50345928317869f710c9c75e0c5a0280e2410fc760bcbac7482dd6
-DIST regex-2025.7.31.tar.gz 407354 BLAKE2B 76ff46c4d745c6710faeb2745b7e97260c07093d697dfc26c25118d988d3cb34efdb456417296de8bc3372c2c6e55dc7bb0407a2043ca418ebd1d8cb19a80a18 SHA512 d30a07dee87612efd743eee687c158a886d19de34bcf98183ccbf0c72f911c6f6534875312c46c77506e7897894bf96b6fb42fa7309825e12ea4855045896c3a
DIST regex-2025.7.34.tar.gz 400714 BLAKE2B 4eb0c5600b9ef759f1e7511d01d533a3fda7b6010b6c974c0071e7cde2f5bbd9a8c62289b7abb4f2e0d9c251a9421876f6bf0a021892073babffb181d099ae55 SHA512 d30f69559804db12d85ee4c81d7055f3aab70f9a7c86b642932b7a12295ab2a4ca8e2a9bbf3a208b0546b7f7c76c64216cbd0b3ddfb7dfbd3fff7f9d4fa1d9ec
DIST regex-2025.8.29.tar.gz 400817 BLAKE2B 826f2deb3e94069124e35848f2ef33c4eab60464d548c5cba0e3dc16b09185dad0cfc427dde89d38f04f924bb16fbb539d79ebf34d83bcd7c62f344f9ace208d SHA512 9c17e000145523bdbeeffb9cfe177eab89fd55b2bcd7f74d3c122bfed7c7ce42b92b8f6b407157c3f5c84c32b285d24377d27c228ba52ef804ed432d0cd92623
DIST regex-2025.9.1.tar.gz 400852 BLAKE2B 31f07a4954cbafc48668424da6b7362f32d76fc3c8027ecd540d759324412f1f5db56aad9a75e212d73284dd05cd2369c17811e1f98ad551b5cc31f3e40c55d0 SHA512 80838c83207e750f986b034594c2460464758e4024fb1e8fcc13d4d3d746b07d00ff9f3226ab83cbd7a07674f9c6373dd1bd56981615017f72dae7ac80366c7f
diff --git a/dev-python/regex/regex-2024.11.6.ebuild b/dev-python/regex/regex-2024.11.6.ebuild
deleted file mode 100644
index 1d170ecafed6..000000000000
--- a/dev-python/regex/regex-2024.11.6.ebuild
+++ /dev/null
@@ -1,32 +0,0 @@
-# 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
-# pypy isn't supported upstream because of its UTF8 representation for strings
-# See https://github.com/mrabarnett/mrab-regex/issues/521#issuecomment-1936260187.
-PYTHON_COMPAT=( python3_{11..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Alternative regular expression module to replace re"
-HOMEPAGE="
- https://github.com/mrabarnett/mrab-regex/
- https://pypi.org/project/regex/
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
-IUSE="doc"
-
-distutils_enable_tests unittest
-
-python_install_all() {
- use doc && local HTML_DOCS=( docs/Features.html )
- local DOCS=( README.rst docs/*.rst )
-
- distutils-r1_python_install_all
-}
diff --git a/dev-python/regex/regex-2025.7.31.ebuild b/dev-python/regex/regex-2025.7.31.ebuild
deleted file mode 100644
index 1d170ecafed6..000000000000
--- a/dev-python/regex/regex-2025.7.31.ebuild
+++ /dev/null
@@ -1,32 +0,0 @@
-# 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
-# pypy isn't supported upstream because of its UTF8 representation for strings
-# See https://github.com/mrabarnett/mrab-regex/issues/521#issuecomment-1936260187.
-PYTHON_COMPAT=( python3_{11..14} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Alternative regular expression module to replace re"
-HOMEPAGE="
- https://github.com/mrabarnett/mrab-regex/
- https://pypi.org/project/regex/
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
-IUSE="doc"
-
-distutils_enable_tests unittest
-
-python_install_all() {
- use doc && local HTML_DOCS=( docs/Features.html )
- local DOCS=( README.rst docs/*.rst )
-
- distutils-r1_python_install_all
-}
diff --git a/dev-python/regex/regex-2025.7.34.ebuild b/dev-python/regex/regex-2025.7.34.ebuild
index f59db819ba31..1d170ecafed6 100644
--- a/dev-python/regex/regex-2025.7.34.ebuild
+++ b/dev-python/regex/regex-2025.7.34.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
IUSE="doc"
distutils_enable_tests unittest
diff --git a/dev-python/responses/responses-0.25.8.ebuild b/dev-python/responses/responses-0.25.8.ebuild
index 0103fbb6ee89..cfd8167056d7 100644
--- a/dev-python/responses/responses-0.25.8.ebuild
+++ b/dev-python/responses/responses-0.25.8.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
# tomli backend is optional now, with pyyaml being the new default.
# However, keeping it unconditional here for backwards compatibility.
diff --git a/dev-python/rfc3161-client/rfc3161-client-1.0.4.ebuild b/dev-python/rfc3161-client/rfc3161-client-1.0.4.ebuild
index b7396aea83f4..f31d635a58be 100644
--- a/dev-python/rfc3161-client/rfc3161-client-1.0.4.ebuild
+++ b/dev-python/rfc3161-client/rfc3161-client-1.0.4.ebuild
@@ -98,7 +98,7 @@ LICENSE+="
Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD MIT Unicode-3.0
"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86"
+KEYWORDS="amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86"
RDEPEND="
>=dev-python/cryptography-43[${PYTHON_USEDEP}]
diff --git a/dev-python/roman-numerals-py/roman-numerals-py-3.1.0.ebuild b/dev-python/roman-numerals-py/roman-numerals-py-3.1.0.ebuild
index 235dc720a362..c08d9194f7d9 100644
--- a/dev-python/roman-numerals-py/roman-numerals-py-3.1.0.ebuild
+++ b/dev-python/roman-numerals-py/roman-numerals-py-3.1.0.ebuild
@@ -16,6 +16,6 @@ HOMEPAGE="
LICENSE="|| ( 0BSD CC0-1.0 )"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
distutils_enable_tests pytest
diff --git a/dev-python/rpds-py/rpds-py-0.27.0.ebuild b/dev-python/rpds-py/rpds-py-0.27.0.ebuild
index a46f3d298c43..6ae3438d79c4 100644
--- a/dev-python/rpds-py/rpds-py-0.27.0.ebuild
+++ b/dev-python/rpds-py/rpds-py-0.27.0.ebuild
@@ -51,7 +51,7 @@ LICENSE="MIT"
# Dependent crate licenses
LICENSE+=" Apache-2.0-with-LLVM-exceptions MIT MPL-2.0 Unicode-3.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/rpds/rpds.*.so"
diff --git a/dev-python/s3transfer/Manifest b/dev-python/s3transfer/Manifest
index 68a26c9f64ef..718ca853b9e3 100644
--- a/dev-python/s3transfer/Manifest
+++ b/dev-python/s3transfer/Manifest
@@ -1 +1,2 @@
DIST s3transfer-0.13.1.tar.gz 150589 BLAKE2B 45569c945eec18d31626dd7d75b90d48ba0504971d6b246281c508ea9f6ec27b85b042e29a63bb3630bb66af6af1dfcf2e1aa5aed5fc065868619a713568b294 SHA512 46ae91946ecb7f1c11cef7547e7f9532326298ba30e7b363738133963a86aed6477fa6128a13dd57c7668e11a3ad9505b55638acffcc9470e6162b8b73206429
+DIST s3transfer-0.14.0.tar.gz 151547 BLAKE2B 630412833e900386d36dbfda62e54ae32350a34f5af7363b6207d6a76eadef5802e5418e824639353b9337d573a0333a8a087d86a434307ff14c100fd85970e5 SHA512 c71d898002852db8ac14aa929dfb71c4124643fa8301827fa4ed61f59f42ffae648d9b8f01538b5f01613937864bfeff2f9684c783dd1e510b22e461c7968a86
diff --git a/dev-python/s3transfer/s3transfer-0.14.0.ebuild b/dev-python/s3transfer/s3transfer-0.14.0.ebuild
new file mode 100644
index 000000000000..e9d8d56ccd2b
--- /dev/null
+++ b/dev-python/s3transfer/s3transfer-0.14.0.ebuild
@@ -0,0 +1,42 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="An Amazon S3 Transfer Manager"
+HOMEPAGE="
+ https://github.com/boto/s3transfer/
+ https://pypi.org/project/s3transfer/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ <dev-python/botocore-2[${PYTHON_USEDEP}]
+ >=dev-python/botocore-1.37.4[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # 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
+}
+
+python_test() {
+ epytest tests/{unit,functional}
+}
diff --git a/dev-python/scikit-learn/Manifest b/dev-python/scikit-learn/Manifest
index 13953813feb3..a54e2d44720e 100644
--- a/dev-python/scikit-learn/Manifest
+++ b/dev-python/scikit-learn/Manifest
@@ -1 +1,2 @@
DIST scikit-learn-1.7.1.gh.tar.gz 7171470 BLAKE2B 3f5e849ff70d87db4706340f9b05354dea9797614df0435479a9fba1c8dde2862ea5b2d9de3dd8047156b54879e89fecbaf17fb12fb7e21d82a1e56bc9c47d55 SHA512 dc1942947bae261cd314aed333cf4b67e54de9433069c8fd4af89c3d473761ce37e7939ec402952456147766be721e600328aef3fcfa9806eff9e17701a2828b
+DIST scikit-learn-1.7.2.gh.tar.gz 7174108 BLAKE2B c9b2fb0a4480eb18ee4ab8c32d8d7e5e6c0f9ca9cbbdd207ff9c8acef046dc486f861aa7abefa5c528f976216ca90684b3080f2e00877bd2bfee8933665e3558 SHA512 354b2b084fc36cdef8ec9b2ff5cb77dd5d06bca34ff8a29bd34dc19608d591e62481e09b9d3fbf9afbf8e7ed935a2ca0845f22636b3c598555af5f5d087bacc8
diff --git a/dev-python/scikit-learn/scikit-learn-1.7.2.ebuild b/dev-python/scikit-learn/scikit-learn-1.7.2.ebuild
new file mode 100644
index 000000000000..2ecdcdd46033
--- /dev/null
+++ b/dev-python/scikit-learn/scikit-learn-1.7.2.ebuild
@@ -0,0 +1,82 @@
+# Copyright 2020-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=meson-python
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1
+
+DESCRIPTION="Machine learning library for Python"
+HOMEPAGE="
+ https://scikit-learn.org/stable/
+ https://github.com/scikit-learn/scikit-learn/
+ https://pypi.org/project/scikit-learn/
+"
+SRC_URI="
+ https://github.com/scikit-learn/scikit-learn/archive/${PV/_}.tar.gz
+ -> ${P/_}.gh.tar.gz
+"
+S=${WORKDIR}/${P/_}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86 ~arm64-macos ~x64-macos"
+IUSE="examples"
+
+DEPEND="
+ virtual/blas:=
+ virtual/cblas:=
+ >=dev-python/numpy-1.22.0:=[${PYTHON_USEDEP}]
+"
+RDEPEND="
+ ${DEPEND}
+ >=dev-python/joblib-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/scipy-1.8.0[${PYTHON_USEDEP}]
+ >=dev-python/threadpoolctl-3.1.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ >=dev-python/pythran-0.14.0[${PYTHON_USEDEP}]
+ >=dev-python/cython-3.0.10[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+# For some reason this wants to use urllib to fetch things from the internet
+# distutils_enable_sphinx doc \
+# dev-python/matplotlib \
+# dev-python/memory-profiler \
+# dev-python/numpydoc \
+# dev-python/pandas \
+# dev-python/pillow \
+# dev-python/seaborn \
+# dev-python/sphinx-gallery \
+# dev-python/sphinx-prompt \
+# dev-python/scikit-image
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # TODO: floating-point problems
+ gaussian_process/kernels.py::sklearn.gaussian_process.kernels.ExpSineSquared
+ )
+
+ case ${ARCH} in
+ ppc64)
+ EPYTEST_DESELECT+=(
+ # TODO
+ ensemble/_weight_boosting.py::sklearn.ensemble._weight_boosting.AdaBoostRegressor
+ )
+ esac
+
+ rm -rf sklearn || die
+ epytest --pyargs sklearn
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+ use examples && dodoc -r examples
+}
diff --git a/dev-python/scipy/Manifest b/dev-python/scipy/Manifest
index 71cbd743a9ad..10e718aa1503 100644
--- a/dev-python/scipy/Manifest
+++ b/dev-python/scipy/Manifest
@@ -1,6 +1,8 @@
DIST scipy-1.15.3.tar.gz 59419214 BLAKE2B 526e6182e4991e52fea69452b7894b203d31089ee1f8640ef1bff8f1fa57c31a7179a1ab82325689f3b0a7b907c34adb64b80e640780c99e166f6999adbb1524 SHA512 009de94a64c9361b261788ef3577d636a20ca23ff5c8f12f5e19a4ba4d6177ef7ade0cf1a5ee740bd1c6d740193d70b314d1abd83ab65fcb5d5cf2d2ba06bfb1
DIST scipy-1.16.0.tar.gz 30581216 BLAKE2B faab7755584acfb6f2aa6a9e36a1fef840212d9b2478002313b94fd3762317be3d705e09d10960146bfbed5274cab80bd2170ce5bc3368b5ab860e8b5fe2f346 SHA512 6a88cc1b2f3e4cc7c4d867238965521e41b0394614a5ffcc7179b379dad20c0889a7ce4195ef676e78d7aa8d6f83f88f1380da8b225b59c4b6b87a9e6579efb7
DIST scipy-1.16.1.tar.gz 30580861 BLAKE2B 1013d6658d060954fe1bcebf418351c447a9edcbf811b0de170870f566ffa0f4f7d40b065cdd74dbaebb8c537e8e0384ab4e8e4638995e4b7652288536e86126 SHA512 979a74b9700de0e9731677c056830b1ad108a7376462e43a2a2523addc88bcd3580b84f73552b581d60a3d8774884545d42551f36111334a40268a41ab2513ba
+DIST scipy-1.16.2.tar.gz 30580599 BLAKE2B aec4039fe5798365fbe5147a4d6acea61e408ad0a533da4a3602e3c03a5a495f693b9b998a0417524621e6414e3bc847339364d6536e6b489cff43931253c87d SHA512 6b5c1ab6236af5d40850f8b77f8d47494dda9bccf814908ba306b4b3710359d18eb0dd880c05dc4f334cc298d0a2d54d271d5cd5b519190fcfba58524b1d8dce
DIST scipy-html-1.15.3.zip 68590525 BLAKE2B f6473e273843e3eb2aa791be1b885a11ac2b77accdf00ea2d7bc78dc59228dede66259ff4d2ac616ceeb3152a80a8036226622240d963a8bce51dc0143b6aea4 SHA512 df59c2a53dc9c8a64631a2c9906762de046b9beefd759e0810afdcbb00e4da8800e83902d49fa81d791bccb0ed190e00f0ea4948b855e97ad9b5d7a0984d4eec
DIST scipy-html-1.16.0.zip 71540070 BLAKE2B eca4f76e6e3f4747e8e6a1c432c7b9fd52638ae37e00f50733b3eb7bc9f165f507478a8331b3420f158a5f316ba72c0925bf8933b9392638f1d346871fb5dd0a SHA512 839cf7511d7dce320da2966c45ff62056f93b35687e6fd42f2b0725dd4389f50a8ce69d125043de2632861b0bf5187af591558f9019e3543825255edd2372c12
DIST scipy-html-1.16.1.zip 71509503 BLAKE2B b2500a21a3b52fc0bb2c1ee2dfb085d84fd03537d89f8d65fc8e2ebce88aafb4641fa2edc982e5e665af173687323318df998dd0dae022e99ea5341bf6c57264 SHA512 6477db2dcc485c7798bcdc5f1b8fc617b5981efb3675df40259a99d6fb130b3523eca191fcdd31b31dc58f47d77366ca34d488d77a57648c50acdef80c25b36e
+DIST scipy-html-1.16.2.zip 71516578 BLAKE2B 244537f823e39b52e0b00df63f8f36088f5ef17e365f98415d1573883e9c0eee3f4376b149eaea9b70b34b34a294aeafae9f849050ab8161a8ecdb24172c2876 SHA512 15df0c7211cc4d32007b54015efc17edd1c9b23e8892b748ab946c5c1ea3e1840a00d9005b585cc0c6416bcef1e490f54ff919d3c0140ed95d8e469836751d5c
diff --git a/dev-python/scipy/scipy-1.16.2.ebuild b/dev-python/scipy/scipy-1.16.2.ebuild
new file mode 100644
index 000000000000..34cce49ae48d
--- /dev/null
+++ b/dev-python/scipy/scipy-1.16.2.ebuild
@@ -0,0 +1,173 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+FORTRAN_NEEDED=fortran
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=meson-python
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_REQ_USE="threads(+)"
+
+inherit flag-o-matic fortran-2 distutils-r1
+
+DESCRIPTION="Scientific algorithms library for Python"
+HOMEPAGE="
+ https://scipy.org/
+ https://github.com/scipy/scipy/
+ https://pypi.org/project/scipy/
+"
+
+if [[ ${PV} == *9999* ]] ; then
+ inherit git-r3
+
+ # Need submodules, so git for now.
+ EGIT_REPO_URI="https://github.com/scipy/scipy"
+ EGIT_BRANCH="maintenance/$(ver_cut 1-2).x"
+ EGIT_SUBMODULES=( '*' )
+else
+ inherit pypi
+
+ # Upstream is often behind with doc updates
+ DOC_PV=${PV}
+
+ SRC_URI+="
+ doc? (
+ https://docs.scipy.org/doc/${PN}-${DOC_PV}/${PN}-html-${DOC_PV}.zip
+ )"
+
+ if [[ ${PV} != *rc* ]] ; then
+ KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+ fi
+fi
+
+LICENSE="BSD LGPL-2"
+SLOT="0"
+IUSE="doc +fortran test-rust"
+
+# pythran is needed in both BDEPEND (for /usr/bin/pythran) and in DEPEND
+# to actually compile code generated by pythran (headers and such needed).
+#
+# umfpack is technically optional but it's preferred to have it available.
+COMMON_DEPEND="
+ >=dev-python/numpy-1.23.5:=[lapack,${PYTHON_USEDEP}]
+ ~media-libs/qhull-2020.2:=
+ sci-libs/arpack:=
+ sci-libs/umfpack
+ virtual/cblas
+ >=virtual/lapack-3.8
+"
+# Only boost.math is used, and meson.build doesn't even look up specific boost modules.
+# Exact version is enforced upstream, so building will fail if subslot isn't enforced.
+DEPEND="
+ ${COMMON_DEPEND}
+ dev-libs/boost:0/1.88.0
+"
+RDEPEND="
+ ${COMMON_DEPEND}
+ dev-python/pillow[${PYTHON_USEDEP}]
+"
+DEPEND+="
+ fortran? (
+ >=dev-python/pythran-0.16.0[${PYTHON_USEDEP}]
+ )
+"
+BDEPEND="
+ dev-lang/swig
+ >=dev-python/cython-3.0.8[${PYTHON_USEDEP}]
+ >=dev-python/meson-python-0.15.0[${PYTHON_USEDEP}]
+ >=dev-python/pybind11-2.13.2[${PYTHON_USEDEP}]
+ >=dev-python/pytest-8.0.0[${PYTHON_USEDEP}]
+ >=dev-build/meson-1.5.0
+ !kernel_Darwin? ( dev-util/patchelf )
+ virtual/pkgconfig
+ doc? ( app-arch/unzip )
+ fortran? (
+ >=dev-python/pythran-0.16.0[${PYTHON_USEDEP}]
+ )
+ test-rust? (
+ dev-python/pooch[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( hypothesis )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_unpack() {
+ default
+
+ if use doc; then
+ unzip -qo "${DISTDIR}"/${PN}-html-${DOC_PV}.zip -d html || die
+ fi
+}
+
+python_configure_all() {
+ DISTUTILS_ARGS=(
+ -Dblas=blas
+ -Dlapack=lapack
+ -Duse-pythran=$(usex fortran true false)
+ # note: recheck on version bumps, upstream is planning
+ # to allow more
+ '-Duse-system-libraries=boost.math,qhull'
+ )
+
+ # https://bugs.gentoo.org/932721
+ has_version '>=dev-python/numpy-2.0.0' && filter-lto
+}
+
+python_test() {
+ cd "${BUILD_DIR}/install$(python_get_sitedir)" || die
+
+ local EPYTEST_DESELECT=(
+ # Network
+ scipy/datasets/tests/test_data.py::TestDatasets::test_existence_all
+ scipy/datasets/tests/test_data.py::TestDatasets::test_ascent
+ scipy/datasets/tests/test_data.py::TestDatasets::test_face
+ scipy/datasets/tests/test_data.py::TestDatasets::test_electrocardiogram
+
+ # Crashes with assertion, not a regression
+ # https://github.com/scipy/scipy/issues/19321
+ scipy/signal/tests/test_signaltools.py::test_lfilter_bad_object
+
+ # Awfully slow tests
+ scipy/interpolate/tests/test_bsplines.py::TestBatch::test_batch
+ scipy/linalg/tests/test_basic.py::TestLstsq::test_random_complex_exact
+ scipy/sparse/linalg/_eigen/tests/test_svds.py::test_small_sigma_sparse
+
+ # TODO: minor precision errors
+ 'scipy/linalg/tests/test_batch.py::TestBatch::test_solve[float32-bdim2]'
+ 'scipy/linalg/tests/test_batch.py::TestBatch::test_lu_solve[float32-bdim2]'
+ 'scipy/stats/tests/test_continuous.py::TestDistributions::test_funcs[cdf-methods11-x-Normal]['
+
+ # Crashes, probably too big
+ 'scipy/interpolate/tests/test_fitpack2.py::TestRectBivariateSpline::test_spline_large_2d_maxit'
+ )
+ local EPYTEST_IGNORE=()
+
+ if ! has_version -b "dev-python/pooch[${PYTHON_USEDEP}]" ; then
+ EPYTEST_IGNORE+=(
+ scipy/datasets/tests/test_data.py
+ )
+ fi
+
+ case ${EPYTHON} in
+ pypy3*)
+ EPYTEST_DESELECT+=(
+ # TODO
+ scipy/special/tests/test_data.py::test_boost
+ scipy/_lib/tests/test_ccallback.py::test_callbacks
+ )
+ ;;
+ esac
+
+ # avoid other stuff being multithreaded when using xdist
+ local -x PYTHON_CPU_COUNT=1
+ epytest scipy
+}
+
+python_install_all() {
+ use doc && local HTML_DOCS=( "${WORKDIR}"/html/. )
+
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/secretstorage/Manifest b/dev-python/secretstorage/Manifest
index f5625856fd41..e0c4fa05eac1 100644
--- a/dev-python/secretstorage/Manifest
+++ b/dev-python/secretstorage/Manifest
@@ -1 +1,3 @@
DIST SecretStorage-3.3.3.tar.gz 19739 BLAKE2B 9ad575df8b059102a38b4f20c956bf80a5f440a80c13a9fe10a96b14c49bd7868667306b75fca7a395e4d4ce44d28174fafcf27521446d4c7d070c5381eeeed7 SHA512 9a048c8245cfb01babebdd85dbbe84f9634b9b28188f7d11d3abad841109cfa307861de05e529199e409e595864ff3e097fcc961fcff210040d214a50f932f6e
+DIST secretstorage-3.4.0.tar.gz 19748 BLAKE2B 8bb10a80b0a13c91faa552c94abf131db7704044863be16104aa6cad417f32423767d122d482f00e5d11f561aa67427899eb51414eda418c50bf171d21571633 SHA512 10d45317fa60bd6c2eb699b59b13da4c3001afa3a6c2fade113d1871172535e45698307b696abaa4f680b272afc5e1dfc1456ed50b079d3c4d14002e6f41c622
+DIST secretstorage-3.4.0.tar.gz.provenance 9514 BLAKE2B d419601666a798cbc6ab0e6a17b4986a082f9f372b945e6c34d60701f8d709a276cba040f9bd9467b15c7e8301e3de43d3a73f1dfa3f6a1c4f716f239953a46f SHA512 0bfe620577ea784b38603f02af4bf132ce6607bbd4e6468cbda7e4e6185d02c40aac39b1140450d436f4849c2dda20a4e1a14d13603f1531d4e0ef9b26e0cd24
diff --git a/dev-python/secretstorage/secretstorage-3.4.0.ebuild b/dev-python/secretstorage/secretstorage-3.4.0.ebuild
new file mode 100644
index 000000000000..3406b452900e
--- /dev/null
+++ b/dev-python/secretstorage/secretstorage-3.4.0.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
+PYPI_PN="SecretStorage"
+PYPI_VERIFY_REPO=https://github.com/mitya57/secretstorage
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python bindings to FreeDesktop.org Secret Service API"
+HOMEPAGE="
+ https://github.com/mitya57/secretstorage/
+ https://pypi.org/project/SecretStorage/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ >=dev-python/cryptography-2.0[${PYTHON_USEDEP}]
+ >=dev-python/jeepney-0.6[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ !hppa? ( !sparc? ( !s390? (
+ sys-apps/dbus
+ virtual/secret-service
+ ) ) )
+ )
+"
+
+distutils_enable_tests unittest
+distutils_enable_sphinx docs \
+ dev-python/alabaster
+
+src_test() {
+
+ if ! has_version "virtual/secret-service"; then
+ einfo "gnome-keyring is not supported on ${ARCH}, skipping tests"
+ return
+ fi
+
+ distutils-r1_src_test
+}
+
+python_test() {
+ dbus-run-session "${EPYTHON}" -m unittest discover -v -s tests \
+ || die "tests failed with ${EPYTHON}"
+}
diff --git a/dev-python/smartypants/Manifest b/dev-python/smartypants/Manifest
index 972b658f1a6e..4c99604da0c5 100644
--- a/dev-python/smartypants/Manifest
+++ b/dev-python/smartypants/Manifest
@@ -1 +1,2 @@
DIST smartypants-2.0.1.gh.tar.gz 24152 BLAKE2B 258c9692eec675054dc31f760cf3a9fc3995683d7a15fc549fb390611761c0b09f73e077f5917f9f071a8fc1ae3f06e36f745fdc0e2c368f465e29f6ce51457f SHA512 d47a866a5478c3520251f87a93a468a5eea10318b24b2e8d4bc918d533b5a5789aa56d3a8d5fb8ccff9572fb63e5b6f2eafc44f93fb57a19e6621ebef5d64d9d
+DIST smartypants-2.0.2.gh.tar.gz 28770 BLAKE2B 5e77ad66db51afcac634b4da47e86e61bfbd3436a79bc77ad57781f173c780be1065ad80ed7ec187dbafaeaae2cf144f16635d5fc63f333e88c22cccf085f2e5 SHA512 6cdb1574145f4c15984550c2b10bc95b7a86baf067f6465d53e60696347a650e6afb978f623f2344d82e03281ecb28a1f94cdb759fd2db613dc13fada1b25485
diff --git a/dev-python/smartypants/smartypants-2.0.2.ebuild b/dev-python/smartypants/smartypants-2.0.2.ebuild
new file mode 100644
index 000000000000..8fd8429c8464
--- /dev/null
+++ b/dev-python/smartypants/smartypants-2.0.2.ebuild
@@ -0,0 +1,37 @@
+# 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_{11..14} )
+
+inherit distutils-r1
+
+MY_P="${PN}.py-${PV}"
+DESCRIPTION="ASCII quote-dot-dash to HTML entity converter"
+HOMEPAGE="
+ https://pypi.org/project/smartypants/
+ https://github.com/justinmayer/smartypants.py/
+"
+SRC_URI="
+ https://github.com/justinmayer/smartypants.py/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+distutils_enable_tests unittest
+
+src_prepare() {
+ # relevant only to upstream packaging, requires docutils
+ rm tests/test_setup.py || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ eunittest -s tests
+}
diff --git a/dev-python/sphinx/sphinx-8.2.3-r2.ebuild b/dev-python/sphinx/sphinx-8.2.3-r2.ebuild
index b0878b64c3a9..4f8e35af454a 100644
--- a/dev-python/sphinx/sphinx-8.2.3-r2.ebuild
+++ b/dev-python/sphinx/sphinx-8.2.3-r2.ebuild
@@ -24,7 +24,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="BSD-2"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="doc latex"
RDEPEND="
diff --git a/dev-python/sphinxcontrib-websupport/Manifest b/dev-python/sphinxcontrib-websupport/Manifest
index 71079fde8dc4..946287713db6 100644
--- a/dev-python/sphinxcontrib-websupport/Manifest
+++ b/dev-python/sphinxcontrib-websupport/Manifest
@@ -1 +1,2 @@
DIST sphinxcontrib_websupport-1.2.7.tar.gz 599362 BLAKE2B 544e77a739e0ecd9391893f56eeec2df4d5ddc6840a30e9a92e84e35e9ed0a765d4190790a13e329621ba045ee46b5e01d4d0825b6f37e9848953f9e796ae8af SHA512 daa5ecf6fd3fb6df6a9a3b60668d42d50d93454dc3c2703a1dd43d75220b326e90c5e0ae2cca27afe62e41ae03e7144e6b4cfe70096b857af74c8981fadba9ca
+DIST sphinxcontrib_websupport-2.0.0.tar.gz 600125 BLAKE2B 975ff0ceb1f94a87cf57f0ea7f9b80aae4dea7583d90ceb142491ea935201acbb21828b5f56f104fa95643cbc8050c21459c34da123172292955908a2bfb036b SHA512 2a38530db266b6eb26f200ac135a98d1ea982baae4d20fa6dbccc8ff36c6f4c4b7fe012665372c1065553cd27ebba4178127b40481e0b25363436a4a7a3920e0
diff --git a/dev-python/sphinxcontrib-websupport/files/sphinxcontrib-websupport-2.0.0-fix-sqlalchemy.patch b/dev-python/sphinxcontrib-websupport/files/sphinxcontrib-websupport-2.0.0-fix-sqlalchemy.patch
new file mode 100644
index 000000000000..c735988155b6
--- /dev/null
+++ b/dev-python/sphinxcontrib-websupport/files/sphinxcontrib-websupport-2.0.0-fix-sqlalchemy.patch
@@ -0,0 +1,57 @@
+diff --git a/sphinxcontrib/websupport/storage/sqlalchemy_db.py b/sphinxcontrib/websupport/storage/sqlalchemy_db.py
+index e681a68..13e094e 100644
+--- a/sphinxcontrib/websupport/storage/sqlalchemy_db.py
++++ b/sphinxcontrib/websupport/storage/sqlalchemy_db.py
+@@ -5,10 +5,11 @@
+
+ from __future__ import annotations
+
+-from datetime import datetime, timezone
++from datetime import datetime
+
+ from sqlalchemy import Boolean, Column, DateTime, ForeignKey, Integer, String, Text
+ from sqlalchemy.orm import aliased, declarative_base, relationship, sessionmaker
++from sqlalchemy.sql.expression import true
+
+ Base = declarative_base()
+ Session = sessionmaker()
+@@ -51,7 +52,7 @@ def nested_comments(self, username, moderator):
+
+ # Filter out all comments that are not moderated yet.
+ if not moderator:
+- q = q.filter(Comment.displayed is True)
++ q = q.filter(Comment.displayed == true())
+
+ # Retrieve all results. Results must be ordered by Comment.path
+ # so that we can easily transform them from a flat list to a tree.
+@@ -159,7 +160,7 @@ def serializable(self, vote=0):
+ """Creates a serializable representation of the comment. This is
+ converted to JSON, and used on the client side.
+ """
+- delta = datetime.now(tz=timezone.utc) - self.time
++ delta = datetime.now() - self.time # noqa: DTZ005
+
+ time = {
+ "year": self.time.year,
+diff --git a/sphinxcontrib/websupport/storage/sqlalchemystorage.py b/sphinxcontrib/websupport/storage/sqlalchemystorage.py
+index 070692b..b48c32f 100644
+--- a/sphinxcontrib/websupport/storage/sqlalchemystorage.py
++++ b/sphinxcontrib/websupport/storage/sqlalchemystorage.py
+@@ -2,7 +2,7 @@
+
+ from __future__ import annotations
+
+-from datetime import datetime, timezone
++from datetime import datetime
+
+ import sqlalchemy
+ from sqlalchemy.orm import aliased
+@@ -72,7 +72,7 @@ def add_comment(self, text, displayed, username, time,
+ raise CommentNotAllowedError(msg)
+
+ comment = Comment(text, displayed, username, 0,
+- time or datetime.now(tz=timezone.utc), proposal, proposal_diff)
++ time or datetime.now(), proposal, proposal_diff) # noqa: DTZ005
+ session.add(comment)
+ session.flush()
+ # We have to flush the session before setting the path so the
diff --git a/dev-python/sphinxcontrib-websupport/sphinxcontrib-websupport-2.0.0.ebuild b/dev-python/sphinxcontrib-websupport/sphinxcontrib-websupport-2.0.0.ebuild
new file mode 100644
index 000000000000..479cf58f3f59
--- /dev/null
+++ b/dev-python/sphinxcontrib-websupport/sphinxcontrib-websupport-2.0.0.ebuild
@@ -0,0 +1,49 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit
+PYTHON_TESTED=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Sphinx websupport extension"
+HOMEPAGE="
+ https://www.sphinx-doc.org/
+ https://github.com/sphinx-doc/sphinxcontrib-websupport/
+ https://pypi.org/project/sphinxcontrib-websupport/
+"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-solaris"
+
+RDEPEND="
+ dev-python/jinja2[${PYTHON_USEDEP}]
+ dev-python/sphinxcontrib-serializinghtml[${PYTHON_USEDEP}]
+"
+# avoid circular dependency with sphinx
+PDEPEND="
+ >=dev-python/sphinx-5[${PYTHON_USEDEP}]
+"
+# there are additional optional test deps on sqlalchemy and whoosh
+BDEPEND="
+ test? (
+ ${PDEPEND}
+ $(python_gen_cond_dep '
+ dev-python/sqlalchemy[${PYTHON_USEDEP}]
+ dev-python/whoosh[${PYTHON_USEDEP}]
+ ' "${PYTHON_TESTED[@]}")
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+PATCHES=(
+ # https://github.com/sphinx-doc/sphinxcontrib-websupport/pull/78
+ "${FILESDIR}/${P}-fix-sqlalchemy.patch"
+)
diff --git a/dev-python/spyder-kernels/Manifest b/dev-python/spyder-kernels/Manifest
index b58ac55ec8d1..ae96e9e74e24 100644
--- a/dev-python/spyder-kernels/Manifest
+++ b/dev-python/spyder-kernels/Manifest
@@ -1 +1,2 @@
DIST spyder-kernels-3.0.5.gh.tar.gz 240411 BLAKE2B 28600b359fc12f8b3ffe01545a98b2fd3ec7f832e7ca5aa58f809825d7f1060ecc5929a72d615c2543b6b34685ee03b521cd087dd58725315a68e1188b72cd3c SHA512 4aaf57e7e4dc7c985f2c0e64aad6080370f1cf012ef72f49dcaaa5daed4b6b5e0c5cbcde88e127b136c87e3ae17314212dd56f89801edd87382da8d06caa9662
+DIST spyder-kernels-3.1.0b1.gh.tar.gz 245633 BLAKE2B 533f7f2ce40281a90d301f4da8744053eefeed268ef334ee227187d54c7548a606a60df3862e76ccac42721192e4a67248a0d77091dd7c27e1b4be18050dc5d8 SHA512 586fe10a38d193c287aef1d80053fb10da4bf132ac7074432edf0ea90683ef8fbcbbad75cf3346390add69de64fe259f839129e2735c30b4235615874edcd676
diff --git a/dev-python/spyder-kernels/spyder-kernels-3.1.0_beta1.ebuild b/dev-python/spyder-kernels/spyder-kernels-3.1.0_beta1.ebuild
new file mode 100644
index 000000000000..a48e05237475
--- /dev/null
+++ b/dev-python/spyder-kernels/spyder-kernels-3.1.0_beta1.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=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1
+
+MY_P=${P/_beta/b}
+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/_beta/b}.tar.gz -> ${MY_P}.gh.tar.gz"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="MIT"
+SLOT="0"
+
+RDEPEND="
+ dev-python/cloudpickle[${PYTHON_USEDEP}]
+ <dev-python/ipykernel-7[${PYTHON_USEDEP}]
+ >=dev-python/ipykernel-6.29.3[${PYTHON_USEDEP}]
+ <dev-python/ipython-10[${PYTHON_USEDEP}]
+ >=dev-python/ipython-9.5.0[${PYTHON_USEDEP}]
+ <dev-python/jupyter-client-9[${PYTHON_USEDEP}]
+ >=dev-python/jupyter-client-7.4.9[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ >=dev-python/pyxdg-0.26[${PYTHON_USEDEP}]
+ >=dev-python/pyzmq-24.0.0[${PYTHON_USEDEP}]
+ >=dev-python/traitlets-5.14.3[${PYTHON_USEDEP}]
+ >=dev-python/wurlitzer-1.0.3[${PYTHON_USEDEP}]
+"
+
+BDEPEND="
+ test? (
+ dev-python/cython[${PYTHON_USEDEP}]
+ dev-python/django[${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*')
+ )
+"
+
+EPYTEST_PLUGINS=( anyio pytest-rerunfailures )
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # we no longer package distributed or 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
+
+ # require polars
+ spyder_kernels/console/tests/test_console_kernel.py::test_get_value_with_polars
+ spyder_kernels/utils/tests/test_nsview.py::test_polars_dataframe
+ )
+ 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
+
+ epytest
+}
diff --git a/dev-python/sqlglot/Manifest b/dev-python/sqlglot/Manifest
index da5102c54d0b..1928f9338c16 100644
--- a/dev-python/sqlglot/Manifest
+++ b/dev-python/sqlglot/Manifest
@@ -1,5 +1,5 @@
DIST sqlglot-26.33.0-crates.tar.xz 8859792 BLAKE2B abb2051b392c53dc3caa705ddd8df7076819a26dcdaa89fa3760559a79578db01e86943c2d0ffb8006263c2dca3aa50d20023eae9d772f8ebd12a8a2d3266cdd SHA512 7cca439a06433a62bcd4a2af33d240f46e9b5240cc158edbc654efb37a464aa0f1ebbe9749b2fc6352127b4809b63af2341fac6240050c414e578ae99444ba5d
DIST sqlglot-26.33.0.tar.gz 5353340 BLAKE2B 18ace866ec89ced24911803497e8cb5c55fc6c157bf62b893e90df914b8be3360403ffff67f196080cdef9b9b9078b86d471494ae9768e7947a8b4d5d39e49af SHA512 df38e899d59bdd07aca0e5370833133308f9c5be4d0c990bf8112a48776fae034b622938aba968769aa5dc5e2957d56da48c89045b91b2d33783e6e25acc4a7b
-DIST sqlglot-27.10.0.tar.gz 5437988 BLAKE2B 600a9bbb94f7fae9bdb0cd8e2e01ffa8d4dd0a113ccd1123bc92b65094d41bf98cb405647fe28ecff63a72401ae10d1a12ef489f063efa7c0aa22f68d754656f SHA512 b6e4eb2c28549c417e8311298d862887205dbcb0e2ff58621988ec904a5e02b6420c69bd5ac8399576207ad799764a2880d09910e42102fef7c21f19a0d8bd89
-DIST sqlglot-27.11.0.tar.gz 5443357 BLAKE2B 6af93c7efd402e1ed94fc52d74503945b99e832196d2edd3eb5ee315a7c8ec31d4c3380d5270b78ac8ea54959f4b6dabbad2794d05e78d90588d99195190cc17 SHA512 58ca620725c253f1f917ff468f797d9afb68186b987dc3770c1a78d8a4d59f3d0453a26239e4f0080214316fd1abbb21653c3795a7099f515dae366ab5c4e951
DIST sqlglot-27.12.0.tar.gz 5450508 BLAKE2B f7eb5b9aebed247f9896cf7e2afe0aa217a2db9c0f25c0527a31769e8921446e6ced1fd7a233fb95db162ade7fb2840404bb31e3197cff62a1b0b6e45c047bcb SHA512 95e6e161b0b586d28ce4ee3470f09b06fef996600b9d6f200fdc5d5a0e844b30166be0efd28fc9cc2f447547d3b53ecbb618e9bd3fe7420f2ba06354135b6c20
+DIST sqlglot-27.13.2.tar.gz 5457480 BLAKE2B b75366a055ab03c4b5abc2580cf2048ab85bf1dd86e5eecc01712938928a0f420b8ded5422b312ec3819ba9e3fdf82a37e6a2b38d2e53569fc14a844770aa050 SHA512 e7c7d5fdd33e50bf26609cf31ebf77939d94dc5bae69e2b1b03d2abd461bb1a90a2f1735f6f5236af69afe6e0f930e799b55bf1cfb5690ef6b5a47ac2b9a9274
+DIST sqlglot-27.14.0.tar.gz 5462946 BLAKE2B a88f1775a1dc5d42678eab8427f857bb060f0dfcf3ba97f43bd1761b6807a7c1fd216019047d4f053f665547791f94cc52197b2d175a13e1d76a02373b4251f1 SHA512 33f072e6898e442bf690bf44d2757fd41f3a9bfc74e062cd17db60d651dca39aba2658f32958f9eed3bd1943d53b02412e5b6588762c720a2d0847e61195bcfe
diff --git a/dev-python/sqlglot/sqlglot-27.10.0.ebuild b/dev-python/sqlglot/sqlglot-27.13.2.ebuild
index 9a517e6a4e70..9a517e6a4e70 100644
--- a/dev-python/sqlglot/sqlglot-27.10.0.ebuild
+++ b/dev-python/sqlglot/sqlglot-27.13.2.ebuild
diff --git a/dev-python/sqlglot/sqlglot-27.11.0.ebuild b/dev-python/sqlglot/sqlglot-27.14.0.ebuild
index 9a517e6a4e70..9a517e6a4e70 100644
--- a/dev-python/sqlglot/sqlglot-27.11.0.ebuild
+++ b/dev-python/sqlglot/sqlglot-27.14.0.ebuild
diff --git a/dev-python/starlette/Manifest b/dev-python/starlette/Manifest
index adb0fcd0694f..e45e331d3be6 100644
--- a/dev-python/starlette/Manifest
+++ b/dev-python/starlette/Manifest
@@ -1,2 +1,3 @@
DIST starlette-0.47.2.gh.tar.gz 2583977 BLAKE2B dbb7dbbd8e5b7092c37d5c169d9a82c5739335bcc6766e04f0b639559b1c3b6dd12bebf6feb62fb75f16af4550864e211c9f1fe3982ca115ca8e7d6cd9fbeca0 SHA512 812ac9d3eadd41a729c1b0d3ac1d6b0f369122fed450962280de252c0e8fab73fc5944991a7453ef48f920171849bfcb797d15f64302ee3645a34ae49004ee73
DIST starlette-0.47.3.gh.tar.gz 2584121 BLAKE2B 95475b30c7ff3c4bffa9740132167aaad6b2f8c3c22e655ab228d626192be10e67013ec02ab3d54950e009ca9c7630eb5a9c0458efe5dd29edbdfd7219b639a0 SHA512 f552f51df4b309578a80bced131adff25505903f9c09dbae3c26112f127b8b29d66ce1853db8dd6438b65b1a4ca72ed3abf1b0ff10870727991329e3b8e26848
+DIST starlette-0.48.0.gh.tar.gz 2654804 BLAKE2B 436358d1a11748827c827fdd8ddec1f577ccad969367dc94b536604be6cd95fb7dbb8d34c17381f669a9994ebe776cf13c22d0c73979e096003e3f7eb0fc4e0a SHA512 a7cb3920bb9fb9ebed9f56ebfa392d3c2baf95a08b0f2d2e16f53f89c1259e4d755e4e6a0c5fc819e03158e2a5fe2447c3c127621e11a644b25a6328a5bbee41
diff --git a/dev-python/starlette/starlette-0.48.0.ebuild b/dev-python/starlette/starlette-0.48.0.ebuild
new file mode 100644
index 000000000000..b7fc2526f23d
--- /dev/null
+++ b/dev-python/starlette/starlette-0.48.0.ebuild
@@ -0,0 +1,56 @@
+# 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=${P/_p/.post}
+DESCRIPTION="The little ASGI framework that shines"
+HOMEPAGE="
+ https://www.starlette.io/
+ https://github.com/Kludex/starlette/
+ https://pypi.org/project/starlette/
+"
+# no docs or tests in sdist, as of 0.27.0
+SRC_URI="
+ https://github.com/Kludex/starlette/archive/${PV/_p/.post}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ <dev-python/anyio-5[${PYTHON_USEDEP}]
+ >=dev-python/anyio-3.6.2[${PYTHON_USEDEP}]
+ <dev-python/httpx-0.29[${PYTHON_USEDEP}]
+ >=dev-python/httpx-0.22.0[${PYTHON_USEDEP}]
+ dev-python/itsdangerous[${PYTHON_USEDEP}]
+ dev-python/jinja2[${PYTHON_USEDEP}]
+ >=dev-python/python-multipart-0.0.18[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/typing-extensions-3.10.0[${PYTHON_USEDEP}]
+ ' 3.11)
+"
+BDEPEND="
+ test? (
+ >=dev-python/pytest-8[${PYTHON_USEDEP}]
+ dev-python/trio[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( anyio )
+: ${EPYTEST_TIMEOUT:-180}
+distutils_enable_tests pytest
+
+EPYTEST_IGNORE=(
+ # Unpackaged 'databases' dependency
+ tests/test_database.py
+)
diff --git a/dev-python/superqt/Manifest b/dev-python/superqt/Manifest
index 48dca05ba1d3..db692869be5c 100644
--- a/dev-python/superqt/Manifest
+++ b/dev-python/superqt/Manifest
@@ -1 +1,2 @@
DIST superqt-0.7.3.tar.gz 105916 BLAKE2B 3d75abf420c55140bdbf071419ca790fdec17773cd4796fb63cc721bfc5fb8e501aa1cf67f83e918c2b0758c35a7ced217c995b0631903317f423bde3ce7c151 SHA512 87ddf00c77c896da17054664c0cb3c3cd372c773b8cc9eaf8079feef1ef6e5d52df40ae1367abaf9e2a6f0ded9b560b4147c98fd362d22b064f877ddbe8b74b9
+DIST superqt-0.7.6.tar.gz 107043 BLAKE2B 9f14fabe78a2d079e059ac97cc6f98b341ec00080776599e1e030e7b94d91db514293a185c75d2aa3a43d5ef05940b5d9de7b113688fd0289cf9bafbbec91e44 SHA512 64c1facfe14ce9b5b01d9e7b2798b79615c564f2275ae11d62be90a8ad4454f00fef23f80ff96ae9ca8fbcc112fac00871ea81d82419f7ba1f5112b6d923aa07
diff --git a/dev-python/superqt/superqt-0.7.6.ebuild b/dev-python/superqt/superqt-0.7.6.ebuild
new file mode 100644
index 000000000000..5301c2745611
--- /dev/null
+++ b/dev-python/superqt/superqt-0.7.6.ebuild
@@ -0,0 +1,50 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1 pypi virtualx
+
+DESCRIPTION="Missing widgets and components for PyQt/PySide"
+HOMEPAGE="
+ https://github.com/pyapp-kit/superqt
+ https://pypi.org/project/superqt/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+RDEPEND="
+ >=dev-python/pygments-2.4.0[${PYTHON_USEDEP}]
+ >=dev-python/qtpy-1.1.0[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-3.7.4.3[${PYTHON_USEDEP}]
+"
+
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/pytest-qt[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_IGNORE=(
+ # pint and pyconify not packaged
+ tests/test_quantity.py
+ tests/test_iconify.py
+)
+
+EPYTEST_DESELECT=(
+ # fails in the sandbox, but works outside of it
+ tests/test_eliding_label.py::test_wrapped_eliding_label
+)
+
+distutils_enable_tests pytest
+
+python_test() {
+ virtx distutils-r1_python_test
+}
diff --git a/dev-python/sybil/sybil-9.2.0.ebuild b/dev-python/sybil/sybil-9.2.0.ebuild
index a9f76204a8a1..7de57040d9d1 100644
--- a/dev-python/sybil/sybil-9.2.0.ebuild
+++ b/dev-python/sybil/sybil-9.2.0.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86"
RDEPEND="
>=dev-python/pytest-8[${PYTHON_USEDEP}]
diff --git a/dev-python/tempest/Manifest b/dev-python/tempest/Manifest
index 360ace79d715..b0e51c4b2aa7 100644
--- a/dev-python/tempest/Manifest
+++ b/dev-python/tempest/Manifest
@@ -1 +1,2 @@
DIST tempest-44.0.0.tar.gz 1165834 BLAKE2B 909f7ab4ffe2925b3a62bce15a947711cc0ced9a08a81bf477285c08a2a8ebf8c7d8284c5d7bb14184858e9e52a513c4f4db5bb1dd196874711a59d327c56fcd SHA512 859b3ea3eee5717337bd054807c5a7841f5512aab7c312e0ff0123645b18f2411865943651414ded619022059e929607bdc6c05cf352fc233a2974d0c50e6b79
+DIST tempest-45.0.0.tar.gz 1171661 BLAKE2B 4978470e3481df1086837685f30b2fa0807e6ae49d0479ebcda4fc514d2034fb2b0f0aac4bbf7246f8ecf3e156dc8cf9d1f4a16b5d298a90f6a82d5ee3af4da1 SHA512 65de92882bda88b2bd52ade54c046e638f43b3e6b213615f1486eb0bd1e04b9360d09653fa480bdb354397b239f7a35658c97f8ff058d3a9617fdfa14f84b280
diff --git a/dev-python/tempest/tempest-45.0.0.ebuild b/dev-python/tempest/tempest-45.0.0.ebuild
new file mode 100644
index 000000000000..a99a2e1cb7bd
--- /dev/null
+++ b/dev-python/tempest/tempest-45.0.0.ebuild
@@ -0,0 +1,75 @@
+# Copyright 2021-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 multiprocessing pypi
+
+DESCRIPTION="OpenStack Integration Testing"
+HOMEPAGE="
+ https://pypi.org/project/tempest/
+ https://docs.openstack.org/tempest/latest/
+ https://launchpad.net/tempest/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/pbr-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/cliff-2.9.0[${PYTHON_USEDEP}]
+ >=dev-python/jsonschema-3.2.0[${PYTHON_USEDEP}]
+ >=dev-python/testtools-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/paramiko-2.7.0[${PYTHON_USEDEP}]
+ >=dev-python/netaddr-0.7.18[${PYTHON_USEDEP}]
+ >=dev-python/oslo-concurrency-3.26.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-config-5.2.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-log-3.36.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-utils-4.7.0[${PYTHON_USEDEP}]
+ >=dev-python/fixtures-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/pyyaml-3.12[${PYTHON_USEDEP}]
+ >=dev-python/python-subunit-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/stevedore-1.20.0[${PYTHON_USEDEP}]
+ >=dev-python/prettytable-0.7.1[${PYTHON_USEDEP}]
+ >=dev-python/urllib3-1.21.1[${PYTHON_USEDEP}]
+ >=dev-python/debtcollector-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/defusedxml-0.7.1[${PYTHON_USEDEP}]
+ >=dev-python/fasteners-0.16.0[${PYTHON_USEDEP}]
+ >=dev-python/testscenarios-0.5.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ >=dev-python/pbr-2.1.0[${PYTHON_USEDEP}]
+ test? (
+ >=dev-python/oslotest-3.2.0[${PYTHON_USEDEP}]
+ dev-python/stestr[${PYTHON_USEDEP}]
+ )
+"
+
+src_prepare() {
+ # Small subset of tests, which fail as result of not using specific
+ # testing environment.
+ rm -r tempest/tests/lib/services/volume/v3/ || die
+
+ # remove dep on hacking
+ rm tempest/tests/test_hacking.py || die
+
+ distutils-r1_src_prepare
+}
+
+python_compile() {
+ distutils-r1_python_compile
+ mv "${BUILD_DIR}"/install/{usr/,}etc || die
+}
+
+python_test() {
+ local -x OS_LOG_CAPTURE=1 OS_STDOUT_CAPTURE=1 OS_STDERR_CAPTURE=1
+ local -x OS_TEST_TIMEOUT=300
+ stestr --test-path ./tempest/tests run --concurrency="$(makeopts_jobs)" ||
+ die "Tests failed for ${EPYTHON}"
+}
diff --git a/dev-python/thrift/thrift-0.22.0.ebuild b/dev-python/thrift/thrift-0.22.0.ebuild
index c605e0e00e1a..c5044b85a61f 100644
--- a/dev-python/thrift/thrift-0.22.0.ebuild
+++ b/dev-python/thrift/thrift-0.22.0.ebuild
@@ -16,8 +16,7 @@ HOMEPAGE="
https://github.com/apache/thrift
"
SRC_URI="
- https://downloads.apache.org/${PN}/${PV}/${P}.tar.gz
- https://archive.apache.org/dist/${PN}/${PV}/${P}.tar.gz
+ mirror://apache/${PN}/${PV}/${P}.tar.gz
"
S="${WORKDIR}/${P}/lib/py"
diff --git a/dev-python/tifffile/Manifest b/dev-python/tifffile/Manifest
index 74a90aa4922b..ee59c6652c66 100644
--- a/dev-python/tifffile/Manifest
+++ b/dev-python/tifffile/Manifest
@@ -1,2 +1,2 @@
-DIST tifffile-2025.6.11.gh.tar.gz 359003 BLAKE2B 7135786b6f65c1b7dc1babf7815ce97a29882793a03e335bb1142aceb4db82315f191909fa064e48bee812fce2d68e57ace1a973513b5288bfcd86aebc62babe SHA512 b4202971e61c225578fd4f0d038599e21418801727b45738de92f0dc8bdffb3cd9b6b61777fb7898b90751c6b34de8b62e7c99240e67d565d0558e1523363519
DIST tifffile-2025.8.28.gh.tar.gz 359713 BLAKE2B 5856af2ccc1995ec1f6c85f46f310924ff6e81122be667320ef5d503eeb83ad2ef830d1fc56a70fa37f2694a9b717a4cf1d81b4dd77cec16c89aa48f1de4bfb2 SHA512 87f2108598b3672b3c352991b2b49b1093b8bcb98c1d3f192b7c4235b3a3282d3a88e4d5471c2029c8cb61f40d9ea5ad0bd3dcfa39b79c8d07d0d5cbc48c84ed
+DIST tifffile-2025.9.9.gh.tar.gz 359564 BLAKE2B f8d8c132bd62dfc05e5aca508d8e5d0bd1047d308c24dc6f8ff27d46fcfc4898da9fecbd2dd6390cedd5de52325ffd84e97ec64e337eea5302c33d98a11d3fed SHA512 8b7b99243a6f960b5d486dfac5097bd68e9e467542195f7a8059573c8b26d2bd399401234bb1a7676e60a614a1df07ea19013c81936b613d5c72e43b7d4fad33
diff --git a/dev-python/tifffile/tifffile-2025.6.11.ebuild b/dev-python/tifffile/tifffile-2025.9.9.ebuild
index 7e61f5160c1b..a1d2d3800bb1 100644
--- a/dev-python/tifffile/tifffile-2025.6.11.ebuild
+++ b/dev-python/tifffile/tifffile-2025.9.9.ebuild
@@ -35,13 +35,22 @@ BDEPEND="
)
"
+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
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
epytest
}
diff --git a/dev-python/tornado/tornado-6.5.2.ebuild b/dev-python/tornado/tornado-6.5.2.ebuild
index 1c88b4ca5917..4a04bb53a9b1 100644
--- a/dev-python/tornado/tornado-6.5.2.ebuild
+++ b/dev-python/tornado/tornado-6.5.2.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/translate-toolkit/Manifest b/dev-python/translate-toolkit/Manifest
index f6e7fa9e603a..c60c269aa64c 100644
--- a/dev-python/translate-toolkit/Manifest
+++ b/dev-python/translate-toolkit/Manifest
@@ -1,2 +1,3 @@
DIST translate-3.15.6.gh.tar.gz 1176856 BLAKE2B 4d23c254f89b84098f0e97dd6ba726129cedda3fc7bf7fad6d3171b5e66817bbf07025d8d1c2f8e7a5d643903ddc13668909fd06888fbd6fa152c83734be8791 SHA512 7881c6aba835003efb67ab0cf1f1420d1d4928d62fa04a6f15a49f49a5bb4d42eadbc3ae9b7dbe3ecbd756333a054c41f1f0fd45d9f6aedba609931233b691b1
DIST translate-3.16.0.gh.tar.gz 1180120 BLAKE2B 11b173dc2990f14f5c83b55ddd05bf1ca660542ccac9cc234a13f443882f5c62fff80383a1200fc589c22fb34cc18feffb38165bf0127b3e29c750cf76462e30 SHA512 e4a556bc901edf8e1c86351ba28865a9063efd4b138a0f227d35301a4f0cc4b356a2aa04a4faa9d111c12a322fedff1b124b1b24db649f4c8e5a98b0ded96e69
+DIST translate-3.16.1.gh.tar.gz 1180456 BLAKE2B ff4ac6c8e21a611c0079902acebd2d6113a67767aff53634db6109d9ba70c2cb1fde5c3c267d108c8a67020b8d7354e6bb1df8469a01985c2347b5410281685a SHA512 73f2c50da384896955e04bb7a9cfc49fd0ae33b5b94478ca806e5857aff2a4dd5644185d0c8e720b9ad9c473565521ec8d054aca09fa1a63630c6ab00b82929b
diff --git a/dev-python/translate-toolkit/translate-toolkit-3.16.1.ebuild b/dev-python/translate-toolkit/translate-toolkit-3.16.1.ebuild
new file mode 100644
index 000000000000..6a327edeacb4
--- /dev/null
+++ b/dev-python/translate-toolkit/translate-toolkit-3.16.1.ebuild
@@ -0,0 +1,127 @@
+# 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_{11..14} )
+PYTHON_REQ_USE="sqlite"
+
+inherit distutils-r1
+
+MY_P=translate-${PV}
+DESCRIPTION="Toolkit to convert between many translation formats"
+HOMEPAGE="
+ https://github.com/translate/translate/
+ https://pypi.org/project/translate-toolkit/
+"
+SRC_URI="
+ https://github.com/translate/translate/archive/${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S="${WORKDIR}"/${MY_P}
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="+html +ical +ini +subtitles +yaml"
+
+RDEPEND="
+ app-text/iso-codes
+ >=dev-python/chardet-3.0.4[${PYTHON_USEDEP}]
+ dev-python/cheroot[${PYTHON_USEDEP}]
+ >=dev-python/levenshtein-0.12.0[${PYTHON_USEDEP}]
+ >=dev-python/lxml-5.2.0[${PYTHON_USEDEP}]
+ >=dev-python/mistletoe-1.1.0[${PYTHON_USEDEP}]
+ >=dev-python/pyparsing-3[${PYTHON_USEDEP}]
+ dev-python/ruamel-yaml[${PYTHON_USEDEP}]
+ >=dev-python/cwcwidth-0.1.9[${PYTHON_USEDEP}]
+ sys-devel/gettext
+ html? ( dev-python/utidylib[${PYTHON_USEDEP}] )
+ ical? ( dev-python/vobject[${PYTHON_USEDEP}] )
+ ini? ( >=dev-python/iniparse-0.5[${PYTHON_USEDEP}] )
+ subtitles? ( media-video/gaupol[${PYTHON_USEDEP}] )
+ yaml? ( dev-python/pyyaml[${PYTHON_USEDEP}] )
+"
+# Technically, the test suite also has undeclared dependency
+# on dev-python/snapshottest but all the tests using it are broken
+# anyway, so we skip them.
+BDEPEND="
+ test? (
+ dev-python/phply[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # strip unnecessary pins
+ sed -i -e 's:,<[0-9.]*::' pyproject.toml || die
+}
+
+src_test() {
+ # unfortunately, this bad quality package doesn't support XDG_DATA_DIRS
+ # correctly, so we need to reassemble all data files in a single directory
+ local -x XDG_DATA_HOME=${T}/share
+ cp -r translate/share "${T}/" || die
+ cp -r "${ESYSROOT}"/usr/share/gaupol "${XDG_DATA_HOME}"/ || die
+
+ distutils-r1_src_test
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # Fails with network-sandbox (and even with it off but w/ softer fail)
+ 'tests/xliff_conformance/test_xliff_conformance.py::test_open_office_to_xliff'
+ 'tests/xliff_conformance/test_xliff_conformance.py::test_po_to_xliff'
+ # all tests based on snapshottest are broken and I'm too tired
+ # to figure this out
+ tests/translate/tools/test_pocount.py::test_{cases,output}
+ tests/translate/tools/test_junitmsgfmt.py::test_output
+ )
+ local EPYTEST_IGNORE=(
+ # unpackaged fluent.*
+ tests/translate/storage/test_fluent.py
+ # changes directory and does not change it back, sigh
+ tests/odf_xliff/test_odf_xliff.py
+ )
+
+ if ! has_version "dev-python/iniparse[${PYTHON_USEDEP}]"; then
+ EPYTEST_IGNORE+=(
+ translate/convert/test_ini2po.py
+ translate/convert/test_po2ini.py
+ )
+ fi
+
+ if ! has_version "media-video/gaupol[${PYTHON_USEDEP}]"; then
+ EPYTEST_IGNORE+=(
+ translate/storage/test_subtitles.py
+ )
+ fi
+
+ epytest
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+
+ insinto /usr
+ doins -r translate/share
+
+ if ! use html; then
+ rm "${ED}"/usr/bin/{html2po,po2html} || die
+ fi
+ if ! use ical; then
+ rm "${ED}"/usr/bin/{ical2po,po2ical} || die
+ fi
+ if ! use ini; then
+ rm "${ED}"/usr/bin/{ini2po,po2ini} || die
+ fi
+ if ! use subtitles; then
+ rm "${ED}"/usr/bin/{sub2po,po2sub} || die
+ fi
+}
diff --git a/dev-python/trio/Manifest b/dev-python/trio/Manifest
index bf02330e970d..bd63d6927ff1 100644
--- a/dev-python/trio/Manifest
+++ b/dev-python/trio/Manifest
@@ -1 +1,2 @@
DIST trio-0.30.0.gh.tar.gz 605667 BLAKE2B 1df453c8a3747bfacb39029a3146bd323deb3cd22b5ba2119e01795f18b9340595ac7b850095b272be575cd508059f5b13993ddfe904e1e4a0cd70ef127c80f8 SHA512 5e76808fd9c79c3eab686b80d201654cdb9023b35c0aa8eb6415d079e810be9e60f13149da63ba1eb78c879f68392b6957aac16402413cd329f440399ffb65b7
+DIST trio-0.31.0.gh.tar.gz 617881 BLAKE2B 35ee32416b610245fcb9b9169bed89c60aecdc95705ec155bb02d27a2a7472f7ded98289e308d6039b59dae572f989f2191096af9111f5814ce1322981aeed69 SHA512 21cb559610c7e109acb331b300bca4986b471fcc04f90bb6ab22989d8ead65255ec6b14ebed28be0dae12154fc205dc7769baea3d169893d7a973c249a6dfeb9
diff --git a/dev-python/trio/trio-0.31.0.ebuild b/dev-python/trio/trio-0.31.0.ebuild
new file mode 100644
index 000000000000..8d36a9d69e67
--- /dev/null
+++ b/dev-python/trio/trio-0.31.0.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=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1
+
+DESCRIPTION="Python library for async concurrency and I/O"
+HOMEPAGE="
+ https://github.com/python-trio/trio/
+ https://pypi.org/project/trio/
+"
+SRC_URI="
+ https://github.com/python-trio/${PN}/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="|| ( Apache-2.0 MIT )"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/attrs-23.2.0[${PYTHON_USEDEP}]
+ dev-python/idna[${PYTHON_USEDEP}]
+ dev-python/outcome[${PYTHON_USEDEP}]
+ >=dev-python/sniffio-1.3.0[${PYTHON_USEDEP}]
+ dev-python/sortedcontainers[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ >=dev-python/astor-0.8.0[${PYTHON_USEDEP}]
+ >=dev-python/immutables-0.6[${PYTHON_USEDEP}]
+ dev-python/pyopenssl[${PYTHON_USEDEP}]
+ dev-python/trustme[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( "${PN}" )
+# xdist causes import errors
+distutils_enable_tests pytest
+# Bug https://bugs.gentoo.org/916756
+# distutils_enable_sphinx docs/source \
+# dev-python/immutables \
+# dev-python/sphinxcontrib-trio \
+# dev-python/sphinx-rtd-theme \
+# dev-python/towncrier
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # Times out on slower arches (ia64 in this case)
+ # https://github.com/python-trio/trio/issues/1753
+ tests/test_unix_pipes.py::test_close_at_bad_time_for_send_all
+ # requires ruff
+ _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
+
+ rm -rf trio || die
+ epytest -m "not redistributors_should_skip" --pyargs trio \
+ --skip-optional-imports
+}
diff --git a/dev-python/trove-classifiers/Manifest b/dev-python/trove-classifiers/Manifest
index 3bd24763d6e0..a07f2779f51e 100644
--- a/dev-python/trove-classifiers/Manifest
+++ b/dev-python/trove-classifiers/Manifest
@@ -1,3 +1,7 @@
-DIST trove_classifiers-2025.5.9.12.tar.gz 16940 BLAKE2B f6143f341d280eca611269c1a04b7f795d8f8733e97518d81d5872b8e1e13f745f7428737993a5c50285de24f56f899737d05fe073c683ddd69765b6081a6ebe SHA512 ee858f52c08b867fe4845ebb19f9b431308d216b5313e2bc030d63340860205d40125ef6cee218f734ccd49e5ae36011c8e3415f03d0ace182cb518ed5f2318d
DIST trove_classifiers-2025.8.26.11.tar.gz 16960 BLAKE2B 890b9ab53dd1addc1bc1d3f73d68e6ff64eaa02f2583a8ef566f8c66c89ea6dbc8a628949cb1bd7ce605f1bd54f8de487787b21ab539b337f6011c97b80944c2 SHA512 36bab8810ecd3be1783adfaf5bcb65aacdd117417e929fcfe73f2a798f71fe34722dc9b2d8dcb6d9e78b8690f83f952f4b780031b063e683c8aa71dac1d6240c
-DIST trove_classifiers-2025.8.6.13.tar.gz 16932 BLAKE2B f4567cd2362897fe6cacea6c7a554bd1501d5ac176b7cc83d55a53a53599f8996efaa7c0d57f6911ed0a66f441d24127391bfab0f87ff81ea0d0ac4e5c46905e SHA512 14c9c4b082f4f92d02b84103e5fbb205ea8a716635e1db77c549776c6ce5caa46d4891bd79702f80323e0b140f65d2c9e0779cc168717c938fd471c046ae3102
+DIST trove_classifiers-2025.9.11.17.tar.gz 16975 BLAKE2B a00df0a1dbb15b6f7cd5455def2eb3ae9f593d1c3cdf84a8b49ac66352833bcd1f1f539fadf899fd25cf9dac9194d2883db87d7559128408d4c6662bca45dc3f SHA512 652514278a81cf81e62b5062a665f719c2a861f33416aa29e6446a88e57ab5fd68888569556bbc1d97d0a1c713b122a02107358b0b5f51f7e6772e37a9306abf
+DIST trove_classifiers-2025.9.11.17.tar.gz.provenance 9341 BLAKE2B d50ae31eae2b9197d2a965de684229f01ab15bffdaef1a9dd826d2189ad3ad2e18eec50a4c4beb943e185f3172e39cbccab65483893935949934a80818a1b32c SHA512 ebfad1a94a1bf2f7fa34ae7409c7b375cb5d727d693c0da0c60f06bac7fa2dc665ef80c9516f232ce0afe6863c4cd825019a9a10c5b2d32c171b480e18cfd265
+DIST trove_classifiers-2025.9.8.13.tar.gz 16955 BLAKE2B 5f966174da19b6299c6d6585f1e6ecb418c968215fc8e6d2fe9d6ac1cc030d2b0c8b51db2fe743858a4bff74ba7a2749ce236e628c3bff64022689a162a59b50 SHA512 af132fee4c1374054c5f02341f6428818a5568402e1f6bf40b74d4db00fd988e530007a57b9868f68634a47e99d9354a5c0f8f40d2db5005373fa4c32f7202ec
+DIST trove_classifiers-2025.9.8.13.tar.gz.provenance 9341 BLAKE2B 415076c8df78f0a836d5288bdce567908089b3f2e55de468be8ccb07daa9ef9e72c626d07e5557c8a2800cabc43835ee342ec9f565249e8229eb2493822e0b32 SHA512 214c3d8f56f50ba75968943c2a0f198adef7fe5abfad4285821084128b79debeaf129d8a84a7f041fc072c3b735b341d3a6f380600400a0638509a163405c93c
+DIST trove_classifiers-2025.9.9.12.tar.gz 16970 BLAKE2B c767eb6c7936342325a4928b699d80fe8f9f3e451b2e501fd67f374342dbfde9a24bd96194cb3fd611605df6c0bc20226bcb8fdbdbce9b0a677a36a6f7773a78 SHA512 5b201b1532aa467fbfd871bb28d34bb53698c1837379989f6764a297057ff7ce62095326fd2abbeb7fb539d71f169d0f13976fb78cd0f4a2eca9b268a2799534
+DIST trove_classifiers-2025.9.9.12.tar.gz.provenance 9310 BLAKE2B 1e8d503ba165999dd1618ab87ae5886b3124f854b2ef40ffdec62824690308307010771bd17b179c2078053735257d60b99deb930f3fbda778af5d30c23dde85 SHA512 269106f6280b648a612210d47605aaf339ccd63916c334c99d1c4e5e7ddab5499db60d4aca781e5995503674ff59580c7d59a5818482d4ad70708be470182f80
diff --git a/dev-python/trove-classifiers/trove-classifiers-2025.8.6.13.ebuild b/dev-python/trove-classifiers/trove-classifiers-2025.9.11.17.ebuild
index f83990389da3..1c5f4394c356 100644
--- a/dev-python/trove-classifiers/trove-classifiers-2025.8.6.13.ebuild
+++ b/dev-python/trove-classifiers/trove-classifiers-2025.9.11.17.ebuild
@@ -4,6 +4,7 @@
EAPI=8
DISTUTILS_USE_PEP517=flit
+PYPI_VERIFY_REPO=https://github.com/pypa/trove-classifiers
PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
inherit distutils-r1 pypi
diff --git a/dev-python/trove-classifiers/trove-classifiers-2025.5.9.12.ebuild b/dev-python/trove-classifiers/trove-classifiers-2025.9.8.13.ebuild
index b48e176ebe4e..1c5f4394c356 100644
--- a/dev-python/trove-classifiers/trove-classifiers-2025.5.9.12.ebuild
+++ b/dev-python/trove-classifiers/trove-classifiers-2025.9.8.13.ebuild
@@ -4,6 +4,7 @@
EAPI=8
DISTUTILS_USE_PEP517=flit
+PYPI_VERIFY_REPO=https://github.com/pypa/trove-classifiers
PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
inherit distutils-r1 pypi
@@ -16,8 +17,9 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
+EPYTEST_PLUGINS=()
distutils_enable_tests pytest
src_configure() {
diff --git a/dev-python/trove-classifiers/trove-classifiers-2025.9.9.12.ebuild b/dev-python/trove-classifiers/trove-classifiers-2025.9.9.12.ebuild
new file mode 100644
index 000000000000..1c5f4394c356
--- /dev/null
+++ b/dev-python/trove-classifiers/trove-classifiers-2025.9.9.12.ebuild
@@ -0,0 +1,47 @@
+# Copyright 2022-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit
+PYPI_VERIFY_REPO=https://github.com/pypa/trove-classifiers
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Canonical source for classifiers on PyPI (pypi.org)"
+HOMEPAGE="
+ https://github.com/pypa/trove-classifiers/
+ https://pypi.org/project/trove-classifiers/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+src_configure() {
+ grep -q 'build-backend = "setuptools' pyproject.toml ||
+ die "Upstream changed build-backend, recheck"
+ # write a custom pyproject.toml to ease hatchling bootstrap
+ cat > pyproject.toml <<-EOF || die
+ [build-system]
+ requires = ["flit_core >=3.2,<4"]
+ build-backend = "flit_core.buildapi"
+
+ [project]
+ name = "trove-classifiers"
+ version = "${PV}"
+ description = "Canonical source for classifiers on PyPI (pypi.org)."
+
+ [project.scripts]
+ trove-classifiers = "trove_classifiers.__main__:cli"
+ EOF
+}
+
+python_test() {
+ epytest
+ "${EPYTHON}" -m tests.lib || die
+}
diff --git a/dev-python/twisted/twisted-25.5.0.ebuild b/dev-python/twisted/twisted-25.5.0.ebuild
index ea0b307e5233..9d8cc9b9d187 100644
--- a/dev-python/twisted/twisted-25.5.0.ebuild
+++ b/dev-python/twisted/twisted-25.5.0.ebuild
@@ -22,7 +22,7 @@ SRC_URI+="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ~ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
IUSE="conch http2 serial ssl test websockets"
RESTRICT="!test? ( test )"
diff --git a/dev-python/types-docutils/Manifest b/dev-python/types-docutils/Manifest
index 53ffc484e1a8..d03d2142f7ea 100644
--- a/dev-python/types-docutils/Manifest
+++ b/dev-python/types-docutils/Manifest
@@ -3,3 +3,4 @@ DIST types_docutils-0.21.0.20250728.tar.gz 54656 BLAKE2B 843f2615f22fd5420901f87
DIST types_docutils-0.21.0.20250809.tar.gz 54770 BLAKE2B 63b30cc8496f885c3ad13d7e69602bec5d0d033c551b2e9e3717577d3f84bd8e5065c90e657220a17f36ccd15ae427d575b8ca0824b2bd964c6e47b272f4f72c SHA512 a73ffb705dff7be79c97c3783b34802b9bd0ae4bdff58580adadeb1326ee9c1932c233b2088316b7f366e6891fb35e952d095f21ec2b3804fb1930f5ca7fb17d
DIST types_docutils-0.22.0.20250814.tar.gz 56376 BLAKE2B 75690dfe8d479fdb97b39391e813e4858feead0604dcba94355a66641100ac6a45ca61f6e231bde7cbcdfabb1e2866d30b1ea8bb98cf3e19b7b85eeaddb57813 SHA512 a064c117929e85fdae33276dfd72caa268aef9620c3144000f2660dd0e3d900d169534896599cad1f295a7bbb1de176a65da71f7096dbce5015c895eaefb7cab
DIST types_docutils-0.22.0.20250822.tar.gz 56487 BLAKE2B 2d6fcf0bee2ff56f08fcbb2ef1b51140926410c3ff51f7139bf3cd4a4a0999e5555ebcbd668daabd9cf7b1bef6e31b562092af14f1a571d13223aed1afa4b0e0 SHA512 ae4d8927c0c5d423b004cd84f8fed20408f2944105b06c95c67248a7cd0a049da519d3aeeb6f05fdcc58ee178fcb3d0aecab8ea6333e0d3b8776b3406272a60a
+DIST types_docutils-0.22.0.20250914.tar.gz 56496 BLAKE2B 0c9f9321506821a1732bdef41ccdf3cc617a87f18c2d9343f0eddba143456b0647a6ca0b6dc9e6ea245310b6019e2672cdc8aeea702ad1a61105201efec253de SHA512 3207655dd257f5274fffcb0213fcdef9dbfd564f027b84563366b2f79f3df2001f88317ac27a6e89fca18b4ebab7296de8f8e53d656e3ffcb558ed2ab770a653
diff --git a/dev-python/types-docutils/types-docutils-0.21.0.20250809.ebuild b/dev-python/types-docutils/types-docutils-0.21.0.20250809.ebuild
index 9fdbbf2b35dd..29b3eac5da76 100644
--- a/dev-python/types-docutils/types-docutils-0.21.0.20250809.ebuild
+++ b/dev-python/types-docutils/types-docutils-0.21.0.20250809.ebuild
@@ -13,4 +13,4 @@ HOMEPAGE="https://pypi.org/project/types-docutils/"
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
+KEYWORDS="amd64 ~arm64 x86"
diff --git a/dev-python/types-docutils/types-docutils-0.22.0.20250914.ebuild b/dev-python/types-docutils/types-docutils-0.22.0.20250914.ebuild
new file mode 100644
index 000000000000..9fdbbf2b35dd
--- /dev/null
+++ b/dev-python/types-docutils/types-docutils-0.22.0.20250914.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_{11..14} )
+
+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/types-gdb-15.0.0.20250809.ebuild b/dev-python/types-gdb/types-gdb-15.0.0.20250809.ebuild
index 5249cc2ff879..c647fa187938 100644
--- a/dev-python/types-gdb/types-gdb-15.0.0.20250809.ebuild
+++ b/dev-python/types-gdb/types-gdb-15.0.0.20250809.ebuild
@@ -13,4 +13,4 @@ HOMEPAGE="https://pypi.org/project/types-gdb/"
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
+KEYWORDS="amd64 ~arm64 x86"
diff --git a/dev-python/types-setuptools/types-setuptools-80.9.0.20250809.ebuild b/dev-python/types-setuptools/types-setuptools-80.9.0.20250809.ebuild
index 078677754317..2086c497e4d7 100644
--- a/dev-python/types-setuptools/types-setuptools-80.9.0.20250809.ebuild
+++ b/dev-python/types-setuptools/types-setuptools-80.9.0.20250809.ebuild
@@ -13,4 +13,4 @@ HOMEPAGE="https://pypi.org/project/types-setuptools/"
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
diff --git a/dev-python/uv-build/Manifest b/dev-python/uv-build/Manifest
index 356fc78473f6..cee18a82fcaf 100644
--- a/dev-python/uv-build/Manifest
+++ b/dev-python/uv-build/Manifest
@@ -1,6 +1,8 @@
DIST uv_build-0.7.19.tar.gz 311467 BLAKE2B a7e85c3bbaee786ed9729b1331e5506eeb95d4ee875502814555956611449501f6b1c62284945640a2ce95f225a1b1c151b47d17c0d303599fe69bffc4ab8e5c SHA512 c3bc554dd9d86bfdb1e9ebf042d8c00987a790da9d386eb371dcc1bc7cd1c0000ae69a4d1e5f1759ed723d78eed73a461bae26d5047bdb0c0bb75f450fdc009a
DIST uv_build-0.7.22.tar.gz 314318 BLAKE2B e8118eda79bd6bea375a2b19d87a0d9c2da8e1fe1fb24668ccfe79364b92a01aedcb1e73bc625c9e1d010e7ed4742c3a4add827dc497ee18312664c4343b67be SHA512 185d6b5a9e0440a1354cd9ce638522e9b2a27cc075a5022d95c63fd96b861bf50615156d7f64144b7fb657e2ddb3fe1b0fd8fd38fd6c0adabffacbdc43d6f292
DIST uv_build-0.8.15.tar.gz 327897 BLAKE2B c2972d5db464320956707dabdec70e796b03c2ddb4fe2e320d6a688f7099f710fd4e29374cb706e23b3a900e0c055277e24514041ab352d7bd589c92d7d7c6eb SHA512 6b2dc120cad0f0e759d6618d1716ab6c4e07444faa4f185423d428954e5d519f7488b7133108eec9a32bb482112b6368c9beccaf0382e23ced2d3e0292ff3415
+DIST uv_build-0.8.16.tar.gz 330691 BLAKE2B d1c730ee6c8292273a6511383c6c0d015909ff59b67a74152d13bcb390a777c5649cff2b00fb50fb98dfc0100011f7402016f12657279c87e5b09959034ff3af SHA512 1df459afa00271b6fafc3b3abf3558f2b19db2603017a86a371ddfb4eb917304de9ec38d673ce4eda8d05c9432be48ab0b0401e8b89238af19a5de55771b11f1
+DIST uv_build-0.8.17.tar.gz 331207 BLAKE2B fefb1fce9d0669fa242a7639dac3767accc166008bd780778cf2c589faa2e48fec435a1c77244d38ffbc2e79cf9c0e8ad87a99e432ca61c5c2b7cadcfd14028d SHA512 d997be2cc62782d8c305a1a408b99173e876ba70d7af279efd5ea745fb17862754f3b896924822052c2dedc56d332e7ea35228514effe265be340767f0286ec7
DIST uv_build-0.8.2.tar.gz 317577 BLAKE2B 0bf4d94fcb8052fa5fc71970cdda92438491bc4f3a0723b1f4565eb7f416058d253b14542adb4ea1883e56cb3c1fcf899840bb8406e133749ad894a181d5c8d7 SHA512 14272a8bf350542d5aaeaaf32542bf70b45724bda3a57eb4d701c8f3c0648244c683f3ea6d011920c5c02d1880e92787ce0758055b78eab2b3e61b20e03eea9c
DIST uv_build-0.8.4.tar.gz 318914 BLAKE2B 303fb5d95d7e62269eba53ca41d7e3ae32df84e49bcf3d13cca58e21a73696964f06484d0aabc874bb66e3da5a91efae16d620732fd026ba36a43fc24fcfbe9a SHA512 875de875a2c1f73d4d4d53f1844ce11dbfde69dca552da3fabb071689309d01f4759cdb3ca71142dfdf791be5e1ada0de9a0326ad2107acd93483fa25eb518b4
DIST uv_build-0.8.5.tar.gz 318967 BLAKE2B a09040001b1c777022fce38a5d28a584bad3dfa60627107f6054d779012b06a611eb11e903beef9112f636de4b238a1b29f5aa38ec477af6f91e1e957f5584cc SHA512 3bc3de1d240d78d5034c97801bcb6696d3ade9fb1a3cfe838a2ed66e7225ea72fa61ff82fdee66b213c7e5f63b0ee6ec2e04820102f3b50c3292107a643a3749
diff --git a/dev-python/uv-build/uv-build-0.8.16.ebuild b/dev-python/uv-build/uv-build-0.8.16.ebuild
new file mode 100644
index 000000000000..aafb223c5bb8
--- /dev/null
+++ b/dev-python/uv-build/uv-build-0.8.16.ebuild
@@ -0,0 +1,99 @@
+# Copyright 2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Maturin compiles uv-build executable for every impl, we do not want
+# that, so we use another backend. And since we use another backend,
+# why not dogfood it in the first place?
+DISTUTILS_USE_PEP517=standalone
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="PEP517 uv build backend"
+HOMEPAGE="
+ https://github.com/astral-sh/uv/
+ https://pypi.org/project/uv-build/
+"
+
+LICENSE="|| ( Apache-2.0 MIT )"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/uv-${PV}
+"
+BDEPEND="
+ test? (
+ app-arch/unzip
+ dev-python/build[${PYTHON_USEDEP}]
+ )
+"
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # use the executable from dev-python/uv instead of building
+ # a largely overlapping uv-build executable (at least for now)
+ sed -i -e '/USE_UV_EXECUTABLE/s:False:True:' python/uv_build/__init__.py || die
+
+ # replace the build-system section
+ sed -i -e '/\[build-system\]/,$d' pyproject.toml || die
+ cat >> pyproject.toml <<-EOF || die
+ [build-system]
+ requires = ["uv_build<9999"]
+ build-backend = "uv_build"
+ backend-path = ["src"]
+ EOF
+
+ # rename to make uv-build find it
+ mv python src || die
+}
+
+python_test() {
+ "${EPYTHON}" -m build -n || die "Self-build failed with ${EPYTHON}"
+
+ local zip_result=$(
+ unzip -t "dist/uv_build-${PV}-py3-none-any.whl" || die
+ )
+ local zip_expected="\
+Archive: dist/uv_build-${PV}-py3-none-any.whl
+ testing: uv_build/ OK
+ testing: uv_build/__init__.py OK
+ testing: uv_build/__main__.py OK
+ testing: uv_build/py.typed OK
+ testing: uv_build-${PV}.dist-info/ OK
+ testing: uv_build-${PV}.dist-info/WHEEL OK
+ testing: uv_build-${PV}.dist-info/METADATA OK
+ testing: uv_build-${PV}.dist-info/RECORD OK
+No errors detected in compressed data of dist/uv_build-${PV}-py3-none-any.whl.\
+"
+ if [[ ${zip_result} != ${zip_expected} ]]; then
+ eerror ".zip result:\n${zip_result}"
+ eerror ".zip expected:\n${zip_expected}"
+ die ".whl result mismatch"
+ fi
+
+ local tar_result=$(
+ tar -tf "dist/uv_build-${PV}.tar.gz" || die
+ )
+ local tar_expected="\
+uv_build-${PV}/PKG-INFO
+uv_build-${PV}/
+uv_build-${PV}/README.md
+uv_build-${PV}/pyproject.toml
+uv_build-${PV}/src
+uv_build-${PV}/src/uv_build
+uv_build-${PV}/src/uv_build/__init__.py
+uv_build-${PV}/src/uv_build/__main__.py
+uv_build-${PV}/src/uv_build/py.typed\
+"
+ if [[ ${tar_result} != ${tar_expected} ]]; then
+ eerror ".tar.gz result:\n${tar_result}"
+ eerror ".tar.gz expected:\n${tar_expected}"
+ die ".tar.gz result mismatch"
+ fi
+}
diff --git a/dev-python/uv-build/uv-build-0.8.17.ebuild b/dev-python/uv-build/uv-build-0.8.17.ebuild
new file mode 100644
index 000000000000..aafb223c5bb8
--- /dev/null
+++ b/dev-python/uv-build/uv-build-0.8.17.ebuild
@@ -0,0 +1,99 @@
+# Copyright 2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Maturin compiles uv-build executable for every impl, we do not want
+# that, so we use another backend. And since we use another backend,
+# why not dogfood it in the first place?
+DISTUTILS_USE_PEP517=standalone
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="PEP517 uv build backend"
+HOMEPAGE="
+ https://github.com/astral-sh/uv/
+ https://pypi.org/project/uv-build/
+"
+
+LICENSE="|| ( Apache-2.0 MIT )"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/uv-${PV}
+"
+BDEPEND="
+ test? (
+ app-arch/unzip
+ dev-python/build[${PYTHON_USEDEP}]
+ )
+"
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # use the executable from dev-python/uv instead of building
+ # a largely overlapping uv-build executable (at least for now)
+ sed -i -e '/USE_UV_EXECUTABLE/s:False:True:' python/uv_build/__init__.py || die
+
+ # replace the build-system section
+ sed -i -e '/\[build-system\]/,$d' pyproject.toml || die
+ cat >> pyproject.toml <<-EOF || die
+ [build-system]
+ requires = ["uv_build<9999"]
+ build-backend = "uv_build"
+ backend-path = ["src"]
+ EOF
+
+ # rename to make uv-build find it
+ mv python src || die
+}
+
+python_test() {
+ "${EPYTHON}" -m build -n || die "Self-build failed with ${EPYTHON}"
+
+ local zip_result=$(
+ unzip -t "dist/uv_build-${PV}-py3-none-any.whl" || die
+ )
+ local zip_expected="\
+Archive: dist/uv_build-${PV}-py3-none-any.whl
+ testing: uv_build/ OK
+ testing: uv_build/__init__.py OK
+ testing: uv_build/__main__.py OK
+ testing: uv_build/py.typed OK
+ testing: uv_build-${PV}.dist-info/ OK
+ testing: uv_build-${PV}.dist-info/WHEEL OK
+ testing: uv_build-${PV}.dist-info/METADATA OK
+ testing: uv_build-${PV}.dist-info/RECORD OK
+No errors detected in compressed data of dist/uv_build-${PV}-py3-none-any.whl.\
+"
+ if [[ ${zip_result} != ${zip_expected} ]]; then
+ eerror ".zip result:\n${zip_result}"
+ eerror ".zip expected:\n${zip_expected}"
+ die ".whl result mismatch"
+ fi
+
+ local tar_result=$(
+ tar -tf "dist/uv_build-${PV}.tar.gz" || die
+ )
+ local tar_expected="\
+uv_build-${PV}/PKG-INFO
+uv_build-${PV}/
+uv_build-${PV}/README.md
+uv_build-${PV}/pyproject.toml
+uv_build-${PV}/src
+uv_build-${PV}/src/uv_build
+uv_build-${PV}/src/uv_build/__init__.py
+uv_build-${PV}/src/uv_build/__main__.py
+uv_build-${PV}/src/uv_build/py.typed\
+"
+ if [[ ${tar_result} != ${tar_expected} ]]; then
+ eerror ".tar.gz result:\n${tar_result}"
+ eerror ".tar.gz expected:\n${tar_expected}"
+ die ".tar.gz result mismatch"
+ fi
+}
diff --git a/dev-python/uv/Manifest b/dev-python/uv/Manifest
index 1c27d72a7d9b..c9968cb14e31 100644
--- a/dev-python/uv/Manifest
+++ b/dev-python/uv/Manifest
@@ -6,6 +6,9 @@ DIST rs-async-zip-c909fda63fcafe4af496a07bfda28a5aae97e58d.gh.tar.gz 51763 BLAKE
DIST tl-6e25b2ee2513d75385101a8ff9f591ef51f314ec.gh.tar.gz 37106 BLAKE2B c30d1c33f6f52e2bc83823eb6319f8a3e462b7c7408fb6a08f995747857ef234f81db4135a04f9d183095fe473a4087f8f0cb89d8f87ef4400285d2ce034ec22 SHA512 4abbc4240ed129c92da8d616e27a6df0f24cdc85a0803acfdae588ca91f9e5b8d482e3ac88b2e657ff68917b1b43cef1e7ef3c887f624659b231fa5a13fcae68
DIST uv-0.8.15-crates.tar.xz 46898116 BLAKE2B 53fa26bc5ff7a22063ed700951dc44541de66967b7a567cec27701914bcac94ac27f0e821e7ea747b483a5fb721d10d9df9ecdcb6d338fd45d70f13855fff3f0 SHA512 14576aba8d91aeb250c3e64d32cfdbdad5723d83a1c51c7311caca1f433fc0279f13dd9ff1af165e1f1b1b94663878260536611e707c97238f1084cbc99b758d
DIST uv-0.8.15.gh.tar.gz 4424880 BLAKE2B 89dcf4dbf4f43774b9107f0c1c068654d49bca837a5852c5bf05be588232f0157bbf7b2d2d961bea75c37b815f51bd1d12f943bf9129720c2caee1dd923c54b9 SHA512 eafe6f8d74e476d404ac48a69115c0965152a07c876b87139f04b48770df2b7a5c42e04efb7a12297e1e341248a8551f87ab286dbd5fe06a41de029eff54ee4e
+DIST uv-0.8.16-crates.tar.xz 46965296 BLAKE2B 7c866d7c2843c7942acfe71c4f040d51a95a50d43a6df41730ad536ae6d58b56a279a556bec26613400abdec5248f5b0d1fb012dd62f0b1d00aa397fcb71c7e4 SHA512 8410b56732d35ae2bc101403350c2344875310f9e91a72373647b0be7fe6e434b203478591ab43b21507614729d3437eb1b3e78be5993cd9432941ba70c00b42
+DIST uv-0.8.16.gh.tar.gz 4441379 BLAKE2B b7c914a03e8a14fe08de8cdeaaf073efca0a15c933aa5db5918da6df529ea68c0c8c25fc7dc7e2632a895b3da631a1e51000a7c65ee3bac72a063b5e8a43c2c4 SHA512 8799554f7fbdc01277792ffddcf1731db2ddb8e67b387324ae52087c1a4ae64375186f588b535771fa7c66dacd7d78c3aa71d1ca232325f32c095a09d48041a4
+DIST uv-0.8.17.gh.tar.gz 4443731 BLAKE2B 747eceb88ef5e2eecbb5a3c827ff11646c6589c33026adc91a07199726cc0be2002c849380c5ce0ea67faea144c41a84c3f74db04d00f274b4c0301309d06d95 SHA512 f8d331fa717fca1ecea0907ac5da483ab1f6ec4a1cdf149549dbbc765353b0e28f47ab472270a52581042260e58c03f8cfead6a315969852d057b030d9b9075e
DIST uv-0.8.2-crates.tar.xz 58707128 BLAKE2B 9579ad6877a960596fc49908e4f9451c8748c7f0ab41be15f310f43a19dcd61632fc7dd4fe4a2ad21cdc1478354c6b39e07272b8160296dc9dba9f70628a6f76 SHA512 442e7f2d550c00808f07297eda196ceec75aea3c9fbc1d86f288dc4c9d974f8197dac36f550ff903bb78f9c193eeab7447934f4f7bbb7799d246db28d9cf052a
DIST uv-0.8.2.gh.tar.gz 4195351 BLAKE2B b50da561a66f4aac40c5fe6b55a1c10482155dc968bd6532927819ad0bb6f6b97de1b7707a32887b272ede682158b86d5f75bc10410a9fe7af8a7d2de204984a SHA512 9d10f182ab0fefb6028a0424a8cc1467f34e65de24a358a9038b8104f62808f479d004d3a45df7264b6aea81933353b78f1b3963c37ff66ec9da4a53cdca0e2c
DIST uv-0.8.6-crates.tar.xz 46208952 BLAKE2B f9557a45fbfaa9d6006f935629130960b5d414cd185d7fbdb1415e7f3875568d07ade946a0b606712e9e2e06e7964bb0fb8318e02e78609899a852ed073b87a6 SHA512 c79fa70a6a670dc2d80efbf0b51942806b2b16ab7b4c63983ab634453ab32142322302bd68ab80f5bcfee08138bca8d04a7d152c76ca5d94bfc40255cab8477b
diff --git a/dev-python/uv/uv-0.8.16.ebuild b/dev-python/uv/uv-0.8.16.ebuild
new file mode 100644
index 000000000000..d5a02e6201af
--- /dev/null
+++ b/dev-python/uv/uv-0.8.16.ebuild
@@ -0,0 +1,182 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CRATES=""
+RUST_MIN_VER="1.88.0"
+
+declare -A GIT_CRATES=(
+ [async_zip]='https://github.com/astral-sh/rs-async-zip;285e48742b74ab109887d62e1ae79e7c15fd4878;rs-async-zip-%commit%'
+ [pubgrub]='https://github.com/astral-sh/pubgrub;06ec5a5f59ffaeb6cf5079c6cb184467da06c9db;pubgrub-%commit%'
+ [reqwest-middleware]='https://github.com/astral-sh/reqwest-middleware;7650ed76215a962a96d94a79be71c27bffde7ab2;reqwest-middleware-%commit%/reqwest-middleware'
+ [reqwest-retry]='https://github.com/astral-sh/reqwest-middleware;7650ed76215a962a96d94a79be71c27bffde7ab2;reqwest-middleware-%commit%/reqwest-retry'
+ [tl]='https://github.com/astral-sh/tl;6e25b2ee2513d75385101a8ff9f591ef51f314ec;tl-%commit%'
+ [version-ranges]='https://github.com/astral-sh/pubgrub;06ec5a5f59ffaeb6cf5079c6cb184467da06c9db;pubgrub-%commit%/version-ranges'
+)
+
+inherit cargo check-reqs
+
+CRATE_PV=${PV}
+DESCRIPTION="A Python package installer and resolver, written in Rust"
+HOMEPAGE="
+ https://github.com/astral-sh/uv/
+ https://pypi.org/project/uv/
+"
+# pypi sdist misses scripts/, needed for tests
+SRC_URI="
+ https://github.com/astral-sh/uv/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+ ${CARGO_CRATE_URIS}
+"
+if [[ ${PKGBUMPING} != ${PVR} ]]; then
+ SRC_URI+="
+ https://github.com/gentoo-crate-dist/uv/releases/download/${CRATE_PV}/uv-${CRATE_PV}-crates.tar.xz
+ "
+fi
+
+# most of the code
+LICENSE="|| ( Apache-2.0 MIT )"
+# crates/pep508-rs is || ( Apache-2.0 BSD-2 ) which is covered below
+# Dependent crate licenses
+LICENSE+="
+ 0BSD Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD
+ CDLA-Permissive-2.0 ISC MIT MPL-2.0 Unicode-3.0 Unicode-DFS-2016
+ ZLIB
+"
+# ring crate
+LICENSE+=" openssl"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+IUSE="test"
+RESTRICT="test"
+PROPERTIES="test_network"
+
+DEPEND="
+ app-arch/bzip2:=
+ app-arch/xz-utils:=
+ app-arch/zstd:=
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ test? (
+ dev-lang/python:3.9
+ dev-lang/python:3.10
+ dev-lang/python:3.11
+ dev-lang/python:3.12
+ dev-lang/python:3.13
+ !!~dev-python/uv-0.5.0
+ )
+"
+
+QA_FLAGS_IGNORED="usr/bin/.*"
+
+check_space() {
+ local CHECKREQS_DISK_BUILD=3G
+ use debug && CHECKREQS_DISK_BUILD=9G
+ check-reqs_pkg_setup
+}
+
+pkg_pretend() {
+ check_space
+}
+
+pkg_setup() {
+ check_space
+ rust_pkg_setup
+}
+
+src_prepare() {
+ default
+
+ # replace upstream crate substitution with our crate substitution, sigh
+ local pkg
+ for pkg in reqwest-middleware reqwest-retry; do
+ local dep=$(grep "^${pkg}" "${ECARGO_HOME}"/config.toml || die)
+ sed -i -e "/\[patch\.crates-io\]/,\$s;^${pkg}.*$;${dep};" Cargo.toml || die
+ done
+
+ # force thin lto, makes build much faster and less memory hungry
+ # (i.e. makes it possible to actually build uv on 32-bit PPC)
+ sed -i -e '/lto/s:fat:thin:' Cargo.toml || die
+
+ # enable system libraries where supported
+ export ZSTD_SYS_USE_PKG_CONFIG=1
+ # TODO: unbundle libz-ng-sys, tikv-jemalloc-sys?
+
+ # remove unbundled sources, just in case
+ find "${ECARGO_VENDOR}"/{bzip2,lzma,zstd}-sys-*/ -name '*.c' -delete || die
+
+ # bzip2-sys requires a pkg-config file
+ # https://github.com/alexcrichton/bzip2-rs/issues/104
+ mkdir "${T}/pkg-config" || die
+ export PKG_CONFIG_PATH=${T}/pkg-config${PKG_CONFIG_PATH+:${PKG_CONFIG_PATH}}
+ cat >> "${T}/pkg-config/bzip2.pc" <<-EOF || die
+ Name: bzip2
+ Version: 9999
+ Description:
+ Libs: -lbz2
+ EOF
+}
+
+src_configure() {
+ local myfeatures=(
+ git
+ pypi
+ python
+ )
+
+ cargo_src_configure --no-default-features
+}
+
+src_compile() {
+ cd crates/uv || die
+ cargo_src_compile
+}
+
+src_test() {
+ # work around https://github.com/astral-sh/uv/issues/4376
+ local -x PATH=${BROOT}/usr/lib/python-exec/python3.12:${PATH}
+ local -x COLUMNS=100
+ local -x PYTHONDONTWRITEBYTECODE=
+ # fix tests failing because of our config
+ local -x XDG_CONFIG_DIRS=${T}
+
+ cd crates/uv || die
+ cargo_src_test --no-fail-fast
+}
+
+src_install() {
+ cd crates/uv || die
+ cargo_src_install
+
+ insinto /etc/xdg/uv
+ newins - uv.toml <<-EOF || die
+ # These defaults match Fedora, see:
+ # https://src.fedoraproject.org/rpms/uv/pull-request/18
+
+ # By default ("automatic"), uv downloads missing Python versions
+ # automatically and keeps them in the user's home directory.
+ # Disable that to make downloading opt-in, and especially
+ # to avoid unnecessarily fetching custom Python when the distro
+ # package would be preferable. Python builds can still be
+ # downloaded manually via "uv python install".
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-downloads
+ python-downloads = "manual"
+
+ # By default ("managed"), uv always prefers self-installed
+ # Python versions over the system Python, independently
+ # of versions. Since we generally expect users to use that
+ # to install old Python versions not in ::gentoo anymore,
+ # this effectively means that uv would end up preferring very
+ # old Python versions over the newer ones that are provided
+ # by the system. Default to using the system versions to avoid
+ # this counter-intuitive behavior.
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-preference
+ python-preference = "system"
+ EOF
+}
diff --git a/dev-python/uv/uv-0.8.17.ebuild b/dev-python/uv/uv-0.8.17.ebuild
new file mode 100644
index 000000000000..1e66902c9c41
--- /dev/null
+++ b/dev-python/uv/uv-0.8.17.ebuild
@@ -0,0 +1,183 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CRATES="
+"
+RUST_MIN_VER="1.88.0"
+
+declare -A GIT_CRATES=(
+ [async_zip]='https://github.com/astral-sh/rs-async-zip;285e48742b74ab109887d62e1ae79e7c15fd4878;rs-async-zip-%commit%'
+ [pubgrub]='https://github.com/astral-sh/pubgrub;06ec5a5f59ffaeb6cf5079c6cb184467da06c9db;pubgrub-%commit%'
+ [reqwest-middleware]='https://github.com/astral-sh/reqwest-middleware;7650ed76215a962a96d94a79be71c27bffde7ab2;reqwest-middleware-%commit%/reqwest-middleware'
+ [reqwest-retry]='https://github.com/astral-sh/reqwest-middleware;7650ed76215a962a96d94a79be71c27bffde7ab2;reqwest-middleware-%commit%/reqwest-retry'
+ [tl]='https://github.com/astral-sh/tl;6e25b2ee2513d75385101a8ff9f591ef51f314ec;tl-%commit%'
+ [version-ranges]='https://github.com/astral-sh/pubgrub;06ec5a5f59ffaeb6cf5079c6cb184467da06c9db;pubgrub-%commit%/version-ranges'
+)
+
+inherit cargo check-reqs
+
+CRATE_PV=0.8.16
+DESCRIPTION="A Python package installer and resolver, written in Rust"
+HOMEPAGE="
+ https://github.com/astral-sh/uv/
+ https://pypi.org/project/uv/
+"
+# pypi sdist misses scripts/, needed for tests
+SRC_URI="
+ https://github.com/astral-sh/uv/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+ ${CARGO_CRATE_URIS}
+"
+if [[ ${PKGBUMPING} != ${PVR} ]]; then
+ SRC_URI+="
+ https://github.com/gentoo-crate-dist/uv/releases/download/${CRATE_PV}/uv-${CRATE_PV}-crates.tar.xz
+ "
+fi
+
+# most of the code
+LICENSE="|| ( Apache-2.0 MIT )"
+# crates/pep508-rs is || ( Apache-2.0 BSD-2 ) which is covered below
+# Dependent crate licenses
+LICENSE+="
+ 0BSD Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD
+ CDLA-Permissive-2.0 ISC MIT MPL-2.0 Unicode-3.0 Unicode-DFS-2016
+ ZLIB
+"
+# ring crate
+LICENSE+=" openssl"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+IUSE="test"
+RESTRICT="test"
+PROPERTIES="test_network"
+
+DEPEND="
+ app-arch/bzip2:=
+ app-arch/xz-utils:=
+ app-arch/zstd:=
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ test? (
+ dev-lang/python:3.9
+ dev-lang/python:3.10
+ dev-lang/python:3.11
+ dev-lang/python:3.12
+ dev-lang/python:3.13
+ !!~dev-python/uv-0.5.0
+ )
+"
+
+QA_FLAGS_IGNORED="usr/bin/.*"
+
+check_space() {
+ local CHECKREQS_DISK_BUILD=3G
+ use debug && CHECKREQS_DISK_BUILD=9G
+ check-reqs_pkg_setup
+}
+
+pkg_pretend() {
+ check_space
+}
+
+pkg_setup() {
+ check_space
+ rust_pkg_setup
+}
+
+src_prepare() {
+ default
+
+ # replace upstream crate substitution with our crate substitution, sigh
+ local pkg
+ for pkg in reqwest-middleware reqwest-retry; do
+ local dep=$(grep "^${pkg}" "${ECARGO_HOME}"/config.toml || die)
+ sed -i -e "/\[patch\.crates-io\]/,\$s;^${pkg}.*$;${dep};" Cargo.toml || die
+ done
+
+ # force thin lto, makes build much faster and less memory hungry
+ # (i.e. makes it possible to actually build uv on 32-bit PPC)
+ sed -i -e '/lto/s:fat:thin:' Cargo.toml || die
+
+ # enable system libraries where supported
+ export ZSTD_SYS_USE_PKG_CONFIG=1
+ # TODO: unbundle libz-ng-sys, tikv-jemalloc-sys?
+
+ # remove unbundled sources, just in case
+ find "${ECARGO_VENDOR}"/{bzip2,lzma,zstd}-sys-*/ -name '*.c' -delete || die
+
+ # bzip2-sys requires a pkg-config file
+ # https://github.com/alexcrichton/bzip2-rs/issues/104
+ mkdir "${T}/pkg-config" || die
+ export PKG_CONFIG_PATH=${T}/pkg-config${PKG_CONFIG_PATH+:${PKG_CONFIG_PATH}}
+ cat >> "${T}/pkg-config/bzip2.pc" <<-EOF || die
+ Name: bzip2
+ Version: 9999
+ Description:
+ Libs: -lbz2
+ EOF
+}
+
+src_configure() {
+ local myfeatures=(
+ git
+ pypi
+ python
+ )
+
+ cargo_src_configure --no-default-features
+}
+
+src_compile() {
+ cd crates/uv || die
+ cargo_src_compile
+}
+
+src_test() {
+ # work around https://github.com/astral-sh/uv/issues/4376
+ local -x PATH=${BROOT}/usr/lib/python-exec/python3.12:${PATH}
+ local -x COLUMNS=100
+ local -x PYTHONDONTWRITEBYTECODE=
+ # fix tests failing because of our config
+ local -x XDG_CONFIG_DIRS=${T}
+
+ cd crates/uv || die
+ cargo_src_test --no-fail-fast
+}
+
+src_install() {
+ cd crates/uv || die
+ cargo_src_install
+
+ insinto /etc/xdg/uv
+ newins - uv.toml <<-EOF || die
+ # These defaults match Fedora, see:
+ # https://src.fedoraproject.org/rpms/uv/pull-request/18
+
+ # By default ("automatic"), uv downloads missing Python versions
+ # automatically and keeps them in the user's home directory.
+ # Disable that to make downloading opt-in, and especially
+ # to avoid unnecessarily fetching custom Python when the distro
+ # package would be preferable. Python builds can still be
+ # downloaded manually via "uv python install".
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-downloads
+ python-downloads = "manual"
+
+ # By default ("managed"), uv always prefers self-installed
+ # Python versions over the system Python, independently
+ # of versions. Since we generally expect users to use that
+ # to install old Python versions not in ::gentoo anymore,
+ # this effectively means that uv would end up preferring very
+ # old Python versions over the newer ones that are provided
+ # by the system. Default to using the system versions to avoid
+ # this counter-intuitive behavior.
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-preference
+ python-preference = "system"
+ EOF
+}
diff --git a/dev-python/uv/uv-0.8.6.ebuild b/dev-python/uv/uv-0.8.6.ebuild
index 26a0949f81c1..a7f6a8d1d71b 100644
--- a/dev-python/uv/uv-0.8.6.ebuild
+++ b/dev-python/uv/uv-0.8.6.ebuild
@@ -49,7 +49,7 @@ LICENSE+="
# ring crate
LICENSE+=" openssl"
SLOT="0"
-KEYWORDS="amd64 ~arm ~arm64 ~loong ppc ~ppc64 ~riscv x86"
+KEYWORDS="amd64 ~arm arm64 ~loong ppc ppc64 ~riscv x86"
IUSE="test"
RESTRICT="test"
PROPERTIES="test_network"
diff --git a/dev-python/xdoctest/Manifest b/dev-python/xdoctest/Manifest
index 6b7994c184d0..edad6c312902 100644
--- a/dev-python/xdoctest/Manifest
+++ b/dev-python/xdoctest/Manifest
@@ -1 +1,2 @@
DIST xdoctest-1.2.0.gh.tar.gz 231269 BLAKE2B 5593bfa8a2d4ff6ff13db592e83325c6bd30e6614db969aec7b4072ec788a203024a0e4066b69a34782cc99252d0601a0a3db0c2b70cf5b7f58e9f6dad2de89d SHA512 a33509e494919bbcb630307b0a71f784d7e2be1d1c6422e49c2286218f21202088faa4baabc5e33a836225ca1fd0c12937de15a9a5b90ac4a80f35c8218b0071
+DIST xdoctest-1.3.0.gh.tar.gz 233012 BLAKE2B 87a10ae11f94e013191535c45b5e92fb44ed2e3051c4b2d38a7f8eabcf521cd0c5e22a8d40eaa42788e1ecc3b4bc90734f9b29ca1f5df8ef833ca1b3fd39df5e SHA512 5a245415f318f09c403fa18d2538240e21c9820e7c7db8830acc3ef32a1f886f7aaffe918d6188ca30e8e0a542f077e62dc786bcadc00a07a1271b603b8aa5f2
diff --git a/dev-python/xdoctest/xdoctest-1.3.0.ebuild b/dev-python/xdoctest/xdoctest-1.3.0.ebuild
new file mode 100644
index 000000000000..a7fcaad0c101
--- /dev/null
+++ b/dev-python/xdoctest/xdoctest-1.3.0.ebuild
@@ -0,0 +1,48 @@
+# 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_{11..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="A rewrite of Python's builtin doctest module but without all the weirdness"
+HOMEPAGE="
+ https://github.com/Erotemic/xdoctest/
+ https://pypi.org/project/xdoctest/
+"
+SRC_URI="
+ https://github.com/Erotemic/xdoctest/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ dev-python/pytest[${PYTHON_USEDEP}]
+"
+# dev-python/nbformat-5.1.{0..2} did not install package data
+BDEPEND="
+ test? (
+ >=dev-python/nbformat-5.1.2-r1[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGIN_LOAD_VIA_ENV=1
+EPYTEST_PLUGINS=( "${PN}" )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # broken by PYTEST_PLUGINS
+ tests/test_plugin.py::TestXDoctestActivation::test_xdoctest_explicit_suppression
+ tests/test_pytest_cli.py::test_simple_pytest_import_error_cli
+ )
+
+ epytest --pyargs tests xdoctest
+}
diff --git a/dev-python/xlsxwriter/Manifest b/dev-python/xlsxwriter/Manifest
index 350b69d6242c..0b1f8615ba6c 100644
--- a/dev-python/xlsxwriter/Manifest
+++ b/dev-python/xlsxwriter/Manifest
@@ -1 +1,5 @@
DIST XlsxWriter-RELEASE_3.2.3.gh.tar.gz 24659662 BLAKE2B d6efb2a5e2df399b5cb05fc1efe790584a29c2d4d13303ca9d0b9f7c8b900339c347800e515d2c636f88c27b7a731c853aba081069c0c9023dc1ec15e66da07c SHA512 1622420ab795a1b169569b1d5103f8f056fc3dbe741a46b21fee71d739738412d4c17d6822e8884f16bb37f47f4ced4b2eddf40850fa6d1d0bf0d951ec1ef820
+DIST XlsxWriter-RELEASE_3.2.5.gh.tar.gz 24907892 BLAKE2B 6a5eb24f3abae91f789be1fe3377e010cafad9780e9a4736f0607abda80b6a3b369cc2842022d3a09baffdf747ce9d3d90c09b0833adcb6e70a235fde0483f27 SHA512 8e8b62176a7a7be979e7d60d9fa8c3f81b0e8137c6d0ca17b033f21136619c43cc88d3c61412f85fe6dce587a93c41cc124200d8b09af7ef6e3b1e648fa738c0
+DIST XlsxWriter-RELEASE_3.2.6.gh.tar.gz 24923172 BLAKE2B eb0379da54688a468263add3acdf26eb0f0286103ba331addda037dd8bb08897a35fdfc47fa0e7f76f5b7a68472d06a544df8520bf9863d2e30d8b30b4ebb901 SHA512 0d4f0e6cfe9e8c56cc2a146181404b8111c95ceeff1b9c8ab4df02640285b5de0b9b25985be2b15cf277b001f717be5b7adec638691db645ec666c12f943df21
+DIST XlsxWriter-RELEASE_3.2.7.gh.tar.gz 24923173 BLAKE2B 168e508b3e2ccf68d4c517b8898589132aa65795b58ee862d86b54e2701b0edce366c5b840dd4497412b0e360e522858d0dc8e02e5cf750dce2d439fe973e5fb SHA512 c17fbc5994fbf62f86692f9adcffc0f0a602ed96f2cd746eb0ebcc65ed27c41d2bafeb30ca9b68bc603dbce29af3dccda233d3c91a155706ae0f1c07f8956276
+DIST XlsxWriter-RELEASE_3.2.8.gh.tar.gz 24923526 BLAKE2B ed5ca68cbcaa758cf721713294848ae3a465667878912f92d00ca0484bd3286dd7d415bd521f204da507656c476dc2b768003eb1700953cb24f4a90c3b8dcba0 SHA512 b217015e52837b7f6645e8a194d62f26f26b06045c06988fd18cc4cbfb3a63da0ab20de892cd0984a7e76d091f1eb50e57552b43f1917768bcec344a3104507a
diff --git a/dev-python/xlsxwriter/xlsxwriter-3.2.5.ebuild b/dev-python/xlsxwriter/xlsxwriter-3.2.5.ebuild
new file mode 100644
index 000000000000..ec32bfc40a49
--- /dev/null
+++ b/dev-python/xlsxwriter/xlsxwriter-3.2.5.ebuild
@@ -0,0 +1,29 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1
+
+TAG=RELEASE_${PV}
+MY_P=XlsxWriter-${TAG}
+DESCRIPTION="Python module for creating Excel XLSX files"
+HOMEPAGE="
+ https://github.com/jmcnamara/XlsxWriter/
+ https://pypi.org/project/xlsxwriter/
+"
+SRC_URI="
+ https://github.com/jmcnamara/XlsxWriter/archive/${TAG}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/xlsxwriter/xlsxwriter-3.2.6.ebuild b/dev-python/xlsxwriter/xlsxwriter-3.2.6.ebuild
new file mode 100644
index 000000000000..ec32bfc40a49
--- /dev/null
+++ b/dev-python/xlsxwriter/xlsxwriter-3.2.6.ebuild
@@ -0,0 +1,29 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1
+
+TAG=RELEASE_${PV}
+MY_P=XlsxWriter-${TAG}
+DESCRIPTION="Python module for creating Excel XLSX files"
+HOMEPAGE="
+ https://github.com/jmcnamara/XlsxWriter/
+ https://pypi.org/project/xlsxwriter/
+"
+SRC_URI="
+ https://github.com/jmcnamara/XlsxWriter/archive/${TAG}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/xlsxwriter/xlsxwriter-3.2.7.ebuild b/dev-python/xlsxwriter/xlsxwriter-3.2.7.ebuild
new file mode 100644
index 000000000000..ec32bfc40a49
--- /dev/null
+++ b/dev-python/xlsxwriter/xlsxwriter-3.2.7.ebuild
@@ -0,0 +1,29 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1
+
+TAG=RELEASE_${PV}
+MY_P=XlsxWriter-${TAG}
+DESCRIPTION="Python module for creating Excel XLSX files"
+HOMEPAGE="
+ https://github.com/jmcnamara/XlsxWriter/
+ https://pypi.org/project/xlsxwriter/
+"
+SRC_URI="
+ https://github.com/jmcnamara/XlsxWriter/archive/${TAG}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/xlsxwriter/xlsxwriter-3.2.8.ebuild b/dev-python/xlsxwriter/xlsxwriter-3.2.8.ebuild
new file mode 100644
index 000000000000..ec32bfc40a49
--- /dev/null
+++ b/dev-python/xlsxwriter/xlsxwriter-3.2.8.ebuild
@@ -0,0 +1,29 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1
+
+TAG=RELEASE_${PV}
+MY_P=XlsxWriter-${TAG}
+DESCRIPTION="Python module for creating Excel XLSX files"
+HOMEPAGE="
+ https://github.com/jmcnamara/XlsxWriter/
+ https://pypi.org/project/xlsxwriter/
+"
+SRC_URI="
+ https://github.com/jmcnamara/XlsxWriter/archive/${TAG}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/xmltodict/Manifest b/dev-python/xmltodict/Manifest
index 764d030c9376..075bab9cfb3c 100644
--- a/dev-python/xmltodict/Manifest
+++ b/dev-python/xmltodict/Manifest
@@ -1,2 +1,3 @@
DIST xmltodict-0.14.2.tar.gz 51942 BLAKE2B 4d51ec3e99ac166dc1fd919ff12ed0218cc78d33982c79336eeddbf66f5409ab3ed8f994f57731252799b5ff1d1bd5d3cc344621d0dfb565d105319c4a10886f SHA512 3333955156e355cd40bd947bbefe0ff2e90de900cf12aa3ad82fa28e2921d9e2ccd245116573a0711cce12ac294d5a8d18a83744b4e7fc9e2b4025e35175080b
-DIST xmltodict-0.15.0.tar.gz 60285 BLAKE2B 62cbae8054524d148cfdbf61b7a33ce6cdc4ddadc14e2898656231ce5659de96c8f65dbd3049b53e79f3d674a0d1de606ac740734472878f7e9e45bcf2fe3f00 SHA512 6f1af04125b7c8f177a3d13ee7c46c557a0c60166ba23f946bb38e1e7543ee93ae577311182e0c861b83632bd3e63c274ece1011e81163c96c875bf1e58f2fbc
+DIST xmltodict-0.15.1.tar.gz 62984 BLAKE2B 83b7117a2925324e1fff8cecbd5d82255938b3e0bc3ecaf7da6d27035e12861c4a52a4d1f3fec628c334d0f193e96ce688feab4fa7a5b559993eaf159d7a1ed2 SHA512 a1e8f9be1a4a1ccbd05c3210a57a0a96db12ff6456fd2f28de048b094e33fbb0ee67e435b199997c42f360af073abf04d4caf7f98c7e7aa61c10c2e07570ed77
+DIST xmltodict-1.0.0.tar.gz 71681 BLAKE2B 5d8dc5d4395da94eeea3e6cb55640651a9059c60e4c9a9f73623c6f79d3401e1809c22a8313f12b5f8c78616de949a295c036ba76f6f033cd9065d36b3595907 SHA512 7e134fe47e2408991c4216b4c9026bb5941a4272282273474fb842a3453a2396585fdb2eb9c2b4bcb05aa0207fe6d5175cf0573a46ca1deeceb75116606af00a
diff --git a/dev-python/xmltodict/xmltodict-0.15.0.ebuild b/dev-python/xmltodict/xmltodict-0.15.1.ebuild
index 0fca89e54daa..0fca89e54daa 100644
--- a/dev-python/xmltodict/xmltodict-0.15.0.ebuild
+++ b/dev-python/xmltodict/xmltodict-0.15.1.ebuild
diff --git a/dev-python/xmltodict/xmltodict-1.0.0.ebuild b/dev-python/xmltodict/xmltodict-1.0.0.ebuild
new file mode 100644
index 000000000000..0fca89e54daa
--- /dev/null
+++ b/dev-python/xmltodict/xmltodict-1.0.0.ebuild
@@ -0,0 +1,22 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+DISTUTILS_USE_PEP517=setuptools
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Makes working with XML feel like you are working with JSON"
+HOMEPAGE="
+ https://github.com/martinblech/xmltodict/
+ https://pypi.org/project/xmltodict/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/zlib-ng/Manifest b/dev-python/zlib-ng/Manifest
index d7ead4051870..337556c8785c 100644
--- a/dev-python/zlib-ng/Manifest
+++ b/dev-python/zlib-ng/Manifest
@@ -1 +1,2 @@
DIST python-zlib-ng-0.5.1.gh.tar.gz 3381700 BLAKE2B 9c9c460c60a10fa5f24816f6f4562f4feeef585c70da34bb0fe0ea2b9c43e62f19f1559a0dd74a48659b02561d3ba505fc3b1b399249a0d8d0603695f7c44db5 SHA512 98d689d6d3462310cdec4d73ec63ee2a8842b54ae5285c7765629b2385a23234bfec45207fedd1e36cca58e7388cb49c34e8bef5f4e102c61e624c80e488492e
+DIST zlib_ng-1.0.0.tar.gz 5799954 BLAKE2B 6ea833a6c63f9113d81cc603adff0cfa7e3f606d960c95386baa73046a20eb17faa28788e526ac0b7579ec2dd96de2c076afc11b2ac3b130c0c5d9a3ffe0a99d SHA512 66350217df5803a805ae9e44eb985eab0ed3e45d419f01640f808f38c5a618a51ae31ac700dbd4ab1c0f66f0afad812f6f82375bdacd87e29ba8e85f47754274
diff --git a/dev-python/zlib-ng/zlib-ng-1.0.0.ebuild b/dev-python/zlib-ng/zlib-ng-1.0.0.ebuild
new file mode 100644
index 000000000000..f0660df52d02
--- /dev/null
+++ b/dev-python/zlib-ng/zlib-ng-1.0.0.ebuild
@@ -0,0 +1,43 @@
+# Copyright 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="Drop-in replacement for zlib and gzip modules using zlib-ng"
+HOMEPAGE="
+ https://github.com/pycompression/python-zlib-ng/
+ https://pypi.org/project/zlib-ng/
+"
+
+LICENSE="PSF-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+DEPEND="
+ sys-libs/zlib-ng:=
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ dev-python/test[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+export PYTHON_ZLIB_NG_LINK_DYNAMIC=1
+
+python_test() {
+ epytest tests
+}
diff --git a/dev-python/zope-component/Manifest b/dev-python/zope-component/Manifest
index 6b73f7ca1998..126cc51bc18c 100644
--- a/dev-python/zope-component/Manifest
+++ b/dev-python/zope-component/Manifest
@@ -1 +1,3 @@
DIST zope.component-6.0.tar.gz 90268 BLAKE2B f91d2424015d4f09a681b5a9fb7d3a411bcca39648893c09ba1d416250611670294676c37d7f9737a33290183675f8501f396a44859b8ee3dd1846c3e360a5b7 SHA512 90126a46752ac650d485676a2716858dd95d6ad10a8c539979b502b3581b7963bdc191e173cc36e94aba25c8b2b4b1a13b91bbf1952ace6b905242fd253325bf
+DIST zope_component-6.1.tar.gz 91532 BLAKE2B 07a52bf32761dbb4553121108242c8ae526d2a115514e262105d3bbca38f3cb35162e3f76b96edfda44e4394724ec16dc4d2eb35e8edc52cfbadf6a482fe8dd1 SHA512 2fd1dc9521ffb676a3db5f59125804d57f02b98401d56d840d05bfa8d1bcf691e749a74ebcf1809d358d4e67cdd6d3a3d60e23500d4b6089f16eaffed436afcc
+DIST zope_component-7.0.tar.gz 91467 BLAKE2B 1bef9898f2423b3d09eccb852293889941d50dcbcbaf42a1a65ccf7978b640278949a2799b16c86e3227901bc2c090436666564556374422d9f79bfad9191f9d SHA512 e5ba3dca773e19aa9333a85305fc28eea82ecf406c6c5028cf6eb9473ee896653c2aa9e3773614867df1019663e63fad068d1e6707526ee358d41f208be9f4c8
diff --git a/dev-python/zope-component/zope-component-6.1.ebuild b/dev-python/zope-component/zope-component-6.1.ebuild
new file mode 100644
index 000000000000..3ae3e2275fec
--- /dev/null
+++ b/dev-python/zope-component/zope-component-6.1.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
+PYPI_PN=${PN/-/.}
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Zope Component Architecture"
+HOMEPAGE="
+ https://pypi.org/project/zope.component/
+ https://github.com/zopefoundation/zope.component/
+"
+
+LICENSE="ZPL"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+
+RDEPEND="
+ dev-python/zope-event[${PYTHON_USEDEP}]
+ >=dev-python/zope-hookable-4.2.0[${PYTHON_USEDEP}]
+ >=dev-python/zope-interface-5.3.0[${PYTHON_USEDEP}]
+ !dev-python/namespace-zope
+"
+BDEPEND="
+ test? (
+ dev-python/zope-configuration[${PYTHON_USEDEP}]
+ dev-python/zope-i18nmessageid[${PYTHON_USEDEP}]
+ dev-python/zope-testing[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests unittest
+
+src_prepare() {
+ # strip rdep specific to namespaces
+ sed -i -e "/'setuptools'/d" setup.py || die
+ distutils-r1_src_prepare
+}
+
+python_compile() {
+ distutils-r1_python_compile
+ find "${BUILD_DIR}" -name '*.pth' -delete || die
+}
+
+python_test() {
+ cd "${BUILD_DIR}/install$(python_get_sitedir)" || die
+ distutils_write_namespace zope
+ eunittest
+}
diff --git a/dev-python/zope-component/zope-component-7.0.ebuild b/dev-python/zope-component/zope-component-7.0.ebuild
new file mode 100644
index 000000000000..af0550e3f090
--- /dev/null
+++ b/dev-python/zope-component/zope-component-7.0.ebuild
@@ -0,0 +1,47 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_PN=${PN/-/.}
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Zope Component Architecture"
+HOMEPAGE="
+ https://pypi.org/project/zope.component/
+ https://github.com/zopefoundation/zope.component/
+"
+
+LICENSE="ZPL"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+
+RDEPEND="
+ dev-python/zope-event[${PYTHON_USEDEP}]
+ >=dev-python/zope-hookable-4.2.0[${PYTHON_USEDEP}]
+ >=dev-python/zope-interface-5.3.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/zope-configuration[${PYTHON_USEDEP}]
+ dev-python/zope-i18nmessageid[${PYTHON_USEDEP}]
+ dev-python/zope-testing[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests unittest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # strip rdep specific to namespaces
+ sed -i -e "/'setuptools'/d" setup.py || die
+}
+
+python_test() {
+ distutils_write_namespace zope
+ eunittest -s "${BUILD_DIR}/install$(python_get_sitedir)"
+}
diff --git a/dev-python/zope-configuration/Manifest b/dev-python/zope-configuration/Manifest
index 9541711f2669..a345a975fe0b 100644
--- a/dev-python/zope-configuration/Manifest
+++ b/dev-python/zope-configuration/Manifest
@@ -1 +1,2 @@
DIST zope_configuration-6.0.tar.gz 84258 BLAKE2B f0e0b918125a24b0a4ac8679c3a02e4c01b44a013c7b33a778577b4cad54c2426eaab8a572cf3cc8a92e034d88658200a9787e007712bf04e1968aa9ed2ba627 SHA512 2dd86fe8beaf1b15dc7d96ce5b037c530cc3e4427c6e2152741e6697a84b90dd06f65d0d0968d938dccdded278d8b0bbfe924abedf772f1110ef039ee3eb5f8a
+DIST zope_configuration-7.0.tar.gz 84347 BLAKE2B 3a9f30d06e87969d73b95d260b73a88d4d6bae9783e3d1ebb080892361bc64d1d1074c185239e807c55fbe96a53823142bbf40efba63f1cdc3a4f2e43cf554b0 SHA512 52a5493c9b19918f6f4ba13c798af8fc8e31b53275cd2d52c4fa1a6b4c14c580c764d92d02b8f3736df037291f3fa54fa4a34e940a649fc1ce7ee611312bc2bf
diff --git a/dev-python/zope-configuration/zope-configuration-7.0.ebuild b/dev-python/zope-configuration/zope-configuration-7.0.ebuild
new file mode 100644
index 000000000000..52eeeca9b9f7
--- /dev/null
+++ b/dev-python/zope-configuration/zope-configuration-7.0.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_PN=${PN/-/.}
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Zope Configuration Architecture"
+HOMEPAGE="
+ https://pypi.org/project/zope.configuration/
+ https://github.com/zopefoundation/zope.configuration/
+ https://zopeconfiguration.readthedocs.io/en/latest/
+"
+
+LICENSE="ZPL"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+
+RDEPEND="
+ dev-python/zope-i18nmessageid[${PYTHON_USEDEP}]
+ dev-python/zope-interface[${PYTHON_USEDEP}]
+ >=dev-python/zope-schema-4.9[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/manuel[${PYTHON_USEDEP}]
+ dev-python/zope-testing[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests unittest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # strip rdep specific to namespaces
+ sed -i -e "/'setuptools'/d" setup.py || die
+}
+
+python_test() {
+ eunittest -s "${BUILD_DIR}/install$(python_get_sitedir)/zope"
+}
diff --git a/dev-python/zope-deprecation/Manifest b/dev-python/zope-deprecation/Manifest
index 416825f2861f..254d8ceade44 100644
--- a/dev-python/zope-deprecation/Manifest
+++ b/dev-python/zope-deprecation/Manifest
@@ -1 +1,2 @@
DIST zope_deprecation-5.1.tar.gz 24453 BLAKE2B 4dc7d9639a998ba11de839145bf4fb11d3b34de29c756c87de98b833ced4a6f2de4024d7b52a4f8c9ab225bf9c459ae79656d2073b9c76a38d9d8d1397aa06e2 SHA512 77b32d3456c5456ffc36eec936b176cdec365fd4561dd2ac06c3222dd4360ef6339ba34601abb29e273eabc3562b6bcdac5627c35b8b95f083015ba118be7979
+DIST zope_deprecation-6.0.tar.gz 24480 BLAKE2B e4b87c91364db229e5bcf78331c6e9c41a9b74067895d7e0ac679768863e3699d6a7111b877e054fdd2f68040a6c64c12871150a3ee5c664d6d3637cde8c302f SHA512 4a48d689c7a4f5950bfd8d80a4fc11aa9958a3558cf7f21a132155d7f10ca95fab77ca7bf51feb0f0f439a86a7c78bc6f6521eae5d5ef4cf540b31e51437f3ca
diff --git a/dev-python/zope-deprecation/zope-deprecation-6.0.ebuild b/dev-python/zope-deprecation/zope-deprecation-6.0.ebuild
new file mode 100644
index 000000000000..0203f8e9b0fd
--- /dev/null
+++ b/dev-python/zope-deprecation/zope-deprecation-6.0.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_PN=${PN/-/.}
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Zope Deprecation Infrastructure"
+HOMEPAGE="
+ https://pypi.org/project/zope.deprecation/
+ https://github.com/zopefoundation/zope.deprecation/
+"
+
+LICENSE="ZPL"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+distutils_enable_tests unittest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # strip rdep specific to namespaces
+ sed -i -e "s:'setuptools',::" setup.py || die
+}
+
+python_test() {
+ distutils_write_namespace zope
+ eunittest -s "${BUILD_DIR}/install$(python_get_sitedir)"
+}
diff --git a/dev-python/zope-event/Manifest b/dev-python/zope-event/Manifest
index b4a425fd9d82..2b0d770ebe73 100644
--- a/dev-python/zope-event/Manifest
+++ b/dev-python/zope-event/Manifest
@@ -1 +1,2 @@
DIST zope_event-5.1.1.tar.gz 18811 BLAKE2B 26674b5b04fc4cac345f9d4bc772e0b560aad1a250c78a51c5d94d8ab2f17adf85f460ced9f1c003b7eb7ff78588a4eb34ca1a038d04606513301045ebe86221 SHA512 169e741588ac9e7c36651009a64135f5de501fe273721ee014353f4fba099bdbdabc7b8c3d641ec5cfd505963455bde822b57055a97d59128a47bad4fe00c510
+DIST zope_event-6.0.tar.gz 18731 BLAKE2B 51a0f274ee07b0044e25f629371c3b91870546663e5f918c98ebfebafa7952b39aa6ced106b613808d590909b969fc62189d9a452b780e57ed722686ad0106ee SHA512 268e494a578b00bce9ed9df1b3dae24e5f6650f6c61b967a3d9eab542ef086ecfe242d1814edf0bb7501ab18d880613135bbb6d20ecd2e53ce8c91da1603c449
diff --git a/dev-python/zope-event/zope-event-6.0.ebuild b/dev-python/zope-event/zope-event-6.0.ebuild
new file mode 100644
index 000000000000..f8d0a84f2529
--- /dev/null
+++ b/dev-python/zope-event/zope-event-6.0.ebuild
@@ -0,0 +1,26 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_PN=${PN/-/.}
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Event publishing / dispatch, used by Zope Component Architecture"
+HOMEPAGE="
+ https://pypi.org/project/zope.event/
+ https://github.com/zopefoundation/zope.event/
+"
+
+LICENSE="ZPL"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
+
+distutils_enable_tests unittest
+
+python_test() {
+ eunittest -s "${BUILD_DIR}/install$(python_get_sitedir)/zope"
+}
diff --git a/dev-python/zope-exceptions/Manifest b/dev-python/zope-exceptions/Manifest
index ce86ab27c71c..19dafdb320df 100644
--- a/dev-python/zope-exceptions/Manifest
+++ b/dev-python/zope-exceptions/Manifest
@@ -1 +1,2 @@
DIST zope.exceptions-5.2.tar.gz 31520 BLAKE2B 6a3ed767e2fcba1f012963c22f9de25948ba7a14674490f0d315321261faa0aaf15ffa813df764d8d293ef43d6fd24fceb4def2b70280741858ec4ec02e595e2 SHA512 55174507bfc24a2eb78d32feeaf9775f78e085fedda74ef3b3a10a782daefa2539769a18bc6304d489fe77b3b22a4636a3233641cbd64f2007940ecedeabc8d6
+DIST zope_exceptions-6.0.tar.gz 32036 BLAKE2B f70c5dba1df9b606c07ab33796fe300f2d5eec87c8b7f6a8d444cfdc29667eb0e1099c811c41150d347756fe350ee14463f953b1e7be905080d9bad7b6d8fb3a SHA512 ea292bad4b07f267e5c1eea0d4e3ae773cb653f6117cc9d3db4acedacac3e51a836a71a1a85f5e7167606d0e8cbb66fd3ef6b613ed624eeaa6dc89f92cd60429
diff --git a/dev-python/zope-exceptions/zope-exceptions-6.0.ebuild b/dev-python/zope-exceptions/zope-exceptions-6.0.ebuild
new file mode 100644
index 000000000000..226f67bf47df
--- /dev/null
+++ b/dev-python/zope-exceptions/zope-exceptions-6.0.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_PN=${PN/-/.}
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="General purpose exceptions for Zope packages"
+HOMEPAGE="
+ https://pypi.org/project/zope.exceptions/
+ https://github.com/zopefoundation/zope.exceptions/
+"
+
+LICENSE="ZPL"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86"
+
+RDEPEND="
+ dev-python/zope-interface[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests unittest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # strip rdep specific to namespaces
+ sed -i -e "/'setuptools'/d" setup.py || die
+}
+
+python_test() {
+ distutils_write_namespace zope
+ eunittest -s "${BUILD_DIR}/install$(python_get_sitedir)"
+}
diff --git a/dev-python/zope-hookable/Manifest b/dev-python/zope-hookable/Manifest
index 6844c77727c0..6e60a9695f6c 100644
--- a/dev-python/zope-hookable/Manifest
+++ b/dev-python/zope-hookable/Manifest
@@ -1 +1,2 @@
DIST zope_hookable-7.0.tar.gz 21392 BLAKE2B e6b2921f68be1f5156fede45db2a71e6394785bd5e0a4aff86a5cf943b790e0d26163391bd448739ad074e8b792b37334e48c05086268509d980035bac260066 SHA512 f927a0e15aef9adca72f25c21f2c374d6235d8e3abca9d5d9832e9c8d9b70accebfec2cac339ae360d142e69f69f920c7b2bdbbf230c975fe2c362887380a34d
+DIST zope_hookable-8.0.tar.gz 20436 BLAKE2B 9cb17318b9745c8ba94d1c56a70636bbd0644be0c3d16fd099aa58cae68dcb7c57dd70ce3fa861855586b5b7426970e635598885beef2e51f559ba815b2e2ef4 SHA512 ae8c0779532e0ced1713a94228e82db440c1e67974b8837788bb56858106c365750bab9611b4b4754ac91dbf4b0ff630fcf6843b380d099fcda7297e4157ccbd
diff --git a/dev-python/zope-hookable/zope-hookable-8.0.ebuild b/dev-python/zope-hookable/zope-hookable-8.0.ebuild
new file mode 100644
index 000000000000..a30309797952
--- /dev/null
+++ b/dev-python/zope-hookable/zope-hookable-8.0.ebuild
@@ -0,0 +1,42 @@
+# Copyright 2022-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_{11..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Efficient creation of 'hookable' objects"
+HOMEPAGE="
+ https://pypi.org/project/zope.hookable/
+ https://github.com/zopefoundation/zope.hookable/
+"
+
+LICENSE="ZPL"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ test? (
+ dev-python/zope-testing[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests unittest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # strip rdep specific to namespaces
+ sed -i -e "/'setuptools'/d" setup.py || die
+}
+
+python_test() {
+ eunittest -s "${BUILD_DIR}/install$(python_get_sitedir)/zope"
+}
diff --git a/dev-python/zope-i18nmessageid/Manifest b/dev-python/zope-i18nmessageid/Manifest
index 1515daf1bd96..10f0d8535e4b 100644
--- a/dev-python/zope-i18nmessageid/Manifest
+++ b/dev-python/zope-i18nmessageid/Manifest
@@ -1 +1,2 @@
DIST zope_i18nmessageid-7.0.tar.gz 27929 BLAKE2B fbe19aec71001b4779a390cf0fc596e86667e149900cf04eebb4d2b50a3cdad8f1bbd0f81c88e8841534540dacf4fed3ef91a1519d3364b32132c7c5f833f8c1 SHA512 91256e68fab4db59b6220f67ef42e09896f3643bea472218fbeefdea248a52fa018a7e6bef4777b5a02aa878195cc3e51d0408e96fcaef02747de4cb0fc0add6
+DIST zope_i18nmessageid-8.0.tar.gz 26924 BLAKE2B 929b5df9de131ca5c5951a35f48b1092aa768c7a67cb9608dddf51bd2b7d1db4702d70591af3fb3fcdd9ac7db881245c89b69460d4a438ac3c0a3bdb8483d807 SHA512 a996ff5cc03c48fd8d203e7a67fce463958d404bbaa31d27103de2b60b847217f5f5e53e8fe4887cf8df36bf3854c5700466630eb5958c20eab7079874ad2285
diff --git a/dev-python/zope-i18nmessageid/zope-i18nmessageid-8.0.ebuild b/dev-python/zope-i18nmessageid/zope-i18nmessageid-8.0.ebuild
new file mode 100644
index 000000000000..7cf16132bd73
--- /dev/null
+++ b/dev-python/zope-i18nmessageid/zope-i18nmessageid-8.0.ebuild
@@ -0,0 +1,36 @@
+# 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="Zope support for i18nmessageid (tagging source of i18n strings)"
+HOMEPAGE="
+ https://pypi.org/project/zope.i18nmessageid/
+ https://github.com/zopefoundation/zope.i18nmessageid/
+"
+
+LICENSE="ZPL"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+
+distutils_enable_tests unittest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # strip rdep specific to namespaces
+ sed -i -e "s:'setuptools'::" setup.py || die
+ # force failure if extension build fails
+ sed -i -e "/'build_ext':/d" setup.py || die
+}
+
+python_test() {
+ eunittest -s "${BUILD_DIR}/install$(python_get_sitedir)/zope"
+}
diff --git a/dev-python/zope-interface/Manifest b/dev-python/zope-interface/Manifest
index 55d86cf0c760..4b0fe497f37c 100644
--- a/dev-python/zope-interface/Manifest
+++ b/dev-python/zope-interface/Manifest
@@ -1 +1,2 @@
DIST zope.interface-7.2.tar.gz 252960 BLAKE2B be79d583c146d4b33213286696f929ce3f753aa9c966ecffe46c5ef508f1422b521509642a2f6475c0f1ddab3b70345ec31a4a37bf4b811ff3c6760ffc506c9d SHA512 eb927395bd4c4b2567dfeabad9a88bf91cc0cc0838289e96d7452e6a7c9ea56237a1d1f492703eac71ac0957dc0d3e23f57ceec55ff82fcffbbf413e09868a9c
+DIST zope_interface-8.0.tar.gz 253397 BLAKE2B 24daea2986375c68c44eb47ca4debecefc4c30b55ac21d5729074fe4c08b8c328b5f64a041f194901b4f7fb4bdcea8c363f34e2df473dcb05e9c855622311466 SHA512 d7628614649db2e32a4b7e294bb5bcadeb57d0fb45cddb568aa6ab2a2803832387e08d5777d193bf0853f9d3fe769ae98fa4bb5620f177e23f2a963b6c98d2dd
diff --git a/dev-python/zope-interface/zope-interface-8.0.ebuild b/dev-python/zope-interface/zope-interface-8.0.ebuild
new file mode 100644
index 000000000000..1191cffae845
--- /dev/null
+++ b/dev-python/zope-interface/zope-interface-8.0.ebuild
@@ -0,0 +1,53 @@
+# 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="Interfaces for Python"
+HOMEPAGE="
+ https://github.com/zopefoundation/zope.interface/
+ https://pypi.org/project/zope.interface/
+"
+
+LICENSE="ZPL"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
+IUSE="+native-extensions test"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ test? (
+ dev-python/zope-event[${PYTHON_USEDEP}]
+ dev-python/zope-testing[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests unittest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # strip rdep specific to namespaces
+ sed -i -e "/'setuptools'/d" setup.py || die
+ # force failure if extension build fails
+ sed -i -e "/'build_ext':/d" setup.py || die
+ if ! use native-extensions; then
+ sed -i -e '/ext_modules=/d' setup.py || die
+ fi
+}
+
+python_test() {
+ local -x PURE_PYTHON=0
+ if ! use native-extensions || [[ ${EPYTHON} == pypy3* ]]; then
+ PURE_PYTHON=1
+ fi
+
+ eunittest -s "${BUILD_DIR}/install$(python_get_sitedir)/zope"
+}
diff --git a/dev-python/zope-schema/Manifest b/dev-python/zope-schema/Manifest
index a6b340706759..21f0e0105df4 100644
--- a/dev-python/zope-schema/Manifest
+++ b/dev-python/zope-schema/Manifest
@@ -1,2 +1,2 @@
-DIST zope.schema-7.0.1.tar.gz 108737 BLAKE2B ca0d280186ebdaf53abc28bdb1684e31f97e4f4f9d235604702c2652bd4fa0a027d947f375ecee7aba598f072ce140908aaab3b107d6c743d6ee929db5de2fb5 SHA512 a8da9ac2e7239d15ed6cef83b4f500bca989c9ef2b7f1cd06ce532c260a8b8488b6fa42a6b2cfaeee505db87d3235f81815dc7eb80401c9e482141f8bf717e62
DIST zope_schema-7.1.tar.gz 109864 BLAKE2B 26dccb457128df88700354f0b10895fb898e082010730c714ae8d116d5f85d66cefb5274a6202357a3316b8ae40ecf930fde1a2cd5a01d158926cef6732de822 SHA512 4a462e3e5897377a07f75f2f07a8fc116e7ccf94c4660207d2d0be0c5883f1eb339ec93489958da3019fe150459762a4d62062ac876b1dadbf7449e7899a18ca
+DIST zope_schema-8.0.tar.gz 109823 BLAKE2B d3f4b73037c8667ac494f1baa777797ad0f39e6c58367f3b222eaced9acc9156305503e2362df1ebca3dda5777d5bc6d05203da868482cb40cc3bafcc7ad4c81 SHA512 bc1dc2cfbbb5cf91627003d1cfd67c355d7a501935ab87cb73a745c3743be55a67369090d4286018a5e027774dd893532fd57636b62b331069bbee5d6ae7ec23
diff --git a/dev-python/zope-schema/zope-schema-7.1.ebuild b/dev-python/zope-schema/zope-schema-7.1.ebuild
index 0504bc8bb9e7..809dfcabc240 100644
--- a/dev-python/zope-schema/zope-schema-7.1.ebuild
+++ b/dev-python/zope-schema/zope-schema-7.1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="ZPL"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+KEYWORDS="amd64 ~arm arm64 ~ppc64 ~riscv x86"
RDEPEND="
dev-python/zope-event[${PYTHON_USEDEP}]
diff --git a/dev-python/zope-schema/zope-schema-7.0.1.ebuild b/dev-python/zope-schema/zope-schema-8.0.ebuild
index 8f64d8b58dfa..6cf541ef5f59 100644
--- a/dev-python/zope-schema/zope-schema-7.0.1.ebuild
+++ b/dev-python/zope-schema/zope-schema-8.0.ebuild
@@ -4,7 +4,6 @@
EAPI=8
DISTUTILS_USE_PEP517=setuptools
-PYPI_NO_NORMALIZE=1
PYPI_PN=${PN/-/.}
PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
@@ -18,12 +17,11 @@ HOMEPAGE="
LICENSE="ZPL"
SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~ppc64 ~riscv x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
RDEPEND="
dev-python/zope-event[${PYTHON_USEDEP}]
>=dev-python/zope-interface-5.0.0[${PYTHON_USEDEP}]
- !dev-python/namespace-zope
"
BDEPEND="
test? (
@@ -35,18 +33,12 @@ BDEPEND="
distutils_enable_tests unittest
src_prepare() {
- # strip rdep specific to namespaces
- sed -i -e "/'setuptools'/d" setup.py || die
distutils-r1_src_prepare
-}
-python_compile() {
- distutils-r1_python_compile
- find "${BUILD_DIR}" -name '*.pth' -delete || die
+ # strip rdep specific to namespaces
+ sed -i -e "/'setuptools'/d" setup.py || die
}
python_test() {
- cd "${BUILD_DIR}/install$(python_get_sitedir)" || die
- distutils_write_namespace zope
- eunittest
+ eunittest -s "${BUILD_DIR}/install$(python_get_sitedir)/zope"
}
diff --git a/dev-python/zope-testing/Manifest b/dev-python/zope-testing/Manifest
index f49be8dc018a..3a66e5817011 100644
--- a/dev-python/zope-testing/Manifest
+++ b/dev-python/zope-testing/Manifest
@@ -1 +1,2 @@
DIST zope_testing-5.1.tar.gz 42344 BLAKE2B 5a4ca515dcdc80331ddfb731ea0152e4f1746aa6c097415bdc238d4d330523960aa211ffadf5eb76b85b483a21ee1d28da7b0068f05c9c202a3aeca4af61bc80 SHA512 e45053b2e3a8b3ecbe54bc18f1b6f4c274177aaaebd1385eac979bb245c8c25e8db28cb111d1d1a363bf9e2a153df97824074168a39b6c371ed6f68d902b40d2
+DIST zope_testing-6.0.tar.gz 42462 BLAKE2B 8ea0b46417d1227a5a13fd782ebbd497dc208441ebb224d621c560d658dff50e3af74175cb4b339c5c53cb14c9e5a99146b1aa262488380429ed2c3269a372c4 SHA512 a2fe987a308075e611d585e3cba1d62ada883be2e44fccb59fbd4aa04095dd1774f8589f7a2f76211ffe3058da01799e105c53a7fe9d1bbba0bf88e85b85587a
diff --git a/dev-python/zope-testing/files/zope-testing-6.0-test.patch b/dev-python/zope-testing/files/zope-testing-6.0-test.patch
new file mode 100644
index 000000000000..04767ac8e3f4
--- /dev/null
+++ b/dev-python/zope-testing/files/zope-testing-6.0-test.patch
@@ -0,0 +1,52 @@
+From da6818492f66cb0512a2de69f1fdb15de0d07ed2 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
+Date: Sat, 13 Sep 2025 07:51:46 +0200
+Subject: [PATCH] Use a more unique name for fake module doctests
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Change the tested "fake" module name from `fake` to `__fake__` to reduce
+the risk of collisions with real modules. This fixes test failures
+when the package is tested in a system environment where `fake.py`
+package is installed.
+
+Signed-off-by: Michał Górny <mgorny@gentoo.org>
+---
+ src/zope/testing/module.txt | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/zope/testing/module.txt b/src/zope/testing/module.txt
+index 6134ca2..555b526 100644
+--- a/src/zope/testing/module.txt
++++ b/src/zope/testing/module.txt
+@@ -68,13 +68,13 @@ Importing
+ Let's now imagine a more complicated example, were we actually want to
+ be able to import the fake module as well:
+
+- >>> setUp(test, 'fake')
++ >>> setUp(test, '__fake__')
+ >>> a = 'Hello world'
+
+ The import should not fail:
+
+- >>> import fake
+- >>> fake.a
++ >>> import __fake__
++ >>> __fake__.a
+ 'Hello world'
+
+ Let's tear it down again:
+@@ -87,10 +87,10 @@ Let's tear it down again:
+ .. doctest::
+ :pyversion: < 3
+
+- >>> import fake
++ >>> import __fake__
+ Traceback (most recent call last):
+ ...
+- ModuleNotFoundError: No module named 'fake'
++ ModuleNotFoundError: No module named '__fake__'
+
+ If we enter a dotted name, it will actually try to place the fake
+ module in that dotted name:
diff --git a/dev-python/zope-testing/zope-testing-6.0.ebuild b/dev-python/zope-testing/zope-testing-6.0.ebuild
new file mode 100644
index 000000000000..579434e48e8e
--- /dev/null
+++ b/dev-python/zope-testing/zope-testing-6.0.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_PN=${PN/-/.}
+PYTHON_TESTED=( python3_{9,10,11,12,13} pypy3 )
+# py3.14 seems to have had some doctest changes recently
+PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Zope testing helpers"
+HOMEPAGE="
+ https://pypi.org/project/zope.testing/
+ https://github.com/zopefoundation/zope.testing/
+"
+
+LICENSE="ZPL"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
+
+distutils_enable_tests unittest
+
+src_prepare() {
+ local PATCHES=(
+ # https://github.com/zopefoundation/zope.testing/pull/54
+ "${FILESDIR}/${P}-test.patch"
+ )
+
+ distutils-r1_src_prepare
+
+ # strip rdep specific to namespaces
+ # https://github.com/zopefoundation/zope.testing/pull/53
+ sed -i -e "/'setuptools'/d" setup.py || die
+}
+
+python_test() {
+ if ! has "${EPYTHON/./_}" "${PYTHON_TESTED[@]}"; then
+ einfo "Skipping tests on ${EPYTHON}"
+ return
+ fi
+
+ "${EPYTHON}" - <<-EOF || die
+ import sys
+ import unittest
+
+ from zope.testing.tests import test_suite
+
+ runner = unittest.TextTestRunner(verbosity=2)
+ result = runner.run(test_suite())
+ sys.exit(0 if result.wasSuccessful() else 1)
+ EOF
+}
diff --git a/dev-python/zstandard/Manifest b/dev-python/zstandard/Manifest
index a39812850990..31bd6ef05216 100644
--- a/dev-python/zstandard/Manifest
+++ b/dev-python/zstandard/Manifest
@@ -1,2 +1,3 @@
DIST python-zstandard-0.23.0.gh.tar.gz 732448 BLAKE2B 920b53dc4a221059411062229ddf0ff51c478c2212e5599dec21298fef8e30b7a160c2f7d958ef95251ce5fb1357eaf4a8c3e4eca37304ef7a43176f723f3394 SHA512 06d799f8c5e89e5cc2f5b8ff100aeb3c3ff938757ce39852affb075487f65406d7d3f6d611b1864ec025fff86a51bf15b80c8af6260beda050b4fef5b7edd206
DIST python-zstandard-0.24.0.gh.tar.gz 751192 BLAKE2B 6bf54d96b3cbc06ff052fc3b1d373b745ac325dd61ee958c2dfa890533f0b164b23f5e9df0580525dab4c56920d48724a2614c05d8f06b1607fe31752063ea57 SHA512 9a06db18a3ac5d8583b5c28a27f93c9cb3310308a5cdf71df4324c442b1a2960d8df5ae47d38d765e6bb33e8f6d73ffad26f3c27d9649802a292f74d7933f00d
+DIST python-zstandard-0.25.0.gh.tar.gz 795455 BLAKE2B 6f5410b66b90cd737530259328d4abd04129a249f9b508db2e5ccd2cb028b22f13f0659b16604afe0f9c5026b282a0c5eb4a1faaa6df4946f9b99319d06ef825 SHA512 1ca492bcb39c22ec9eb1877799172de4a04033df364f4271b658243c0a9816ac584df0df85ebe967a2e2b98a10db90b66e7b050ecb8bfa9f9c7ad50f2f87921a
diff --git a/dev-python/zstandard/zstandard-0.25.0.ebuild b/dev-python/zstandard/zstandard-0.25.0.ebuild
new file mode 100644
index 000000000000..5d8a3e55b608
--- /dev/null
+++ b/dev-python/zstandard/zstandard-0.25.0.ebuild
@@ -0,0 +1,74 @@
+# 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
+
+MY_P=python-zstandard-${PV}
+DESCRIPTION="Zstandard Bindings for Python"
+HOMEPAGE="
+ https://github.com/indygreg/python-zstandard/
+ https://pypi.org/project/zstandard/
+"
+SRC_URI="
+ https://github.com/indygreg/python-zstandard/archive/${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
+
+DEPEND="
+ >=app-arch/zstd-1.5.7:=
+"
+RDEPEND="
+ ${DEPEND}
+ $(python_gen_cond_dep '
+ >=dev-python/cffi-1.14.0-r2:=[${PYTHON_USEDEP}]
+ ' 'python*')
+"
+
+EPYTEST_PLUGINS=( hypothesis )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ # the C backend is repeatedly broken, so force CFFI instead
+ sed -e '/PYTHON_ZSTANDARD_IMPORT_POLICY/s:default:cffi:' \
+ -i zstandard/__init__.py || die
+ # unbundle zstd
+ rm zstd/* || die
+ > zstd/zstd.c || die
+ # it does random preprocessing on that, so we can't use #include
+ local f
+ for f in zdict.h zstd.h zstd_errors.h; do
+ cp "${ESYSROOT}/usr/include/${f}" "zstd/${f}" || die
+ done
+ sed -i -e '/include_dirs/a libraries=["zstd"],' make_cffi.py || die
+
+ distutils-r1_src_prepare
+
+ DISTUTILS_ARGS=(
+ --no-c-backend
+ )
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # unreliable, fails on x86
+ tests/test_data_structures.py::TestCompressionParameters::test_estimated_compression_context_size
+ # check for bundled zstd version, fails on other system zstd
+ tests/test_module_attributes.py::TestModuleAttributes::test_version
+ )
+ local -x ZSTD_SLOW_TESTS=1
+
+ rm -rf zstandard || die
+ epytest
+}