summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-09-05 08:13:23 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-09-05 08:13:23 +0000
commit3ceeeb71476e4e7c29c37bbd1a2b3a97e34761e2 (patch)
treecb83708f1390fccc0f8521b61b63a2d9ea7bd752 /dev-python
parent5ce2273fa2607278dbc7825cd7f518b2f2c8561a (diff)
downloadbaldeagleos-repo-3ceeeb71476e4e7c29c37bbd1a2b3a97e34761e2.tar.gz
baldeagleos-repo-3ceeeb71476e4e7c29c37bbd1a2b3a97e34761e2.tar.xz
baldeagleos-repo-3ceeeb71476e4e7c29c37bbd1a2b3a97e34761e2.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/a2wsgi/a2wsgi-1.10.10.ebuild2
-rw-r--r--dev-python/accessible-pygments/accessible-pygments-0.0.5.ebuild2
-rw-r--r--dev-python/aiodns/aiodns-3.5.0.ebuild2
-rw-r--r--dev-python/aiofiles/aiofiles-24.1.0.ebuild2
-rw-r--r--dev-python/aiohappyeyeballs/aiohappyeyeballs-2.6.1.ebuild14
-rw-r--r--dev-python/aiohappyeyeballs/files/aiohappyeyeballs-2.6.1-pytest-asyncio-1.patch30
-rw-r--r--dev-python/aiohttp-cors/aiohttp-cors-0.8.1.ebuild2
-rw-r--r--dev-python/aiohttp-theme/aiohttp-theme-0.1.7.ebuild2
-rw-r--r--dev-python/aiohttp/aiohttp-3.11.18.ebuild2
-rw-r--r--dev-python/aiohttp/aiohttp-3.12.13.ebuild2
-rw-r--r--dev-python/aiorpcx/aiorpcx-0.23.1.ebuild11
-rw-r--r--dev-python/aiorpcx/aiorpcx-0.24.ebuild7
-rw-r--r--dev-python/aiorpcx/aiorpcx-0.25.0.ebuild7
-rw-r--r--dev-python/aiorpcx/files/aiorpcx-0.23.1-pytest-asyncio-1-more.patch73
-rw-r--r--dev-python/aiorpcx/files/aiorpcx-0.25.0-pytest-asyncio-1.patch152
-rw-r--r--dev-python/aiosignal/aiosignal-1.4.0.ebuild2
-rw-r--r--dev-python/aiosmtpd/aiosmtpd-1.4.6.ebuild2
-rw-r--r--dev-python/aiounittest/aiounittest-1.5.0-r1.ebuild2
-rw-r--r--dev-python/alabaster/alabaster-1.0.0.ebuild2
-rw-r--r--dev-python/annotated-types/annotated-types-0.7.0.ebuild2
-rw-r--r--dev-python/anyio/anyio-4.10.0.ebuild3
-rw-r--r--dev-python/anyio/anyio-4.8.0-r3.ebuild2
-rw-r--r--dev-python/apipkg/apipkg-3.0.2.ebuild2
-rw-r--r--dev-python/appdirs/appdirs-1.4.4-r3.ebuild2
-rw-r--r--dev-python/apprise/apprise-1.9.4.ebuild2
-rw-r--r--dev-python/apsw/apsw-3.50.3.0.ebuild2
-rw-r--r--dev-python/argcomplete/argcomplete-3.6.2.ebuild2
-rw-r--r--dev-python/argh/argh-0.31.3.ebuild2
-rw-r--r--dev-python/argon2-cffi-bindings/argon2-cffi-bindings-21.2.0-r1.ebuild2
-rw-r--r--dev-python/argon2-cffi-bindings/argon2-cffi-bindings-25.1.0.ebuild2
-rw-r--r--dev-python/argon2-cffi/argon2-cffi-25.1.0.ebuild2
-rw-r--r--dev-python/arrow/arrow-1.3.0.ebuild2
-rw-r--r--dev-python/asgiref/asgiref-3.9.1.ebuild2
-rw-r--r--dev-python/asn1crypto/asn1crypto-1.5.1_p20231012.ebuild2
-rw-r--r--dev-python/astor/astor-0.8.1-r2.ebuild2
-rw-r--r--dev-python/astroid/astroid-3.3.11.ebuild2
-rw-r--r--dev-python/asttokens/asttokens-3.0.0-r1.ebuild2
-rw-r--r--dev-python/async-timeout/async-timeout-4.0.3.ebuild4
-rw-r--r--dev-python/async-timeout/async-timeout-5.0.1.ebuild2
-rw-r--r--dev-python/atomicwrites/atomicwrites-1.4.1.ebuild2
-rw-r--r--dev-python/atpublic/atpublic-6.0.1.ebuild2
-rw-r--r--dev-python/attrs/attrs-25.3.0.ebuild2
-rw-r--r--dev-python/autobahn/autobahn-24.4.2.ebuild15
-rw-r--r--dev-python/autobahn/files/autobahn-24.4.2-pytest-asyncio-1.patch298
-rw-r--r--dev-python/automat/automat-25.4.16.ebuild2
-rw-r--r--dev-python/autopage/autopage-0.5.2.ebuild2
-rw-r--r--dev-python/autopep8/autopep8-2.3.2.ebuild2
-rw-r--r--dev-python/babel/babel-2.17.0.ebuild2
-rw-r--r--dev-python/backports-tarfile/backports-tarfile-1.2.0.ebuild2
-rw-r--r--dev-python/bcrypt/bcrypt-4.3.0.ebuild2
-rw-r--r--dev-python/beautifulsoup4/beautifulsoup4-4.13.4.ebuild2
-rw-r--r--dev-python/betamax/betamax-0.9.0.ebuild2
-rw-r--r--dev-python/black/black-24.10.0.ebuild2
-rw-r--r--dev-python/black/black-25.1.0.ebuild2
-rw-r--r--dev-python/bleach/bleach-6.2.0.ebuild2
-rw-r--r--dev-python/bleak/Manifest1
-rw-r--r--dev-python/bleak/bleak-1.1.0.ebuild51
-rw-r--r--dev-python/bleak/metadata.xml10
-rw-r--r--dev-python/blinker/blinker-1.9.0.ebuild2
-rw-r--r--dev-python/blockbuster/blockbuster-1.5.25.ebuild2
-rw-r--r--dev-python/boltons/boltons-25.0.0.ebuild2
-rw-r--r--dev-python/boolean-py/boolean-py-5.0.ebuild2
-rw-r--r--dev-python/boto3/Manifest3
-rw-r--r--dev-python/boto3/boto3-1.39.14.ebuild2
-rw-r--r--dev-python/boto3/boto3-1.40.1.ebuild2
-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/botocore/Manifest3
-rw-r--r--dev-python/botocore/botocore-1.39.14.ebuild2
-rw-r--r--dev-python/botocore/botocore-1.40.1.ebuild2
-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/bottle/bottle-0.12.25-r1.ebuild4
-rw-r--r--dev-python/bottle/bottle-0.13.3.ebuild2
-rw-r--r--dev-python/bottle/bottle-0.13.4.ebuild2
-rw-r--r--dev-python/bracex/bracex-2.6.ebuild2
-rw-r--r--dev-python/breathe/breathe-4.36.0.ebuild2
-rw-r--r--dev-python/brotlicffi/brotlicffi-1.1.0.0.ebuild2
-rw-r--r--dev-python/build/build-1.2.2_p1-r2.ebuild2
-rw-r--r--dev-python/cachecontrol/cachecontrol-0.14.3.ebuild2
-rw-r--r--dev-python/cachetools/cachetools-6.1.0.ebuild2
-rw-r--r--dev-python/cairocffi/cairocffi-1.7.1.ebuild2
-rw-r--r--dev-python/calver/calver-2025.4.17.ebuild2
-rw-r--r--dev-python/cattrs/cattrs-25.1.1.ebuild2
-rw-r--r--dev-python/cbor2/cbor2-5.6.5.ebuild2
-rw-r--r--dev-python/cerberus/cerberus-1.3.7.ebuild2
-rw-r--r--dev-python/cffi/cffi-1.17.1.ebuild2
-rw-r--r--dev-python/characteristic/characteristic-14.3.0-r4.ebuild2
-rw-r--r--dev-python/chardet/chardet-5.2.0.ebuild2
-rw-r--r--dev-python/charset-normalizer/charset-normalizer-3.4.2.ebuild2
-rw-r--r--dev-python/cheroot/cheroot-10.0.1.ebuild2
-rw-r--r--dev-python/cherrypy/cherrypy-18.10.0.ebuild2
-rw-r--r--dev-python/click-default-group/click-default-group-1.2.4.ebuild2
-rw-r--r--dev-python/click/click-8.2.1.ebuild2
-rw-r--r--dev-python/cliff/cliff-4.10.0.ebuild2
-rw-r--r--dev-python/cloudpickle/cloudpickle-3.1.1.ebuild2
-rw-r--r--dev-python/cmd2/cmd2-2.6.2.ebuild2
-rw-r--r--dev-python/colorama/colorama-0.4.6.ebuild2
-rw-r--r--dev-python/colorclass/colorclass-2.2.2-r1.ebuild2
-rw-r--r--dev-python/comm/comm-0.2.3.ebuild2
-rw-r--r--dev-python/commentjson/commentjson-0.9.0-r2.ebuild2
-rw-r--r--dev-python/commonmark/commonmark-0.9.1-r1.ebuild2
-rw-r--r--dev-python/configobj/configobj-5.0.9.ebuild2
-rw-r--r--dev-python/configshell-fb/configshell-fb-2.0.2.ebuild2
-rw-r--r--dev-python/configupdater/configupdater-3.2.ebuild2
-rw-r--r--dev-python/constantly/constantly-23.10.4.ebuild2
-rw-r--r--dev-python/contourpy/contourpy-1.3.2.ebuild2
-rw-r--r--dev-python/cookies/cookies-2.2.1-r2.ebuild2
-rw-r--r--dev-python/coverage/coverage-7.9.1.ebuild2
-rw-r--r--dev-python/cppy/cppy-1.3.1.ebuild2
-rw-r--r--dev-python/cryptography/Manifest2
-rw-r--r--dev-python/cryptography/cryptography-45.0.7.ebuild (renamed from dev-python/cryptography/cryptography-45.0.5.ebuild)0
-rw-r--r--dev-python/cssselect/cssselect-1.3.0.ebuild2
-rw-r--r--dev-python/cycler/cycler-0.12.1.ebuild2
-rw-r--r--dev-python/cython-test-exception-raiser/cython-test-exception-raiser-1.0.2-r1.ebuild2
-rw-r--r--dev-python/cython/cython-3.1.2-r1.ebuild2
-rw-r--r--dev-python/dbus-fast/dbus-fast-2.44.3.ebuild2
-rw-r--r--dev-python/dbus-python/dbus-python-1.4.0.ebuild2
-rw-r--r--dev-python/ddt/ddt-1.7.2.ebuild2
-rw-r--r--dev-python/decorator/decorator-5.2.1.ebuild2
-rw-r--r--dev-python/deepdiff/Manifest2
-rw-r--r--dev-python/deepdiff/deepdiff-8.6.1.ebuild (renamed from dev-python/deepdiff/deepdiff-8.6.0.ebuild)3
-rw-r--r--dev-python/deepmerge/deepmerge-2.0.ebuild2
-rw-r--r--dev-python/defusedxml/defusedxml-0.7.1-r1.ebuild2
-rw-r--r--dev-python/defusedxml/defusedxml-0.8.0_rc2.ebuild2
-rw-r--r--dev-python/dependency-groups/dependency-groups-1.3.1.ebuild2
-rw-r--r--dev-python/deprecated/deprecated-1.2.18-r1.ebuild2
-rw-r--r--dev-python/deprecation/deprecation-2.1.0-r1.ebuild2
-rw-r--r--dev-python/dictdiffer/dictdiffer-0.9.0-r1.ebuild2
-rw-r--r--dev-python/dill/dill-0.4.0.ebuild2
-rw-r--r--dev-python/dirty-equals/dirty-equals-0.9.0.ebuild2
-rw-r--r--dev-python/discid/Manifest1
-rw-r--r--dev-python/discid/discid-1.2.0-r1.ebuild40
-rw-r--r--dev-python/diskcache/diskcache-5.6.3.ebuild4
-rw-r--r--dev-python/distlib/distlib-0.4.0.ebuild2
-rw-r--r--dev-python/distro/distro-1.9.0.ebuild2
-rw-r--r--dev-python/dj-database-url/dj-database-url-3.0.1.ebuild2
-rw-r--r--dev-python/dj-email-url/dj-email-url-1.0.6.ebuild2
-rw-r--r--dev-python/dj-search-url/dj-search-url-0.1-r1.ebuild2
-rw-r--r--dev-python/django-cache-url/django-cache-url-3.4.5.ebuild2
-rw-r--r--dev-python/django-configurations/django-configurations-2.5.1.ebuild2
-rw-r--r--dev-python/django/Manifest14
-rw-r--r--dev-python/django/django-4.2.24.ebuild (renamed from dev-python/django/django-4.2.23.ebuild)6
-rw-r--r--dev-python/django/django-5.1.11.ebuild100
-rw-r--r--dev-python/django/django-5.1.12.ebuild (renamed from dev-python/django/django-5.2.4.ebuild)4
-rw-r--r--dev-python/django/django-5.2.6.ebuild (renamed from dev-python/django/django-5.2.5.ebuild)6
-rw-r--r--dev-python/django/files/django-4.2.24-htmlparser.patch15
-rw-r--r--dev-python/django/files/django-5.2.5-htmlparser.patch58
-rw-r--r--dev-python/django/files/django-5.2.6-htmlparser.patch13
-rw-r--r--dev-python/dnspython/Manifest1
-rw-r--r--dev-python/dnspython/dnspython-2.7.0-r1.ebuild60
-rw-r--r--dev-python/dnspython/dnspython-2.7.0.ebuild2
-rw-r--r--dev-python/dnspython/dnspython-2.8.0_rc1.ebuild61
-rw-r--r--dev-python/dnspython/metadata.xml6
-rw-r--r--dev-python/docopt/docopt-0.6.2-r5.ebuild2
-rw-r--r--dev-python/docutils-glep/docutils-glep-1.5.ebuild4
-rw-r--r--dev-python/docutils/docutils-0.21.2.ebuild2
-rw-r--r--dev-python/docutils/docutils-0.22.ebuild2
-rw-r--r--dev-python/ecdsa/ecdsa-0.19.1.ebuild2
-rw-r--r--dev-python/editables/editables-0.5.ebuild2
-rw-r--r--dev-python/elementpath/elementpath-5.0.3.ebuild2
-rw-r--r--dev-python/email-validator/email-validator-2.2.0.ebuild2
-rw-r--r--dev-python/ensurepip-pip/ensurepip-pip-25.1.1-r1.ebuild2
-rw-r--r--dev-python/ensurepip-setuptools/ensurepip-setuptools-79.0.1.ebuild2
-rw-r--r--dev-python/ensurepip-setuptools/ensurepip-setuptools-80.9.0-r1.ebuild2
-rw-r--r--dev-python/ensurepip-wheel/ensurepip-wheel-0.45.1-r1.ebuild2
-rw-r--r--dev-python/entrypoints/entrypoints-0.4.ebuild2
-rw-r--r--dev-python/ephemeral-port-reserve/ephemeral-port-reserve-1.1.4.ebuild2
-rw-r--r--dev-python/eradicate/eradicate-3.0.0.ebuild2
-rw-r--r--dev-python/exceptiongroup/exceptiongroup-1.3.0.ebuild2
-rw-r--r--dev-python/execnet/execnet-2.1.1.ebuild2
-rw-r--r--dev-python/executing/Manifest1
-rw-r--r--dev-python/executing/executing-2.2.0.ebuild2
-rw-r--r--dev-python/executing/executing-2.2.1.ebuild67
-rw-r--r--dev-python/expandvars/expandvars-1.1.1.ebuild2
-rw-r--r--dev-python/extras/extras-1.0.0-r2.ebuild2
-rw-r--r--dev-python/eyed3/eyed3-0.9.8.ebuild2
-rw-r--r--dev-python/faker/faker-37.4.2.ebuild2
-rw-r--r--dev-python/faker/faker-37.4.3.ebuild2
-rw-r--r--dev-python/fakeredis/fakeredis-2.30.3.ebuild2
-rw-r--r--dev-python/fasteners/fasteners-0.19.ebuild4
-rw-r--r--dev-python/fastjsonschema/fastjsonschema-2.21.1.ebuild2
-rw-r--r--dev-python/feedparser/feedparser-6.0.11.ebuild2
-rw-r--r--dev-python/fields/fields-5.0.0-r3.ebuild2
-rw-r--r--dev-python/filelock/filelock-3.18.0.ebuild2
-rw-r--r--dev-python/filetype/filetype-1.2.0.ebuild2
-rw-r--r--dev-python/fixtures/fixtures-4.2.5.ebuild2
-rw-r--r--dev-python/fixtures/fixtures-4.2.6.ebuild2
-rw-r--r--dev-python/flake8/flake8-7.3.0.ebuild2
-rw-r--r--dev-python/flaky/flaky-3.8.1.ebuild2
-rw-r--r--dev-python/flasgger/flasgger-0.9.7.1.ebuild2
-rw-r--r--dev-python/flask-restx/files/flask-restx-fix-flask-compat.patch147
-rw-r--r--dev-python/flask/flask-3.1.1.ebuild2
-rw-r--r--dev-python/flit-core/flit-core-3.12.0.ebuild2
-rw-r--r--dev-python/flit-scm/flit-scm-1.7.0.ebuild2
-rw-r--r--dev-python/fonttools/fonttools-4.58.4.ebuild2
-rw-r--r--dev-python/forbiddenfruit/forbiddenfruit-0.1.4.ebuild2
-rw-r--r--dev-python/fqdn/fqdn-1.5.1-r2.ebuild2
-rw-r--r--dev-python/freezegun/freezegun-1.5.3.ebuild2
-rw-r--r--dev-python/freezegun/freezegun-1.5.4.ebuild2
-rw-r--r--dev-python/frozenlist/frozenlist-1.7.0.ebuild2
-rw-r--r--dev-python/fs/fs-2.4.16-r1.ebuild2
-rw-r--r--dev-python/fsspec/Manifest1
-rw-r--r--dev-python/fsspec/fsspec-2025.9.0.ebuild60
-rw-r--r--dev-python/funcparserlib/funcparserlib-1.0.1.ebuild2
-rw-r--r--dev-python/furo/furo-2025.7.19.ebuild2
-rw-r--r--dev-python/fuzzywuzzy/fuzzywuzzy-0.18.0-r1.ebuild2
-rw-r--r--dev-python/gentoo-common/gentoo-common-1.ebuild4
-rw-r--r--dev-python/genty/genty-1.3.2-r3.ebuild2
-rw-r--r--dev-python/gitdb/gitdb-4.0.12.ebuild2
-rw-r--r--dev-python/gitpython/gitpython-3.1.45.ebuild2
-rw-r--r--dev-python/gmpy2/gmpy2-2.2.1.ebuild2
-rw-r--r--dev-python/google-api-python-client/Manifest1
-rw-r--r--dev-python/google-api-python-client/google-api-python-client-2.181.0.ebuild51
-rw-r--r--dev-python/gpep517/gpep517-19.ebuild2
-rw-r--r--dev-python/gpgmepy/gpgmepy-1.24.3.ebuild2
-rw-r--r--dev-python/greenlet/greenlet-3.2.3.ebuild2
-rw-r--r--dev-python/grpcio-status/grpcio-status-1.74.0.ebuild2
-rw-r--r--dev-python/gssapi/Manifest1
-rw-r--r--dev-python/gssapi/gssapi-1.10.0.ebuild47
-rw-r--r--dev-python/h11/h11-0.14.0.ebuild2
-rw-r--r--dev-python/h11/h11-0.16.0.ebuild2
-rw-r--r--dev-python/h2/h2-4.2.0.ebuild2
-rw-r--r--dev-python/hatch-fancy-pypi-readme/hatch-fancy-pypi-readme-25.1.0.ebuild2
-rw-r--r--dev-python/hatch-jupyter-builder/hatch-jupyter-builder-0.9.1.ebuild2
-rw-r--r--dev-python/hatch-nodejs-version/hatch-nodejs-version-0.4.0.ebuild2
-rw-r--r--dev-python/hatch-vcs/hatch-vcs-0.5.0.ebuild2
-rw-r--r--dev-python/hatchling/hatchling-1.27.0.ebuild2
-rw-r--r--dev-python/hpack/hpack-4.1.0.ebuild2
-rw-r--r--dev-python/html5lib/html5lib-1.1-r2.ebuild2
-rw-r--r--dev-python/httpbin/httpbin-0.10.2-r1.ebuild2
-rw-r--r--dev-python/httpcore/httpcore-1.0.9-r1.ebuild2
-rw-r--r--dev-python/httplib2/httplib2-0.22.0.ebuild2
-rw-r--r--dev-python/httpretty/httpretty-1.1.4-r3.ebuild2
-rw-r--r--dev-python/httptools/httptools-0.6.4.ebuild2
-rw-r--r--dev-python/httpx-socks/httpx-socks-0.10.1.ebuild2
-rw-r--r--dev-python/httpx/httpx-0.28.1-r1.ebuild2
-rw-r--r--dev-python/hypercorn/hypercorn-0.17.3.ebuild2
-rw-r--r--dev-python/hyperframe/hyperframe-6.1.0.ebuild2
-rw-r--r--dev-python/hyperlink/hyperlink-21.0.0-r1.ebuild2
-rw-r--r--dev-python/hypothesis/Manifest6
-rw-r--r--dev-python/hypothesis/hypothesis-6.135.25.ebuild2
-rw-r--r--dev-python/hypothesis/hypothesis-6.136.9.ebuild2
-rw-r--r--dev-python/hypothesis/hypothesis-6.138.13.ebuild (renamed from dev-python/hypothesis/hypothesis-6.138.3.ebuild)0
-rw-r--r--dev-python/hypothesis/hypothesis-6.138.14.ebuild (renamed from dev-python/hypothesis/hypothesis-6.138.6.ebuild)0
-rw-r--r--dev-python/hypothesis/hypothesis-6.138.7.ebuild125
-rw-r--r--dev-python/hypothesis/hypothesis-6.138.8.ebuild125
-rw-r--r--dev-python/id/id-1.5.0.ebuild2
-rw-r--r--dev-python/idna/idna-3.10.ebuild2
-rw-r--r--dev-python/imagesize/imagesize-1.4.1.ebuild2
-rw-r--r--dev-python/immutables/immutables-0.21.ebuild2
-rw-r--r--dev-python/importlib-metadata/importlib-metadata-8.7.0.ebuild2
-rw-r--r--dev-python/importlib-resources/importlib-resources-6.5.2.ebuild2
-rw-r--r--dev-python/incremental/incremental-24.7.2.ebuild2
-rw-r--r--dev-python/inflect/inflect-7.5.0.ebuild2
-rw-r--r--dev-python/ini2toml/ini2toml-0.15.ebuild2
-rw-r--r--dev-python/iniconfig/iniconfig-2.1.0.ebuild2
-rw-r--r--dev-python/inline-snapshot/inline-snapshot-0.24.0.ebuild2
-rw-r--r--dev-python/installer/installer-0.7.0.ebuild2
-rw-r--r--dev-python/iocapture/iocapture-0.1.2-r3.ebuild2
-rw-r--r--dev-python/ipykernel/ipykernel-6.29.5-r1.ebuild2
-rw-r--r--dev-python/ipykernel/ipykernel-6.30.0.ebuild2
-rw-r--r--dev-python/ipyparallel/ipyparallel-9.0.1.ebuild2
-rw-r--r--dev-python/ipython-genutils/ipython-genutils-0.2.0-r4.ebuild2
-rw-r--r--dev-python/ipython-pygments-lexers/ipython-pygments-lexers-1.1.1.ebuild2
-rw-r--r--dev-python/ipython/ipython-8.37.0.ebuild2
-rw-r--r--dev-python/ipython/ipython-9.3.0.ebuild2
-rw-r--r--dev-python/isal/isal-1.7.2-r1.ebuild2
-rw-r--r--dev-python/iso8601/iso8601-2.1.0.ebuild2
-rw-r--r--dev-python/isodate/isodate-0.6.1-r1.ebuild4
-rw-r--r--dev-python/isodate/isodate-0.7.2.ebuild2
-rw-r--r--dev-python/isoduration/isoduration-20.11.0-r1.ebuild2
-rw-r--r--dev-python/isort/isort-6.0.1.ebuild2
-rw-r--r--dev-python/itsdangerous/itsdangerous-2.2.0.ebuild2
-rw-r--r--dev-python/jaraco-classes/jaraco-classes-3.4.0.ebuild2
-rw-r--r--dev-python/jaraco-collections/jaraco-collections-5.2.1.ebuild2
-rw-r--r--dev-python/jaraco-context/jaraco-context-6.0.1-r1.ebuild2
-rw-r--r--dev-python/jaraco-envs/jaraco-envs-2.6.0.ebuild2
-rw-r--r--dev-python/jaraco-functools/jaraco-functools-4.2.1.ebuild2
-rw-r--r--dev-python/jaraco-itertools/jaraco-itertools-6.4.3.ebuild2
-rw-r--r--dev-python/jaraco-path/jaraco-path-3.7.2.ebuild2
-rw-r--r--dev-python/jaraco-test/jaraco-test-5.5.1.ebuild2
-rw-r--r--dev-python/jaraco-text/jaraco-text-4.0.0.ebuild2
-rw-r--r--dev-python/jaraco-vcs/jaraco-vcs-2.4.1.ebuild2
-rw-r--r--dev-python/jaraco-versioning/jaraco-versioning-1.1.0.ebuild2
-rw-r--r--dev-python/jedi/jedi-0.19.2.ebuild2
-rw-r--r--dev-python/jeepney/jeepney-0.9.0.ebuild2
-rw-r--r--dev-python/jinja2/jinja2-3.1.6.ebuild2
-rw-r--r--dev-python/jmespath/jmespath-1.0.1.ebuild2
-rw-r--r--dev-python/jsonpointer/jsonpointer-2.4.ebuild4
-rw-r--r--dev-python/jsonpointer/jsonpointer-3.0.0.ebuild2
-rw-r--r--dev-python/jsonschema-specifications/jsonschema-specifications-2025.4.1.ebuild2
-rw-r--r--dev-python/jsonschema/jsonschema-4.24.0.ebuild2
-rw-r--r--dev-python/jupyter-client/jupyter-client-8.6.3.ebuild2
-rw-r--r--dev-python/jupyter-core/jupyter-core-5.8.1.ebuild2
-rw-r--r--dev-python/jupyter-events/jupyter-events-0.12.0.ebuild2
-rw-r--r--dev-python/jupyter-packaging/jupyter-packaging-0.12.3.ebuild2
-rw-r--r--dev-python/jupyter-server-mathjax/jupyter-server-mathjax-0.2.6.ebuild4
-rw-r--r--dev-python/jupyter-server-terminals/jupyter-server-terminals-0.5.3.ebuild2
-rw-r--r--dev-python/jupyter-server/jupyter-server-2.16.0.ebuild2
-rw-r--r--dev-python/jupyterlab-pygments/jupyterlab-pygments-0.3.0.ebuild2
-rw-r--r--dev-python/jupyterlab/Manifest1
-rw-r--r--dev-python/jupyterlab/jupyterlab-4.4.7.ebuild75
-rw-r--r--dev-python/kerberos/kerberos-1.3.1-r2.ebuild2
-rw-r--r--dev-python/keyring/keyring-25.6.0-r1.ebuild2
-rw-r--r--dev-python/kiwisolver/kiwisolver-1.4.8.ebuild2
-rw-r--r--dev-python/knowit/knowit-0.5.11.ebuild2
-rw-r--r--dev-python/krb5/Manifest1
-rw-r--r--dev-python/krb5/krb5-0.8.0.ebuild33
-rw-r--r--dev-python/lark/lark-1.2.2.ebuild2
-rw-r--r--dev-python/lazy-object-proxy/lazy-object-proxy-1.11.0.ebuild2
-rw-r--r--dev-python/legacy-cgi/legacy-cgi-2.6.3.ebuild2
-rw-r--r--dev-python/levenshtein/levenshtein-0.27.1.ebuild2
-rw-r--r--dev-python/libevdev/libevdev-0.12.ebuild2
-rw-r--r--dev-python/license-expression/license-expression-30.4.4.ebuild2
-rw-r--r--dev-python/linkify-it-py/linkify-it-py-2.0.3.ebuild2
-rw-r--r--dev-python/lit/lit-15.0.7.ebuild2
-rw-r--r--dev-python/lit/lit-16.0.6.ebuild2
-rw-r--r--dev-python/lit/lit-17.0.6.ebuild2
-rw-r--r--dev-python/lit/lit-18.1.8.ebuild4
-rw-r--r--dev-python/lit/lit-19.1.7.ebuild2
-rw-r--r--dev-python/lit/lit-20.1.8.ebuild2
-rw-r--r--dev-python/littleutils/littleutils-0.2.4.ebuild2
-rw-r--r--dev-python/lockfile/lockfile-0.12.2-r3.ebuild2
-rw-r--r--dev-python/looseversion/looseversion-1.3.0.ebuild2
-rw-r--r--dev-python/lxml/lxml-6.0.0.ebuild2
-rw-r--r--dev-python/mako/mako-1.3.10.ebuild2
-rw-r--r--dev-python/mando/mando-0.8.2.ebuild2
-rw-r--r--dev-python/markdown-it-py/markdown-it-py-3.0.0.ebuild2
-rw-r--r--dev-python/markdown/Manifest1
-rw-r--r--dev-python/markdown/markdown-3.8.2.ebuild2
-rw-r--r--dev-python/markdown/markdown-3.9.ebuild39
-rw-r--r--dev-python/markdown2/markdown2-2.5.3.ebuild2
-rw-r--r--dev-python/markdown2/markdown2-2.5.4.ebuild2
-rw-r--r--dev-python/markupsafe/markupsafe-3.0.2.ebuild2
-rw-r--r--dev-python/matplotlib-inline/matplotlib-inline-0.1.7.ebuild2
-rw-r--r--dev-python/matplotlib/matplotlib-3.10.1.ebuild2
-rw-r--r--dev-python/matplotlib/matplotlib-3.10.3.ebuild2
-rw-r--r--dev-python/mccabe/mccabe-0.7.0.ebuild2
-rw-r--r--dev-python/mdit-py-plugins/mdit-py-plugins-0.4.2.ebuild2
-rw-r--r--dev-python/mdurl/mdurl-0.1.2.ebuild2
-rw-r--r--dev-python/meson-python/meson-python-0.18.0-r1.ebuild2
-rw-r--r--dev-python/mistune/mistune-3.1.3.ebuild2
-rw-r--r--dev-python/mkdocs-material/mkdocs-material-9.6.16.ebuild2
-rw-r--r--dev-python/mock/mock-5.2.0.ebuild2
-rw-r--r--dev-python/more-itertools/Manifest1
-rw-r--r--dev-python/more-itertools/more-itertools-10.7.0.ebuild2
-rw-r--r--dev-python/more-itertools/more-itertools-10.8.0.ebuild23
-rw-r--r--dev-python/mpmath/Manifest1
-rw-r--r--dev-python/mpmath/mpmath-1.4.0_alpha2.ebuild4
-rw-r--r--dev-python/mpmath/mpmath-1.4.0_alpha5-r1.ebuild2
-rw-r--r--dev-python/mpmath/mpmath-1.4.0_alpha8.ebuild56
-rw-r--r--dev-python/msgpack/msgpack-1.1.0.ebuild2
-rw-r--r--dev-python/msgpack/msgpack-1.1.1.ebuild2
-rw-r--r--dev-python/multidict/multidict-6.5.1.ebuild2
-rw-r--r--dev-python/multipart/Manifest1
-rw-r--r--dev-python/multipart/multipart-1.2.1.ebuild21
-rw-r--r--dev-python/munch/munch-4.0.0.ebuild2
-rw-r--r--dev-python/munkres/munkres-1.1.4-r1.ebuild2
-rw-r--r--dev-python/mypy-extensions/mypy-extensions-1.1.0.ebuild2
-rw-r--r--dev-python/mypy/mypy-1.16.1.ebuild2
-rw-r--r--dev-python/mysqlclient/mysqlclient-2.2.6.ebuild4
-rw-r--r--dev-python/mysqlclient/mysqlclient-2.2.7.ebuild2
-rw-r--r--dev-python/myst-parser/myst-parser-4.0.1-r1.ebuild2
-rw-r--r--dev-python/myst-parser/myst-parser-4.0.1.ebuild2
-rw-r--r--dev-python/nanobind/Manifest1
-rw-r--r--dev-python/nanobind/nanobind-2.9.2.ebuild63
-rw-r--r--dev-python/narwhals/Manifest1
-rw-r--r--dev-python/narwhals/narwhals-2.3.0.ebuild43
-rw-r--r--dev-python/natsort/natsort-8.4.0.ebuild2
-rw-r--r--dev-python/nbclassic/Manifest1
-rw-r--r--dev-python/nbclassic/nbclassic-1.3.2.ebuild87
-rw-r--r--dev-python/nbclient/nbclient-0.10.2.ebuild2
-rw-r--r--dev-python/nbconvert/nbconvert-7.16.6.ebuild2
-rw-r--r--dev-python/nbformat/nbformat-5.10.4.ebuild2
-rw-r--r--dev-python/nest-asyncio/nest-asyncio-1.6.0.ebuild2
-rw-r--r--dev-python/nh3/nh3-0.2.21.ebuild2
-rw-r--r--dev-python/notebook-shim/notebook-shim-0.2.4.ebuild2
-rw-r--r--dev-python/numpy/numpy-1.26.4.ebuild4
-rw-r--r--dev-python/numpy/numpy-2.2.6.ebuild2
-rw-r--r--dev-python/numpy/numpy-2.3.1.ebuild2
-rw-r--r--dev-python/numpydoc/numpydoc-1.9.0-r1.ebuild2
-rw-r--r--dev-python/objgraph/objgraph-3.6.2.ebuild2
-rw-r--r--dev-python/olefile/olefile-0.47.ebuild2
-rw-r--r--dev-python/ordered-set/ordered-set-4.1.0-r1.ebuild2
-rw-r--r--dev-python/orjson/orjson-3.10.18.ebuild2
-rw-r--r--dev-python/outcome/outcome-1.3.0_p0.ebuild2
-rw-r--r--dev-python/overrides/overrides-7.7.0-r1.ebuild2
-rw-r--r--dev-python/packaging/packaging-24.2.ebuild2
-rw-r--r--dev-python/packaging/packaging-25.0.ebuild2
-rw-r--r--dev-python/pallets-sphinx-themes/pallets-sphinx-themes-2.3.0.ebuild2
-rw-r--r--dev-python/pandocfilters/pandocfilters-1.5.1.ebuild2
-rw-r--r--dev-python/parameterized/parameterized-0.9.0.ebuild2
-rw-r--r--dev-python/paramiko/paramiko-3.5.1.ebuild2
-rw-r--r--dev-python/parso/parso-0.8.4-r1.ebuild2
-rw-r--r--dev-python/passlib/passlib-1.7.4-r3.ebuild2
-rw-r--r--dev-python/paste/paste-3.10.1.ebuild2
-rw-r--r--dev-python/pastedeploy/pastedeploy-3.1.ebuild2
-rw-r--r--dev-python/path/path-17.1.0.ebuild2
-rw-r--r--dev-python/pathspec/pathspec-0.12.1.ebuild2
-rw-r--r--dev-python/pbr/pbr-6.1.1.ebuild2
-rw-r--r--dev-python/pbs-installer/Manifest1
-rw-r--r--dev-python/pbs-installer/pbs-installer-2025.09.02.ebuild35
-rw-r--r--dev-python/pdm-backend/pdm-backend-2.4.5.ebuild2
-rw-r--r--dev-python/pebble/pebble-5.1.3.ebuild2
-rw-r--r--dev-python/pexpect/pexpect-4.9.0.ebuild2
-rw-r--r--dev-python/pickleshare/pickleshare-0.7.5-r1.ebuild2
-rw-r--r--dev-python/picobox/picobox-4.0.0.ebuild2
-rw-r--r--dev-python/pikepdf/pikepdf-9.5.2.ebuild2
-rw-r--r--dev-python/pikepdf/pikepdf-9.9.0.ebuild2
-rw-r--r--dev-python/pillow/pillow-11.2.1.ebuild2
-rw-r--r--dev-python/pip/pip-25.1.1.ebuild2
-rw-r--r--dev-python/pkgconfig/pkgconfig-1.5.5-r1.ebuild2
-rw-r--r--dev-python/pkginfo/pkginfo-1.12.1.2.ebuild2
-rw-r--r--dev-python/platformdirs/platformdirs-4.3.8.ebuild2
-rw-r--r--dev-python/plexapi/Manifest1
-rw-r--r--dev-python/plexapi/plexapi-4.17.1.ebuild37
-rw-r--r--dev-python/pluggy/pluggy-1.6.0.ebuild2
-rw-r--r--dev-python/ply/ply-3.11-r2.ebuild2
-rw-r--r--dev-python/pmw/pmw-2.1.1.ebuild4
-rw-r--r--dev-python/pocketlint/Manifest1
-rw-r--r--dev-python/pocketlint/pocketlint-0.25-r1.ebuild2
-rw-r--r--dev-python/pocketlint/pocketlint-0.26.ebuild33
-rw-r--r--dev-python/poetry-core/poetry-core-2.1.3.ebuild2
-rw-r--r--dev-python/polib/polib-1.2.0.ebuild4
-rw-r--r--dev-python/portend/portend-3.2.1.ebuild2
-rw-r--r--dev-python/pretend/pretend-1.0.9-r2.ebuild2
-rw-r--r--dev-python/prettytable/prettytable-3.16.0.ebuild2
-rw-r--r--dev-python/priority/priority-1.3.0-r1.ebuild4
-rw-r--r--dev-python/priority/priority-2.0.0-r1.ebuild2
-rw-r--r--dev-python/process-tests/process-tests-3.0.0.ebuild2
-rw-r--r--dev-python/progress/progress-1.6.1.ebuild2
-rw-r--r--dev-python/prometheus-client/prometheus-client-0.22.1.ebuild2
-rw-r--r--dev-python/prompt-toolkit/prompt-toolkit-3.0.51.ebuild2
-rw-r--r--dev-python/propcache/propcache-0.3.2.ebuild2
-rw-r--r--dev-python/protobuf/protobuf-6.31.1.ebuild2
-rw-r--r--dev-python/psutil/psutil-7.0.0.ebuild2
-rw-r--r--dev-python/ptyprocess/ptyprocess-0.7.0-r1.ebuild2
-rw-r--r--dev-python/pure-eval/pure-eval-0.2.3.ebuild2
-rw-r--r--dev-python/py/py-1.11.0-r1.ebuild2
-rw-r--r--dev-python/pyaes/pyaes-1.6.1-r3.ebuild2
-rw-r--r--dev-python/pyalsa/pyalsa-1.2.14.ebuild2
-rw-r--r--dev-python/pyasn1-modules/pyasn1-modules-0.4.2.ebuild2
-rw-r--r--dev-python/pyasn1/pyasn1-0.6.1.ebuild2
-rw-r--r--dev-python/pyasynchat/pyasynchat-1.0.4.ebuild2
-rw-r--r--dev-python/pyasyncore/pyasyncore-1.0.4.ebuild2
-rw-r--r--dev-python/pyatspi/pyatspi-2.46.1.ebuild2
-rw-r--r--dev-python/pybind11/pybind11-2.13.6.ebuild2
-rw-r--r--dev-python/pycairo/pycairo-1.28.0.ebuild2
-rw-r--r--dev-python/pycares/pycares-4.9.0.ebuild2
-rw-r--r--dev-python/pycodestyle/pycodestyle-2.14.0.ebuild2
-rw-r--r--dev-python/pycountry/pycountry-24.6.1.ebuild2
-rw-r--r--dev-python/pycparser/pycparser-2.22.ebuild2
-rw-r--r--dev-python/pycryptodome/pycryptodome-3.22.0.ebuild2
-rw-r--r--dev-python/pycryptodome/pycryptodome-3.23.0.ebuild2
-rw-r--r--dev-python/pycups/pycups-2.0.4.ebuild4
-rw-r--r--dev-python/pycurl/pycurl-7.45.6.ebuild2
-rw-r--r--dev-python/pydantic-core/pydantic-core-2.33.2.ebuild2
-rw-r--r--dev-python/pydantic/pydantic-2.11.7.ebuild2
-rw-r--r--dev-python/pydata-sphinx-theme/pydata-sphinx-theme-0.16.0.ebuild2
-rw-r--r--dev-python/pydecomp/pydecomp-0.3-r3.ebuild4
-rw-r--r--dev-python/pyeclib/Manifest1
-rw-r--r--dev-python/pyeclib/pyeclib-1.7.0.ebuild40
-rw-r--r--dev-python/pyelftools/pyelftools-0.32.ebuild2
-rw-r--r--dev-python/pyenchant/pyenchant-3.2.2-r1.ebuild2
-rw-r--r--dev-python/pyfakefs/pyfakefs-5.9.1.ebuild2
-rw-r--r--dev-python/pyflakes/pyflakes-3.4.0.ebuild2
-rw-r--r--dev-python/pyftpdlib/pyftpdlib-2.0.1.ebuild4
-rw-r--r--dev-python/pygithub/Manifest1
-rw-r--r--dev-python/pygithub/pygithub-2.7.0.ebuild2
-rw-r--r--dev-python/pygithub/pygithub-2.8.1.ebuild39
-rw-r--r--dev-python/pygments/pygments-2.19.2.ebuild2
-rw-r--r--dev-python/pygobject/pygobject-3.50.0.ebuild2
-rw-r--r--dev-python/pygobject/pygobject-3.50.1.ebuild2
-rw-r--r--dev-python/pyhamcrest/pyhamcrest-2.1.0.ebuild2
-rw-r--r--dev-python/pyinotify/pyinotify-0.9.6-r1.ebuild4
-rw-r--r--dev-python/pyjwt/pyjwt-2.10.1.ebuild2
-rw-r--r--dev-python/pylast/pylast-5.5.0.ebuild2
-rw-r--r--dev-python/pylibacl/pylibacl-0.7.2.ebuild2
-rw-r--r--dev-python/pylibmc/pylibmc-1.6.3-r2.ebuild2
-rw-r--r--dev-python/pylint/pylint-3.3.7.ebuild2
-rw-r--r--dev-python/pylsqpack/pylsqpack-0.3.22.ebuild2
-rw-r--r--dev-python/pymongo/pymongo-4.11.3.ebuild2
-rw-r--r--dev-python/pymongo/pymongo-4.13.2.ebuild2
-rw-r--r--dev-python/pynacl/pynacl-1.5.0-r3.ebuild2
-rw-r--r--dev-python/pynacl/pynacl-1.5.0-r4.ebuild2
-rw-r--r--dev-python/pynput/Manifest1
-rw-r--r--dev-python/pynput/files/patches/uinput.patch37
-rw-r--r--dev-python/pynput/files/patches/wheel.patch11
-rw-r--r--dev-python/pynput/pynput-1.8.1.ebuild28
-rw-r--r--dev-python/pyopenssl/pyopenssl-25.1.0.ebuild2
-rw-r--r--dev-python/pyparsing/pyparsing-3.2.3.ebuild2
-rw-r--r--dev-python/pyparted/pyparted-3.13.0.ebuild2
-rw-r--r--dev-python/pypax/pypax-0.9.5-r2.ebuild2
-rw-r--r--dev-python/pypax/pypax-9999.ebuild2
-rw-r--r--dev-python/pyperclip/pyperclip-1.9.0.ebuild2
-rw-r--r--dev-python/pypiserver/pypiserver-2.3.2-r1.ebuild2
-rw-r--r--dev-python/pyproject-api/pyproject-api-1.9.1.ebuild2
-rw-r--r--dev-python/pyproject-fmt/pyproject-fmt-2.5.1.ebuild2
-rw-r--r--dev-python/pyproject-fmt/pyproject-fmt-2.6.0.ebuild2
-rw-r--r--dev-python/pyproject-hooks/pyproject-hooks-1.2.0.ebuild2
-rw-r--r--dev-python/pyproject-metadata/pyproject-metadata-0.9.1.ebuild2
-rw-r--r--dev-python/pyquery/pyquery-2.0.1.ebuild2
-rw-r--r--dev-python/pyrsistent/pyrsistent-0.20.0.ebuild2
-rw-r--r--dev-python/pyscard/pyscard-2.3.0.ebuild2
-rw-r--r--dev-python/pyserial/pyserial-3.5-r2.ebuild2
-rw-r--r--dev-python/pysocks/pysocks-1.7.1-r2.ebuild2
-rw-r--r--dev-python/pyspnego/Manifest1
-rw-r--r--dev-python/pyspnego/pyspnego-0.12.0.ebuild38
-rw-r--r--dev-python/pytest-aiohttp/pytest-aiohttp-1.1.0.ebuild2
-rw-r--r--dev-python/pytest-asyncio/pytest-asyncio-0.26.0.ebuild2
-rw-r--r--dev-python/pytest-asyncio/pytest-asyncio-1.0.0.ebuild2
-rw-r--r--dev-python/pytest-asyncio/pytest-asyncio-1.1.0.ebuild2
-rw-r--r--dev-python/pytest-check/pytest-check-2.5.3.ebuild2
-rw-r--r--dev-python/pytest-console-scripts/pytest-console-scripts-1.4.1.ebuild2
-rw-r--r--dev-python/pytest-cov/pytest-cov-6.2.0.ebuild2
-rw-r--r--dev-python/pytest-datadir/pytest-datadir-1.7.2.ebuild2
-rw-r--r--dev-python/pytest-django/pytest-django-4.11.1.ebuild2
-rw-r--r--dev-python/pytest-expect/pytest-expect-1.1.0-r2.ebuild2
-rw-r--r--dev-python/pytest-forked/pytest-forked-1.6.0.ebuild2
-rw-r--r--dev-python/pytest-freezer/pytest-freezer-0.4.9.ebuild2
-rw-r--r--dev-python/pytest-home/pytest-home-0.6.0.ebuild2
-rw-r--r--dev-python/pytest-httpbin/pytest-httpbin-2.1.0.ebuild2
-rw-r--r--dev-python/pytest-httpserver/pytest-httpserver-1.1.3.ebuild2
-rw-r--r--dev-python/pytest-import-check/pytest-import-check-0.0.4.ebuild2
-rw-r--r--dev-python/pytest-jupyter/pytest-jupyter-0.10.1.ebuild2
-rw-r--r--dev-python/pytest-lazy-fixtures/pytest-lazy-fixtures-1.3.2.ebuild2
-rw-r--r--dev-python/pytest-localserver/pytest-localserver-0.9.0_p0.ebuild2
-rw-r--r--dev-python/pytest-mock/Manifest1
-rw-r--r--dev-python/pytest-mock/pytest-mock-3.14.1.ebuild2
-rw-r--r--dev-python/pytest-mock/pytest-mock-3.15.0.ebuild53
-rw-r--r--dev-python/pytest-ordering/pytest-ordering-0.6-r1.ebuild2
-rw-r--r--dev-python/pytest-param-files/pytest-param-files-0.6.0.ebuild2
-rw-r--r--dev-python/pytest-regressions/pytest-regressions-2.8.1.ebuild2
-rw-r--r--dev-python/pytest-rerunfailures/Manifest1
-rw-r--r--dev-python/pytest-rerunfailures/pytest-rerunfailures-15.1.ebuild2
-rw-r--r--dev-python/pytest-rerunfailures/pytest-rerunfailures-16.0.1.ebuild28
-rw-r--r--dev-python/pytest-services/pytest-services-2.2.2.ebuild2
-rw-r--r--dev-python/pytest-subprocess/pytest-subprocess-1.5.3.ebuild2
-rw-r--r--dev-python/pytest-subtests/pytest-subtests-0.14.2.ebuild2
-rw-r--r--dev-python/pytest-testinfra/pytest-testinfra-10.2.2.ebuild6
-rw-r--r--dev-python/pytest-timeout/pytest-timeout-2.4.0.ebuild2
-rw-r--r--dev-python/pytest-tornasync/pytest-tornasync-0.6.0_p2-r1.ebuild2
-rw-r--r--dev-python/pytest-trio/pytest-trio-0.8.0-r1.ebuild2
-rw-r--r--dev-python/pytest-xdist/pytest-xdist-3.8.0.ebuild2
-rw-r--r--dev-python/pytest-xprocess/pytest-xprocess-0.23.0.ebuild4
-rw-r--r--dev-python/pytest-xprocess/pytest-xprocess-1.0.2.ebuild2
-rw-r--r--dev-python/pytest/Manifest1
-rw-r--r--dev-python/pytest/pytest-7.4.4.ebuild2
-rw-r--r--dev-python/pytest/pytest-8.0.2.ebuild2
-rw-r--r--dev-python/pytest/pytest-8.1.2.ebuild2
-rw-r--r--dev-python/pytest/pytest-8.2.2.ebuild2
-rw-r--r--dev-python/pytest/pytest-8.3.5-r1.ebuild2
-rw-r--r--dev-python/pytest/pytest-8.4.1.ebuild2
-rw-r--r--dev-python/pytest/pytest-8.4.2.ebuild120
-rw-r--r--dev-python/python-bugzilla/python-bugzilla-3.3.0.ebuild2
-rw-r--r--dev-python/python-cinderclient/Manifest1
-rw-r--r--dev-python/python-cinderclient/python-cinderclient-9.8.0.ebuild47
-rw-r--r--dev-python/python-dateutil/python-dateutil-2.9.0_p0.ebuild2
-rw-r--r--dev-python/python-dbusmock/python-dbusmock-0.36.0.ebuild2
-rw-r--r--dev-python/python-dotenv/python-dotenv-1.1.1.ebuild2
-rw-r--r--dev-python/python-gnupg/python-gnupg-0.5.4.ebuild2
-rw-r--r--dev-python/python-ironicclient/Manifest1
-rw-r--r--dev-python/python-ironicclient/python-ironicclient-5.13.0.ebuild48
-rw-r--r--dev-python/python-json-logger/python-json-logger-3.3.0.ebuild2
-rw-r--r--dev-python/python-ldap/python-ldap-3.4.4.ebuild2
-rw-r--r--dev-python/python-magic/python-magic-0.4.27.ebuild2
-rw-r--r--dev-python/python-mimeparse/python-mimeparse-2.0.0.ebuild2
-rw-r--r--dev-python/python-multipart/python-multipart-0.0.20.ebuild2
-rw-r--r--dev-python/python-novaclient/Manifest1
-rw-r--r--dev-python/python-novaclient/python-novaclient-18.11.0.ebuild57
-rw-r--r--dev-python/python-socks/python-socks-2.7.1.ebuild2
-rw-r--r--dev-python/python-subunit/python-subunit-1.4.4.ebuild2
-rw-r--r--dev-python/python-systemd/python-systemd-235.ebuild4
-rw-r--r--dev-python/python-tests/python-tests-3.11.13.ebuild2
-rw-r--r--dev-python/python-tests/python-tests-3.12.11.ebuild2
-rw-r--r--dev-python/python-tests/python-tests-3.13.5.ebuild2
-rw-r--r--dev-python/pythondialog/pythondialog-3.5.3.ebuild4
-rw-r--r--dev-python/pytidylib/pytidylib-0.3.2-r2.ebuild2
-rw-r--r--dev-python/pytools/Manifest1
-rw-r--r--dev-python/pytools/pytools-2025.2.4.ebuild33
-rw-r--r--dev-python/pytz/pytz-2025.2.ebuild2
-rw-r--r--dev-python/pyudev/pyudev-0.24.3.ebuild2
-rw-r--r--dev-python/pywinrm/pywinrm-0.5.0.ebuild5
-rw-r--r--dev-python/pyxattr/pyxattr-0.8.1.ebuild2
-rw-r--r--dev-python/pyxdg/pyxdg-0.28-r2.ebuild2
-rw-r--r--dev-python/pyyaml/pyyaml-6.0.2.ebuild2
-rw-r--r--dev-python/pyzmq/pyzmq-26.4.0.ebuild2
-rw-r--r--dev-python/pyzmq/pyzmq-27.0.0.ebuild2
-rw-r--r--dev-python/qiskit/Manifest2
-rw-r--r--dev-python/qiskit/qiskit-2.2.0_rc1.ebuild109
-rw-r--r--dev-python/quart-trio/quart-trio-0.12.0.ebuild2
-rw-r--r--dev-python/quart/quart-0.20.0.ebuild2
-rw-r--r--dev-python/radon/radon-6.0.1-r2.ebuild4
-rw-r--r--dev-python/rapidfuzz/rapidfuzz-3.13.0.ebuild2
-rw-r--r--dev-python/rdflib/rdflib-7.1.4.ebuild2
-rw-r--r--dev-python/re-assert/re-assert-1.1.0-r3.ebuild2
-rw-r--r--dev-python/readme-renderer/readme-renderer-44.0.ebuild2
-rw-r--r--dev-python/readthedocs-sphinx-ext/readthedocs-sphinx-ext-2.2.5.ebuild2
-rw-r--r--dev-python/recommonmark/recommonmark-0.7.1-r1.ebuild2
-rw-r--r--dev-python/referencing/referencing-0.36.2-r1.ebuild2
-rw-r--r--dev-python/regex/Manifest1
-rw-r--r--dev-python/regex/regex-2024.11.6.ebuild2
-rw-r--r--dev-python/regex/regex-2025.9.1.ebuild32
-rw-r--r--dev-python/reportlab/reportlab-4.4.2.ebuild2
-rw-r--r--dev-python/repoze-lru/repoze-lru-0.7-r3.ebuild2
-rw-r--r--dev-python/requests-credssp/requests-credssp-2.0.0.ebuild5
-rw-r--r--dev-python/requests-kerberos/requests-kerberos-0.15.0.ebuild10
-rw-r--r--dev-python/requests-ntlm/requests-ntlm-1.3.0.ebuild5
-rw-r--r--dev-python/requests-toolbelt/requests-toolbelt-1.0.0.ebuild2
-rw-r--r--dev-python/requests-unixsocket/requests-unixsocket-0.4.1.ebuild2
-rw-r--r--dev-python/requests/requests-2.32.4.ebuild2
-rw-r--r--dev-python/resolvelib/resolvelib-1.1.0.ebuild2
-rw-r--r--dev-python/resolvelib/resolvelib-1.2.0.ebuild2
-rw-r--r--dev-python/responses/responses-0.25.7.ebuild2
-rw-r--r--dev-python/retrying/retrying-1.4.1.ebuild2
-rw-r--r--dev-python/retrying/retrying-1.4.2.ebuild2
-rw-r--r--dev-python/rfc3339-validator/rfc3339-validator-0.1.4-r1.ebuild2
-rw-r--r--dev-python/rfc3986-validator/rfc3986-validator-0.1.1-r2.ebuild2
-rw-r--r--dev-python/rfc3986/rfc3986-2.0.0-r1.ebuild2
-rw-r--r--dev-python/rfc3987/rfc3987-1.3.8-r3.ebuild2
-rw-r--r--dev-python/rich/rich-14.1.0.ebuild2
-rw-r--r--dev-python/roman-numerals-py/roman-numerals-py-3.1.0.ebuild2
-rw-r--r--dev-python/routes/routes-2.5.1-r2.ebuild2
-rw-r--r--dev-python/rpds-py/rpds-py-0.25.1.ebuild4
-rw-r--r--dev-python/rsa/rsa-4.9.ebuild2
-rw-r--r--dev-python/rst-linker/rst-linker-2.6.0.ebuild2
-rw-r--r--dev-python/rtslib-fb/rtslib-fb-2.1.76.ebuild2
-rw-r--r--dev-python/rtslib-fb/rtslib-fb-2.2.3.ebuild2
-rw-r--r--dev-python/ruamel-yaml-clib/ruamel-yaml-clib-0.2.12.ebuild2
-rw-r--r--dev-python/ruamel-yaml/ruamel-yaml-0.18.14.ebuild2
-rw-r--r--dev-python/s3transfer/s3transfer-0.13.1.ebuild2
-rw-r--r--dev-python/scikit-build-core/scikit-build-core-0.11.5.ebuild2
-rw-r--r--dev-python/scikit-build/scikit-build-0.17.6.ebuild4
-rw-r--r--dev-python/scikit-build/scikit-build-0.18.0.ebuild4
-rw-r--r--dev-python/scikit-build/scikit-build-0.18.1.ebuild2
-rw-r--r--dev-python/scripttest/scripttest-2.0_p1.ebuild2
-rw-r--r--dev-python/secretstorage/secretstorage-3.3.3.ebuild2
-rw-r--r--dev-python/seedir/seedir-0.5.1.ebuild2
-rw-r--r--dev-python/selenium/selenium-4.26.1.ebuild4
-rw-r--r--dev-python/selenium/selenium-4.31.0.ebuild2
-rw-r--r--dev-python/selenium/selenium-4.33.0-r1.ebuild2
-rw-r--r--dev-python/semantic-version/semantic-version-2.10.0.ebuild2
-rw-r--r--dev-python/send2trash/send2trash-1.8.3.ebuild2
-rw-r--r--dev-python/service-identity/service-identity-24.2.0.ebuild2
-rw-r--r--dev-python/setproctitle/setproctitle-1.3.5.ebuild2
-rw-r--r--dev-python/setuptools-git/setuptools-git-1.2-r3.ebuild2
-rw-r--r--dev-python/setuptools-rust/setuptools-rust-1.11.1.ebuild2
-rw-r--r--dev-python/setuptools-scm/setuptools-scm-8.3.1.ebuild2
-rw-r--r--dev-python/setuptools/setuptools-79.0.1.ebuild2
-rw-r--r--dev-python/setuptools/setuptools-80.9.0-r1.ebuild2
-rw-r--r--dev-python/sgmllib3k/sgmllib3k-1.0.0-r1.ebuild2
-rw-r--r--dev-python/sh/sh-2.2.2.ebuild2
-rw-r--r--dev-python/simplejson/simplejson-3.20.1.ebuild2
-rw-r--r--dev-python/siphash24/Manifest1
-rw-r--r--dev-python/siphash24/siphash24-1.8.ebuild29
-rw-r--r--dev-python/six/six-1.17.0.ebuild2
-rw-r--r--dev-python/slixmpp/Manifest30
-rw-r--r--dev-python/slixmpp/slixmpp-1.11.0.ebuild103
-rw-r--r--dev-python/slixmpp/slixmpp-9999.ebuild52
-rw-r--r--dev-python/smartypants/smartypants-2.0.1-r1.ebuild2
-rw-r--r--dev-python/smmap/smmap-6.0.0.ebuild2
-rw-r--r--dev-python/snakeoil/snakeoil-0.10.10.ebuild2
-rw-r--r--dev-python/snakeoil/snakeoil-0.10.11.ebuild2
-rw-r--r--dev-python/sniffio/sniffio-1.3.1.ebuild2
-rw-r--r--dev-python/snowballstemmer/snowballstemmer-3.0.1.ebuild2
-rw-r--r--dev-python/socksio/socksio-1.0.0.ebuild2
-rw-r--r--dev-python/sortedcontainers/sortedcontainers-2.4.0-r1.ebuild2
-rw-r--r--dev-python/soupsieve/soupsieve-2.7.ebuild2
-rw-r--r--dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.0.1.ebuild2
-rw-r--r--dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.1.0.ebuild2
-rw-r--r--dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.2.0.ebuild2
-rw-r--r--dev-python/sphinx-basic-ng/sphinx-basic-ng-1.0.0_beta2.ebuild2
-rw-r--r--dev-python/sphinx-bootstrap-theme/sphinx-bootstrap-theme-0.8.1.ebuild2
-rw-r--r--dev-python/sphinx-epytext/sphinx-epytext-0.0.4-r2.ebuild2
-rw-r--r--dev-python/sphinx-issues/sphinx-issues-5.0.1.ebuild2
-rw-r--r--dev-python/sphinx-lv2-theme/sphinx-lv2-theme-1.4.2.ebuild2
-rw-r--r--dev-python/sphinx-notfound-page/sphinx-notfound-page-1.1.0.ebuild2
-rw-r--r--dev-python/sphinx-prompt/sphinx-prompt-1.10.0.ebuild2
-rw-r--r--dev-python/sphinx-pytest/sphinx-pytest-0.2.0.ebuild2
-rw-r--r--dev-python/sphinx-rtd-theme/sphinx-rtd-theme-3.0.2.ebuild2
-rw-r--r--dev-python/sphinx-tabs/sphinx-tabs-3.4.7.ebuild2
-rw-r--r--dev-python/sphinx/files/sphinx-8.2.3-metadata-docutils-0.22.patch27
-rw-r--r--dev-python/sphinx/sphinx-8.1.3.ebuild2
-rw-r--r--dev-python/sphinx/sphinx-8.2.3-r2.ebuild (renamed from dev-python/sphinx/sphinx-8.2.3-r1.ebuild)3
-rw-r--r--dev-python/sphinxcontrib-applehelp/sphinxcontrib-applehelp-2.0.0-r1.ebuild2
-rw-r--r--dev-python/sphinxcontrib-applehelp/sphinxcontrib-applehelp-2.0.0.ebuild2
-rw-r--r--dev-python/sphinxcontrib-devhelp/sphinxcontrib-devhelp-2.0.0-r1.ebuild2
-rw-r--r--dev-python/sphinxcontrib-devhelp/sphinxcontrib-devhelp-2.0.0.ebuild2
-rw-r--r--dev-python/sphinxcontrib-github-alt/sphinxcontrib-github-alt-1.2-r3.ebuild2
-rw-r--r--dev-python/sphinxcontrib-htmlhelp/sphinxcontrib-htmlhelp-2.1.0-r1.ebuild2
-rw-r--r--dev-python/sphinxcontrib-htmlhelp/sphinxcontrib-htmlhelp-2.1.0.ebuild2
-rw-r--r--dev-python/sphinxcontrib-httpdomain/sphinxcontrib-httpdomain-1.8.1.ebuild4
-rw-r--r--dev-python/sphinxcontrib-jquery/sphinxcontrib-jquery-4.1.ebuild2
-rw-r--r--dev-python/sphinxcontrib-jsmath/sphinxcontrib-jsmath-1.0.1-r3.ebuild2
-rw-r--r--dev-python/sphinxcontrib-jsmath/sphinxcontrib-jsmath-1.0.1-r4.ebuild2
-rw-r--r--dev-python/sphinxcontrib-log-cabinet/sphinxcontrib-log-cabinet-1.0.1-r1.ebuild2
-rw-r--r--dev-python/sphinxcontrib-plantuml/Manifest1
-rw-r--r--dev-python/sphinxcontrib-plantuml/sphinxcontrib-plantuml-0.31.ebuild47
-rw-r--r--dev-python/sphinxcontrib-programoutput/sphinxcontrib-programoutput-0.18.ebuild2
-rw-r--r--dev-python/sphinxcontrib-qthelp/sphinxcontrib-qthelp-2.0.0-r1.ebuild2
-rw-r--r--dev-python/sphinxcontrib-qthelp/sphinxcontrib-qthelp-2.0.0.ebuild2
-rw-r--r--dev-python/sphinxcontrib-serializinghtml/sphinxcontrib-serializinghtml-2.0.0-r1.ebuild2
-rw-r--r--dev-python/sphinxcontrib-serializinghtml/sphinxcontrib-serializinghtml-2.0.0.ebuild2
-rw-r--r--dev-python/sphinxcontrib-spelling/sphinxcontrib-spelling-8.0.1.ebuild2
-rw-r--r--dev-python/sphinxcontrib-trio/sphinxcontrib-trio-1.1.2-r1.ebuild2
-rw-r--r--dev-python/sphinxcontrib-websupport/sphinxcontrib-websupport-1.2.7-r1.ebuild2
-rw-r--r--dev-python/sphinxcontrib-websupport/sphinxcontrib-websupport-1.2.7.ebuild2
-rw-r--r--dev-python/sphinxemoji/sphinxemoji-0.3.1.ebuild2
-rw-r--r--dev-python/sphinxygen/sphinxygen-1.0.10.ebuild2
-rw-r--r--dev-python/sphobjinv/sphobjinv-2.3.1.3.ebuild2
-rw-r--r--dev-python/sqlalchemy/sqlalchemy-1.4.54.ebuild4
-rw-r--r--dev-python/sqlalchemy/sqlalchemy-2.0.40.ebuild2
-rw-r--r--dev-python/sqlalchemy/sqlalchemy-2.0.41.ebuild2
-rw-r--r--dev-python/sqlglot/Manifest3
-rw-r--r--dev-python/sqlglot/sqlglot-27.11.0.ebuild (renamed from dev-python/sqlglot/sqlglot-27.9.0.ebuild)5
-rw-r--r--dev-python/sqlglot/sqlglot-27.12.0.ebuild175
-rw-r--r--dev-python/sqlparse/sqlparse-0.5.3.ebuild2
-rw-r--r--dev-python/stack-data/stack-data-0.6.3.ebuild2
-rw-r--r--dev-python/starlette/starlette-0.47.2.ebuild2
-rw-r--r--dev-python/stdio-mgr/stdio-mgr-1.0.1-r1.ebuild2
-rw-r--r--dev-python/stestr/stestr-4.2.0.ebuild2
-rw-r--r--dev-python/stevedore/stevedore-5.4.1.ebuild2
-rw-r--r--dev-python/strict-rfc3339/strict-rfc3339-0.7-r2.ebuild2
-rw-r--r--dev-python/sure/sure-2.0.1.ebuild2
-rw-r--r--dev-python/sybil/sybil-9.1.0.ebuild2
-rw-r--r--dev-python/tabulate/tabulate-0.9.0-r1.ebuild2
-rw-r--r--dev-python/tap-py/tap-py-3.2.1.ebuild2
-rw-r--r--dev-python/tblib/tblib-3.1.0.ebuild2
-rw-r--r--dev-python/tempora/tempora-5.8.1.ebuild2
-rw-r--r--dev-python/termcolor/termcolor-3.1.0.ebuild2
-rw-r--r--dev-python/terminado/terminado-0.18.1.ebuild2
-rw-r--r--dev-python/test/test-0.ebuild2
-rw-r--r--dev-python/testfixtures/testfixtures-9.1.0.ebuild2
-rw-r--r--dev-python/testpath/testpath-0.6.0.ebuild2
-rw-r--r--dev-python/testresources/testresources-2.0.2.ebuild2
-rw-r--r--dev-python/testscenarios/testscenarios-0.5.0-r3.ebuild2
-rw-r--r--dev-python/testtools/testtools-2.7.2-r1.ebuild2
-rw-r--r--dev-python/textile/textile-4.0.3-r1.ebuild2
-rw-r--r--dev-python/time-machine/time-machine-2.16.0.ebuild2
-rw-r--r--dev-python/timeout-decorator/timeout-decorator-0.5.0-r1.ebuild2
-rw-r--r--dev-python/tiny-proxy/tiny-proxy-0.2.1.ebuild2
-rw-r--r--dev-python/tinycss2/tinycss2-1.4.0.ebuild2
-rw-r--r--dev-python/toml-fmt-common/toml-fmt-common-1.0.1.ebuild2
-rw-r--r--dev-python/tomli-w/tomli-w-1.2.0.ebuild2
-rw-r--r--dev-python/tomli/tomli-2.2.1.ebuild2
-rw-r--r--dev-python/tomlkit/tomlkit-0.13.3.ebuild2
-rw-r--r--dev-python/tornado/tornado-6.5.1.ebuild2
-rw-r--r--dev-python/towncrier/towncrier-24.8.0.ebuild4
-rw-r--r--dev-python/tox/Manifest3
-rw-r--r--dev-python/tox/tox-4.28.3.ebuild2
-rw-r--r--dev-python/tox/tox-4.30.1.ebuild (renamed from dev-python/tox/tox-4.26.0.ebuild)19
-rw-r--r--dev-python/tox/tox-4.30.2.ebuild91
-rw-r--r--dev-python/tqdm/tqdm-4.67.1.ebuild2
-rw-r--r--dev-python/traitlets/traitlets-5.14.3.ebuild2
-rw-r--r--dev-python/translate-toolkit/Manifest1
-rw-r--r--dev-python/translate-toolkit/translate-toolkit-3.16.0.ebuild127
-rw-r--r--dev-python/tree-sitter/tree-sitter-0.23.0-r1.ebuild4
-rw-r--r--dev-python/tree-sitter/tree-sitter-0.23.1-r1.ebuild2
-rw-r--r--dev-python/tree-sitter/tree-sitter-0.24.0.ebuild2
-rw-r--r--dev-python/trimesh/Manifest2
-rw-r--r--dev-python/trimesh/trimesh-4.8.0.ebuild76
-rw-r--r--dev-python/trimesh/trimesh-4.8.1.ebuild77
-rw-r--r--dev-python/trio-websocket/trio-websocket-0.12.2.ebuild2
-rw-r--r--dev-python/trio/trio-0.30.0.ebuild2
-rw-r--r--dev-python/trove-classifiers/trove-classifiers-2025.5.9.12.ebuild2
-rw-r--r--dev-python/trustme/trustme-1.2.1.ebuild2
-rw-r--r--dev-python/truststore/truststore-0.10.1.ebuild2
-rw-r--r--dev-python/truststore/truststore-0.10.4.ebuild2
-rw-r--r--dev-python/twine/Manifest1
-rw-r--r--dev-python/twine/twine-6.0.1.ebuild4
-rw-r--r--dev-python/twine/twine-6.1.0.ebuild2
-rw-r--r--dev-python/twine/twine-6.2.0.ebuild76
-rw-r--r--dev-python/twisted/twisted-24.10.0.ebuild4
-rw-r--r--dev-python/twisted/twisted-24.11.0-r1.ebuild2
-rw-r--r--dev-python/twisted/twisted-25.5.0.ebuild2
-rw-r--r--dev-python/typeguard/typeguard-4.4.4.ebuild2
-rw-r--r--dev-python/types-docutils/types-docutils-0.21.0.20250728.ebuild2
-rw-r--r--dev-python/types-gdb/types-gdb-15.0.0.20250801.ebuild2
-rw-r--r--dev-python/types-psutil/types-psutil-7.0.0.20250601.ebuild2
-rw-r--r--dev-python/types-psutil/types-psutil-7.0.0.20250801.ebuild2
-rw-r--r--dev-python/types-setuptools/types-setuptools-80.9.0.20250529.ebuild2
-rw-r--r--dev-python/types-setuptools/types-setuptools-80.9.0.20250801.ebuild2
-rw-r--r--dev-python/typing-extensions/typing-extensions-4.14.1.ebuild2
-rw-r--r--dev-python/typing-inspection/typing-inspection-0.4.1.ebuild2
-rw-r--r--dev-python/typogrify/typogrify-2.1.0.ebuild2
-rw-r--r--dev-python/tzdata/tzdata-10001.ebuild2
-rw-r--r--dev-python/u-msgpack-python/u-msgpack-python-2.8.0.ebuild2
-rw-r--r--dev-python/uc-micro-py/uc-micro-py-1.0.3.ebuild2
-rw-r--r--dev-python/ujson/ujson-5.10.0.ebuild2
-rw-r--r--dev-python/unidecode/unidecode-1.4.0.ebuild2
-rw-r--r--dev-python/unittest-mixins/unittest-mixins-1.6-r2.ebuild2
-rw-r--r--dev-python/untangle/untangle-1.2.1-r2.ebuild2
-rw-r--r--dev-python/uri-template/uri-template-1.3.0.ebuild2
-rw-r--r--dev-python/uritemplate/uritemplate-4.2.0.ebuild2
-rw-r--r--dev-python/urllib3/urllib3-2.5.0.ebuild2
-rw-r--r--dev-python/urwid/urwid-3.0.2.ebuild2
-rw-r--r--dev-python/uv-build/Manifest1
-rw-r--r--dev-python/uv-build/uv-build-0.8.15.ebuild99
-rw-r--r--dev-python/uv/Manifest3
-rw-r--r--dev-python/uv/uv-0.8.15.ebuild182
-rw-r--r--dev-python/uv/uv-9999.ebuild145
-rw-r--r--dev-python/uvicorn/uvicorn-0.35.0.ebuild2
-rw-r--r--dev-python/uvloop/uvloop-0.21.0.ebuild2
-rw-r--r--dev-python/validators/validators-0.35.0.ebuild2
-rw-r--r--dev-python/vcrpy/vcrpy-7.0.0.ebuild2
-rw-r--r--dev-python/versioneer/versioneer-0.29-r1.ebuild2
-rw-r--r--dev-python/virtualenv/virtualenv-20.32.0.ebuild2
-rw-r--r--dev-python/voluptuous/voluptuous-0.15.2.ebuild2
-rw-r--r--dev-python/waitress/waitress-3.0.2.ebuild2
-rw-r--r--dev-python/watchdog/watchdog-6.0.0.ebuild2
-rw-r--r--dev-python/watchfiles/watchfiles-1.0.4.ebuild2
-rw-r--r--dev-python/watchfiles/watchfiles-1.1.0.ebuild2
-rw-r--r--dev-python/wcag-contrast-ratio/wcag-contrast-ratio-0.9-r1.ebuild2
-rw-r--r--dev-python/wcwidth/wcwidth-0.2.13.ebuild2
-rw-r--r--dev-python/webcolors/webcolors-24.11.1.ebuild2
-rw-r--r--dev-python/webencodings/webencodings-0.5.1-r2.ebuild2
-rw-r--r--dev-python/webob/webob-1.8.9.ebuild2
-rw-r--r--dev-python/websocket-client/websocket-client-1.8.0.ebuild2
-rw-r--r--dev-python/websockets/websockets-15.0.1.ebuild2
-rw-r--r--dev-python/webtest/webtest-3.0.6.ebuild2
-rw-r--r--dev-python/werkzeug/werkzeug-3.1.3.ebuild2
-rw-r--r--dev-python/wheel/wheel-0.45.1.ebuild2
-rw-r--r--dev-python/whoosh/whoosh-2.7.4-r2.ebuild2
-rw-r--r--dev-python/wrapt/wrapt-1.17.2.ebuild2
-rw-r--r--dev-python/wsgiproxy2/wsgiproxy2-0.5.1-r1.ebuild2
-rw-r--r--dev-python/wsproto/wsproto-1.2.0.ebuild2
-rw-r--r--dev-python/wurlitzer/wurlitzer-3.1.1.ebuild2
-rw-r--r--dev-python/xarray/Manifest1
-rw-r--r--dev-python/xarray/xarray-2025.9.0.ebuild129
-rw-r--r--dev-python/xcffib/xcffib-1.9.0.ebuild2
-rw-r--r--dev-python/xlwt/xlwt-1.3.0-r2.ebuild2
-rw-r--r--dev-python/xmlschema/xmlschema-4.1.0.ebuild2
-rw-r--r--dev-python/xmltodict/Manifest1
-rw-r--r--dev-python/xmltodict/xmltodict-0.14.2.ebuild2
-rw-r--r--dev-python/xmltodict/xmltodict-0.15.0.ebuild22
-rw-r--r--dev-python/yarl/yarl-1.20.1.ebuild2
-rw-r--r--dev-python/ytmusicapi/ytmusicapi-1.11.0.ebuild2
-rw-r--r--dev-python/zc-lockfile/zc-lockfile-3.0_p1-r1.ebuild2
-rw-r--r--dev-python/zipp/zipp-3.23.0.ebuild2
-rw-r--r--dev-python/zlib-ng/zlib-ng-0.5.1.ebuild2
-rw-r--r--dev-python/zope-event/zope-event-5.1.1.ebuild2
-rw-r--r--dev-python/zope-interface/zope-interface-7.2.ebuild2
-rw-r--r--dev-python/zope-testing/zope-testing-5.1.ebuild2
-rw-r--r--dev-python/zstandard/zstandard-0.23.0-r3.ebuild2
847 files changed, 4912 insertions, 1484 deletions
diff --git a/dev-python/a2wsgi/a2wsgi-1.10.10.ebuild b/dev-python/a2wsgi/a2wsgi-1.10.10.ebuild
index 39e673944ce2..4ae60979e580 100644
--- a/dev-python/a2wsgi/a2wsgi-1.10.10.ebuild
+++ b/dev-python/a2wsgi/a2wsgi-1.10.10.ebuild
@@ -16,7 +16,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"
RDEPEND="
$(python_gen_cond_dep '
diff --git a/dev-python/accessible-pygments/accessible-pygments-0.0.5.ebuild b/dev-python/accessible-pygments/accessible-pygments-0.0.5.ebuild
index 8b0a72598254..90ee709dd9ac 100644
--- a/dev-python/accessible-pygments/accessible-pygments-0.0.5.ebuild
+++ b/dev-python/accessible-pygments/accessible-pygments-0.0.5.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~mips ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/pygments-1.5[${PYTHON_USEDEP}]
diff --git a/dev-python/aiodns/aiodns-3.5.0.ebuild b/dev-python/aiodns/aiodns-3.5.0.ebuild
index a4896b6ad77c..7ff38dce6761 100644
--- a/dev-python/aiodns/aiodns-3.5.0.ebuild
+++ b/dev-python/aiodns/aiodns-3.5.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"
# Tests fail with network-sandbox, since they try to resolve google.com
PROPERTIES="test_network"
RESTRICT="test"
diff --git a/dev-python/aiofiles/aiofiles-24.1.0.ebuild b/dev-python/aiofiles/aiofiles-24.1.0.ebuild
index fa26af2a9aae..271e9e091af2 100644
--- a/dev-python/aiofiles/aiofiles-24.1.0.ebuild
+++ b/dev-python/aiofiles/aiofiles-24.1.0.ebuild
@@ -16,7 +16,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"
BDEPEND="
test? (
diff --git a/dev-python/aiohappyeyeballs/aiohappyeyeballs-2.6.1.ebuild b/dev-python/aiohappyeyeballs/aiohappyeyeballs-2.6.1.ebuild
index ec29f76b2980..24171864d518 100644
--- a/dev-python/aiohappyeyeballs/aiohappyeyeballs-2.6.1.ebuild
+++ b/dev-python/aiohappyeyeballs/aiohappyeyeballs-2.6.1.ebuild
@@ -20,18 +20,20 @@ SRC_URI="
LICENSE="PSF-2"
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"
BDEPEND="
>=dev-python/poetry-core-2.0.0[${PYTHON_USEDEP}]
- test? (
- >=dev-python/pytest-asyncio-0.23.2[${PYTHON_USEDEP}]
- )
"
+EPYTEST_PLUGINS=( pytest-asyncio )
distutils_enable_tests pytest
+PATCHES=(
+ # https://github.com/aio-libs/aiohappyeyeballs/pull/181
+ "${FILESDIR}/${P}-pytest-asyncio-1.patch"
+)
+
python_test() {
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- epytest -p asyncio -o addopts=
+ epytest -o addopts=
}
diff --git a/dev-python/aiohappyeyeballs/files/aiohappyeyeballs-2.6.1-pytest-asyncio-1.patch b/dev-python/aiohappyeyeballs/files/aiohappyeyeballs-2.6.1-pytest-asyncio-1.patch
new file mode 100644
index 000000000000..d5750359157a
--- /dev/null
+++ b/dev-python/aiohappyeyeballs/files/aiohappyeyeballs-2.6.1-pytest-asyncio-1.patch
@@ -0,0 +1,30 @@
+From 5f94f4bdc4f7b4b533d6517308a3d33a1a64e3cc Mon Sep 17 00:00:00 2001
+From: "J. Nick Koston" <nick@home-assistant.io>
+Date: Sun, 24 Aug 2025 01:18:33 -0500
+Subject: [PATCH] chore: updates for pytest-asyncio
+
+---
+ tests/conftest.py | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/tests/conftest.py b/tests/conftest.py
+index 6db53d2..9f7a4cb 100644
+--- a/tests/conftest.py
++++ b/tests/conftest.py
+@@ -41,10 +41,13 @@ def long_repr_strings() -> Generator[None, None, None]:
+
+
+ @pytest.fixture(autouse=True)
+-def verify_no_lingering_tasks(
+- event_loop: asyncio.AbstractEventLoop,
+-) -> Generator[None, None, None]:
++def verify_no_lingering_tasks() -> Generator[None, None, None]:
+ """Verify that all tasks are cleaned up."""
++ try:
++ event_loop = asyncio.get_event_loop()
++ except RuntimeError:
++ yield
++ return
+ tasks_before = asyncio.all_tasks(event_loop)
+ yield
+
diff --git a/dev-python/aiohttp-cors/aiohttp-cors-0.8.1.ebuild b/dev-python/aiohttp-cors/aiohttp-cors-0.8.1.ebuild
index 62ae1be82fc5..999e22aa48f3 100644
--- a/dev-python/aiohttp-cors/aiohttp-cors-0.8.1.ebuild
+++ b/dev-python/aiohttp-cors/aiohttp-cors-0.8.1.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
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"
RDEPEND="
>=dev-python/aiohttp-3.9[${PYTHON_USEDEP}]
diff --git a/dev-python/aiohttp-theme/aiohttp-theme-0.1.7.ebuild b/dev-python/aiohttp-theme/aiohttp-theme-0.1.7.ebuild
index 86c6bc4f11d4..8b28766f3c12 100644
--- a/dev-python/aiohttp-theme/aiohttp-theme-0.1.7.ebuild
+++ b/dev-python/aiohttp-theme/aiohttp-theme-0.1.7.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/sphinx[${PYTHON_USEDEP}]
diff --git a/dev-python/aiohttp/aiohttp-3.11.18.ebuild b/dev-python/aiohttp/aiohttp-3.11.18.ebuild
index 91989ccacf18..2427dd010609 100644
--- a/dev-python/aiohttp/aiohttp-3.11.18.ebuild
+++ b/dev-python/aiohttp/aiohttp-3.11.18.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/aiohttp/aiohttp-3.12.13.ebuild b/dev-python/aiohttp/aiohttp-3.12.13.ebuild
index d0dd168bd2e8..70c7eb52f079 100644
--- a/dev-python/aiohttp/aiohttp-3.12.13.ebuild
+++ b/dev-python/aiohttp/aiohttp-3.12.13.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~mips ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="+native-extensions test-rust"
DEPEND="
diff --git a/dev-python/aiorpcx/aiorpcx-0.23.1.ebuild b/dev-python/aiorpcx/aiorpcx-0.23.1.ebuild
index 80eb2bfe38df..69a91be6d091 100644
--- a/dev-python/aiorpcx/aiorpcx-0.23.1.ebuild
+++ b/dev-python/aiorpcx/aiorpcx-0.23.1.ebuild
@@ -26,15 +26,24 @@ KEYWORDS="amd64 ~arm arm64 x86"
BDEPEND="
test? (
- dev-python/pytest-asyncio[${PYTHON_USEDEP}]
dev-python/uvloop[${PYTHON_USEDEP}]
dev-python/websockets[${PYTHON_USEDEP}]
)
"
+EPYTEST_PLUGINS=( pytest-asyncio )
distutils_enable_tests pytest
EPYTEST_DESELECT=(
# require Internet
tests/test_socks.py::TestSOCKSProxy::test_create_connection_resolve_good
)
+
+PATCHES=(
+ # https://github.com/kyuupichan/aiorpcX/commit/b8ce32889c45c98b44c4e247ec0b0ae206e9ee91
+ "${FILESDIR}/${PN}-0.25.0-pytest-asyncio-1.patch"
+ # parts of
+ # https://github.com/kyuupichan/aiorpcX/commit/b973b9b5612a47fe6311b43a4a4a2227b179d9b0
+ # https://github.com/kyuupichan/aiorpcX/commit/b3fe21c9ad6f21967b31422174ab648263d6d4d7
+ "${FILESDIR}/${P}-pytest-asyncio-1-more.patch"
+)
diff --git a/dev-python/aiorpcx/aiorpcx-0.24.ebuild b/dev-python/aiorpcx/aiorpcx-0.24.ebuild
index a33696ccbdc8..68d6de0c991f 100644
--- a/dev-python/aiorpcx/aiorpcx-0.24.ebuild
+++ b/dev-python/aiorpcx/aiorpcx-0.24.ebuild
@@ -26,15 +26,20 @@ KEYWORDS="amd64 ~arm arm64 x86"
BDEPEND="
test? (
- dev-python/pytest-asyncio[${PYTHON_USEDEP}]
dev-python/uvloop[${PYTHON_USEDEP}]
>=dev-python/websockets-0.14[${PYTHON_USEDEP}]
)
"
+EPYTEST_PLUGINS=( pytest-asyncio )
distutils_enable_tests pytest
EPYTEST_DESELECT=(
# require Internet
tests/test_socks.py::TestSOCKSProxy::test_create_connection_resolve_good
)
+
+PATCHES=(
+ # https://github.com/kyuupichan/aiorpcX/commit/b8ce32889c45c98b44c4e247ec0b0ae206e9ee91
+ "${FILESDIR}/${PN}-0.25.0-pytest-asyncio-1.patch"
+)
diff --git a/dev-python/aiorpcx/aiorpcx-0.25.0.ebuild b/dev-python/aiorpcx/aiorpcx-0.25.0.ebuild
index a33696ccbdc8..431ab2b0bf3d 100644
--- a/dev-python/aiorpcx/aiorpcx-0.25.0.ebuild
+++ b/dev-python/aiorpcx/aiorpcx-0.25.0.ebuild
@@ -26,15 +26,20 @@ KEYWORDS="amd64 ~arm arm64 x86"
BDEPEND="
test? (
- dev-python/pytest-asyncio[${PYTHON_USEDEP}]
dev-python/uvloop[${PYTHON_USEDEP}]
>=dev-python/websockets-0.14[${PYTHON_USEDEP}]
)
"
+EPYTEST_PLUGINS=( pytest-asyncio )
distutils_enable_tests pytest
EPYTEST_DESELECT=(
# require Internet
tests/test_socks.py::TestSOCKSProxy::test_create_connection_resolve_good
)
+
+PATCHES=(
+ # https://github.com/kyuupichan/aiorpcX/commit/b8ce32889c45c98b44c4e247ec0b0ae206e9ee91
+ "${FILESDIR}/${P}-pytest-asyncio-1.patch"
+)
diff --git a/dev-python/aiorpcx/files/aiorpcx-0.23.1-pytest-asyncio-1-more.patch b/dev-python/aiorpcx/files/aiorpcx-0.23.1-pytest-asyncio-1-more.patch
new file mode 100644
index 000000000000..5a0ef6459c67
--- /dev/null
+++ b/dev-python/aiorpcx/files/aiorpcx-0.23.1-pytest-asyncio-1-more.patch
@@ -0,0 +1,73 @@
+From b973b9b5612a47fe6311b43a4a4a2227b179d9b0 Mon Sep 17 00:00:00 2001
+From: f321x <felb@tuta.io>
+Date: Thu, 16 Jan 2025 12:04:06 +0100
+Subject: [PATCH 1/2] bump ws version to 14 and python version to 3.9
+
+remove venv
+
+bump ws version to 14 and python version to 3.9
+
+remove .idea
+
+bump ws version to 14 and python version to 3.9
+---
+ tests/test_websocket.py | 17 +++++------------
+ 1 file changed, 5 insertions(+), 12 deletions(-)
+
+diff --git a/tests/test_websocket.py b/tests/test_websocket.py
+index a0d268d..97b049c 100755
+--- a/tests/test_websocket.py
++++ b/tests/test_websocket.py
+@@ -7,19 +7,12 @@ from aiorpcx import connect_ws, NetAddress, serve_ws
+ from test_session import MyServerSession
+
+
+-@pytest.fixture
+-def ws_server(unused_tcp_port, event_loop):
+- coro = serve_ws(MyServerSession, 'localhost', unused_tcp_port)
+- server = event_loop.run_until_complete(coro)
++@pytest.fixture(scope="function")
++async def ws_server(unused_tcp_port, event_loop):
++ server = await serve_ws(MyServerSession, 'localhost', unused_tcp_port)
+ yield f'ws://localhost:{unused_tcp_port}'
+- tasks = asyncio.all_tasks(event_loop)
+-
+- async def close_all():
+- server.close()
+- await server.wait_closed()
+- if tasks:
+- await asyncio.wait(tasks)
+- event_loop.run_until_complete(close_all())
++ server.close()
++ await server.wait_closed()
+
+
+ @pytest.mark.filterwarnings("ignore:'with .*:DeprecationWarning")
+From b3fe21c9ad6f21967b31422174ab648263d6d4d7 Mon Sep 17 00:00:00 2001
+From: Neil Booth <kyuupichan@pm.me>
+Date: Thu, 16 Jan 2025 11:51:14 +0000
+Subject: [PATCH 2/2] Further tweaks.
+
+---
+ tests/test_websocket.py | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/tests/test_websocket.py b/tests/test_websocket.py
+index 97b049c..9a8f77a 100755
+--- a/tests/test_websocket.py
++++ b/tests/test_websocket.py
+@@ -1,5 +1,3 @@
+-import asyncio
+-
+ import pytest
+
+ from aiorpcx import connect_ws, NetAddress, serve_ws
+@@ -8,7 +6,7 @@ from test_session import MyServerSession
+
+
+ @pytest.fixture(scope="function")
+-async def ws_server(unused_tcp_port, event_loop):
++async def ws_server(unused_tcp_port):
+ server = await serve_ws(MyServerSession, 'localhost', unused_tcp_port)
+ yield f'ws://localhost:{unused_tcp_port}'
+ server.close()
diff --git a/dev-python/aiorpcx/files/aiorpcx-0.25.0-pytest-asyncio-1.patch b/dev-python/aiorpcx/files/aiorpcx-0.25.0-pytest-asyncio-1.patch
new file mode 100644
index 000000000000..4f8a94d2926c
--- /dev/null
+++ b/dev-python/aiorpcx/files/aiorpcx-0.25.0-pytest-asyncio-1.patch
@@ -0,0 +1,152 @@
+From b8ce32889c45c98b44c4e247ec0b0ae206e9ee91 Mon Sep 17 00:00:00 2001
+From: Neil Booth <kyuupichan@pm.me>
+Date: Wed, 30 Jul 2025 14:41:44 -0400
+Subject: [PATCH] Remove event_loop fixture usage from tests
+
+---
+ tests/test_session.py | 43 +++++++++-------------------------------
+ tests/test_socks.py | 6 +++---
+ tests/test_unixsocket.py | 16 +++++----------
+ tests/test_util.py | 3 ++-
+ 4 files changed, 19 insertions(+), 49 deletions(-)
+
+diff --git a/tests/test_session.py b/tests/test_session.py
+index 8877fca..f52ab6b 100755
+--- a/tests/test_session.py
++++ b/tests/test_session.py
+@@ -17,13 +17,6 @@ from aiorpcx.session import Concurrency
+ from util import RaiseTest
+
+
+-if sys.version_info >= (3, 7):
+- from asyncio import all_tasks
+-else:
+- from asyncio import Task
+- all_tasks = Task.all_tasks
+-
+-
+ def raises_method_not_found(message):
+ return RaiseTest(JSONRPC.METHOD_NOT_FOUND, message, RPCError)
+
+@@ -86,21 +79,12 @@ def caplog_count(caplog, message):
+
+
+ @pytest.fixture
+-def server_port(unused_tcp_port, event_loop):
+- coro = serve_rs(MyServerSession, 'localhost', unused_tcp_port, loop=event_loop)
+- server = event_loop.run_until_complete(coro)
++async def server_port(unused_tcp_port):
++ server = await serve_rs(MyServerSession, 'localhost', unused_tcp_port)
+ yield unused_tcp_port
+- if hasattr(asyncio, 'all_tasks'):
+- tasks = asyncio.all_tasks(event_loop)
+- else:
+- tasks = asyncio.Task.all_tasks(loop=event_loop)
+
+- async def close_all():
+- server.close()
+- await server.wait_closed()
+- if tasks:
+- await asyncio.wait(tasks)
+- event_loop.run_until_complete(close_all())
++ server.close()
++ await server.wait_closed()
+
+
+ class TestRPCSession:
+@@ -765,21 +749,12 @@ class MessageServer(MessageSession):
+
+
+ @pytest.fixture
+-def msg_server_port(event_loop, unused_tcp_port):
+- coro = serve_rs(MessageServer, 'localhost', unused_tcp_port, loop=event_loop)
+- server = event_loop.run_until_complete(coro)
++async def msg_server_port(unused_tcp_port):
++ server = await serve_rs(MessageServer, 'localhost', unused_tcp_port)
+ yield unused_tcp_port
+- if hasattr(asyncio, 'all_tasks'):
+- tasks = asyncio.all_tasks(event_loop)
+- else:
+- tasks = asyncio.Task.all_tasks(loop=event_loop)
+-
+- async def close_all():
+- server.close()
+- await server.wait_closed()
+- if tasks:
+- await asyncio.wait(tasks)
+- event_loop.run_until_complete(close_all())
++
++ server.close()
++ await server.wait_closed()
+
+
+ def connect_message_session(host, port, proxy=None, framer=None):
+diff --git a/tests/test_socks.py b/tests/test_socks.py
+index 43ca282..a8d3af2 100755
+--- a/tests/test_socks.py
++++ b/tests/test_socks.py
+@@ -482,10 +482,10 @@ localhosts = ['127.0.0.1', '::1', 'localhost']
+
+
+ @pytest.fixture(params=localhosts)
+-def proxy_address(request, event_loop, unused_tcp_port):
++async def proxy_address(request, unused_tcp_port):
+ host = request.param
+- coro = event_loop.create_server(FakeServer, host=host, port=unused_tcp_port)
+- server = event_loop.run_until_complete(coro)
++ event_loop = asyncio.get_running_loop()
++ server = await event_loop.create_server(FakeServer, host=host, port=unused_tcp_port)
+ yield NetAddress(host, unused_tcp_port)
+ server.close()
+
+diff --git a/tests/test_unixsocket.py b/tests/test_unixsocket.py
+index f75f23d..ae8c27f 100755
+--- a/tests/test_unixsocket.py
++++ b/tests/test_unixsocket.py
+@@ -11,20 +11,14 @@ if sys.platform.startswith("win"):
+
+
+ @pytest.fixture
+-def us_server(event_loop):
++async def us_server():
++ event_loop = asyncio.get_running_loop()
+ with tempfile.TemporaryDirectory() as tmp_folder:
+ socket_path = path.join(tmp_folder, 'test.socket')
+- coro = serve_us(MyServerSession, socket_path, loop=event_loop)
+- server = event_loop.run_until_complete(coro)
++ server = await serve_us(MyServerSession, socket_path)
+ yield socket_path
+- tasks = asyncio.all_tasks(event_loop)
+-
+- async def close_all():
+- server.close()
+- await server.wait_closed()
+- if tasks:
+- await asyncio.wait(tasks)
+- event_loop.run_until_complete(close_all())
++ server.close()
++ await server.wait_closed()
+
+
+ class TestUSTransport:
+diff --git a/tests/test_util.py b/tests/test_util.py
+index 8ce9691..5980607 100755
+--- a/tests/test_util.py
++++ b/tests/test_util.py
+@@ -15,6 +15,7 @@ async def coro(x, y):
+
+
+ def test_is_async_call():
++ event_loop = asyncio.new_event_loop()
+ z = coro(2, 3)
+ assert not is_async_call(z)
+ assert is_async_call(coro)
+@@ -23,7 +24,7 @@ def test_is_async_call():
+ assert not is_async_call(test_is_async_call)
+ assert not is_async_call(partial(is_async_call))
+ # Lose a warning
+- asyncio.get_event_loop().run_until_complete(z)
++ event_loop.run_until_complete(z)
+
+
+ @pytest.mark.parametrize("hostname,answer", (
diff --git a/dev-python/aiosignal/aiosignal-1.4.0.ebuild b/dev-python/aiosignal/aiosignal-1.4.0.ebuild
index 2d0acc76c3ac..b862c2804cf3 100644
--- a/dev-python/aiosignal/aiosignal-1.4.0.ebuild
+++ b/dev-python/aiosignal/aiosignal-1.4.0.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
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"
RDEPEND="
>=dev-python/frozenlist-1.1.0[${PYTHON_USEDEP}]
diff --git a/dev-python/aiosmtpd/aiosmtpd-1.4.6.ebuild b/dev-python/aiosmtpd/aiosmtpd-1.4.6.ebuild
index 2bb01336afc2..aa36f73223fc 100644
--- a/dev-python/aiosmtpd/aiosmtpd-1.4.6.ebuild
+++ b/dev-python/aiosmtpd/aiosmtpd-1.4.6.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
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/atpublic-4.0[${PYTHON_USEDEP}]
diff --git a/dev-python/aiounittest/aiounittest-1.5.0-r1.ebuild b/dev-python/aiounittest/aiounittest-1.5.0-r1.ebuild
index e8fb9d6c93b0..fd0a257b7674 100644
--- a/dev-python/aiounittest/aiounittest-1.5.0-r1.ebuild
+++ b/dev-python/aiounittest/aiounittest-1.5.0-r1.ebuild
@@ -20,7 +20,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"
RDEPEND="
dev-python/wrapt[${PYTHON_USEDEP}]
diff --git a/dev-python/alabaster/alabaster-1.0.0.ebuild b/dev-python/alabaster/alabaster-1.0.0.ebuild
index 7513121221cd..39b87a7f15aa 100644
--- a/dev-python/alabaster/alabaster-1.0.0.ebuild
+++ b/dev-python/alabaster/alabaster-1.0.0.ebuild
@@ -16,4 +16,4 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-solaris"
diff --git a/dev-python/annotated-types/annotated-types-0.7.0.ebuild b/dev-python/annotated-types/annotated-types-0.7.0.ebuild
index fabce3df02bc..ada0a7fa9965 100644
--- a/dev-python/annotated-types/annotated-types-0.7.0.ebuild
+++ b/dev-python/annotated-types/annotated-types-0.7.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
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"
BDEPEND="
test? (
diff --git a/dev-python/anyio/anyio-4.10.0.ebuild b/dev-python/anyio/anyio-4.10.0.ebuild
index e2e4b9526ffc..c2a5c01546de 100644
--- a/dev-python/anyio/anyio-4.10.0.ebuild
+++ b/dev-python/anyio/anyio-4.10.0.ebuild
@@ -51,7 +51,8 @@ distutils_enable_tests pytest
distutils_enable_sphinx docs \
'>=dev-python/sphinx-rtd-theme-1.2.2' \
dev-python/sphinxcontrib-jquery \
- dev-python/sphinx-autodoc-typehints
+ dev-python/sphinx-autodoc-typehints \
+ dev-python/sphinx-tabs
python_test() {
local EPYTEST_DESELECT=(
diff --git a/dev-python/anyio/anyio-4.8.0-r3.ebuild b/dev-python/anyio/anyio-4.8.0-r3.ebuild
index 6c3efe18bc82..5fad1a6b2bf9 100644
--- a/dev-python/anyio/anyio-4.8.0-r3.ebuild
+++ b/dev-python/anyio/anyio-4.8.0-r3.ebuild
@@ -16,7 +16,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"
RDEPEND="
>=dev-python/idna-2.8[${PYTHON_USEDEP}]
diff --git a/dev-python/apipkg/apipkg-3.0.2.ebuild b/dev-python/apipkg/apipkg-3.0.2.ebuild
index 6c632e09ae63..eacf011c7b30 100644
--- a/dev-python/apipkg/apipkg-3.0.2.ebuild
+++ b/dev-python/apipkg/apipkg-3.0.2.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
BDEPEND="
dev-python/hatch-vcs[${PYTHON_USEDEP}]
diff --git a/dev-python/appdirs/appdirs-1.4.4-r3.ebuild b/dev-python/appdirs/appdirs-1.4.4-r3.ebuild
index 813284f01777..ac8b8c358979 100644
--- a/dev-python/appdirs/appdirs-1.4.4-r3.ebuild
+++ b/dev-python/appdirs/appdirs-1.4.4-r3.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
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"
python_test() {
"${EPYTHON}" test/test_api.py -v || die "Tests fail with ${EPYTHON}"
diff --git a/dev-python/apprise/apprise-1.9.4.ebuild b/dev-python/apprise/apprise-1.9.4.ebuild
index f428a90c9d6c..afb0cdfa9fa2 100644
--- a/dev-python/apprise/apprise-1.9.4.ebuild
+++ b/dev-python/apprise/apprise-1.9.4.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD-2"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~riscv"
+KEYWORDS="amd64 ~arm arm64 ~riscv"
IUSE="+dbus mqtt"
RDEPEND="
diff --git a/dev-python/apsw/apsw-3.50.3.0.ebuild b/dev-python/apsw/apsw-3.50.3.0.ebuild
index bbde61020ea5..50cb142814ae 100644
--- a/dev-python/apsw/apsw-3.50.3.0.ebuild
+++ b/dev-python/apsw/apsw-3.50.3.0.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="ZLIB"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86"
+KEYWORDS="amd64 ~arm arm64 ~ppc64 x86"
IUSE="doc"
DEPEND="
diff --git a/dev-python/argcomplete/argcomplete-3.6.2.ebuild b/dev-python/argcomplete/argcomplete-3.6.2.ebuild
index 70228217368a..d97a369d8d8c 100644
--- a/dev-python/argcomplete/argcomplete-3.6.2.ebuild
+++ b/dev-python/argcomplete/argcomplete-3.6.2.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 ~amd64-linux ~x86-linux ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/argh/argh-0.31.3.ebuild b/dev-python/argh/argh-0.31.3.ebuild
index 9408881924b5..a736874fed72 100644
--- a/dev-python/argh/argh-0.31.3.ebuild
+++ b/dev-python/argh/argh-0.31.3.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="LGPL-3"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~m68k ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ppc ppc64 ~riscv ~s390 ~sparc x86"
BDEPEND="
test? (
diff --git a/dev-python/argon2-cffi-bindings/argon2-cffi-bindings-21.2.0-r1.ebuild b/dev-python/argon2-cffi-bindings/argon2-cffi-bindings-21.2.0-r1.ebuild
index 06a850a7bfa6..7097da00b7ae 100644
--- a/dev-python/argon2-cffi-bindings/argon2-cffi-bindings-21.2.0-r1.ebuild
+++ b/dev-python/argon2-cffi-bindings/argon2-cffi-bindings-21.2.0-r1.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
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="cpu_flags_x86_sse2"
DEPEND="
diff --git a/dev-python/argon2-cffi-bindings/argon2-cffi-bindings-25.1.0.ebuild b/dev-python/argon2-cffi-bindings/argon2-cffi-bindings-25.1.0.ebuild
index 8f13dbb3c5d8..7db871e6dba0 100644
--- a/dev-python/argon2-cffi-bindings/argon2-cffi-bindings-25.1.0.ebuild
+++ b/dev-python/argon2-cffi-bindings/argon2-cffi-bindings-25.1.0.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc x86"
IUSE="cpu_flags_x86_sse2"
DEPEND="
diff --git a/dev-python/argon2-cffi/argon2-cffi-25.1.0.ebuild b/dev-python/argon2-cffi/argon2-cffi-25.1.0.ebuild
index fc846d76960a..caac5c468d2d 100644
--- a/dev-python/argon2-cffi/argon2-cffi-25.1.0.ebuild
+++ b/dev-python/argon2-cffi/argon2-cffi-25.1.0.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/argon2-cffi-bindings-21.2.0[${PYTHON_USEDEP}]
diff --git a/dev-python/arrow/arrow-1.3.0.ebuild b/dev-python/arrow/arrow-1.3.0.ebuild
index 9257445a2f41..8d0d170ffc02 100644
--- a/dev-python/arrow/arrow-1.3.0.ebuild
+++ b/dev-python/arrow/arrow-1.3.0.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 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
RDEPEND="
>=dev-python/python-dateutil-2.7.0[${PYTHON_USEDEP}]
diff --git a/dev-python/asgiref/asgiref-3.9.1.ebuild b/dev-python/asgiref/asgiref-3.9.1.ebuild
index 14c6aac5cf6e..9fbe829aa6dd 100644
--- a/dev-python/asgiref/asgiref-3.9.1.ebuild
+++ b/dev-python/asgiref/asgiref-3.9.1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
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"
EPYTEST_PLUGINS=( pytest-asyncio )
distutils_enable_tests pytest
diff --git a/dev-python/asn1crypto/asn1crypto-1.5.1_p20231012.ebuild b/dev-python/asn1crypto/asn1crypto-1.5.1_p20231012.ebuild
index 036b8ec3e776..081d468bac6c 100644
--- a/dev-python/asn1crypto/asn1crypto-1.5.1_p20231012.ebuild
+++ b/dev-python/asn1crypto/asn1crypto-1.5.1_p20231012.ebuild
@@ -24,6 +24,6 @@ S=${WORKDIR}/${MY_P}
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
distutils_enable_tests unittest
diff --git a/dev-python/astor/astor-0.8.1-r2.ebuild b/dev-python/astor/astor-0.8.1-r2.ebuild
index 259c16affba1..98557745ea9c 100644
--- a/dev-python/astor/astor-0.8.1-r2.ebuild
+++ b/dev-python/astor/astor-0.8.1-r2.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
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"
PATCHES=(
"${FILESDIR}/${P}-tests-bigint.patch"
diff --git a/dev-python/astroid/astroid-3.3.11.ebuild b/dev-python/astroid/astroid-3.3.11.ebuild
index 84204defb536..36858cde53f0 100644
--- a/dev-python/astroid/astroid-3.3.11.ebuild
+++ b/dev-python/astroid/astroid-3.3.11.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="LGPL-2.1+"
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"
# dev-python/regex isn't available for pypy
BDEPEND="
diff --git a/dev-python/asttokens/asttokens-3.0.0-r1.ebuild b/dev-python/asttokens/asttokens-3.0.0-r1.ebuild
index a265f0cdedc8..74c3a5389a1f 100644
--- a/dev-python/asttokens/asttokens-3.0.0-r1.ebuild
+++ b/dev-python/asttokens/asttokens-3.0.0-r1.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="Apache-2.0"
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"
BDEPEND="
dev-python/setuptools-scm[${PYTHON_USEDEP}]
diff --git a/dev-python/async-timeout/async-timeout-4.0.3.ebuild b/dev-python/async-timeout/async-timeout-4.0.3.ebuild
index f314c54dd1d0..8c3ec7cff90a 100644
--- a/dev-python/async-timeout/async-timeout-4.0.3.ebuild
+++ b/dev-python/async-timeout/async-timeout-4.0.3.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -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 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
BDEPEND="
dev-python/setuptools-scm[${PYTHON_USEDEP}]
diff --git a/dev-python/async-timeout/async-timeout-5.0.1.ebuild b/dev-python/async-timeout/async-timeout-5.0.1.ebuild
index eccb438e5ed3..8c9a854ea8d8 100644
--- a/dev-python/async-timeout/async-timeout-5.0.1.ebuild
+++ b/dev-python/async-timeout/async-timeout-5.0.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
BDEPEND="
dev-python/setuptools-scm[${PYTHON_USEDEP}]
diff --git a/dev-python/atomicwrites/atomicwrites-1.4.1.ebuild b/dev-python/atomicwrites/atomicwrites-1.4.1.ebuild
index af1da2a71edd..2955b18cdab1 100644
--- a/dev-python/atomicwrites/atomicwrites-1.4.1.ebuild
+++ b/dev-python/atomicwrites/atomicwrites-1.4.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 ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-solaris"
distutils_enable_tests pytest
distutils_enable_sphinx docs \
diff --git a/dev-python/atpublic/atpublic-6.0.1.ebuild b/dev-python/atpublic/atpublic-6.0.1.ebuild
index 3ac8624eebaa..ec825f4fb7c7 100644
--- a/dev-python/atpublic/atpublic-6.0.1.ebuild
+++ b/dev-python/atpublic/atpublic-6.0.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
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="
$(python_gen_cond_dep '
diff --git a/dev-python/attrs/attrs-25.3.0.ebuild b/dev-python/attrs/attrs-25.3.0.ebuild
index e1dfb85c7c46..99e4084e2094 100644
--- a/dev-python/attrs/attrs-25.3.0.ebuild
+++ b/dev-python/attrs/attrs-25.3.0.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 ~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"
BDEPEND="
>=dev-python/hatchling-1.26.0[${PYTHON_USEDEP}]
diff --git a/dev-python/autobahn/autobahn-24.4.2.ebuild b/dev-python/autobahn/autobahn-24.4.2.ebuild
index 79ae9c85636d..36e6d45823e1 100644
--- a/dev-python/autobahn/autobahn-24.4.2.ebuild
+++ b/dev-python/autobahn/autobahn-24.4.2.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -57,6 +57,11 @@ BDEPEND="
"
python_prepare_all() {
+ local PATCHES=(
+ # https://github.com/crossbario/autobahn-python/pull/1661
+ "${FILESDIR}/${P}-pytest-asyncio-1.patch"
+ )
+
if use xbr ; then
eerror "***************"
eerror "Required xbr dependencies are incomplete in Gentoo."
@@ -77,10 +82,6 @@ python_prepare_all() {
# to fix tinderbox sandbox issue
sed -e '/import/s:reactor:__importmustfail__:' \
-i setup.py || die
-
- # https://github.com/crossbario/autobahn-python/issues/1646
- sed -e 's:(forbid_global_loop=True)::' \
- -i autobahn/wamp/test/test_wamp_component_aio.py || die
}
python_test() {
@@ -92,9 +93,9 @@ python_test() {
unset USE_TWISTED
einfo "RE-testing cryptosign and component_aio using asyncio"
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local EPYTEST_PLUGINS=( pytest-asyncio )
local -x USE_ASYNCIO=true
- epytest -p asyncio --pyargs \
+ epytest --pyargs \
autobahn.asyncio.test.test_aio_{raw,web}socket \
autobahn.wamp.test.test_wamp_{cryptosign,component_aio}
unset USE_ASYNCIO
diff --git a/dev-python/autobahn/files/autobahn-24.4.2-pytest-asyncio-1.patch b/dev-python/autobahn/files/autobahn-24.4.2-pytest-asyncio-1.patch
new file mode 100644
index 000000000000..df35281e4121
--- /dev/null
+++ b/dev-python/autobahn/files/autobahn-24.4.2-pytest-asyncio-1.patch
@@ -0,0 +1,298 @@
+From 9a14ae7739524f376d94e075c5a8f2f26e79c674 Mon Sep 17 00:00:00 2001
+From: meejah <meejah@meejah.ca>
+Date: Sat, 21 Jun 2025 22:35:41 -0600
+Subject: [PATCH] Plain twisted utilities are sufficient (#1661)
+
+* Plain twisted utilities are sufficient
+
+* CI fixups
+---
+ autobahn/asyncio/test/test_aio_rawsocket.py | 18 +++++------
+ autobahn/asyncio/test/test_aio_websocket.py | 10 +++---
+ .../twisted/test/test_tx_websocket_agent.py | 5 +--
+ autobahn/twisted/testing/__init__.py | 31 +++----------------
+ autobahn/wamp/test/test_wamp_component_aio.py | 29 ++++++++---------
+ 5 files changed, 36 insertions(+), 57 deletions(-)
+
+diff --git a/autobahn/asyncio/test/test_aio_rawsocket.py b/autobahn/asyncio/test/test_aio_rawsocket.py
+index 726a6242..42c00c30 100644
+--- a/autobahn/asyncio/test/test_aio_rawsocket.py
++++ b/autobahn/asyncio/test/test_aio_rawsocket.py
+@@ -11,7 +11,7 @@ from autobahn.wamp.types import TransportDetails
+
+
+ @pytest.mark.skipif(not os.environ.get('USE_ASYNCIO', False), reason='test runs on asyncio only')
+-def test_sers(event_loop):
++def test_sers():
+ serializers = get_serializers()
+ assert len(serializers) > 0
+ m = serializers[0]().serialize(message.Abort('close'))
+@@ -19,7 +19,7 @@ def test_sers(event_loop):
+
+
+ @pytest.mark.skipif(not os.environ.get('USE_ASYNCIO', False), reason='test runs on asyncio only')
+-def test_prefix(event_loop):
++def test_prefix():
+ p = PrefixProtocol()
+ transport = Mock()
+ receiver = Mock()
+@@ -62,7 +62,7 @@ def test_prefix(event_loop):
+
+
+ @pytest.mark.skipif(not os.environ.get('USE_ASYNCIO', False), reason='test runs on asyncio only')
+-def test_is_closed(event_loop):
++def test_is_closed():
+ class CP(RawSocketClientProtocol):
+ @property
+ def serializer_id(self):
+@@ -83,7 +83,7 @@ def test_is_closed(event_loop):
+
+
+ @pytest.mark.skipif(not os.environ.get('USE_ASYNCIO', False), reason='test runs on asyncio only')
+-def test_raw_socket_server1(event_loop):
++def test_raw_socket_server1():
+
+ server = RawSocketServerProtocol()
+ ser = Mock(return_value=True)
+@@ -108,7 +108,7 @@ def test_raw_socket_server1(event_loop):
+
+
+ @pytest.mark.skipif(not os.environ.get('USE_ASYNCIO', False), reason='test runs on asyncio only')
+-def test_raw_socket_server_errors(event_loop):
++def test_raw_socket_server_errors():
+
+ server = RawSocketServerProtocol()
+ ser = Mock(return_value=True)
+@@ -139,7 +139,7 @@ def test_raw_socket_server_errors(event_loop):
+
+
+ @pytest.mark.skipif(not os.environ.get('USE_ASYNCIO', False), reason='test runs on asyncio only')
+-def test_raw_socket_client1(event_loop):
++def test_raw_socket_client1():
+ class CP(RawSocketClientProtocol):
+ @property
+ def serializer_id(self):
+@@ -162,7 +162,7 @@ def test_raw_socket_client1(event_loop):
+
+
+ @pytest.mark.skipif(not os.environ.get('USE_ASYNCIO', False), reason='test runs on asyncio only')
+-def test_raw_socket_client_error(event_loop):
++def test_raw_socket_client_error():
+ class CP(RawSocketClientProtocol):
+ @property
+ def serializer_id(self):
+@@ -181,7 +181,7 @@ def test_raw_socket_client_error(event_loop):
+
+
+ @pytest.mark.skipif(not os.environ.get('USE_ASYNCIO', False), reason='test runs on asyncio only')
+-def test_wamp_server(event_loop):
++def test_wamp_server():
+ transport = Mock(spec_set=('abort', 'close', 'write', 'get_extra_info'))
+ transport.write = Mock(side_effect=lambda m: messages.append(m))
+ server = Mock(spec=['onOpen', 'onMessage'])
+@@ -209,7 +209,7 @@ def test_wamp_server(event_loop):
+
+
+ @pytest.mark.skipif(not os.environ.get('USE_ASYNCIO', False), reason='test runs on asyncio only')
+-def test_wamp_client(event_loop):
++def test_wamp_client():
+ transport = Mock(spec_set=('abort', 'close', 'write', 'get_extra_info'))
+ transport.write = Mock(side_effect=lambda m: messages.append(m))
+ client = Mock(spec=['onOpen', 'onMessage'])
+diff --git a/autobahn/asyncio/test/test_aio_websocket.py b/autobahn/asyncio/test/test_aio_websocket.py
+index f80cc249..c2299991 100644
+--- a/autobahn/asyncio/test/test_aio_websocket.py
++++ b/autobahn/asyncio/test/test_aio_websocket.py
+@@ -23,16 +23,15 @@ async def test_echo_async():
+
+ # @pytest.mark.asyncio(forbid_global_loop=True)
+ @pytest.mark.skipif(not os.environ.get('USE_ASYNCIO', False), reason='test runs on asyncio only')
+-def test_websocket_custom_loop(event_loop):
+- factory = WebSocketServerFactory(loop=event_loop)
++def test_websocket_custom_loop():
++ factory = WebSocketServerFactory(loop=asyncio.new_event_loop())
+ server = factory()
+ transport = Mock()
+ server.connection_made(transport)
+
+
+ @pytest.mark.skipif(not os.environ.get('USE_ASYNCIO', False), reason='test runs on asyncio only')
+-@pytest.mark.asyncio
+-async def test_async_on_connect_server(event_loop):
++def test_async_on_connect_server():
+
+ num = 42
+ done = txaio.create_future()
+@@ -65,7 +64,8 @@ async def test_async_on_connect_server(event_loop):
+ b'\r\n', # last string doesn't get a \r\n from join()
+ ])
+ server.processHandshake()
+- await done
++
++ asyncio.get_event_loop().run_until_complete(done)
+
+ assert len(values) == 1
+ assert values[0] == num * num
+diff --git a/autobahn/twisted/test/test_tx_websocket_agent.py b/autobahn/twisted/test/test_tx_websocket_agent.py
+index c926cbef..d65c3ca8 100644
+--- a/autobahn/twisted/test/test_tx_websocket_agent.py
++++ b/autobahn/twisted/test/test_tx_websocket_agent.py
+@@ -1,12 +1,13 @@
+ from twisted.trial import unittest
+
+ try:
+- from autobahn.twisted.testing import create_memory_agent, MemoryReactorClockResolver, create_pumper
++ from autobahn.twisted.testing import create_memory_agent, create_pumper
+ HAVE_TESTING = True
+ except ImportError:
+ HAVE_TESTING = False
+
+ from twisted.internet.defer import inlineCallbacks
++from twisted.internet.testing import MemoryReactorClock
+ from autobahn.twisted.websocket import WebSocketServerProtocol
+
+
+@@ -16,7 +17,7 @@ class TestAgent(unittest.TestCase):
+
+ def setUp(self):
+ self.pumper = create_pumper()
+- self.reactor = MemoryReactorClockResolver()
++ self.reactor = MemoryReactorClock()
+ return self.pumper.start()
+
+ def tearDown(self):
+diff --git a/autobahn/twisted/testing/__init__.py b/autobahn/twisted/testing/__init__.py
+index 53d5f2d4..e014d350 100644
+--- a/autobahn/twisted/testing/__init__.py
++++ b/autobahn/twisted/testing/__init__.py
+@@ -37,7 +37,7 @@ except ImportError:
+ from twisted.internet.defer import Deferred
+ from twisted.internet.address import IPv4Address
+ from twisted.internet._resolver import HostResolution # "internal" class, but it's simple
+-from twisted.internet.interfaces import ISSLTransport, IReactorPluggableNameResolver
++from twisted.internet.interfaces import ISSLTransport
+ try:
+ from twisted.internet.testing import MemoryReactorClock
+ except ImportError:
+@@ -73,32 +73,9 @@ class _StaticTestResolver(object):
+ receiver.resolutionComplete()
+
+
+-@implementer(IReactorPluggableNameResolver)
+-class _TestNameResolver(object):
+- """
+- A test version of IReactorPluggableNameResolver
+- """
+-
+- _resolver = None
+-
+- @property
+- def nameResolver(self):
+- if self._resolver is None:
+- self._resolver = _StaticTestResolver()
+- return self._resolver
+-
+- def installNameResolver(self, resolver):
+- old = self._resolver
+- self._resolver = resolver
+- return old
+-
+-
+-class MemoryReactorClockResolver(MemoryReactorClock, _TestNameResolver):
+- """
+- Combine MemoryReactor, Clock and an IReactorPluggableNameResolver
+- together.
+- """
+- pass
++# in previous revisions, we exported MemoryReactorClockResolver so
++# this maintains compatibility with any downstream code
++MemoryReactorClockResolver = MemoryReactorClock
+
+
+ class _TwistedWebMemoryAgent(IWebSocketClientAgent):
+diff --git a/autobahn/wamp/test/test_wamp_component_aio.py b/autobahn/wamp/test/test_wamp_component_aio.py
+index 2de9bf35..971f8ddd 100644
+--- a/autobahn/wamp/test/test_wamp_component_aio.py
++++ b/autobahn/wamp/test/test_wamp_component_aio.py
+@@ -29,15 +29,15 @@ import sys
+ import unittest.mock as mock
+ import pytest
+ import txaio
++import asyncio
+
+ if os.environ.get('USE_ASYNCIO', False):
+ from autobahn.asyncio.component import Component
+
+ @pytest.mark.skipif(sys.version_info < (3, 5), reason="requires Python 3.5+")
+- @pytest.mark.asyncio(forbid_global_loop=True)
+- async def test_asyncio_component(event_loop):
++ def test_asyncio_component():
+ orig_loop = txaio.config.loop
+- txaio.config.loop = event_loop
++ txaio.config.loop = asyncio.get_event_loop()
+
+ comp = Component(
+ transports=[
+@@ -52,8 +52,8 @@ if os.environ.get('USE_ASYNCIO', False):
+ # if having trouble, try starting some logging (and use
+ # "py.test -s" to get real-time output)
+ # txaio.start_logging(level="debug")
+- f = comp.start(loop=event_loop)
+- txaio.config.loop = event_loop
++ f = comp.start(loop=asyncio.get_event_loop())
++ txaio.config.loop = asyncio.get_event_loop()
+ finished = txaio.create_future()
+
+ def fail():
+@@ -72,18 +72,18 @@ if os.environ.get('USE_ASYNCIO', False):
+ txaio.config.loop = orig_loop
+ assert comp._done_f is None
+ f.add_done_callback(done)
+- await finished
++
++ asyncio.get_event_loop().run_until_complete(finished)
+
+ @pytest.mark.skipif(sys.version_info < (3, 5), reason="requires Python 3.5+")
+- @pytest.mark.asyncio(forbid_global_loop=True)
+- async def test_asyncio_component_404(event_loop):
++ def test_asyncio_component_404():
+ """
+ If something connects but then gets aborted, it should still try
+ to re-connect (in real cases this could be e.g. wrong path,
+ TLS failure, WebSocket handshake failure, etc)
+ """
+ orig_loop = txaio.config.loop
+- txaio.config.loop = event_loop
++ txaio.config.loop = asyncio.get_event_loop()
+
+ class FakeTransport(object):
+ def close(self):
+@@ -104,8 +104,8 @@ if os.environ.get('USE_ASYNCIO', False):
+ else:
+ return txaio.create_future_error(RuntimeError("second connection fails completely"))
+
+- with mock.patch.object(event_loop, 'create_connection', create_connection):
+- event_loop.create_connection = create_connection
++ with mock.patch.object(txaio.config.loop, 'create_connection', create_connection):
++ txaio.config.loop.create_connection = create_connection
+
+ comp = Component(
+ transports=[
+@@ -120,8 +120,8 @@ if os.environ.get('USE_ASYNCIO', False):
+ # if having trouble, try starting some logging (and use
+ # "py.test -s" to get real-time output)
+ # txaio.start_logging(level="debug")
+- f = comp.start(loop=event_loop)
+- txaio.config.loop = event_loop
++ f = comp.start(loop=asyncio.get_event_loop())
++ txaio.config.loop = asyncio.get_event_loop()
+
+ # now that we've started connecting, we *should* be able
+ # to connetion_lost our transport .. but we do a
+@@ -151,4 +151,5 @@ if os.environ.get('USE_ASYNCIO', False):
+ finished.set_result(None)
+ txaio.config.loop = orig_loop
+ f.add_done_callback(done)
+- await finished
++
++ asyncio.get_event_loop().run_until_complete(finished)
diff --git a/dev-python/automat/automat-25.4.16.ebuild b/dev-python/automat/automat-25.4.16.ebuild
index e153e54bdcbb..bc429d5747b3 100644
--- a/dev-python/automat/automat-25.4.16.ebuild
+++ b/dev-python/automat/automat-25.4.16.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 ~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="examples"
BDEPEND="
diff --git a/dev-python/autopage/autopage-0.5.2.ebuild b/dev-python/autopage/autopage-0.5.2.ebuild
index ccf6e81b063a..20f55ebcaef6 100644
--- a/dev-python/autopage/autopage-0.5.2.ebuild
+++ b/dev-python/autopage/autopage-0.5.2.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~mips ~ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~mips ~ppc64 ~riscv ~s390 ~sparc x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/autopep8/autopep8-2.3.2.ebuild b/dev-python/autopep8/autopep8-2.3.2.ebuild
index 5a21fd4f86a2..79255f4e7a80 100644
--- a/dev-python/autopep8/autopep8-2.3.2.ebuild
+++ b/dev-python/autopep8/autopep8-2.3.2.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm64 ~ppc ~ppc64 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm64 ~ppc ~ppc64 ~sparc x86 ~amd64-linux ~x86-linux"
RDEPEND="
>=dev-python/pycodestyle-2.12.0[${PYTHON_USEDEP}]
diff --git a/dev-python/babel/babel-2.17.0.ebuild b/dev-python/babel/babel-2.17.0.ebuild
index 607afaf4ece2..cf95657a2b39 100644
--- a/dev-python/babel/babel-2.17.0.ebuild
+++ b/dev-python/babel/babel-2.17.0.ebuild
@@ -23,7 +23,7 @@ SRC_URI+="
LICENSE="BSD"
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"
# RDEPEND in BDEPEND for import_cldr.py usage, bug #852158
BDEPEND="
diff --git a/dev-python/backports-tarfile/backports-tarfile-1.2.0.ebuild b/dev-python/backports-tarfile/backports-tarfile-1.2.0.ebuild
index b668760e540c..1b81b5d24033 100644
--- a/dev-python/backports-tarfile/backports-tarfile-1.2.0.ebuild
+++ b/dev-python/backports-tarfile/backports-tarfile-1.2.0.ebuild
@@ -19,7 +19,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 ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"
BDEPEND="
test? (
diff --git a/dev-python/bcrypt/bcrypt-4.3.0.ebuild b/dev-python/bcrypt/bcrypt-4.3.0.ebuild
index 6629c7540da5..ca9e87ce1a81 100644
--- a/dev-python/bcrypt/bcrypt-4.3.0.ebuild
+++ b/dev-python/bcrypt/bcrypt-4.3.0.ebuild
@@ -75,7 +75,7 @@ LICENSE="Apache-2.0"
# Dependent crate licenses
LICENSE+=" Apache-2.0-with-LLVM-exceptions BSD MIT 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"
BDEPEND="
>=dev-python/setuptools-rust-1.7.0[${PYTHON_USEDEP}]
diff --git a/dev-python/beautifulsoup4/beautifulsoup4-4.13.4.ebuild b/dev-python/beautifulsoup4/beautifulsoup4-4.13.4.ebuild
index fdbaeddf0109..35e15b324bbd 100644
--- a/dev-python/beautifulsoup4/beautifulsoup4-4.13.4.ebuild
+++ b/dev-python/beautifulsoup4/beautifulsoup4-4.13.4.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 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
RDEPEND="
dev-python/html5lib[${PYTHON_USEDEP}]
diff --git a/dev-python/betamax/betamax-0.9.0.ebuild b/dev-python/betamax/betamax-0.9.0.ebuild
index 0b176b9d66e6..c924e56f6e77 100644
--- a/dev-python/betamax/betamax-0.9.0.ebuild
+++ b/dev-python/betamax/betamax-0.9.0.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 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
RDEPEND="
>=dev-python/requests-2.0[${PYTHON_USEDEP}]
diff --git a/dev-python/black/black-24.10.0.ebuild b/dev-python/black/black-24.10.0.ebuild
index be0af76a4a7f..eb80baafa089 100644
--- a/dev-python/black/black-24.10.0.ebuild
+++ b/dev-python/black/black-24.10.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 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
RDEPEND="
>=dev-python/click-8.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/black/black-25.1.0.ebuild b/dev-python/black/black-25.1.0.ebuild
index 8de0dd3ccfbb..ce70c6ca8dec 100644
--- a/dev-python/black/black-25.1.0.ebuild
+++ b/dev-python/black/black-25.1.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 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
RDEPEND="
>=dev-python/click-8.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/bleach/bleach-6.2.0.ebuild b/dev-python/bleach/bleach-6.2.0.ebuild
index 805dd9d58c97..2afab3d76746 100644
--- a/dev-python/bleach/bleach-6.2.0.ebuild
+++ b/dev-python/bleach/bleach-6.2.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
RDEPEND="
dev-python/packaging[${PYTHON_USEDEP}]
diff --git a/dev-python/bleak/Manifest b/dev-python/bleak/Manifest
new file mode 100644
index 000000000000..835f54cdff05
--- /dev/null
+++ b/dev-python/bleak/Manifest
@@ -0,0 +1 @@
+DIST bleak-1.1.0.tar.gz 116100 BLAKE2B c41e02c7fcf58671d68f9a4d4b94b05546bd656366551948fc7d62c07297754730ff1ab4dc6d45ffdb460aac6f47cf616b5b056c721cebe075521d6b39769ff6 SHA512 4861e999d812b63ce4d85eb8711f9cf226e70b2adc786f87c4be8793c72f9f01cd2572ea46e59315ae7774864b5c5e5ef642e47a0abf145fd8ed2ab48cda61df
diff --git a/dev-python/bleak/bleak-1.1.0.ebuild b/dev-python/bleak/bleak-1.1.0.ebuild
new file mode 100644
index 000000000000..7fafe4780265
--- /dev/null
+++ b/dev-python/bleak/bleak-1.1.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=poetry
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Bluetooth Low Energy platform Agnostic Klient (BLEAK) for Python"
+HOMEPAGE="https://bleak.readthedocs.io"
+
+LICENSE="MIT"
+SLOT="0"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+# Dependencies unsurprisingly derive from "pyproject.toml".
+BDEPEND="test? (
+ >=dev-python/pytest-7.0.0[${PYTHON_USEDEP}]
+ >=dev-python/pytest-asyncio-0.19.0[${PYTHON_USEDEP}]
+ >=dev-python/pytest-cov-3.0.0[${PYTHON_USEDEP}]
+)"
+RDEPEND="
+ >=dev-python/dbus-fast-1.22.0[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/async-timeout-3.0.0[${PYTHON_USEDEP}]
+ ' python3_{8..10})
+"
+DEPEND="${RDEPEND}"
+
+distutils_enable_sphinx docs dev-python/sphinx-rtd-theme
+
+#FIXME: Tests currently fail to run and I can't be bothered to resolve. *sigh*
+# distutils_enable_tests pytest
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+
+ EGIT_REPO_URI="https://github.com/hbldh/bleak.git"
+ EGIT_BRANCH="develop"
+else
+ KEYWORDS="~amd64"
+fi
+
+python_install_all() {
+ [[ -d examples ]] && dodoc -r examples
+
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/bleak/metadata.xml b/dev-python/bleak/metadata.xml
new file mode 100644
index 000000000000..567d566ea44b
--- /dev/null
+++ b/dev-python/bleak/metadata.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>zl29ah@gmail.com</email>
+ <name>Sergey Alirzaev</name>
+ </maintainer>
+
+ <origin>gentoo-guru-overlay</origin>
+</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/blinker/blinker-1.9.0.ebuild b/dev-python/blinker/blinker-1.9.0.ebuild
index cbef14ed7c8b..34b7b05d6568 100644
--- a/dev-python/blinker/blinker-1.9.0.ebuild
+++ b/dev-python/blinker/blinker-1.9.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
BDEPEND="
test? (
diff --git a/dev-python/blockbuster/blockbuster-1.5.25.ebuild b/dev-python/blockbuster/blockbuster-1.5.25.ebuild
index 84455b303c2d..da308efa1b2b 100644
--- a/dev-python/blockbuster/blockbuster-1.5.25.ebuild
+++ b/dev-python/blockbuster/blockbuster-1.5.25.ebuild
@@ -16,7 +16,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"
RDEPEND="
$(python_gen_cond_dep '
diff --git a/dev-python/boltons/boltons-25.0.0.ebuild b/dev-python/boltons/boltons-25.0.0.ebuild
index 72ff2c8925c9..e87f89a4fc05 100644
--- a/dev-python/boltons/boltons-25.0.0.ebuild
+++ b/dev-python/boltons/boltons-25.0.0.ebuild
@@ -12,7 +12,7 @@ HOMEPAGE="https://boltons.readthedocs.io/"
LICENSE="BSD"
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"
EPYTEST_PLUGINS=()
distutils_enable_tests pytest
diff --git a/dev-python/boolean-py/boolean-py-5.0.ebuild b/dev-python/boolean-py/boolean-py-5.0.ebuild
index 15610a637f4c..bc15f7f253dc 100644
--- a/dev-python/boolean-py/boolean-py-5.0.ebuild
+++ b/dev-python/boolean-py/boolean-py-5.0.ebuild
@@ -22,6 +22,6 @@ 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 ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
distutils_enable_tests pytest
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index 6abc066fa95c..137488e2d81b 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -7,4 +7,7 @@ DIST boto3-1.40.18.gh.tar.gz 990535 BLAKE2B b27c45a186cc7982e0fb16e9d7290a8fdab8
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.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
index 4ee5ecf7976b..fdafafe7f4f0 100644
--- a/dev-python/boto3/boto3-1.39.14.ebuild
+++ b/dev-python/boto3/boto3-1.39.14.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/boto3/boto3-1.40.1.ebuild b/dev-python/boto3/boto3-1.40.1.ebuild
index bd6e26787db4..fdafafe7f4f0 100644
--- a/dev-python/boto3/boto3-1.40.1.ebuild
+++ b/dev-python/boto3/boto3-1.40.1.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/boto3/boto3-1.40.22.ebuild b/dev-python/boto3/boto3-1.40.22.ebuild
new file mode 100644
index 000000000000..bd6e26787db4
--- /dev/null
+++ b/dev-python/boto3/boto3-1.40.22.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} )
+
+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
new file mode 100644
index 000000000000..bd6e26787db4
--- /dev/null
+++ b/dev-python/boto3/boto3-1.40.23.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} )
+
+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
new file mode 100644
index 000000000000..bd6e26787db4
--- /dev/null
+++ b/dev-python/boto3/boto3-1.40.24.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} )
+
+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/botocore/Manifest b/dev-python/botocore/Manifest
index a3b40d3bba9b..fbb7b5cc447a 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -7,4 +7,7 @@ DIST botocore-1.40.18.gh.tar.gz 15162586 BLAKE2B 82f844c792de0f92b5e3e6854758f2d
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.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
index 1d8d6070cb92..5d6a29be5655 100644
--- a/dev-python/botocore/botocore-1.39.14.ebuild
+++ b/dev-python/botocore/botocore-1.39.14.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/botocore/botocore-1.40.1.ebuild b/dev-python/botocore/botocore-1.40.1.ebuild
index a931fcaefec4..5d6a29be5655 100644
--- a/dev-python/botocore/botocore-1.40.1.ebuild
+++ b/dev-python/botocore/botocore-1.40.1.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/botocore/botocore-1.40.22.ebuild b/dev-python/botocore/botocore-1.40.22.ebuild
new file mode 100644
index 000000000000..a931fcaefec4
--- /dev/null
+++ b/dev-python/botocore/botocore-1.40.22.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{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
new file mode 100644
index 000000000000..a931fcaefec4
--- /dev/null
+++ b/dev-python/botocore/botocore-1.40.23.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{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
new file mode 100644
index 000000000000..a931fcaefec4
--- /dev/null
+++ b/dev-python/botocore/botocore-1.40.24.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{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/bottle/bottle-0.12.25-r1.ebuild b/dev-python/bottle/bottle-0.12.25-r1.ebuild
index 1726749a12c6..d6ef13abe00d 100644
--- a/dev-python/bottle/bottle-0.12.25-r1.ebuild
+++ b/dev-python/bottle/bottle-0.12.25-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -17,7 +17,7 @@ HOMEPAGE="
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"
RDEPEND="
$(python_gen_cond_dep '
diff --git a/dev-python/bottle/bottle-0.13.3.ebuild b/dev-python/bottle/bottle-0.13.3.ebuild
index 603af5eedf50..d468f1533016 100644
--- a/dev-python/bottle/bottle-0.13.3.ebuild
+++ b/dev-python/bottle/bottle-0.13.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/bottle/bottle-0.13.4.ebuild b/dev-python/bottle/bottle-0.13.4.ebuild
index 603af5eedf50..d468f1533016 100644
--- a/dev-python/bottle/bottle-0.13.4.ebuild
+++ b/dev-python/bottle/bottle-0.13.4.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/bracex/bracex-2.6.ebuild b/dev-python/bracex/bracex-2.6.ebuild
index 5b3db8d6595f..ac97650fd7d2 100644
--- a/dev-python/bracex/bracex-2.6.ebuild
+++ b/dev-python/bracex/bracex-2.6.ebuild
@@ -25,7 +25,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
BDEPEND="
test? (
diff --git a/dev-python/breathe/breathe-4.36.0.ebuild b/dev-python/breathe/breathe-4.36.0.ebuild
index 843c246d5784..219c3a0e1a34 100644
--- a/dev-python/breathe/breathe-4.36.0.ebuild
+++ b/dev-python/breathe/breathe-4.36.0.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
RDEPEND="
app-text/doxygen
diff --git a/dev-python/brotlicffi/brotlicffi-1.1.0.0.ebuild b/dev-python/brotlicffi/brotlicffi-1.1.0.0.ebuild
index 9f60e4aa75e9..260b59c64198 100644
--- a/dev-python/brotlicffi/brotlicffi-1.1.0.0.ebuild
+++ b/dev-python/brotlicffi/brotlicffi-1.1.0.0.ebuild
@@ -30,7 +30,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~ppc-macos ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~ppc-macos ~x64-macos ~x64-solaris"
RDEPEND="
app-arch/brotli:=
diff --git a/dev-python/build/build-1.2.2_p1-r2.ebuild b/dev-python/build/build-1.2.2_p1-r2.ebuild
index 116ae736c9fe..cb866296ee8b 100644
--- a/dev-python/build/build-1.2.2_p1-r2.ebuild
+++ b/dev-python/build/build-1.2.2_p1-r2.ebuild
@@ -23,7 +23,7 @@ S=${WORKDIR}/${MY_P}
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/cachecontrol/cachecontrol-0.14.3.ebuild b/dev-python/cachecontrol/cachecontrol-0.14.3.ebuild
index faeb1f2de6e8..7f3ed6e18f48 100644
--- a/dev-python/cachecontrol/cachecontrol-0.14.3.ebuild
+++ b/dev-python/cachecontrol/cachecontrol-0.14.3.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"
RDEPEND="
<dev-python/msgpack-2[${PYTHON_USEDEP}]
diff --git a/dev-python/cachetools/cachetools-6.1.0.ebuild b/dev-python/cachetools/cachetools-6.1.0.ebuild
index 55a939a649bd..81332e0516e1 100644
--- a/dev-python/cachetools/cachetools-6.1.0.ebuild
+++ b/dev-python/cachetools/cachetools-6.1.0.ebuild
@@ -16,6 +16,6 @@ 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"
distutils_enable_tests pytest
diff --git a/dev-python/cairocffi/cairocffi-1.7.1.ebuild b/dev-python/cairocffi/cairocffi-1.7.1.ebuild
index bdef7eead6ce..3085f56f8a73 100644
--- a/dev-python/cairocffi/cairocffi-1.7.1.ebuild
+++ b/dev-python/cairocffi/cairocffi-1.7.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
DEPEND="
>=dev-python/xcffib-0.3.2[${PYTHON_USEDEP}]
diff --git a/dev-python/calver/calver-2025.4.17.ebuild b/dev-python/calver/calver-2025.4.17.ebuild
index 7be0e3afc0ba..56aefee5721a 100644
--- a/dev-python/calver/calver-2025.4.17.ebuild
+++ b/dev-python/calver/calver-2025.4.17.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 ~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"
BDEPEND="
>=dev-python/setuptools-77.0.1[${PYTHON_USEDEP}]
diff --git a/dev-python/cattrs/cattrs-25.1.1.ebuild b/dev-python/cattrs/cattrs-25.1.1.ebuild
index a599302afa16..27a52264ff04 100644
--- a/dev-python/cattrs/cattrs-25.1.1.ebuild
+++ b/dev-python/cattrs/cattrs-25.1.1.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
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-rust"
RDEPEND="
diff --git a/dev-python/cbor2/cbor2-5.6.5.ebuild b/dev-python/cbor2/cbor2-5.6.5.ebuild
index 5a10d1f99331..8d1b58781d9e 100644
--- a/dev-python/cbor2/cbor2-5.6.5.ebuild
+++ b/dev-python/cbor2/cbor2-5.6.5.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="+native-extensions"
BDEPEND="
diff --git a/dev-python/cerberus/cerberus-1.3.7.ebuild b/dev-python/cerberus/cerberus-1.3.7.ebuild
index 509daaece203..6b77730e536e 100644
--- a/dev-python/cerberus/cerberus-1.3.7.ebuild
+++ b/dev-python/cerberus/cerberus-1.3.7.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="ISC"
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"
EPYTEST_DESELECT=(
# Require currently unpackaged pytest-benchmark, more useful
diff --git a/dev-python/cffi/cffi-1.17.1.ebuild b/dev-python/cffi/cffi-1.17.1.ebuild
index b0724e385a48..e845c03a5048 100644
--- a/dev-python/cffi/cffi-1.17.1.ebuild
+++ b/dev-python/cffi/cffi-1.17.1.ebuild
@@ -20,7 +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"
+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="
diff --git a/dev-python/characteristic/characteristic-14.3.0-r4.ebuild b/dev-python/characteristic/characteristic-14.3.0-r4.ebuild
index b586b85ae8ac..9a4940f1a65e 100644
--- a/dev-python/characteristic/characteristic-14.3.0-r4.ebuild
+++ b/dev-python/characteristic/characteristic-14.3.0-r4.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 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
distutils_enable_tests pytest
distutils_enable_sphinx docs
diff --git a/dev-python/chardet/chardet-5.2.0.ebuild b/dev-python/chardet/chardet-5.2.0.ebuild
index 48ca89e8dae4..c4b53fc32fce 100644
--- a/dev-python/chardet/chardet-5.2.0.ebuild
+++ b/dev-python/chardet/chardet-5.2.0.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="LGPL-2.1"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris"
distutils_enable_tests pytest
diff --git a/dev-python/charset-normalizer/charset-normalizer-3.4.2.ebuild b/dev-python/charset-normalizer/charset-normalizer-3.4.2.ebuild
index 785fdeb03fec..935be33bacc9 100644
--- a/dev-python/charset-normalizer/charset-normalizer-3.4.2.ebuild
+++ b/dev-python/charset-normalizer/charset-normalizer-3.4.2.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"
distutils_enable_tests pytest
diff --git a/dev-python/cheroot/cheroot-10.0.1.ebuild b/dev-python/cheroot/cheroot-10.0.1.ebuild
index 1687988b7884..ad29df6396d7 100644
--- a/dev-python/cheroot/cheroot-10.0.1.ebuild
+++ b/dev-python/cheroot/cheroot-10.0.1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
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-rust"
RDEPEND="
diff --git a/dev-python/cherrypy/cherrypy-18.10.0.ebuild b/dev-python/cherrypy/cherrypy-18.10.0.ebuild
index a1e67ebd627f..62bf5140380d 100644
--- a/dev-python/cherrypy/cherrypy-18.10.0.ebuild
+++ b/dev-python/cherrypy/cherrypy-18.10.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="BSD"
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="ssl test"
RDEPEND="
diff --git a/dev-python/click-default-group/click-default-group-1.2.4.ebuild b/dev-python/click-default-group/click-default-group-1.2.4.ebuild
index ee755178d086..a66d348c6db0 100644
--- a/dev-python/click-default-group/click-default-group-1.2.4.ebuild
+++ b/dev-python/click-default-group/click-default-group-1.2.4.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
RDEPEND="
dev-python/click[${PYTHON_USEDEP}]
diff --git a/dev-python/click/click-8.2.1.ebuild b/dev-python/click/click-8.2.1.ebuild
index 5da021644f31..e5db5eb00366 100644
--- a/dev-python/click/click-8.2.1.ebuild
+++ b/dev-python/click/click-8.2.1.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="BSD"
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"
IUSE="examples"
distutils_enable_sphinx docs \
diff --git a/dev-python/cliff/cliff-4.10.0.ebuild b/dev-python/cliff/cliff-4.10.0.ebuild
index b2b25152f3cb..a7467d503605 100644
--- a/dev-python/cliff/cliff-4.10.0.ebuild
+++ b/dev-python/cliff/cliff-4.10.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~mips ~ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~mips ~ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/autopage-0.4.0[${PYTHON_USEDEP}]
diff --git a/dev-python/cloudpickle/cloudpickle-3.1.1.ebuild b/dev-python/cloudpickle/cloudpickle-3.1.1.ebuild
index 267d3933cf39..db2e3710f13a 100644
--- a/dev-python/cloudpickle/cloudpickle-3.1.1.ebuild
+++ b/dev-python/cloudpickle/cloudpickle-3.1.1.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
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 ~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"
BDEPEND="
test? (
diff --git a/dev-python/cmd2/cmd2-2.6.2.ebuild b/dev-python/cmd2/cmd2-2.6.2.ebuild
index 602937402fff..94036bf953a2 100644
--- a/dev-python/cmd2/cmd2-2.6.2.ebuild
+++ b/dev-python/cmd2/cmd2-2.6.2.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ~ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ~ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
RDEPEND="
>=dev-python/pyperclip-1.8[${PYTHON_USEDEP}]
diff --git a/dev-python/colorama/colorama-0.4.6.ebuild b/dev-python/colorama/colorama-0.4.6.ebuild
index 5b862c7048f6..504a4d37b480 100644
--- a/dev-python/colorama/colorama-0.4.6.ebuild
+++ b/dev-python/colorama/colorama-0.4.6.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
IUSE="examples"
distutils_enable_tests pytest
diff --git a/dev-python/colorclass/colorclass-2.2.2-r1.ebuild b/dev-python/colorclass/colorclass-2.2.2-r1.ebuild
index 731f628204d3..490c0b01bf0d 100644
--- a/dev-python/colorclass/colorclass-2.2.2-r1.ebuild
+++ b/dev-python/colorclass/colorclass-2.2.2-r1.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
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"
BDEPEND="
test? (
diff --git a/dev-python/comm/comm-0.2.3.ebuild b/dev-python/comm/comm-0.2.3.ebuild
index a58190ac2e52..82a453261210 100644
--- a/dev-python/comm/comm-0.2.3.ebuild
+++ b/dev-python/comm/comm-0.2.3.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
EPYTEST_PLUGINS=()
distutils_enable_tests pytest
diff --git a/dev-python/commentjson/commentjson-0.9.0-r2.ebuild b/dev-python/commentjson/commentjson-0.9.0-r2.ebuild
index c0087073ec80..d21f36613492 100644
--- a/dev-python/commentjson/commentjson-0.9.0-r2.ebuild
+++ b/dev-python/commentjson/commentjson-0.9.0-r2.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/lark[${PYTHON_USEDEP}]
diff --git a/dev-python/commonmark/commonmark-0.9.1-r1.ebuild b/dev-python/commonmark/commonmark-0.9.1-r1.ebuild
index 577eaf587119..9b0faa26dd7c 100644
--- a/dev-python/commonmark/commonmark-0.9.1-r1.ebuild
+++ b/dev-python/commonmark/commonmark-0.9.1-r1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/configobj/configobj-5.0.9.ebuild b/dev-python/configobj/configobj-5.0.9.ebuild
index 7797c7a8e0b2..6f0ee1ff68b7 100644
--- a/dev-python/configobj/configobj-5.0.9.ebuild
+++ b/dev-python/configobj/configobj-5.0.9.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 arm arm64 hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
+KEYWORDS="amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
RDEPEND="
dev-python/six[${PYTHON_USEDEP}]
diff --git a/dev-python/configshell-fb/configshell-fb-2.0.2.ebuild b/dev-python/configshell-fb/configshell-fb-2.0.2.ebuild
index f4a7fa91bba7..e61fb41b63da 100644
--- a/dev-python/configshell-fb/configshell-fb-2.0.2.ebuild
+++ b/dev-python/configshell-fb/configshell-fb-2.0.2.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~sparc x86"
RDEPEND="
>=dev-python/pyparsing-2.4.7[${PYTHON_USEDEP}]
diff --git a/dev-python/configupdater/configupdater-3.2.ebuild b/dev-python/configupdater/configupdater-3.2.ebuild
index b9d4f6f26082..d03d2593ab02 100644
--- a/dev-python/configupdater/configupdater-3.2.ebuild
+++ b/dev-python/configupdater/configupdater-3.2.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT PSF-2 PYTHON"
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"
BDEPEND="
dev-python/setuptools-scm[${PYTHON_USEDEP}]
diff --git a/dev-python/constantly/constantly-23.10.4.ebuild b/dev-python/constantly/constantly-23.10.4.ebuild
index c44414d7a98d..bedf75033dfc 100644
--- a/dev-python/constantly/constantly-23.10.4.ebuild
+++ b/dev-python/constantly/constantly-23.10.4.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/contourpy/contourpy-1.3.2.ebuild b/dev-python/contourpy/contourpy-1.3.2.ebuild
index 263a6e972354..0f46d3b405a8 100644
--- a/dev-python/contourpy/contourpy-1.3.2.ebuild
+++ b/dev-python/contourpy/contourpy-1.3.2.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
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/numpy-1.23[${PYTHON_USEDEP}]
diff --git a/dev-python/cookies/cookies-2.2.1-r2.ebuild b/dev-python/cookies/cookies-2.2.1-r2.ebuild
index 6cb3f6f5bc62..c5fb23f2dbfd 100644
--- a/dev-python/cookies/cookies-2.2.1-r2.ebuild
+++ b/dev-python/cookies/cookies-2.2.1-r2.ebuild
@@ -13,7 +13,7 @@ HOMEPAGE="https://gitlab.com/sashahart/cookies"
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~m68k ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
PATCHES=(
# https://gitlab.com/sashahart/cookies/merge_requests/2
diff --git a/dev-python/coverage/coverage-7.9.1.ebuild b/dev-python/coverage/coverage-7.9.1.ebuild
index 79d5670a6851..301583d62d60 100644
--- a/dev-python/coverage/coverage-7.9.1.ebuild
+++ b/dev-python/coverage/coverage-7.9.1.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="BSD"
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"
IUSE="+native-extensions"
BDEPEND="
diff --git a/dev-python/cppy/cppy-1.3.1.ebuild b/dev-python/cppy/cppy-1.3.1.ebuild
index 32ca8fba56dc..04ab47a24ac3 100644
--- a/dev-python/cppy/cppy-1.3.1.ebuild
+++ b/dev-python/cppy/cppy-1.3.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ppc ppc64 ~riscv ~s390 sparc x86 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
RDEPEND="
>=dev-python/setuptools-61.2[${PYTHON_USEDEP}]
diff --git a/dev-python/cryptography/Manifest b/dev-python/cryptography/Manifest
index 0640a3b2915c..791d0e1419ef 100644
--- a/dev-python/cryptography/Manifest
+++ b/dev-python/cryptography/Manifest
@@ -5,8 +5,8 @@ DIST base64-0.22.1.crate 81597 BLAKE2B 6f216a560bd36e6e6b74e908344b457594cc768d9
DIST bitflags-2.9.1.crate 47913 BLAKE2B b14ee41348336981ab86459417b9feab90879a11a6524a8b43f2b89c09c844b4441c31e315c471be00ad21fa88b5dcc7671b56567fdcd72bb0790ceeaa25813b SHA512 6baeac42e4227e58030e317125a3c23997beceb44f9262f029e59c6dc36dd1733f2e88b3c3c8ad22f806245ef404512a880b16f3c8c52fa5c4aab287bb3cfe27
DIST cc-1.2.23.crate 106527 BLAKE2B 0fd9e69ad743f4df15da3d25f85e1a422ef64b81b72af491001ccfba5c0c39e448deecc92e3a553bf74574460ecd2bf8f4056a1cd05d05856a1f3f36fa25bc19 SHA512 3fced846c630c09f629854754dc247affeae3e71375953617d77947b2bdfb479369db159cec941c7b094fd9d2fee62f7d5898d6d76de920dbd70de24ee35fd0b
DIST cfg-if-1.0.0.crate 7934 BLAKE2B e99a5589c11d79d77a4537b34ce0a45d37b981c123b79b807cea836c89fc3926d693458893baca2882448d3d44e3f64e06141f6d916b748daa10b8cc1ae16d1b SHA512 0fb16a8882fd30e86b62c5143b1cb18ab564e84e75bd1f28fd12f24ffdc4a42e0d2e012a99abb606c12efe3c11061ff5bf8e24ab053e550ae083f7d90f6576ff
-DIST cryptography-45.0.5.tar.gz 36156329 BLAKE2B 59bea62ee7c089f600a5c202fb260b06889d99a3adc096d83196532dd83d36522e7086ff2f87d34339f8cbd8c64946f1d08f7bc10309ca34f8ef7c8b85f56cd1 SHA512 48935be9c7c2e28bf9ea05866a08cb7702b9256fdc6c6db2d26ae40d433e865c9933b8ec4e29ee24df638c1727bcade1e0d88ed59f0ec6620f70eeee2459449a
DIST cryptography-45.0.6.tar.gz 744949 BLAKE2B 271143188d0a7485066b5c89fc0397e6f9e5f5219844961a85e9fd382fb0b05521a093fb943252ea2985bb89645a285345fcf66a6022a58176fe809a83376a81 SHA512 2c675834fa26db0773fe51855c248927a2a7d45963e07144afdfa73573ce1e6940d40849d23fb45f7599c0821e4dbbec956ce2bd993c614617312b8e67fe7f1f
+DIST cryptography-45.0.7.tar.gz 36155342 BLAKE2B 7e163d3407541fe95262a610ddc05cce88a1c5f6b2f0dae9da0f5c75de7e9fcd4f3a87190fec99adeb39b4dcd48371ea701218306fd3b54ed29df0222949cb36 SHA512 b0f0bcc8c75855b19f347e7e1f5fe82b79cab1c5f93c3b1936dd88997a33d4c2a0f5a0e894f6ec4d8af0d0a94ad729ec1b57c62e9026af24b1f6c8bda0414e52
DIST foreign-types-0.3.2.crate 7504 BLAKE2B 520818b702d990d296ecd31a8646850202509ccfa18edd0e1b260289619a6c351e758f317ec0824bd76eccb209b6f087057c25f1bd01a47897715013dd834867 SHA512 bf27b8243ed482c202d120383374f19ff09422535e24b9c1aebccc66529bf300ca17b8bbc76d67f98ac092e614497afe3add9dc68aa69c93074df05762f91232
DIST foreign-types-shared-0.1.1.crate 5672 BLAKE2B d2e42e04b6657e7a69fe0bd20c672176629c743e49a55fd007bb30e289710b70045d445ae9cae0eeaa747ee708c90e8abd9b5fc39bad8ec0666befe1b696d4f1 SHA512 bafdb2143e136fb0818e2ffd90b5c862b7181647d6568947d4e4531012bbf7a57b597221ec7056c1b562dfc0c3b5dead26d1a4111ebc15e7863737a873518a4a
DIST heck-0.5.0.crate 11517 BLAKE2B 5365ec43b2239a76b33a174f1a4292ece4147f9d382a68c6c60db78fdc8bad0afb1d51a65bcb25e96675372faa4ea37c318265030b0546ba51942f7c929e1835 SHA512 f044fc9c3d22466629fd8f772ec0555350fd611c0cfadca51d99a3d2f10e155f77c1091916c8a95a6b9b499f366c2e99a5fbf45b010f988bfb9b2501bf9f6a76
diff --git a/dev-python/cryptography/cryptography-45.0.5.ebuild b/dev-python/cryptography/cryptography-45.0.7.ebuild
index 55b3873cde21..55b3873cde21 100644
--- a/dev-python/cryptography/cryptography-45.0.5.ebuild
+++ b/dev-python/cryptography/cryptography-45.0.7.ebuild
diff --git a/dev-python/cssselect/cssselect-1.3.0.ebuild b/dev-python/cssselect/cssselect-1.3.0.ebuild
index 63ce36f4be4f..1308d45926bf 100644
--- a/dev-python/cssselect/cssselect-1.3.0.ebuild
+++ b/dev-python/cssselect/cssselect-1.3.0.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="BSD"
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"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/cycler/cycler-0.12.1.ebuild b/dev-python/cycler/cycler-0.12.1.ebuild
index 787e661dbc52..31b6a612d3a7 100644
--- a/dev-python/cycler/cycler-0.12.1.ebuild
+++ b/dev-python/cycler/cycler-0.12.1.ebuild
@@ -21,6 +21,6 @@ SRC_URI="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos"
distutils_enable_tests pytest
diff --git a/dev-python/cython-test-exception-raiser/cython-test-exception-raiser-1.0.2-r1.ebuild b/dev-python/cython-test-exception-raiser/cython-test-exception-raiser-1.0.2-r1.ebuild
index 43734d850760..a142531ed4a5 100644
--- a/dev-python/cython-test-exception-raiser/cython-test-exception-raiser-1.0.2-r1.ebuild
+++ b/dev-python/cython-test-exception-raiser/cython-test-exception-raiser-1.0.2-r1.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ppc ppc64 ~riscv ~s390 ~sparc x86"
BDEPEND="
dev-python/cython[${PYTHON_USEDEP}]
diff --git a/dev-python/cython/cython-3.1.2-r1.ebuild b/dev-python/cython/cython-3.1.2-r1.ebuild
index fcfd7e70acd5..b52b7418f526 100644
--- a/dev-python/cython/cython-3.1.2-r1.ebuild
+++ b/dev-python/cython/cython-3.1.2-r1.ebuild
@@ -21,7 +21,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 ~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-full"
RESTRICT="!test? ( test )"
diff --git a/dev-python/dbus-fast/dbus-fast-2.44.3.ebuild b/dev-python/dbus-fast/dbus-fast-2.44.3.ebuild
index 1ab3c5d3ca76..6a1892472136 100644
--- a/dev-python/dbus-fast/dbus-fast-2.44.3.ebuild
+++ b/dev-python/dbus-fast/dbus-fast-2.44.3.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~riscv"
+KEYWORDS="amd64 ~riscv"
BDEPEND="
>=dev-python/cython-3[${PYTHON_USEDEP}]
diff --git a/dev-python/dbus-python/dbus-python-1.4.0.ebuild b/dev-python/dbus-python/dbus-python-1.4.0.ebuild
index 299305c86ce0..efbb640bcef5 100644
--- a/dev-python/dbus-python/dbus-python-1.4.0.ebuild
+++ b/dev-python/dbus-python/dbus-python-1.4.0.ebuild
@@ -17,7 +17,7 @@ SRC_URI="https://dbus.freedesktop.org/releases/${PN}/${P}.tar.xz"
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="doc examples test"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
RESTRICT="!test? ( test )"
diff --git a/dev-python/ddt/ddt-1.7.2.ebuild b/dev-python/ddt/ddt-1.7.2.ebuild
index e3f737caab5f..c2986bbf6eaf 100644
--- a/dev-python/ddt/ddt-1.7.2.ebuild
+++ b/dev-python/ddt/ddt-1.7.2.ebuild
@@ -20,7 +20,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"
BDEPEND="
test? (
diff --git a/dev-python/decorator/decorator-5.2.1.ebuild b/dev-python/decorator/decorator-5.2.1.ebuild
index 489a614dd2a3..edfa4912f5a0 100644
--- a/dev-python/decorator/decorator-5.2.1.ebuild
+++ b/dev-python/decorator/decorator-5.2.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
python_test() {
"${EPYTHON}" tests/test.py -v || die "Tests failed with ${EPYTHON}"
diff --git a/dev-python/deepdiff/Manifest b/dev-python/deepdiff/Manifest
index 807f23e34ba1..12dd829afa44 100644
--- a/dev-python/deepdiff/Manifest
+++ b/dev-python/deepdiff/Manifest
@@ -1,2 +1,2 @@
DIST deepdiff-8.5.0.tar.gz 538517 BLAKE2B 27bcac8a511961540c6d285c03a8011c6075776cf795971d9fa03be4a9029909750da327c72505ba736703d95d790bae76b27f9a662d551108e12ec8227bbebf SHA512 7898b9eee9e7d7ec441adaa4f306f304df3e922e85cb58601daec530e61da1f7dd79fb34395620df1015aedd646eed1fd203d14a65397b0cc7b708722e68582b
-DIST deepdiff-8.6.0.tar.gz 631801 BLAKE2B 059ceffd6fd544e28542717939079601ef669fade75f3f1f21daf1766b56c8cfb7c6b16fd81ac45e2fe7894e454a33d0e85d74f992f7c45c90b2335fee2503d5 SHA512 f4b648b6b0181c48e6fff4d7d46c76bea9a1b86e14ec444cf53c8630a9dd2bdeb93c48330093cf58290150c4a179ca69bc8e59c8bba531cfa23b3db33aa111a7
+DIST deepdiff-8.6.1.tar.gz 634054 BLAKE2B 3b4d0bf068216d6713ab868b2b7a86d092dd978136298ae061906b0c4706dd54b9029db9573d937f564c00ebc0be7f27c87d03fd863d009f2713a133306e420a SHA512 385eeda89c5c1fbc0734abdbbeb14647d97f151e0de09e07f0c202453c6fb0e53996b25e642aebd6d9bdbdf98591962f397c62c64c173474faaaf04651317fc9
diff --git a/dev-python/deepdiff/deepdiff-8.6.0.ebuild b/dev-python/deepdiff/deepdiff-8.6.1.ebuild
index a675eef7ddc3..5e5ff8d13500 100644
--- a/dev-python/deepdiff/deepdiff-8.6.0.ebuild
+++ b/dev-python/deepdiff/deepdiff-8.6.1.ebuild
@@ -27,8 +27,9 @@ RDEPEND="
DEPEND="
test? (
- >=dev-python/jsonpickle-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/jsonpickle-4.0.0[${PYTHON_USEDEP}]
>=dev-python/numpy-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/orjson-3.10.0[${PYTHON_USEDEP}]
dev-python/pydantic[${PYTHON_USEDEP}]
dev-python/python-dateutil[${PYTHON_USEDEP}]
dev-python/pytz[${PYTHON_USEDEP}]
diff --git a/dev-python/deepmerge/deepmerge-2.0.ebuild b/dev-python/deepmerge/deepmerge-2.0.ebuild
index 106e4c3b7d9a..8b6f534f5e06 100644
--- a/dev-python/deepmerge/deepmerge-2.0.ebuild
+++ b/dev-python/deepmerge/deepmerge-2.0.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm arm64 hppa ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~hppa ppc ppc64 ~riscv ~s390 ~sparc x86"
BDEPEND="
dev-python/setuptools-scm[${PYTHON_USEDEP}]
diff --git a/dev-python/defusedxml/defusedxml-0.7.1-r1.ebuild b/dev-python/defusedxml/defusedxml-0.7.1-r1.ebuild
index 7939c88eea66..45e5b536aefb 100644
--- a/dev-python/defusedxml/defusedxml-0.7.1-r1.ebuild
+++ b/dev-python/defusedxml/defusedxml-0.7.1-r1.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="PSF-2"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
IUSE="examples"
src_prepare() {
diff --git a/dev-python/defusedxml/defusedxml-0.8.0_rc2.ebuild b/dev-python/defusedxml/defusedxml-0.8.0_rc2.ebuild
index 89faa0b0facd..bb5f43211a6c 100644
--- a/dev-python/defusedxml/defusedxml-0.8.0_rc2.ebuild
+++ b/dev-python/defusedxml/defusedxml-0.8.0_rc2.ebuild
@@ -23,7 +23,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="PSF-2"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
IUSE="examples"
src_prepare() {
diff --git a/dev-python/dependency-groups/dependency-groups-1.3.1.ebuild b/dev-python/dependency-groups/dependency-groups-1.3.1.ebuild
index 2600a43b7a9f..cec5523e43eb 100644
--- a/dev-python/dependency-groups/dependency-groups-1.3.1.ebuild
+++ b/dev-python/dependency-groups/dependency-groups-1.3.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/packaging[${PYTHON_USEDEP}]
diff --git a/dev-python/deprecated/deprecated-1.2.18-r1.ebuild b/dev-python/deprecated/deprecated-1.2.18-r1.ebuild
index 15d98662e35a..fb59b6900a6a 100644
--- a/dev-python/deprecated/deprecated-1.2.18-r1.ebuild
+++ b/dev-python/deprecated/deprecated-1.2.18-r1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/wrapt[${PYTHON_USEDEP}]
diff --git a/dev-python/deprecation/deprecation-2.1.0-r1.ebuild b/dev-python/deprecation/deprecation-2.1.0-r1.ebuild
index 5d711d3c9ed6..210dd4a03766 100644
--- a/dev-python/deprecation/deprecation-2.1.0-r1.ebuild
+++ b/dev-python/deprecation/deprecation-2.1.0-r1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="dev-python/packaging[${PYTHON_USEDEP}]"
diff --git a/dev-python/dictdiffer/dictdiffer-0.9.0-r1.ebuild b/dev-python/dictdiffer/dictdiffer-0.9.0-r1.ebuild
index c7ea069c891e..2ae5148e4456 100644
--- a/dev-python/dictdiffer/dictdiffer-0.9.0-r1.ebuild
+++ b/dev-python/dictdiffer/dictdiffer-0.9.0-r1.ebuild
@@ -16,7 +16,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"
BDEPEND="
dev-python/setuptools-scm[${PYTHON_USEDEP}]
diff --git a/dev-python/dill/dill-0.4.0.ebuild b/dev-python/dill/dill-0.4.0.ebuild
index d9a81b9b58d0..67561ef0ca6a 100644
--- a/dev-python/dill/dill-0.4.0.ebuild
+++ b/dev-python/dill/dill-0.4.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
python_test() {
"${EPYTHON}" -m dill.tests || die
diff --git a/dev-python/dirty-equals/dirty-equals-0.9.0.ebuild b/dev-python/dirty-equals/dirty-equals-0.9.0.ebuild
index 53efadf15818..bac4d84579d8 100644
--- a/dev-python/dirty-equals/dirty-equals-0.9.0.ebuild
+++ b/dev-python/dirty-equals/dirty-equals-0.9.0.ebuild
@@ -22,7 +22,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
BDEPEND="
test? (
diff --git a/dev-python/discid/Manifest b/dev-python/discid/Manifest
index 6b8fe43b6e99..d2998d460e85 100644
--- a/dev-python/discid/Manifest
+++ b/dev-python/discid/Manifest
@@ -1,2 +1 @@
-DIST python-discid-1.2.0.gh.tar.gz 30756 BLAKE2B 616613de23b66adfc92227a9f36b710649f2a419ffd83443766ebcf1dbfaf528b7d933011bcbdcd19f5092726b81e40d905a62a64262a528dfad89e561210992 SHA512 239cb608508e94109aa9b8b582bc3de1fb9408b508d56698d7f17ec9ebb0d37c1fb76557d98b6d194c1532e3047efcde3adc5d6e9634bc87533d331423a7f19f
DIST python-discid-1.3.0.gh.tar.gz 31864 BLAKE2B ca51b5c40babc4f13ac849e2570a104de55cfc30fbf83ebcc2693dae182ae61285d4579aa7a8417f0cabe8beba7dfa78c5bd4e3da2fdda7fae6152a5715a5350 SHA512 1556d3cb40a6397583702a41cc41e9506cee848edc4b05c0ced32dd9197464c0c68b2f6cd1770245a9737449a313f9985cbce30956d98f21691ce48b32929770
diff --git a/dev-python/discid/discid-1.2.0-r1.ebuild b/dev-python/discid/discid-1.2.0-r1.ebuild
deleted file mode 100644
index 02d0911d6eef..000000000000
--- a/dev-python/discid/discid-1.2.0-r1.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# 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_{11..14} )
-
-inherit distutils-r1
-
-MY_P=python-discid-${PV}
-DESCRIPTION="Python bindings for libdiscid"
-HOMEPAGE="
- https://python-discid.readthedocs.io/en/latest/
- https://github.com/JonnyJD/python-discid/
- https://pypi.org/project/discid/
-"
-SRC_URI="
- https://github.com/JonnyJD/python-discid/archive/v${PV}.tar.gz
- -> ${MY_P}.gh.tar.gz
-"
-S=${WORKDIR}/${MY_P}
-
-LICENSE="LGPL-3+"
-SLOT="0"
-KEYWORDS="amd64 ~arm64 ~ppc x86"
-
-DEPEND="
- >=media-libs/libdiscid-0.2.2
-"
-RDEPEND="
- ${DEPEND}
-"
-
-distutils_enable_sphinx doc
-
-python_test() {
- "${EPYTHON}" -m unittest -v test_discid.TestModule{Private,} ||
- die "Tests failed with ${EPYTHON}"
-}
diff --git a/dev-python/diskcache/diskcache-5.6.3.ebuild b/dev-python/diskcache/diskcache-5.6.3.ebuild
index ab687ab93a2f..e80de0cbd23b 100644
--- a/dev-python/diskcache/diskcache-5.6.3.ebuild
+++ b/dev-python/diskcache/diskcache-5.6.3.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -23,7 +23,7 @@ S=${WORKDIR}/python-diskcache-${PV}
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
BDEPEND="
test? (
diff --git a/dev-python/distlib/distlib-0.4.0.ebuild b/dev-python/distlib/distlib-0.4.0.ebuild
index d076a8a82d00..66208ad22557 100644
--- a/dev-python/distlib/distlib-0.4.0.ebuild
+++ b/dev-python/distlib/distlib-0.4.0.ebuild
@@ -19,7 +19,7 @@ SRC_URI="
LICENSE="PSF-2"
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"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/distro/distro-1.9.0.ebuild b/dev-python/distro/distro-1.9.0.ebuild
index 180bef007601..713609fee4e6 100644
--- a/dev-python/distro/distro-1.9.0.ebuild
+++ b/dev-python/distro/distro-1.9.0.ebuild
@@ -17,6 +17,6 @@ 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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
distutils_enable_tests pytest
diff --git a/dev-python/dj-database-url/dj-database-url-3.0.1.ebuild b/dev-python/dj-database-url/dj-database-url-3.0.1.ebuild
index a0aff0ef9a94..d198b4b8963b 100644
--- a/dev-python/dj-database-url/dj-database-url-3.0.1.ebuild
+++ b/dev-python/dj-database-url/dj-database-url-3.0.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~x86-linux"
RDEPEND="
>=dev-python/django-4.2[${PYTHON_USEDEP}]
diff --git a/dev-python/dj-email-url/dj-email-url-1.0.6.ebuild b/dev-python/dj-email-url/dj-email-url-1.0.6.ebuild
index 43a149dd8242..d0b6382dea31 100644
--- a/dev-python/dj-email-url/dj-email-url-1.0.6.ebuild
+++ b/dev-python/dj-email-url/dj-email-url-1.0.6.ebuild
@@ -20,7 +20,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"
DOCS=( CHANGELOG.rst README.rst )
diff --git a/dev-python/dj-search-url/dj-search-url-0.1-r1.ebuild b/dev-python/dj-search-url/dj-search-url-0.1-r1.ebuild
index 3f55ff58256e..ddc44a9e3cd3 100644
--- a/dev-python/dj-search-url/dj-search-url-0.1-r1.ebuild
+++ b/dev-python/dj-search-url/dj-search-url-0.1-r1.ebuild
@@ -17,4 +17,4 @@ HOMEPAGE="
LICENSE="BSD-2"
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"
diff --git a/dev-python/django-cache-url/django-cache-url-3.4.5.ebuild b/dev-python/django-cache-url/django-cache-url-3.4.5.ebuild
index 4262b8e5a734..a7cd48dae4d5 100644
--- a/dev-python/django-cache-url/django-cache-url-3.4.5.ebuild
+++ b/dev-python/django-cache-url/django-cache-url-3.4.5.ebuild
@@ -20,7 +20,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/django[${PYTHON_USEDEP}]
diff --git a/dev-python/django-configurations/django-configurations-2.5.1.ebuild b/dev-python/django-configurations/django-configurations-2.5.1.ebuild
index 5a9e5ca39cc6..0c5ba0660791 100644
--- a/dev-python/django-configurations/django-configurations-2.5.1.ebuild
+++ b/dev-python/django-configurations/django-configurations-2.5.1.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="BSD"
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"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/django/Manifest b/dev-python/django/Manifest
index 753b477de68a..752eb5850519 100644
--- a/dev-python/django/Manifest
+++ b/dev-python/django/Manifest
@@ -1,9 +1,7 @@
-DIST Django-4.2.23.checksum.txt 2384 BLAKE2B b14eedfea3253c3f3e3a96e124fe942bfdcfd5013876fd2ab7a693c5cf9190652869ef9093b1650c968bd2ecf097566cb404984645dbb3e28423a4a47f747c05 SHA512 8393fb7e21b5ea0db8fc909588e1ce40ce18f405f2d53470f75237889509e4606e3a1aa7168e9defe4c790446dee12084a779c275d6290dcd6f7db285ec3c045
-DIST Django-5.1.11.checksum.txt 2384 BLAKE2B 8a8c2528bf0453d9da92cd5c6929b59f5e942840e17fd15dac00c1979d92f46b21c318f0d5d0426dd3cf0fd2c99799eb24eb2e50c4af906ad330d8fa1acd40df SHA512 748b3f4987ef0854cb3cbb501a7ee0c71acb5fbd2a3b4b07eef581db8ba31ad481aef4465a75fc42dcd4e75148568700101d169329373d3208b76aa6b90602f3
-DIST Django-5.2.4.checksum.txt 2536 BLAKE2B 112467d2065f70700ee7f52e672f9208a4b96d8015ef8f11ec15f06fd62f8dd90e08690099a4ab859a2056ce16b033bd04162dbcbd590fa33f64af617bf225d8 SHA512 e8f1b971c4097996e3513d088a93b6bfc89280fc400aa908324041691f1f794d2e329d5e8ccadbbddfa7cba31823376651ea157b031efe5e2b74b38177ed7a6b
-DIST Django-5.2.5.checksum.txt 2375 BLAKE2B f3a3efcfb301ff20c949f48d6eeae53fb509c4a1ed4296d9d61f087e1fc7c6584d140e25446cdf39630ef35f957493ea1acf415e69e7aecc6314a2a10811c27e SHA512 7e5118e68c16bc18fed842040babea4428865fe24ae7d9571cfd195473b583be79fc0beed6b921735ccfa9711ad016df613c9882fe34305aa22070a6cc6af0cd
+DIST Django-4.2.24.checksum.txt 2388 BLAKE2B 849cba0c02d0c9ad39aa05cb075cfcb734358d183a048a2020310838dc103ee9aaef3b8186da4403d47fdf92b0d1ce3e2e0f3d4fdf537ba348283d71221f7ca9 SHA512 cef61a0092cb8a17cb581ebc1f9d20e898e4c65d20aa32740bbd41761d1d3004aab737337fd249f1ab21b6161a02c781682295d3f45d0102844819eda3d253b6
+DIST Django-5.1.12.checksum.txt 2388 BLAKE2B a4e676cfc68c9f1b9a3582cc1c3875aacb81171c459021874522e5d902a831372112bf730fb9ec3fc0d41645af0d7f64d50009a2a4beb2fddb43b114f83ea594 SHA512 87b32f9861840ea7df64cebb74d840e006b6329707c4b25957316f2840a789bff5c7a42b55484c9829d67be5cd0d5cf69dc69558637361ace7ec87850014028d
+DIST Django-5.2.6.checksum.txt 2378 BLAKE2B f8516d76dabcef3cbc9b4fa93af8c18f1e835d684319dbbfd56d4b659b642607a5f72a0386fe371daa1b4e2d64d61d3561fd9557de51ef9fdd7a6bac5bf12ddd SHA512 9b499f591d05fbadcb070a8d95dd8a585d485f89f91074c77e1baf3f9909aa26d785a57de5aeb03f0b9027e6567b0852c2c98e2907ab43c650ef8cc99a3fbfa7
DIST django-4.2.17-pypy3.patch.xz 5900 BLAKE2B 2a564fc31d8e2f3def5a532d3bca1a4426a496c659192f602d659e0c1a5f5882978baedb384cc3b67fda8c836513ce43aece80db1528c8e8b6e9ca420f7572ce SHA512 9c9d935aff6db7230a26931b5e7f5f94f3b5ff4fc8f7d4201178571de9d9c7929a0e1e558cc2d9b54b8ee91f85819a5680d24fad6251620515a4a020e3b2d66d
-DIST django-4.2.23.tar.gz 10448384 BLAKE2B 7ac537b279c3ff3e530c8a3a8c2884e30b8771e7bc86fa9086c5149aa9c2c0bf98b90b572e607e7c38c6dbfa95a06783e93a157ee6cdcd24a5285d4e9d700901 SHA512 3461a83b5c6cad1db8b1a54fa44735c6ec6d1aadb476973f3a76f8c1c3ffc49549ad8aded28baf05be439bdf8f9890f79b4908f16655804eb805a74dbb0e6ab3
-DIST django-5.1.11.tar.gz 10734926 BLAKE2B 2fd387f356e3bafd3569ae0dd24c540970f5bcd465ebbf8726950fd92f4a85563ec6f79e5bbe69ba430eceab46cca50f631c9027a0e5abb024c906d42e69354e SHA512 dc9cb8e16242c6276cedccb639443d3f4b2d3805f52a74310fddb761ffc3ff9ad6be3863a4a14574ae9bf19342304afc0733497b4b584cb6cbe59e9b394d9a59
-DIST django-5.2.4.tar.gz 10831909 BLAKE2B 3dac27659b23698142b4b9163fe3a916a2352ab9f079ade10cdf0304229ab1109818befdf29f42864fed2409b1af5b777836c2f63cbbf98f7af09920507fcdc6 SHA512 af2ec6cfa6e17c6b348c165947ac76287f51e5ab6edc90682b57f8412ec22aaa0cd326516f65b63438d2ef48a70d306a59bfb7a235adeae0e753b654a3b0059c
-DIST django-5.2.5.tar.gz 10859748 BLAKE2B a721e6199bd1c386098536a62a652bbad14268fd79f56a1235d0c0377e511a5c5ddc7646549389c72994bc1019a15ddb0b38a237a4ef4a5cc83caa8d248cec11 SHA512 b65e59596a2c3b4d219d0b37b54bbcead10b1f9760d499cb5cd603b0025995415f3883531f3274ca56a66f3c809933859a079d829403ca8160e6f6cadf7591a4
+DIST django-4.2.24.tar.gz 10452798 BLAKE2B 8879aab564b89429244edd496f8bc2e93a47c7b337e3e280c386c45c9e33be5d2e129913d7684456a18b3772113f1715aea259df1cf56af28947516f49974e42 SHA512 b43b3c73301d60d19681d98b63f6f58a09af6bafb6166419d561f0c0236d2aa1a7c715d86e029ad942997e36868661e606a4a305bada0367383b27d660b8dc26
+DIST django-5.1.12.tar.gz 10737777 BLAKE2B 8f13429abf76b748936b93e28395df694b1763527e55c3cc29b5c493c084e0213d98bc10a3cf1ee1fe42963be05191dba4d34e9503a5729ab26addcd0f68b865 SHA512 01f707690efbc9ae7c9c826136c6ce2dddc12e567f37a4c90c709ccab25825aeff124df23d9c75b772e20cf1c21e5ca474044096e3c54f979bd3d8c34b463a68
+DIST django-5.2.6.tar.gz 10858861 BLAKE2B c44949b5f27c04e4dbdbd84aa3f7865b404e122e2b427a8fb8d926de0f100b04abd44a1dfb63a74b6a6547884abfd0b8e93c166b0561784d5004b5ceff68b61f SHA512 f2780e72ab6b54503a2ccee2fb2139399c175d8704a9b7fa4308f7688ad7b3a5fd744850ec6f702e0696ac190bc510e8d91584858381f7fd41eb89f1d7619e2c
diff --git a/dev-python/django/django-4.2.23.ebuild b/dev-python/django/django-4.2.24.ebuild
index a53665ac9c20..ffc36a351a1e 100644
--- a/dev-python/django/django-4.2.23.ebuild
+++ b/dev-python/django/django-4.2.24.ebuild
@@ -27,7 +27,7 @@ LICENSE+=" Apache-2.0"
# admin icons, jquery, xregexp.js
LICENSE+=" MIT"
SLOT="0/$(ver_cut 1-2)"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv sparc x86 ~x64-macos"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86 ~x64-macos"
IUSE="doc sqlite test"
RESTRICT="!test? ( test )"
@@ -60,8 +60,8 @@ PATCHES=(
"${FILESDIR}"/django-5.1-more-pypy3.patch
# https://code.djangoproject.com/ticket/34900
"${FILESDIR}"/django-4.2.21-py313.patch
- # https://github.com/django/django/pull/19639
- "${FILESDIR}"/django-5.2.5-htmlparser.patch
+ # upstream hardcodes fixed versions, we backported the fixes
+ "${FILESDIR}"/django-4.2.24-htmlparser.patch
)
distutils_enable_sphinx docs --no-autodoc
diff --git a/dev-python/django/django-5.1.11.ebuild b/dev-python/django/django-5.1.11.ebuild
deleted file mode 100644
index dca4e653d71a..000000000000
--- a/dev-python/django/django-5.1.11.ebuild
+++ /dev/null
@@ -1,100 +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 )
-PYTHON_REQ_USE='sqlite?,threads(+)'
-
-inherit bash-completion-r1 distutils-r1 multiprocessing optfeature verify-sig
-
-DESCRIPTION="High-level Python web framework"
-HOMEPAGE="
- https://www.djangoproject.com/
- https://github.com/django/django/
- https://pypi.org/project/Django/
-"
-SRC_URI="
- https://media.djangoproject.com/releases/$(ver_cut 1-2)/${P}.tar.gz
- verify-sig? ( https://media.djangoproject.com/pgp/${P^}.checksum.txt )
-"
-
-LICENSE="BSD"
-# admin fonts: Roboto (media-fonts/roboto)
-LICENSE+=" Apache-2.0"
-# admin icons, jquery, xregexp.js
-LICENSE+=" MIT"
-SLOT="0/$(ver_cut 1-2)"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv sparc x86 ~x64-macos"
-IUSE="doc sqlite test"
-RESTRICT="!test? ( test )"
-
-RDEPEND="
- <dev-python/asgiref-4[${PYTHON_USEDEP}]
- >=dev-python/asgiref-3.8.1[${PYTHON_USEDEP}]
- >=dev-python/sqlparse-0.3.1[${PYTHON_USEDEP}]
- sys-libs/timezone-data
-"
-BDEPEND="
- test? (
- $(python_gen_impl_dep sqlite)
- ${RDEPEND}
- >=dev-python/docutils-0.19[${PYTHON_USEDEP}]
- >=dev-python/jinja2-2.11.0[${PYTHON_USEDEP}]
- dev-python/numpy[${PYTHON_USEDEP}]
- dev-python/pillow[webp,${PYTHON_USEDEP}]
- dev-python/pyyaml[${PYTHON_USEDEP}]
- >=dev-python/selenium-4.8.0[${PYTHON_USEDEP}]
- >=dev-python/tblib-1.5.0[${PYTHON_USEDEP}]
- sys-devel/gettext
- )
- verify-sig? ( >=sec-keys/openpgp-keys-django-20240807 )
-"
-
-PATCHES=(
- "${FILESDIR}"/django-4.0-bashcomp.patch
- # https://github.com/django/django/pull/19639
- "${FILESDIR}"/django-5.2.5-htmlparser.patch
-)
-
-distutils_enable_sphinx docs --no-autodoc
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/django.asc
-
-src_unpack() {
- if use verify-sig; then
- cd "${DISTDIR}" || die
- verify-sig_verify_signed_checksums \
- "${P^}.checksum.txt" sha256 "${P}.tar.gz"
- cd "${WORKDIR}" || die
- fi
-
- default
-}
-
-python_test() {
- # Tests have non-standard assumptions about PYTHONPATH,
- # and don't work with ${BUILD_DIR}/lib.
- PYTHONPATH=. "${EPYTHON}" tests/runtests.py --settings=test_sqlite \
- -v2 --parallel="${EPYTEST_JOBS:-$(makeopts_jobs)}" ||
- die "Tests fail with ${EPYTHON}"
-}
-
-python_install_all() {
- newbashcomp extras/django_bash_completion ${PN}-admin
- bashcomp_alias ${PN}-admin django-admin.py
-
- distutils-r1_python_install_all
-}
-
-pkg_postinst() {
- optfeature_header "Additional Backend support can be enabled via:"
- optfeature "MySQL backend support" dev-python/mysqlclient
- optfeature "PostgreSQL backend support" dev-python/psycopg:0
- optfeature_header
- optfeature "GEO Django" "sci-libs/gdal[geos]"
- optfeature "Memcached support" dev-python/pylibmc dev-python/python-memcached
- optfeature "ImageField Support" dev-python/pillow
- optfeature "Password encryption" dev-python/bcrypt
-}
diff --git a/dev-python/django/django-5.2.4.ebuild b/dev-python/django/django-5.1.12.ebuild
index f69cc5e4f756..cb681e34b0b9 100644
--- a/dev-python/django/django-5.2.4.ebuild
+++ b/dev-python/django/django-5.1.12.ebuild
@@ -26,7 +26,7 @@ LICENSE+=" Apache-2.0"
# admin icons, jquery, xregexp.js
LICENSE+=" MIT"
SLOT="0/$(ver_cut 1-2)"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv sparc x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86 ~x64-macos"
IUSE="doc sqlite test"
RESTRICT="!test? ( test )"
@@ -54,6 +54,8 @@ BDEPEND="
PATCHES=(
"${FILESDIR}"/django-4.0-bashcomp.patch
+ # upstream hardcodes fixed versions, we backported the fixes
+ "${FILESDIR}"/django-5.2.6-htmlparser.patch
)
distutils_enable_sphinx docs --no-autodoc
diff --git a/dev-python/django/django-5.2.5.ebuild b/dev-python/django/django-5.2.6.ebuild
index 6ff7b0f60264..cb681e34b0b9 100644
--- a/dev-python/django/django-5.2.5.ebuild
+++ b/dev-python/django/django-5.2.6.ebuild
@@ -26,7 +26,7 @@ LICENSE+=" Apache-2.0"
# admin icons, jquery, xregexp.js
LICENSE+=" MIT"
SLOT="0/$(ver_cut 1-2)"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86 ~x64-macos"
IUSE="doc sqlite test"
RESTRICT="!test? ( test )"
@@ -54,8 +54,8 @@ BDEPEND="
PATCHES=(
"${FILESDIR}"/django-4.0-bashcomp.patch
- # https://github.com/django/django/pull/19639
- "${FILESDIR}"/django-5.2.5-htmlparser.patch
+ # upstream hardcodes fixed versions, we backported the fixes
+ "${FILESDIR}"/django-5.2.6-htmlparser.patch
)
distutils_enable_sphinx docs --no-autodoc
diff --git a/dev-python/django/files/django-4.2.24-htmlparser.patch b/dev-python/django/files/django-4.2.24-htmlparser.patch
new file mode 100644
index 000000000000..b439a81eb408
--- /dev/null
+++ b/dev-python/django/files/django-4.2.24-htmlparser.patch
@@ -0,0 +1,15 @@
+diff --git a/tests/utils_tests/test_html.py b/tests/utils_tests/test_html.py
+index f755b8cebc..ef5fe77951 100644
+--- a/tests/utils_tests/test_html.py
++++ b/tests/utils_tests/test_html.py
+@@ -101,9 +101,7 @@ class TestUtilsHtml(SimpleTestCase):
+ (3, 9): (3, 9, 24),
+ }
+ py_version = sys.version_info[:2]
+- htmlparser_fixed = (
+- py_version in min_fixed and sys.version_info >= min_fixed[py_version]
+- )
++ htmlparser_fixed = True
+ items = (
+ (
+ "<p>See: &#39;&eacute; is an apostrophe followed by e acute</p>",
diff --git a/dev-python/django/files/django-5.2.5-htmlparser.patch b/dev-python/django/files/django-5.2.5-htmlparser.patch
deleted file mode 100644
index 6d986be38478..000000000000
--- a/dev-python/django/files/django-5.2.5-htmlparser.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From e0a1e8d549e7be25960b8ad060c63def3dc35d1d Mon Sep 17 00:00:00 2001
-From: Natalia <124304+nessita@users.noreply.github.com>
-Date: Mon, 21 Jul 2025 15:23:32 -0300
-Subject: [PATCH 1/2] Fixed test_utils.tests.HTMLEqualTests.test_parsing_errors
- following Python's HTMLParser fixed parsing.
-
-Further details about Python changes can be found in:
-https://github.com/python/cpython/commit/0243f97cbadec8d985e63b1daec5d1cbc850cae3.
-
-Thank you Clifford Gama for the thorough review!
----
- tests/test_utils/tests.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/tests/test_utils/tests.py b/tests/test_utils/tests.py
-index 37e87aa1022c..9c22b61b4ff2 100644
---- a/tests/test_utils/tests.py
-+++ b/tests/test_utils/tests.py
-@@ -962,7 +962,7 @@ def test_parsing_errors(self):
- "('Unexpected end tag `div` (Line 1, Column 6)', (1, 6))"
- )
- with self.assertRaisesMessage(AssertionError, error_msg):
-- self.assertHTMLEqual("< div></ div>", "<div></div>")
-+ self.assertHTMLEqual("< div></div>", "<div></div>")
- with self.assertRaises(HTMLParseError):
- parse_html("</p>")
-
-
-From e8afcf0e644553bcba3e5f931266963bffc46748 Mon Sep 17 00:00:00 2001
-From: Natalia <124304+nessita@users.noreply.github.com>
-Date: Mon, 14 Jul 2025 14:45:03 -0300
-Subject: [PATCH 2/2] Fixed #36499 -- Adjusted
- utils_tests.test_html.TestUtilsHtml.test_strip_tags following Python's
- HTMLParser new behavior.
-
-Python fixed a quadratic complexity processing for HTMLParser in:
-https://github.com/python/cpython/commit/6eb6c5dbfb528bd07d77b60fd71fd05d81d45c41.
----
- tests/utils_tests/test_html.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/tests/utils_tests/test_html.py b/tests/utils_tests/test_html.py
-index 284f33aedcfb..51573b81eb9d 100644
---- a/tests/utils_tests/test_html.py
-+++ b/tests/utils_tests/test_html.py
-@@ -142,10 +142,10 @@ def test_strip_tags(self):
- ("&gotcha&#;<>", "&gotcha&#;<>"),
- ("<sc<!-- -->ript>test<<!-- -->/script>", "ript>test"),
- ("<script>alert()</script>&h", "alert()h"),
-- ("><!" + ("&" * 16000) + "D", "><!" + ("&" * 16000) + "D"),
-+ ("><!" + ("&" * 16000) + "D", ">"),
- ("X<<<<br>br>br>br>X", "XX"),
- ("<" * 50 + "a>" * 50, ""),
-- (">" + "<a" * 500 + "a", ">" + "<a" * 500 + "a"),
-+ (">" + "<a" * 500 + "a", ">"),
- ("<a" * 49 + "a" * 951, "<a" * 49 + "a" * 951),
- ("<" + "a" * 1_002, "<" + "a" * 1_002),
- )
diff --git a/dev-python/django/files/django-5.2.6-htmlparser.patch b/dev-python/django/files/django-5.2.6-htmlparser.patch
new file mode 100644
index 000000000000..546dbaca7504
--- /dev/null
+++ b/dev-python/django/files/django-5.2.6-htmlparser.patch
@@ -0,0 +1,13 @@
+diff --git a/tests/utils_tests/test_html.py b/tests/utils_tests/test_html.py
+index 681071bf03..3744f5bdfb 100644
+--- a/tests/utils_tests/test_html.py
++++ b/tests/utils_tests/test_html.py
+@@ -132,7 +132,7 @@ class TestUtilsHtml(SimpleTestCase):
+ (3, 10): (3, 10, 19),
+ (3, 9): (3, 9, 24),
+ }
+- htmlparser_fixed = sys.version_info >= min_fixed[sys.version_info[:2]]
++ htmlparser_fixed = True
+ items = (
+ (
+ "<p>See: &#39;&eacute; is an apostrophe followed by e acute</p>",
diff --git a/dev-python/dnspython/Manifest b/dev-python/dnspython/Manifest
index 34778c41971a..a0c89d260fe2 100644
--- a/dev-python/dnspython/Manifest
+++ b/dev-python/dnspython/Manifest
@@ -1 +1,2 @@
DIST dnspython-2.7.0.gh.tar.gz 386890 BLAKE2B 209bbb761cff2e39f86fb94458976766f3cac93e47f2c25294c359c98126aa4670b8157fad6c2bbf67ef250150310b31068690cec43ef148bbaf541873c37f38 SHA512 d73b90a06fa4c731393f719a79ec1339c3f8010b0ef4e58d8aa1aa5e0f2804dff8a79e20d9c9175b41b66bc9cf1712c33f4e2ed14820afc74d988096a42488b5
+DIST dnspython-2.8.0rc1.gh.tar.gz 410118 BLAKE2B 716f2d801173a72476df15060246da3f7260740768190b0bab4cccb0b40e339ccd50a1ebf5d80333707dfe138cb736db0b8ffc804f3da511abdb7ebfaac6151f SHA512 72bec723f514b0f4d21d1b2a226b5a28392dad5ae7a650ee3d298bd0a029b07fc67d03f228228e3209ae8fdf7d1b7fe143bd492e42f523e4df26c43aea5a1eac
diff --git a/dev-python/dnspython/dnspython-2.7.0-r1.ebuild b/dev-python/dnspython/dnspython-2.7.0-r1.ebuild
new file mode 100644
index 000000000000..9844d58a460d
--- /dev/null
+++ b/dev-python/dnspython/dnspython-2.7.0-r1.ebuild
@@ -0,0 +1,60 @@
+# 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
+
+DESCRIPTION="DNS toolkit for Python"
+HOMEPAGE="
+ https://www.dnspython.org/
+ https://github.com/rthalley/dnspython/
+ https://pypi.org/project/dnspython/
+"
+SRC_URI="
+ https://github.com/rthalley/dnspython/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="ISC"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~m68k ~x86"
+IUSE="dnssec examples https quic"
+
+RDEPEND="
+ dnssec? (
+ >=dev-python/cryptography-41[${PYTHON_USEDEP}]
+ )
+ >=dev-python/idna-2.1[${PYTHON_USEDEP}]
+ https? (
+ >=dev-python/httpx-0.26.0[${PYTHON_USEDEP}]
+ >=dev-python/h2-4.1.0[${PYTHON_USEDEP}]
+ )
+ quic? ( >=dev-python/aioquic-0.9.25[${PYTHON_USEDEP}] )
+"
+# note: skipping DoH test deps because they require Internet anyway
+BDEPEND="
+ test? (
+ >=dev-python/cryptography-41[${PYTHON_USEDEP}]
+ >=dev-python/quart-trio-0.11.0[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_test() {
+ local -x NO_INTERNET=1
+ epytest
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+ if use examples; then
+ dodoc -r examples
+ docompress -x /usr/share/doc/${PF}/examples
+ fi
+}
diff --git a/dev-python/dnspython/dnspython-2.7.0.ebuild b/dev-python/dnspython/dnspython-2.7.0.ebuild
index c0d702bd0ab2..2a16076fcf50 100644
--- a/dev-python/dnspython/dnspython-2.7.0.ebuild
+++ b/dev-python/dnspython/dnspython-2.7.0.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="ISC"
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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
IUSE="dnssec examples"
RDEPEND="
diff --git a/dev-python/dnspython/dnspython-2.8.0_rc1.ebuild b/dev-python/dnspython/dnspython-2.8.0_rc1.ebuild
new file mode 100644
index 000000000000..6bcf6bc5636d
--- /dev/null
+++ b/dev-python/dnspython/dnspython-2.8.0_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=hatchling
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1
+
+MY_P=${P/_}
+DESCRIPTION="DNS toolkit for Python"
+HOMEPAGE="
+ https://www.dnspython.org/
+ https://github.com/rthalley/dnspython/
+ https://pypi.org/project/dnspython/
+"
+SRC_URI="
+ https://github.com/rthalley/dnspython/archive/v${PV/_}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="ISC"
+SLOT="0"
+IUSE="dnssec examples https quic"
+
+RDEPEND="
+ dnssec? (
+ >=dev-python/cryptography-45[${PYTHON_USEDEP}]
+ )
+ >=dev-python/idna-2.1[${PYTHON_USEDEP}]
+ https? (
+ >=dev-python/httpx-0.26.0[${PYTHON_USEDEP}]
+ >=dev-python/h2-4.1.0[${PYTHON_USEDEP}]
+ )
+ quic? ( >=dev-python/aioquic-0.9.25[${PYTHON_USEDEP}] )
+"
+# note: skipping DoH test deps because they require Internet anyway
+BDEPEND="
+ test? (
+ >=dev-python/cryptography-45[${PYTHON_USEDEP}]
+ >=dev-python/quart-trio-0.11.0[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_test() {
+ local -x NO_INTERNET=1
+ epytest
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+ if use examples; then
+ dodoc -r examples
+ docompress -x /usr/share/doc/${PF}/examples
+ fi
+}
diff --git a/dev-python/dnspython/metadata.xml b/dev-python/dnspython/metadata.xml
index ee435af06636..271397bd6a21 100644
--- a/dev-python/dnspython/metadata.xml
+++ b/dev-python/dnspython/metadata.xml
@@ -27,6 +27,12 @@ DNSPythonã¯Python言語用ã®DNSツールキットã§ã™ã€‚ã»ã¨ã‚“ã©ã®ãƒ¬ã‚
Use <pkg>dev-python/cryptography</pkg> to enable low-level
DNSSEC RSA, DSA, ECDSA and EdDSA signature validation.
</flag>
+ <flag name="https">
+ Enable DNS-over-HTTPS.
+ </flag>
+ <flag name="quic">
+ Enable DNS-over-QUIC.
+ </flag>
</use>
<origin>gentoo-staging</origin>
<stabilize-allarches/>
diff --git a/dev-python/docopt/docopt-0.6.2-r5.ebuild b/dev-python/docopt/docopt-0.6.2-r5.ebuild
index e3bf0ec0f549..9e35194b58dc 100644
--- a/dev-python/docopt/docopt-0.6.2-r5.ebuild
+++ b/dev-python/docopt/docopt-0.6.2-r5.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
PATCHES=(
"${FILESDIR}"/${PN}-0.6.2-pytest_node_from_parent.patch
diff --git a/dev-python/docutils-glep/docutils-glep-1.5.ebuild b/dev-python/docutils-glep/docutils-glep-1.5.ebuild
index 06c86aa08a8f..6697dbb6ac25 100644
--- a/dev-python/docutils-glep/docutils-glep-1.5.ebuild
+++ b/dev-python/docutils-glep/docutils-glep-1.5.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="public-domain"
SLOT="0"
-KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ~mips ppc ppc64 ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ~mips ppc ppc64 ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
RDEPEND="
>=dev-python/docutils-0.10[${PYTHON_USEDEP}]
diff --git a/dev-python/docutils/docutils-0.21.2.ebuild b/dev-python/docutils/docutils-0.21.2.ebuild
index b669c7439d30..53405e012067 100644
--- a/dev-python/docutils/docutils-0.21.2.ebuild
+++ b/dev-python/docutils/docutils-0.21.2.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
# GPL-3+ only for emacs/rst.el
LICENSE="BSD BSD-2 GPL-3+ PSF-2.4 public-domain"
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"
RDEPEND="
dev-python/pillow[${PYTHON_USEDEP}]
diff --git a/dev-python/docutils/docutils-0.22.ebuild b/dev-python/docutils/docutils-0.22.ebuild
index 220f42af1ffa..a72a8ccb55f2 100644
--- a/dev-python/docutils/docutils-0.22.ebuild
+++ b/dev-python/docutils/docutils-0.22.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
# GPL-3+ only for emacs/rst.el
LICENSE="BSD BSD-2 GPL-3+ PSF-2.4 public-domain"
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"
RDEPEND="
dev-python/pillow[${PYTHON_USEDEP}]
diff --git a/dev-python/ecdsa/ecdsa-0.19.1.ebuild b/dev-python/ecdsa/ecdsa-0.19.1.ebuild
index 37b46e25919b..b716e1862c47 100644
--- a/dev-python/ecdsa/ecdsa-0.19.1.ebuild
+++ b/dev-python/ecdsa/ecdsa-0.19.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv sparc x86 ~ppc-macos ~x64-macos"
+KEYWORDS="amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv ~sparc x86 ~ppc-macos ~x64-macos"
RDEPEND="
$(python_gen_cond_dep '
diff --git a/dev-python/editables/editables-0.5.ebuild b/dev-python/editables/editables-0.5.ebuild
index 4758da7a85e2..bfb9274d7ade 100644
--- a/dev-python/editables/editables-0.5.ebuild
+++ b/dev-python/editables/editables-0.5.ebuild
@@ -20,6 +20,6 @@ SRC_URI="
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"
distutils_enable_tests pytest
diff --git a/dev-python/elementpath/elementpath-5.0.3.ebuild b/dev-python/elementpath/elementpath-5.0.3.ebuild
index a15ed59b4074..3033a3b30834 100644
--- a/dev-python/elementpath/elementpath-5.0.3.ebuild
+++ b/dev-python/elementpath/elementpath-5.0.3.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 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
BDEPEND="
test? (
diff --git a/dev-python/email-validator/email-validator-2.2.0.ebuild b/dev-python/email-validator/email-validator-2.2.0.ebuild
index e681777dbb71..bbedb01ba49f 100644
--- a/dev-python/email-validator/email-validator-2.2.0.ebuild
+++ b/dev-python/email-validator/email-validator-2.2.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="CC0-1.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"
RDEPEND="
>=dev-python/idna-2.8[${PYTHON_USEDEP}]
diff --git a/dev-python/ensurepip-pip/ensurepip-pip-25.1.1-r1.ebuild b/dev-python/ensurepip-pip/ensurepip-pip-25.1.1-r1.ebuild
index 410347b24055..063189102a88 100644
--- a/dev-python/ensurepip-pip/ensurepip-pip-25.1.1-r1.ebuild
+++ b/dev-python/ensurepip-pip/ensurepip-pip-25.1.1-r1.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/ensurepip-setuptools/ensurepip-setuptools-79.0.1.ebuild b/dev-python/ensurepip-setuptools/ensurepip-setuptools-79.0.1.ebuild
index 473fddfd3ccc..8861c39b3706 100644
--- a/dev-python/ensurepip-setuptools/ensurepip-setuptools-79.0.1.ebuild
+++ b/dev-python/ensurepip-setuptools/ensurepip-setuptools-79.0.1.ebuild
@@ -12,7 +12,7 @@ S=${DISTDIR}
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"
src_install() {
insinto /usr/lib/python/ensurepip
diff --git a/dev-python/ensurepip-setuptools/ensurepip-setuptools-80.9.0-r1.ebuild b/dev-python/ensurepip-setuptools/ensurepip-setuptools-80.9.0-r1.ebuild
index a8243666e827..a1b82ebb0b81 100644
--- a/dev-python/ensurepip-setuptools/ensurepip-setuptools-80.9.0-r1.ebuild
+++ b/dev-python/ensurepip-setuptools/ensurepip-setuptools-80.9.0-r1.ebuild
@@ -19,7 +19,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 ~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/ensurepip-wheel/ensurepip-wheel-0.45.1-r1.ebuild b/dev-python/ensurepip-wheel/ensurepip-wheel-0.45.1-r1.ebuild
index e5f46b8b2fb1..b976aee60d37 100644
--- a/dev-python/ensurepip-wheel/ensurepip-wheel-0.45.1-r1.ebuild
+++ b/dev-python/ensurepip-wheel/ensurepip-wheel-0.45.1-r1.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
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"
BDEPEND="
test? (
diff --git a/dev-python/entrypoints/entrypoints-0.4.ebuild b/dev-python/entrypoints/entrypoints-0.4.ebuild
index f1761f0bb807..4ee398e8ba93 100644
--- a/dev-python/entrypoints/entrypoints-0.4.ebuild
+++ b/dev-python/entrypoints/entrypoints-0.4.ebuild
@@ -16,6 +16,6 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
distutils_enable_tests pytest
diff --git a/dev-python/ephemeral-port-reserve/ephemeral-port-reserve-1.1.4.ebuild b/dev-python/ephemeral-port-reserve/ephemeral-port-reserve-1.1.4.ebuild
index e31bde3194de..6f2a980448a1 100644
--- a/dev-python/ephemeral-port-reserve/ephemeral-port-reserve-1.1.4.ebuild
+++ b/dev-python/ephemeral-port-reserve/ephemeral-port-reserve-1.1.4.ebuild
@@ -20,6 +20,6 @@ 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"
distutils_enable_tests pytest
diff --git a/dev-python/eradicate/eradicate-3.0.0.ebuild b/dev-python/eradicate/eradicate-3.0.0.ebuild
index 215de175cd16..ff66355a0e6e 100644
--- a/dev-python/eradicate/eradicate-3.0.0.ebuild
+++ b/dev-python/eradicate/eradicate-3.0.0.ebuild
@@ -20,6 +20,6 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
distutils_enable_tests unittest
diff --git a/dev-python/exceptiongroup/exceptiongroup-1.3.0.ebuild b/dev-python/exceptiongroup/exceptiongroup-1.3.0.ebuild
index 97a04750af61..f10dae090af7 100644
--- a/dev-python/exceptiongroup/exceptiongroup-1.3.0.ebuild
+++ b/dev-python/exceptiongroup/exceptiongroup-1.3.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT PSF-2.4"
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"
RDEPEND="
$(python_gen_cond_dep '
diff --git a/dev-python/execnet/execnet-2.1.1.ebuild b/dev-python/execnet/execnet-2.1.1.ebuild
index 4c38d9740dad..e178bdfb63da 100644
--- a/dev-python/execnet/execnet-2.1.1.ebuild
+++ b/dev-python/execnet/execnet-2.1.1.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 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
BDEPEND="
dev-python/hatch-vcs[${PYTHON_USEDEP}]
diff --git a/dev-python/executing/Manifest b/dev-python/executing/Manifest
index d8f41c63d5b8..b97f49890a72 100644
--- a/dev-python/executing/Manifest
+++ b/dev-python/executing/Manifest
@@ -1 +1,2 @@
DIST executing-2.2.0.gh.tar.gz 981774 BLAKE2B 81fb081f3835b8d389ac90fd91db769d0e7171e99b05a3e7ba0edb2910fed0fcd26ff24c6b84bece138de93166571df09c85d47eeec816806c47b816d7b12b96 SHA512 e8f6a399e57519149a15ae84c1d4a01c7cd6fdb81415939ef66f19a4abd9bf2ddbb156a9f59e95328a26504b8f8775a48e8da44af2027dd4763071b1997b8b84
+DIST executing-2.2.1.gh.tar.gz 1135347 BLAKE2B 532d3b8a1801227436e7fd9460732c735b51b1e5841f43090ba56e91d9a5ba8c248bcafbc4ae9f1c6c49ee262d67748f7350364efa9830089f366e07a269bb65 SHA512 59d2ad7cf36279dd36df36355ad3252d32df21a4732fece8f1975be142604ee4646bee2a1fb52ff8ae4f3b155b34334dc92d5a05240cb5be169913e065d2fb23
diff --git a/dev-python/executing/executing-2.2.0.ebuild b/dev-python/executing/executing-2.2.0.ebuild
index f802ff717bd1..3b4198b84d5f 100644
--- a/dev-python/executing/executing-2.2.0.ebuild
+++ b/dev-python/executing/executing-2.2.0.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="MIT"
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"
BDEPEND="
dev-python/setuptools-scm[${PYTHON_USEDEP}]
diff --git a/dev-python/executing/executing-2.2.1.ebuild b/dev-python/executing/executing-2.2.1.ebuild
new file mode 100644
index 000000000000..2a443a93def6
--- /dev/null
+++ b/dev-python/executing/executing-2.2.1.ebuild
@@ -0,0 +1,67 @@
+# Copyright 2020-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_TESTED=( python3_{11..14} )
+# pypy3.11: https://github.com/alexmojaki/executing/issues/92
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 optfeature
+
+DESCRIPTION="Get information about what a Python frame is currently doing"
+HOMEPAGE="
+ https://github.com/alexmojaki/executing/
+ https://pypi.org/project/executing/
+"
+SRC_URI="
+ https://github.com/alexmojaki/executing/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 ~arm64-macos ~x64-macos"
+
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ >=dev-python/asttokens-2.1.0[${PYTHON_USEDEP}]
+ dev-python/littleutils[${PYTHON_USEDEP}]
+ dev-python/rich[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
+
+python_test() {
+ if ! has "${EPYTHON}" "${PYTHON_TESTED[@]/_/.}"; then
+ einfo "Skipping tests on ${EPYTHON}"
+ return
+ fi
+
+ local EPYTEST_DESELECT=()
+ case ${EPYTHON} in
+ pypy3)
+ EPYTEST_DESELECT+=(
+ "tests/test_main.py::test_small_samples[22bc344a43584c051d8962116e8fd149d72e7e68bcb54caf201ee6e78986b167.py]"
+ "tests/test_main.py::test_small_samples[46597f8f896f11c5d7f432236344cc7e5645c2a39836eb6abdd2437c0422f0f4.py]"
+ )
+ ;;
+ esac
+ if ! has_version "dev-python/ipython[${PYTHON_USEDEP}]"; then
+ EPYTEST_DESELECT+=(
+ tests/test_ipython.py
+ )
+ fi
+
+ epytest
+}
+
+pkg_postinst() {
+ optfeature "getting node's source code" dev-python/asttokens
+}
diff --git a/dev-python/expandvars/expandvars-1.1.1.ebuild b/dev-python/expandvars/expandvars-1.1.1.ebuild
index 795123a12ac3..3fc12e4efdb6 100644
--- a/dev-python/expandvars/expandvars-1.1.1.ebuild
+++ b/dev-python/expandvars/expandvars-1.1.1.ebuild
@@ -16,7 +16,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"
EPYTEST_PLUGINS=()
distutils_enable_tests pytest
diff --git a/dev-python/extras/extras-1.0.0-r2.ebuild b/dev-python/extras/extras-1.0.0-r2.ebuild
index 3263ac5eb258..ad08383212ca 100644
--- a/dev-python/extras/extras-1.0.0-r2.ebuild
+++ b/dev-python/extras/extras-1.0.0-r2.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 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/eyed3/eyed3-0.9.8.ebuild b/dev-python/eyed3/eyed3-0.9.8.ebuild
index 652aad7383a1..057678333d6b 100644
--- a/dev-python/eyed3/eyed3-0.9.8.ebuild
+++ b/dev-python/eyed3/eyed3-0.9.8.ebuild
@@ -27,7 +27,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="GPL-3+"
SLOT="0.7"
-KEYWORDS="amd64 arm arm64 ~hppa ppc ppc64 ~riscv sparc x86"
+KEYWORDS="amd64 arm arm64 ~hppa ppc ppc64 ~riscv ~sparc x86"
RDEPEND="
>=dev-python/deprecation-2.1.0[${PYTHON_USEDEP}]
diff --git a/dev-python/faker/faker-37.4.2.ebuild b/dev-python/faker/faker-37.4.2.ebuild
index 4f44a1ce78c8..5ab0dbedd276 100644
--- a/dev-python/faker/faker-37.4.2.ebuild
+++ b/dev-python/faker/faker-37.4.2.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
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"
RDEPEND="
dev-python/tzdata[${PYTHON_USEDEP}]
diff --git a/dev-python/faker/faker-37.4.3.ebuild b/dev-python/faker/faker-37.4.3.ebuild
index 439a870eb1bf..9a32ad5dc9e1 100644
--- a/dev-python/faker/faker-37.4.3.ebuild
+++ b/dev-python/faker/faker-37.4.3.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
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"
RDEPEND="
dev-python/tzdata[${PYTHON_USEDEP}]
diff --git a/dev-python/fakeredis/fakeredis-2.30.3.ebuild b/dev-python/fakeredis/fakeredis-2.30.3.ebuild
index 139502f2df55..74e13925f1f3 100644
--- a/dev-python/fakeredis/fakeredis-2.30.3.ebuild
+++ b/dev-python/fakeredis/fakeredis-2.30.3.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86"
+KEYWORDS="amd64 ~arm arm64 ~ppc ~ppc64 ~riscv ~sparc x86"
RDEPEND="
>=dev-python/redis-4.3[${PYTHON_USEDEP}]
diff --git a/dev-python/fasteners/fasteners-0.19.ebuild b/dev-python/fasteners/fasteners-0.19.ebuild
index bab936abcd5e..f2a71ed3db90 100644
--- a/dev-python/fasteners/fasteners-0.19.ebuild
+++ b/dev-python/fasteners/fasteners-0.19.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
BDEPEND="
test? (
diff --git a/dev-python/fastjsonschema/fastjsonschema-2.21.1.ebuild b/dev-python/fastjsonschema/fastjsonschema-2.21.1.ebuild
index a0b206590f1b..1b1879ff6768 100644
--- a/dev-python/fastjsonschema/fastjsonschema-2.21.1.ebuild
+++ b/dev-python/fastjsonschema/fastjsonschema-2.21.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
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"
distutils_enable_tests pytest
diff --git a/dev-python/feedparser/feedparser-6.0.11.ebuild b/dev-python/feedparser/feedparser-6.0.11.ebuild
index 35e35fe0cf17..2f6b0b612459 100644
--- a/dev-python/feedparser/feedparser-6.0.11.ebuild
+++ b/dev-python/feedparser/feedparser-6.0.11.ebuild
@@ -23,7 +23,7 @@ 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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
RDEPEND="
dev-python/sgmllib3k[${PYTHON_USEDEP}]
diff --git a/dev-python/fields/fields-5.0.0-r3.ebuild b/dev-python/fields/fields-5.0.0-r3.ebuild
index a485fe2d6e19..ea20c9360a18 100644
--- a/dev-python/fields/fields-5.0.0-r3.ebuild
+++ b/dev-python/fields/fields-5.0.0-r3.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD-2"
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"
BDEPEND="
test? (
diff --git a/dev-python/filelock/filelock-3.18.0.ebuild b/dev-python/filelock/filelock-3.18.0.ebuild
index 7065b304bf8c..caaf85e66b3f 100644
--- a/dev-python/filelock/filelock-3.18.0.ebuild
+++ b/dev-python/filelock/filelock-3.18.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="Unlicense"
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"
BDEPEND="
dev-python/hatch-vcs[${PYTHON_USEDEP}]
diff --git a/dev-python/filetype/filetype-1.2.0.ebuild b/dev-python/filetype/filetype-1.2.0.ebuild
index 383a980df05a..69c764427d3a 100644
--- a/dev-python/filetype/filetype-1.2.0.ebuild
+++ b/dev-python/filetype/filetype-1.2.0.ebuild
@@ -16,6 +16,6 @@ HOMEPAGE="
LICENSE="BSD"
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"
distutils_enable_tests unittest
diff --git a/dev-python/fixtures/fixtures-4.2.5.ebuild b/dev-python/fixtures/fixtures-4.2.5.ebuild
index 75fc5cc972d5..ad0c91ccb937 100644
--- a/dev-python/fixtures/fixtures-4.2.5.ebuild
+++ b/dev-python/fixtures/fixtures-4.2.5.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="|| ( Apache-2.0 BSD )"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/fixtures/fixtures-4.2.6.ebuild b/dev-python/fixtures/fixtures-4.2.6.ebuild
index 68e3080eb6af..ad0c91ccb937 100644
--- a/dev-python/fixtures/fixtures-4.2.6.ebuild
+++ b/dev-python/fixtures/fixtures-4.2.6.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="|| ( Apache-2.0 BSD )"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/flake8/flake8-7.3.0.ebuild b/dev-python/flake8/flake8-7.3.0.ebuild
index a7c6a170aa55..3b11607d792e 100644
--- a/dev-python/flake8/flake8-7.3.0.ebuild
+++ b/dev-python/flake8/flake8-7.3.0.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
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"
RDEPEND="
=dev-python/pyflakes-3.4*[${PYTHON_USEDEP}]
diff --git a/dev-python/flaky/flaky-3.8.1.ebuild b/dev-python/flaky/flaky-3.8.1.ebuild
index 76a16d606254..5bf7b4061991 100644
--- a/dev-python/flaky/flaky-3.8.1.ebuild
+++ b/dev-python/flaky/flaky-3.8.1.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 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/flasgger/flasgger-0.9.7.1.ebuild b/dev-python/flasgger/flasgger-0.9.7.1.ebuild
index 19b9552c9e12..a92764eac766 100644
--- a/dev-python/flasgger/flasgger-0.9.7.1.ebuild
+++ b/dev-python/flasgger/flasgger-0.9.7.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
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"
RDEPEND="
>=dev-python/flask-0.10[${PYTHON_USEDEP}]
diff --git a/dev-python/flask-restx/files/flask-restx-fix-flask-compat.patch b/dev-python/flask-restx/files/flask-restx-fix-flask-compat.patch
deleted file mode 100644
index 759bb5f63e03..000000000000
--- a/dev-python/flask-restx/files/flask-restx-fix-flask-compat.patch
+++ /dev/null
@@ -1,147 +0,0 @@
-diff --git a/flask_restx/api.py b/flask_restx/api.py
-index 5996dd59..bd0413dd 100644
---- a/flask_restx/api.py
-+++ b/flask_restx/api.py
-@@ -14,10 +14,6 @@
- from flask import url_for, request, current_app
- from flask import make_response as original_flask_make_response
-
--try:
-- from flask.helpers import _endpoint_from_view_func
--except ImportError:
-- from flask.scaffold import _endpoint_from_view_func
- from flask.signals import got_request_exception
-
- from jsonschema import RefResolver
-@@ -45,10 +41,13 @@
- from .postman import PostmanCollectionV1
- from .resource import Resource
- from .swagger import Swagger
--from .utils import default_id, camel_to_dash, unpack
-+from .utils import default_id, camel_to_dash, unpack, import_check_view_func
- from .representations import output_json
- from ._http import HTTPStatus
-
-+endpoint_from_view_func = import_check_view_func()
-+
-+
- RE_RULES = re.compile("(<.*>)")
-
- # List headers that should never be handled by Flask-RESTX
-@@ -850,7 +849,7 @@ def _blueprint_setup_add_url_rule_patch(
- rule = blueprint_setup.url_prefix + rule
- options.setdefault("subdomain", blueprint_setup.subdomain)
- if endpoint is None:
-- endpoint = _endpoint_from_view_func(view_func)
-+ endpoint = endpoint_from_view_func(view_func)
- defaults = blueprint_setup.url_defaults
- if "defaults" in options:
- defaults = dict(defaults, **options.pop("defaults"))
-diff --git a/flask_restx/utils.py b/flask_restx/utils.py
-index 809a29b3..35dec2ae 100644
---- a/flask_restx/utils.py
-+++ b/flask_restx/utils.py
-@@ -1,4 +1,6 @@
- import re
-+import warnings
-+import typing
-
- from collections import OrderedDict
- from copy import deepcopy
-@@ -20,6 +22,10 @@
- )
-
-
-+class FlaskCompatibilityWarning(DeprecationWarning):
-+ pass
-+
-+
- def merge(first, second):
- """
- Recursively merges two dictionaries.
-@@ -118,3 +124,43 @@ def unpack(response, default_code=HTTPStatus.OK):
- return data, code or default_code, headers
- else:
- raise ValueError("Too many response values")
-+
-+
-+def to_view_name(view_func: typing.Callable) -> str:
-+ """Helper that returns the default endpoint for a given
-+ function. This always is the function name.
-+
-+ Note: copy of simple flask internal helper
-+ """
-+ assert view_func is not None, "expected view func if endpoint is not provided."
-+ return view_func.__name__
-+
-+
-+def import_check_view_func():
-+ """
-+ Resolve import flask _endpoint_from_view_func.
-+
-+ Show warning if function cannot be found and provide copy of last known implementation.
-+
-+ Note: This helper method exists because reoccurring problem with flask function, but
-+ actual method body remaining the same in each flask version.
-+ """
-+ import importlib.metadata
-+
-+ flask_version = importlib.metadata.version("flask").split(".")
-+ try:
-+ if flask_version[0] == "1":
-+ from flask.helpers import _endpoint_from_view_func
-+ elif flask_version[0] == "2":
-+ from flask.scaffold import _endpoint_from_view_func
-+ elif flask_version[0] == "3":
-+ from flask.sansio.scaffold import _endpoint_from_view_func
-+ else:
-+ warnings.simplefilter("once", FlaskCompatibilityWarning)
-+ _endpoint_from_view_func = None
-+ except ImportError:
-+ warnings.simplefilter("once", FlaskCompatibilityWarning)
-+ _endpoint_from_view_func = None
-+ if _endpoint_from_view_func is None:
-+ _endpoint_from_view_func = to_view_name
-+ return _endpoint_from_view_func
-diff --git a/tests/test_utils.py b/tests/test_utils.py
-index d98d68d0..fe3a1adb 100644
---- a/tests/test_utils.py
-+++ b/tests/test_utils.py
-@@ -98,3 +98,14 @@ def test_value_headers_default_code(self):
- def test_too_many_values(self):
- with pytest.raises(ValueError):
- utils.unpack((None, None, None, None))
-+
-+
-+class ToViewNameTest(object):
-+ def test_none(self):
-+ with pytest.raises(AssertionError):
-+ _ = utils.to_view_name(None)
-+
-+
-+class ImportCheckViewFuncTest(object):
-+ def test_callable(self):
-+ assert callable(utils.import_check_view_func())
-
-From 13ac54e4ba513c01ec8e4a23b4e88b7b555cf2f1 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Trval?= <trval@kajot.cz>
-Date: Fri, 6 Oct 2023 15:46:13 +0200
-Subject: [PATCH 2/2] modify: include new import_check_view_func in
- utils.__all__ to keep nice static checks
-
----
- flask_restx/utils.py | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/flask_restx/utils.py b/flask_restx/utils.py
-index 35dec2ae..367527a5 100644
---- a/flask_restx/utils.py
-+++ b/flask_restx/utils.py
-@@ -19,6 +19,7 @@
- "not_none",
- "not_none_sorted",
- "unpack",
-+ "import_check_view_func",
- )
-
-
diff --git a/dev-python/flask/flask-3.1.1.ebuild b/dev-python/flask/flask-3.1.1.ebuild
index 45dfb2581f19..8ecccae87512 100644
--- a/dev-python/flask/flask-3.1.1.ebuild
+++ b/dev-python/flask/flask-3.1.1.ebuild
@@ -19,7 +19,7 @@ if [[ ${PV} == *9999* ]]; then
inherit git-r3
else
inherit pypi
- 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"
fi
LICENSE="BSD"
diff --git a/dev-python/flit-core/flit-core-3.12.0.ebuild b/dev-python/flit-core/flit-core-3.12.0.ebuild
index 301ec1c859d5..835ecadb1941 100644
--- a/dev-python/flit-core/flit-core-3.12.0.ebuild
+++ b/dev-python/flit-core/flit-core-3.12.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
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"
+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"
BDEPEND="
test? ( dev-python/testpath[${PYTHON_USEDEP}] )
diff --git a/dev-python/flit-scm/flit-scm-1.7.0.ebuild b/dev-python/flit-scm/flit-scm-1.7.0.ebuild
index 39a12959162e..b58f30f0e217 100644
--- a/dev-python/flit-scm/flit-scm-1.7.0.ebuild
+++ b/dev-python/flit-scm/flit-scm-1.7.0.ebuild
@@ -21,7 +21,7 @@ S=${WORKDIR}/${MY_P}
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"
RDEPEND="
>=dev-python/flit-core-3.5.0[${PYTHON_USEDEP}]
diff --git a/dev-python/fonttools/fonttools-4.58.4.ebuild b/dev-python/fonttools/fonttools-4.58.4.ebuild
index 844b4b1fa2cc..9b7b4d1906c8 100644
--- a/dev-python/fonttools/fonttools-4.58.4.ebuild
+++ b/dev-python/fonttools/fonttools-4.58.4.ebuild
@@ -22,7 +22,7 @@ SRC_URI="
LICENSE="BSD"
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="+native-extensions"
RDEPEND="
diff --git a/dev-python/forbiddenfruit/forbiddenfruit-0.1.4.ebuild b/dev-python/forbiddenfruit/forbiddenfruit-0.1.4.ebuild
index 57dd38ea0ee7..0b195dd1ee37 100644
--- a/dev-python/forbiddenfruit/forbiddenfruit-0.1.4.ebuild
+++ b/dev-python/forbiddenfruit/forbiddenfruit-0.1.4.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="|| ( GPL-3 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"
RESTRICT="!test? ( test )"
diff --git a/dev-python/fqdn/fqdn-1.5.1-r2.ebuild b/dev-python/fqdn/fqdn-1.5.1-r2.ebuild
index 9bd9e21d3205..25a7ae3da145 100644
--- a/dev-python/fqdn/fqdn-1.5.1-r2.ebuild
+++ b/dev-python/fqdn/fqdn-1.5.1-r2.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MPL-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"
distutils_enable_tests pytest
distutils_enable_sphinx docs
diff --git a/dev-python/freezegun/freezegun-1.5.3.ebuild b/dev-python/freezegun/freezegun-1.5.3.ebuild
index 8d1a6fa061f0..8f339efc9ed1 100644
--- a/dev-python/freezegun/freezegun-1.5.3.ebuild
+++ b/dev-python/freezegun/freezegun-1.5.3.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 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
RDEPEND="
>dev-python/python-dateutil-2.7[${PYTHON_USEDEP}]
diff --git a/dev-python/freezegun/freezegun-1.5.4.ebuild b/dev-python/freezegun/freezegun-1.5.4.ebuild
index 3bf113710b8b..97c2f73f2ba0 100644
--- a/dev-python/freezegun/freezegun-1.5.4.ebuild
+++ b/dev-python/freezegun/freezegun-1.5.4.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 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
RDEPEND="
>=dev-python/python-dateutil-2.7[${PYTHON_USEDEP}]
diff --git a/dev-python/frozenlist/frozenlist-1.7.0.ebuild b/dev-python/frozenlist/frozenlist-1.7.0.ebuild
index 04f5a5d2b877..4891ed1543ce 100644
--- a/dev-python/frozenlist/frozenlist-1.7.0.ebuild
+++ b/dev-python/frozenlist/frozenlist-1.7.0.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
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"
BDEPEND="
diff --git a/dev-python/fs/fs-2.4.16-r1.ebuild b/dev-python/fs/fs-2.4.16-r1.ebuild
index 01f37cbeb97a..0dc9a90b13c3 100644
--- a/dev-python/fs/fs-2.4.16-r1.ebuild
+++ b/dev-python/fs/fs-2.4.16-r1.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 ~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-1.4.3[${PYTHON_USEDEP}]
diff --git a/dev-python/fsspec/Manifest b/dev-python/fsspec/Manifest
index 0d9f1df4a75f..eecadd940502 100644
--- a/dev-python/fsspec/Manifest
+++ b/dev-python/fsspec/Manifest
@@ -1 +1,2 @@
DIST filesystem_spec-2025.7.0.gh.tar.gz 439666 BLAKE2B 9405d29fc9c9cf573966d3a1a46d94611fbc7874589862c7ad2e96c64c9c3e7b30b8ce2206f6723c94f1a4918e8763badc786f444de2c2386c9d83b615f5479c SHA512 662bbd67941cbccde26fc69f444c6566233b03bcb22b0fc219efc7bd3fb6a08d75beeea044414e8a6e2a3d3e82522f0fc13057d4be1660305a2271aee7d46c40
+DIST filesystem_spec-2025.9.0.gh.tar.gz 442812 BLAKE2B 83ff3f4f9b58fb38803dd3eae7a3307a41af8fd7385f097bade053106633c40dd20edcf4ef8610d99cf0a6e8f2906711777b3abd96afe59047f9ab0692eb9a7e SHA512 cb972b9c9d3c8f6f899665337581164da14fbdb5bf3422268468bf0cc1ff2b0a1cad66fe2a048eea9cdff95fc6f34361a5ccdc11802e84b558989d4744c7f3d9
diff --git a/dev-python/fsspec/fsspec-2025.9.0.ebuild b/dev-python/fsspec/fsspec-2025.9.0.ebuild
new file mode 100644
index 000000000000..1aba00c18ebe
--- /dev/null
+++ b/dev-python/fsspec/fsspec-2025.9.0.ebuild
@@ -0,0 +1,60 @@
+# Copyright 2020-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
+
+MY_P=filesystem_spec-${PV}
+DESCRIPTION="A specification that python filesystems should adhere to"
+HOMEPAGE="
+ https://github.com/fsspec/filesystem_spec/
+ https://pypi.org/project/fsspec/
+"
+# upstream removed tests in 2024.6.0
+SRC_URI="
+ https://github.com/fsspec/filesystem_spec/archive/${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ dev-python/aiohttp[${PYTHON_USEDEP}]
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/tqdm[${PYTHON_USEDEP}]
+ dev-vcs/git
+ )
+"
+
+# Note: this package is not xdist-friendly
+EPYTEST_PLUGINS=( pytest-{asyncio,mock,rerunfailures} )
+distutils_enable_tests pytest
+
+export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
+
+src_test() {
+ git config --global user.email "you@example.com" || die
+ git config --global user.name "Your Name" || die
+ distutils-r1_src_test
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # Internet
+ fsspec/implementations/tests/test_reference.py::test_async_cat_file_ranges
+ fsspec/implementations/tests/test_github.py
+ fsspec/implementations/tests/test_gist.py
+ )
+
+ epytest -o tmp_path_retention_policy=all
+}
diff --git a/dev-python/funcparserlib/funcparserlib-1.0.1.ebuild b/dev-python/funcparserlib/funcparserlib-1.0.1.ebuild
index 0e1f43033e22..a93ece6def1d 100644
--- a/dev-python/funcparserlib/funcparserlib-1.0.1.ebuild
+++ b/dev-python/funcparserlib/funcparserlib-1.0.1.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/furo/furo-2025.7.19.ebuild b/dev-python/furo/furo-2025.7.19.ebuild
index 42a39d7a8187..4517295fd7ba 100644
--- a/dev-python/furo/furo-2025.7.19.ebuild
+++ b/dev-python/furo/furo-2025.7.19.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/beautifulsoup4[${PYTHON_USEDEP}]
diff --git a/dev-python/fuzzywuzzy/fuzzywuzzy-0.18.0-r1.ebuild b/dev-python/fuzzywuzzy/fuzzywuzzy-0.18.0-r1.ebuild
index 17bc7ad4ce83..a2fe0bc6560b 100644
--- a/dev-python/fuzzywuzzy/fuzzywuzzy-0.18.0-r1.ebuild
+++ b/dev-python/fuzzywuzzy/fuzzywuzzy-0.18.0-r1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="GPL-2"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/levenshtein[${PYTHON_USEDEP}]
diff --git a/dev-python/gentoo-common/gentoo-common-1.ebuild b/dev-python/gentoo-common/gentoo-common-1.ebuild
index 07bae10057c6..bf3d0da96fa0 100644
--- a/dev-python/gentoo-common/gentoo-common-1.ebuild
+++ b/dev-python/gentoo-common/gentoo-common-1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2023 Gentoo Authors
+# Copyright 2023-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -9,7 +9,7 @@ S=${WORKDIR}
LICENSE="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"
src_install() {
insinto /usr/lib/python
diff --git a/dev-python/genty/genty-1.3.2-r3.ebuild b/dev-python/genty/genty-1.3.2-r3.ebuild
index 5727aad905a3..ddcb8c489bdf 100644
--- a/dev-python/genty/genty-1.3.2-r3.ebuild
+++ b/dev-python/genty/genty-1.3.2-r3.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 ~amd64-linux ~x86-linux ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
RDEPEND="
dev-python/six[${PYTHON_USEDEP}]
diff --git a/dev-python/gitdb/gitdb-4.0.12.ebuild b/dev-python/gitdb/gitdb-4.0.12.ebuild
index 26ed2ebd5ee6..9e316d269fab 100644
--- a/dev-python/gitdb/gitdb-4.0.12.ebuild
+++ b/dev-python/gitdb/gitdb-4.0.12.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
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"
RDEPEND="
>=dev-python/smmap-3.0.1[${PYTHON_USEDEP}]
diff --git a/dev-python/gitpython/gitpython-3.1.45.ebuild b/dev-python/gitpython/gitpython-3.1.45.ebuild
index d40cd4ed2159..f88281d4c13c 100644
--- a/dev-python/gitpython/gitpython-3.1.45.ebuild
+++ b/dev-python/gitpython/gitpython-3.1.45.ebuild
@@ -29,7 +29,7 @@ SRC_URI+="
LICENSE="BSD"
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"
RDEPEND="
dev-vcs/git
diff --git a/dev-python/gmpy2/gmpy2-2.2.1.ebuild b/dev-python/gmpy2/gmpy2-2.2.1.ebuild
index f4d00ee44013..c16c321b697a 100644
--- a/dev-python/gmpy2/gmpy2-2.2.1.ebuild
+++ b/dev-python/gmpy2/gmpy2-2.2.1.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="LGPL-3+"
SLOT="2"
-KEYWORDS="amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+KEYWORDS="amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
DEPEND="
>=dev-libs/mpc-1.0.2:=
diff --git a/dev-python/google-api-python-client/Manifest b/dev-python/google-api-python-client/Manifest
index 1ec814eb60c0..2fece3669e84 100644
--- a/dev-python/google-api-python-client/Manifest
+++ b/dev-python/google-api-python-client/Manifest
@@ -1,3 +1,4 @@
DIST google_api_python_client-2.177.0.tar.gz 13184405 BLAKE2B d3aca5b038ada6556c8697d87f6907386412c7e0ae8fbbe7c45cdc17b2d2f37b5e61ae7b541b92519c46a1a3d6770cf158e27ebdc3712d6eaf2995eabdf14ef3 SHA512 e3ece581c2c4005671b2f03de92b1d775d500e2c0ad565e711c5ecd52c327dda495fe39d7f4f0b62ef35afd99ffbf8c63449f9e9051b63784946bd4204bd6e85
DIST google_api_python_client-2.178.0.tar.gz 13282628 BLAKE2B 3ba2eb05b940bb01a47ad735b5d8f0ca4a01fa77e9d3603698ef03b34177f85b2a2a8068b82ef0c6a64c7fb36fa3220ef2b29246ebcfe9dee539ca57929976fe SHA512 574c656ba6b62f2ebae08ea6b4e0d34e320e00f83ea6ed899c0a5b64ad3d025133ad357c3450c479359210b56b04675c7554b6a903ca4fe84fa32a5b03e278b4
DIST google_api_python_client-2.179.0.tar.gz 13397672 BLAKE2B 6e1064aa6fadf3fe896a8ea3f4847c5e41a44e6a8a599b66cec0e0a65926f38c88be88fadccb439afeff942073736ffc765591941efd8a891d48a2345152198d SHA512 d82134dced76100be8b1547401bb1d546620f42ca0eb12aeff50703ce6c87f8c2560ccf971a7301eae03fe030471a703560c541bbb375bb5bc3e31567b011481
+DIST google_api_python_client-2.181.0.tar.gz 13545438 BLAKE2B dd661f2c7d82d695b585e5278dc1857acd920989430ce4cec30594fe6b83617bf6681710cc41fdba4aff2ffcb0c3300ae1233a98847456cd1f7f34017489b8af SHA512 0a7ce53fd22d3c6f06bffd4e9268f944238a6293c3818f6a4d8e0144b4188c51cb2aa4cc1e58cb8380ccb3db6f485dbbbb9dc93016211da23f22acae77ac5df7
diff --git a/dev-python/google-api-python-client/google-api-python-client-2.181.0.ebuild b/dev-python/google-api-python-client/google-api-python-client-2.181.0.ebuild
new file mode 100644
index 000000000000..83f75ed3d688
--- /dev/null
+++ b/dev-python/google-api-python-client/google-api-python-client-2.181.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_{9,10,11,12,13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Google API Client for Python"
+HOMEPAGE="
+ https://github.com/googleapis/google-api-python-client/
+ https://pypi.org/project/google-api-python-client/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ >=dev-python/httplib2-0.15[${PYTHON_USEDEP}]
+ <dev-python/httplib2-1[${PYTHON_USEDEP}]
+ >=dev-python/google-api-core-2.3.1[${PYTHON_USEDEP}]
+ >=dev-python/google-auth-1.35.0[${PYTHON_USEDEP}]
+ >=dev-python/google-auth-httplib2-0.1.0[${PYTHON_USEDEP}]
+ >=dev-python/uritemplate-3.0.0[${PYTHON_USEDEP}]
+ <dev-python/uritemplate-5[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/mock[${PYTHON_USEDEP}]
+ dev-python/pandas[${PYTHON_USEDEP}]
+ dev-python/parameterized[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # require Internet access (and credentials)
+ tests/test_discovery.py::DiscoveryErrors::test_credentials_and_credentials_file_mutually_exclusive
+ tests/test_discovery.py::DiscoveryFromDocument::test_api_endpoint_override_from_client_options_mapping_object
+ tests/test_discovery.py::Universe::test_client_options_universe_configured_with_mtls
+ tests/test_discovery.py::Universe::test_universe_env_var_configured_with_mtls
+ )
+
+ epytest tests
+}
diff --git a/dev-python/gpep517/gpep517-19.ebuild b/dev-python/gpep517/gpep517-19.ebuild
index be4f4b0b68fc..7cf1245524df 100644
--- a/dev-python/gpep517/gpep517-19.ebuild
+++ b/dev-python/gpep517/gpep517-19.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="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"
RDEPEND="
>=dev-python/installer-0.5.0[${PYTHON_USEDEP}]
diff --git a/dev-python/gpgmepy/gpgmepy-1.24.3.ebuild b/dev-python/gpgmepy/gpgmepy-1.24.3.ebuild
index 04f456be5972..b4929a7ebce1 100644
--- a/dev-python/gpgmepy/gpgmepy-1.24.3.ebuild
+++ b/dev-python/gpgmepy/gpgmepy-1.24.3.ebuild
@@ -12,7 +12,7 @@ HOMEPAGE="https://www.gnupg.org/related_software/gpgme"
# keep slot and keywords in sync with app-crypt/gpgme
LICENSE="metapackage"
SLOT="1/11.6.15.2"
-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"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
diff --git a/dev-python/greenlet/greenlet-3.2.3.ebuild b/dev-python/greenlet/greenlet-3.2.3.ebuild
index e649f248417c..f10686082fb4 100644
--- a/dev-python/greenlet/greenlet-3.2.3.ebuild
+++ b/dev-python/greenlet/greenlet-3.2.3.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/grpcio-status/grpcio-status-1.74.0.ebuild b/dev-python/grpcio-status/grpcio-status-1.74.0.ebuild
index e7cf90be7e90..5a1b917f0fc6 100644
--- a/dev-python/grpcio-status/grpcio-status-1.74.0.ebuild
+++ b/dev-python/grpcio-status/grpcio-status-1.74.0.ebuild
@@ -23,7 +23,7 @@ S=${WORKDIR}/${MY_P}/src/python/grpcio_status
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="amd64 arm64 ~x86"
+KEYWORDS="amd64 arm64 x86"
RDEPEND="
>=dev-python/grpcio-${PV}[${PYTHON_USEDEP}]
diff --git a/dev-python/gssapi/Manifest b/dev-python/gssapi/Manifest
index ce9e100173a3..a78354bba7d3 100644
--- a/dev-python/gssapi/Manifest
+++ b/dev-python/gssapi/Manifest
@@ -1 +1,2 @@
+DIST gssapi-1.10.0.gh.tar.gz 112079 BLAKE2B 7b52005994f7a93430ff6af124aacf1de7a8fff8867807497d1e770264d876184c0bfa3ed4d7b678a7e3bc3f1942ce5a6134ae1026e7b2150f647365179abded SHA512 49fcd1d658955dffb5fab1745ec3fc835ac475b77afe87cb81ed7f5ab9cf8a1d804954e99c81a31cf7e2ee8ad65038cbcabecf852762fa1c0ea4f6e41be23147
DIST gssapi-1.9.0.gh.tar.gz 112822 BLAKE2B 4a91c2639a5186afa408b35540e248b5d17e74957669fbe8274e9619ef30172507559612f6a425df383145e5ac10e16d243fec9dbdc0a10e43ef29aa9f208c12 SHA512 05ca208d37eb3af3cba91607b61c4472a0d83e92f43342994e0fca575290c47b67c7c46440e95d3712c2409f43280a1e95b906e1e8918ebd9da7e6f46e4031fc
diff --git a/dev-python/gssapi/gssapi-1.10.0.ebuild b/dev-python/gssapi/gssapi-1.10.0.ebuild
new file mode 100644
index 000000000000..4c0c9310a105
--- /dev/null
+++ b/dev-python/gssapi/gssapi-1.10.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_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Low and high level wrappers around the GSSAPI C libraries"
+HOMEPAGE="
+ https://github.com/pythongssapi/python-gssapi/
+ https://pypi.org/project/gssapi/
+"
+SRC_URI="
+ https://github.com/pythongssapi/python-gssapi/releases/download/v${PV}/python-${P}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+S="${WORKDIR}"/python-${P}
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ dev-python/decorator[${PYTHON_USEDEP}]
+ virtual/krb5
+"
+
+BDEPEND="
+ >=dev-python/cython-3.1.1[${PYTHON_USEDEP}]
+ virtual/krb5
+ test? (
+ dev-python/k5test[${PYTHON_USEDEP}]
+ dev-python/parameterized[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_test() {
+ cd "${T}" || die
+ epytest --pyargs gssapi
+}
diff --git a/dev-python/h11/h11-0.14.0.ebuild b/dev-python/h11/h11-0.14.0.ebuild
index 51116c48b0e1..182713686761 100644
--- a/dev-python/h11/h11-0.14.0.ebuild
+++ b/dev-python/h11/h11-0.14.0.ebuild
@@ -17,6 +17,6 @@ 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"
distutils_enable_tests pytest
diff --git a/dev-python/h11/h11-0.16.0.ebuild b/dev-python/h11/h11-0.16.0.ebuild
index 51116c48b0e1..182713686761 100644
--- a/dev-python/h11/h11-0.16.0.ebuild
+++ b/dev-python/h11/h11-0.16.0.ebuild
@@ -17,6 +17,6 @@ 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"
distutils_enable_tests pytest
diff --git a/dev-python/h2/h2-4.2.0.ebuild b/dev-python/h2/h2-4.2.0.ebuild
index dbf6049ea22a..20f580d73d15 100644
--- a/dev-python/h2/h2-4.2.0.ebuild
+++ b/dev-python/h2/h2-4.2.0.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/hyperframe-6.1[${PYTHON_USEDEP}]
diff --git a/dev-python/hatch-fancy-pypi-readme/hatch-fancy-pypi-readme-25.1.0.ebuild b/dev-python/hatch-fancy-pypi-readme/hatch-fancy-pypi-readme-25.1.0.ebuild
index 196ac0b03a44..c8eb868a1232 100644
--- a/dev-python/hatch-fancy-pypi-readme/hatch-fancy-pypi-readme-25.1.0.ebuild
+++ b/dev-python/hatch-fancy-pypi-readme/hatch-fancy-pypi-readme-25.1.0.ebuild
@@ -20,7 +20,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"
RDEPEND="
dev-python/hatchling[${PYTHON_USEDEP}]
diff --git a/dev-python/hatch-jupyter-builder/hatch-jupyter-builder-0.9.1.ebuild b/dev-python/hatch-jupyter-builder/hatch-jupyter-builder-0.9.1.ebuild
index b18f2342b72f..7ed4e0558f2a 100644
--- a/dev-python/hatch-jupyter-builder/hatch-jupyter-builder-0.9.1.ebuild
+++ b/dev-python/hatch-jupyter-builder/hatch-jupyter-builder-0.9.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/hatchling-1.17[${PYTHON_USEDEP}]
diff --git a/dev-python/hatch-nodejs-version/hatch-nodejs-version-0.4.0.ebuild b/dev-python/hatch-nodejs-version/hatch-nodejs-version-0.4.0.ebuild
index 7cab3bfff812..34650c9ae09e 100644
--- a/dev-python/hatch-nodejs-version/hatch-nodejs-version-0.4.0.ebuild
+++ b/dev-python/hatch-nodejs-version/hatch-nodejs-version-0.4.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
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"
RDEPEND="
>=dev-python/hatchling-0.21.0[${PYTHON_USEDEP}]
diff --git a/dev-python/hatch-vcs/hatch-vcs-0.5.0.ebuild b/dev-python/hatch-vcs/hatch-vcs-0.5.0.ebuild
index 8644a94b768c..312f95c86862 100644
--- a/dev-python/hatch-vcs/hatch-vcs-0.5.0.ebuild
+++ b/dev-python/hatch-vcs/hatch-vcs-0.5.0.ebuild
@@ -20,7 +20,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 ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"
RDEPEND="
>=dev-python/setuptools-scm-8.2.0[${PYTHON_USEDEP}]
diff --git a/dev-python/hatchling/hatchling-1.27.0.ebuild b/dev-python/hatchling/hatchling-1.27.0.ebuild
index 570539d2dfe3..414c7d185ac4 100644
--- a/dev-python/hatchling/hatchling-1.27.0.ebuild
+++ b/dev-python/hatchling/hatchling-1.27.0.ebuild
@@ -24,7 +24,7 @@ S=${WORKDIR}/${MY_P}/backend
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"
RESTRICT="!test? ( test )"
diff --git a/dev-python/hpack/hpack-4.1.0.ebuild b/dev-python/hpack/hpack-4.1.0.ebuild
index c2d75b55b107..4c4f3a5010d0 100644
--- a/dev-python/hpack/hpack-4.1.0.ebuild
+++ b/dev-python/hpack/hpack-4.1.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
BDEPEND="
test? (
diff --git a/dev-python/html5lib/html5lib-1.1-r2.ebuild b/dev-python/html5lib/html5lib-1.1-r2.ebuild
index 2fb1f797766f..decad35efc24 100644
--- a/dev-python/html5lib/html5lib-1.1-r2.ebuild
+++ b/dev-python/html5lib/html5lib-1.1-r2.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="MIT"
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"
PATCHES=(
"${FILESDIR}"/${P}-pytest6.patch
diff --git a/dev-python/httpbin/httpbin-0.10.2-r1.ebuild b/dev-python/httpbin/httpbin-0.10.2-r1.ebuild
index 5b4326f89d6a..43d355de74ff 100644
--- a/dev-python/httpbin/httpbin-0.10.2-r1.ebuild
+++ b/dev-python/httpbin/httpbin-0.10.2-r1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="|| ( MIT ISC )"
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-rust"
RDEPEND="
diff --git a/dev-python/httpcore/httpcore-1.0.9-r1.ebuild b/dev-python/httpcore/httpcore-1.0.9-r1.ebuild
index 9eb4db8b9fed..19ec857e84e7 100644
--- a/dev-python/httpcore/httpcore-1.0.9-r1.ebuild
+++ b/dev-python/httpcore/httpcore-1.0.9-r1.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="BSD"
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"
RDEPEND="
<dev-python/anyio-5[${PYTHON_USEDEP}]
diff --git a/dev-python/httplib2/httplib2-0.22.0.ebuild b/dev-python/httplib2/httplib2-0.22.0.ebuild
index 11b4cf23cf98..159c4e807fb3 100644
--- a/dev-python/httplib2/httplib2-0.22.0.ebuild
+++ b/dev-python/httplib2/httplib2-0.22.0.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
RDEPEND="
app-misc/ca-certificates
diff --git a/dev-python/httpretty/httpretty-1.1.4-r3.ebuild b/dev-python/httpretty/httpretty-1.1.4-r3.ebuild
index 85bfd8af0d52..43a793732297 100644
--- a/dev-python/httpretty/httpretty-1.1.4-r3.ebuild
+++ b/dev-python/httpretty/httpretty-1.1.4-r3.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv sparc x86"
+KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv ~sparc x86"
IUSE="test-rust"
RDEPEND="
diff --git a/dev-python/httptools/httptools-0.6.4.ebuild b/dev-python/httptools/httptools-0.6.4.ebuild
index ad2afbc9dcec..9a4e5f1a46e8 100644
--- a/dev-python/httptools/httptools-0.6.4.ebuild
+++ b/dev-python/httptools/httptools-0.6.4.ebuild
@@ -22,7 +22,7 @@ SRC_URI="
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"
# don't ask me why they use both
DEPEND="
diff --git a/dev-python/httpx-socks/httpx-socks-0.10.1.ebuild b/dev-python/httpx-socks/httpx-socks-0.10.1.ebuild
index c5747417c551..c5083f24c560 100644
--- a/dev-python/httpx-socks/httpx-socks-0.10.1.ebuild
+++ b/dev-python/httpx-socks/httpx-socks-0.10.1.ebuild
@@ -21,7 +21,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"
RDEPEND="
>=dev-python/httpx-0.28.0[${PYTHON_USEDEP}]
diff --git a/dev-python/httpx/httpx-0.28.1-r1.ebuild b/dev-python/httpx/httpx-0.28.1-r1.ebuild
index 329b68ab7ee9..62af2dc7b39e 100644
--- a/dev-python/httpx/httpx-0.28.1-r1.ebuild
+++ b/dev-python/httpx/httpx-0.28.1-r1.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="BSD"
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="cli"
RDEPEND="
diff --git a/dev-python/hypercorn/hypercorn-0.17.3.ebuild b/dev-python/hypercorn/hypercorn-0.17.3.ebuild
index e28c13db3bd4..7a349424f54f 100644
--- a/dev-python/hypercorn/hypercorn-0.17.3.ebuild
+++ b/dev-python/hypercorn/hypercorn-0.17.3.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
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"
RDEPEND="
dev-python/h11[${PYTHON_USEDEP}]
diff --git a/dev-python/hyperframe/hyperframe-6.1.0.ebuild b/dev-python/hyperframe/hyperframe-6.1.0.ebuild
index 846910d65b47..8a7fa22e07f8 100644
--- a/dev-python/hyperframe/hyperframe-6.1.0.ebuild
+++ b/dev-python/hyperframe/hyperframe-6.1.0.ebuild
@@ -17,6 +17,6 @@ HOMEPAGE="
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"
distutils_enable_tests pytest
diff --git a/dev-python/hyperlink/hyperlink-21.0.0-r1.ebuild b/dev-python/hyperlink/hyperlink-21.0.0-r1.ebuild
index 52dc3b81a709..3d2a27fd8ac7 100644
--- a/dev-python/hyperlink/hyperlink-21.0.0-r1.ebuild
+++ b/dev-python/hyperlink/hyperlink-21.0.0-r1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
RDEPEND="
dev-python/idna[${PYTHON_USEDEP}]
diff --git a/dev-python/hypothesis/Manifest b/dev-python/hypothesis/Manifest
index 59a958ace1ea..63d782354fb8 100644
--- a/dev-python/hypothesis/Manifest
+++ b/dev-python/hypothesis/Manifest
@@ -3,7 +3,5 @@ DIST hypothesis-6.136.0.gh.tar.gz 9596080 BLAKE2B 65acbc8ea75e6fea22d7ee1329f684
DIST hypothesis-6.136.9.gh.tar.gz 9600678 BLAKE2B 85f37b3c0476e0a65da2ba656aa60b4464e835e8234ed2ae4d9f2b4f1320b4e7627e142c943182e5e644e6c32931402078885e78bfe256afcaa61e245e9cee3d SHA512 a3c9513d8bccfee2c3aef627d588d121c1c9365073719d816a0b1f7755b0f0460c6c3711a57aeca4b7e481f90433122b6ef0f4b2f16f3337fb2e64f01bb0ae39
DIST hypothesis-6.137.3.gh.tar.gz 9612265 BLAKE2B bc0c98872b08013194a11cad69e07632c04ac8f413a4dedb0a1a8a17112a477baecb2865fe11d189dff6b88d043d58a576e3d5de7edc944624dce680753cfe51 SHA512 6cdbd2d3e3aa69f8888d809fa81191279fa1a6321f6ba108dd8bc9956aab60fe82f22b3b442e561bb88961befc0dcdf3c854696ca979672122bea3285a7c163c
DIST hypothesis-6.138.11.gh.tar.gz 9621956 BLAKE2B d34c0a090720e4e7dac54a6726d42364ee80e23ada78f75e1fc3e1061a07a03eb16fa2832c850b88b773afcdbe8eea06f9539d5563dd284145cf38219050c340 SHA512 dea6a341d515d3372851d70caa518ceee78a658c58a11a5a830aeacc7c262ecba4ad676d3ce297cdd8dd7463830a17f6aaccd64d704887b2ced426377c316170
-DIST hypothesis-6.138.3.gh.tar.gz 9614871 BLAKE2B 3eb0a034abb704524240d4f8a01e7ceb58a38517d6bf07789d343372bc079116c7b444ba141e8139afac5fa6cdfbdf907963b6b5a42fe2cb1943b057a5e8a9f9 SHA512 4be1e6c5837322732b30343bc27a02336db25b9796c24966d4bd3d9978d79f588dc95e5529c2f14139d3997e471a4d8650d4717b1f2c8099d00ebe080421d382
-DIST hypothesis-6.138.6.gh.tar.gz 9618337 BLAKE2B 440385d0928f8a2782bcfc45b309e877e190aa224e30cab87916409539942902e364a534950abdd55bcf3d07bb1fa88b78fbb2cdfc9ab827168400e05b28254f SHA512 b420ef1c2e6dbc3d32bc4f79190219e74caa80c60e7f51685e41c8be95f2e7dcbc8bf9b9d868d450bc4825bdb1bbac5704796c67349a7900705ac85b27a9b925
-DIST hypothesis-6.138.7.gh.tar.gz 9618391 BLAKE2B a8f9118e1c9cb5116227c97e7555505f4a8ed6dd028b9d75bb4fe62e323caf9523454e3868e26827885b5bedc6303dfd40083204dfa6ebd1774315d2d0d19e57 SHA512 bc4cee1bcf4ca9cc1e6a632ebfaa3f9e7eac2e2d1f4e034b0003eea491e28a2a99f2d03b2671f5b4f3dbc278db4d3f8d1f4ad4aa0cc4824951acb8c57a463edb
-DIST hypothesis-6.138.8.gh.tar.gz 9618512 BLAKE2B 7c6643c9460ce8fe7c36cf9f9504510dd47ddb03b4b271660f068b4e80b2d1229990d691432a140a1a4382cfee87156b694f1c600ce6f0dcad5becbf0eae2b46 SHA512 f9d5affe3c26404355f36e065ed6d0ab190c095a9d742ec5ccbec2bfb1813c780d375e50f01bdc6092390476481070292a2ab4d31fc575777932153a10228984
+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
diff --git a/dev-python/hypothesis/hypothesis-6.135.25.ebuild b/dev-python/hypothesis/hypothesis-6.135.25.ebuild
index 39dff69b0887..9f7a918e9a81 100644
--- a/dev-python/hypothesis/hypothesis-6.135.25.ebuild
+++ b/dev-python/hypothesis/hypothesis-6.135.25.ebuild
@@ -25,7 +25,7 @@ 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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="cli"
RDEPEND="
diff --git a/dev-python/hypothesis/hypothesis-6.136.9.ebuild b/dev-python/hypothesis/hypothesis-6.136.9.ebuild
index 7a7443937da6..c89326a1f98b 100644
--- a/dev-python/hypothesis/hypothesis-6.136.9.ebuild
+++ b/dev-python/hypothesis/hypothesis-6.136.9.ebuild
@@ -25,7 +25,7 @@ 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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="cli"
RDEPEND="
diff --git a/dev-python/hypothesis/hypothesis-6.138.3.ebuild b/dev-python/hypothesis/hypothesis-6.138.13.ebuild
index 7a7443937da6..7a7443937da6 100644
--- a/dev-python/hypothesis/hypothesis-6.138.3.ebuild
+++ b/dev-python/hypothesis/hypothesis-6.138.13.ebuild
diff --git a/dev-python/hypothesis/hypothesis-6.138.6.ebuild b/dev-python/hypothesis/hypothesis-6.138.14.ebuild
index 7a7443937da6..7a7443937da6 100644
--- a/dev-python/hypothesis/hypothesis-6.138.6.ebuild
+++ b/dev-python/hypothesis/hypothesis-6.138.14.ebuild
diff --git a/dev-python/hypothesis/hypothesis-6.138.7.ebuild b/dev-python/hypothesis/hypothesis-6.138.7.ebuild
deleted file mode 100644
index 7a7443937da6..000000000000
--- a/dev-python/hypothesis/hypothesis-6.138.7.ebuild
+++ /dev/null
@@ -1,125 +0,0 @@
-# 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.8.ebuild b/dev-python/hypothesis/hypothesis-6.138.8.ebuild
deleted file mode 100644
index 7a7443937da6..000000000000
--- a/dev-python/hypothesis/hypothesis-6.138.8.ebuild
+++ /dev/null
@@ -1,125 +0,0 @@
-# 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/id/id-1.5.0.ebuild b/dev-python/id/id-1.5.0.ebuild
index 3787d9323b24..4ac62c2e8217 100644
--- a/dev-python/id/id-1.5.0.ebuild
+++ b/dev-python/id/id-1.5.0.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ~ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ~ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/requests[${PYTHON_USEDEP}]
diff --git a/dev-python/idna/idna-3.10.ebuild b/dev-python/idna/idna-3.10.ebuild
index 3487f3465f40..36ed10d4adbe 100644
--- a/dev-python/idna/idna-3.10.ebuild
+++ b/dev-python/idna/idna-3.10.ebuild
@@ -17,6 +17,6 @@ HOMEPAGE="
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"
+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"
distutils_enable_tests unittest
diff --git a/dev-python/imagesize/imagesize-1.4.1.ebuild b/dev-python/imagesize/imagesize-1.4.1.ebuild
index c52b00806fb6..7e0356cc0748 100644
--- a/dev-python/imagesize/imagesize-1.4.1.ebuild
+++ b/dev-python/imagesize/imagesize-1.4.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 ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-solaris"
distutils_enable_tests pytest
diff --git a/dev-python/immutables/immutables-0.21.ebuild b/dev-python/immutables/immutables-0.21.ebuild
index 24b4c12e8a3c..0611f6ed6a8a 100644
--- a/dev-python/immutables/immutables-0.21.ebuild
+++ b/dev-python/immutables/immutables-0.21.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
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"
distutils_enable_tests pytest
diff --git a/dev-python/importlib-metadata/importlib-metadata-8.7.0.ebuild b/dev-python/importlib-metadata/importlib-metadata-8.7.0.ebuild
index fc076eb1cb63..48b29d3e3521 100644
--- a/dev-python/importlib-metadata/importlib-metadata-8.7.0.ebuild
+++ b/dev-python/importlib-metadata/importlib-metadata-8.7.0.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 ~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 ~ppc-macos ~x64-macos ~x64-solaris"
RDEPEND="
>=dev-python/zipp-3.20[${PYTHON_USEDEP}]
diff --git a/dev-python/importlib-resources/importlib-resources-6.5.2.ebuild b/dev-python/importlib-resources/importlib-resources-6.5.2.ebuild
index 72577465e356..1ebbde6579c5 100644
--- a/dev-python/importlib-resources/importlib-resources-6.5.2.ebuild
+++ b/dev-python/importlib-resources/importlib-resources-6.5.2.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"
BDEPEND="
dev-python/setuptools-scm[${PYTHON_USEDEP}]
diff --git a/dev-python/incremental/incremental-24.7.2.ebuild b/dev-python/incremental/incremental-24.7.2.ebuild
index 220c4142b7e3..da80889113cb 100644
--- a/dev-python/incremental/incremental-24.7.2.ebuild
+++ b/dev-python/incremental/incremental-24.7.2.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 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/inflect/inflect-7.5.0.ebuild b/dev-python/inflect/inflect-7.5.0.ebuild
index 872f8cc50a7e..90d18278e5a5 100644
--- a/dev-python/inflect/inflect-7.5.0.ebuild
+++ b/dev-python/inflect/inflect-7.5.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
+KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
RDEPEND="
>=dev-python/typeguard-4.0.1[${PYTHON_USEDEP}]
diff --git a/dev-python/ini2toml/ini2toml-0.15.ebuild b/dev-python/ini2toml/ini2toml-0.15.ebuild
index 075e46c0f44f..af0a54fd19a8 100644
--- a/dev-python/ini2toml/ini2toml-0.15.ebuild
+++ b/dev-python/ini2toml/ini2toml-0.15.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MPL-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"
RDEPEND="
>=dev-python/packaging-20.7[${PYTHON_USEDEP}]
diff --git a/dev-python/iniconfig/iniconfig-2.1.0.ebuild b/dev-python/iniconfig/iniconfig-2.1.0.ebuild
index 0359802dfb2c..e4339e8014bb 100644
--- a/dev-python/iniconfig/iniconfig-2.1.0.ebuild
+++ b/dev-python/iniconfig/iniconfig-2.1.0.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
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"
+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"
BDEPEND="
dev-python/hatch-vcs[${PYTHON_USEDEP}]
diff --git a/dev-python/inline-snapshot/inline-snapshot-0.24.0.ebuild b/dev-python/inline-snapshot/inline-snapshot-0.24.0.ebuild
index f203c4a6f6f1..df0cff095bff 100644
--- a/dev-python/inline-snapshot/inline-snapshot-0.24.0.ebuild
+++ b/dev-python/inline-snapshot/inline-snapshot-0.24.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/asttokens-2.0.5[${PYTHON_USEDEP}]
diff --git a/dev-python/installer/installer-0.7.0.ebuild b/dev-python/installer/installer-0.7.0.ebuild
index 18a50caf175e..ad53a146b00d 100644
--- a/dev-python/installer/installer-0.7.0.ebuild
+++ b/dev-python/installer/installer-0.7.0.ebuild
@@ -21,7 +21,7 @@ SRC_URI+="
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"
BDEPEND="
app-arch/unzip
diff --git a/dev-python/iocapture/iocapture-0.1.2-r3.ebuild b/dev-python/iocapture/iocapture-0.1.2-r3.ebuild
index cc7324a82f2e..162ca8aa3197 100644
--- a/dev-python/iocapture/iocapture-0.1.2-r3.ebuild
+++ b/dev-python/iocapture/iocapture-0.1.2-r3.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~m68k ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ppc ppc64 ~riscv ~s390 ~sparc x86"
BDEPEND="
test? (
diff --git a/dev-python/ipykernel/ipykernel-6.29.5-r1.ebuild b/dev-python/ipykernel/ipykernel-6.29.5-r1.ebuild
index 67225f8ef24d..79d0d360181c 100644
--- a/dev-python/ipykernel/ipykernel-6.29.5-r1.ebuild
+++ b/dev-python/ipykernel/ipykernel-6.29.5-r1.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/ipykernel/ipykernel-6.30.0.ebuild b/dev-python/ipykernel/ipykernel-6.30.0.ebuild
index d0e3b51ea8d0..6d9984c4b9ed 100644
--- a/dev-python/ipykernel/ipykernel-6.30.0.ebuild
+++ b/dev-python/ipykernel/ipykernel-6.30.0.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/ipyparallel/ipyparallel-9.0.1.ebuild b/dev-python/ipyparallel/ipyparallel-9.0.1.ebuild
index 4c8cca66ddea..b817f70d6c2c 100644
--- a/dev-python/ipyparallel/ipyparallel-9.0.1.ebuild
+++ b/dev-python/ipyparallel/ipyparallel-9.0.1.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/decorator[${PYTHON_USEDEP}]
diff --git a/dev-python/ipython-genutils/ipython-genutils-0.2.0-r4.ebuild b/dev-python/ipython-genutils/ipython-genutils-0.2.0-r4.ebuild
index 75cecace2546..262627e6eb02 100644
--- a/dev-python/ipython-genutils/ipython-genutils-0.2.0-r4.ebuild
+++ b/dev-python/ipython-genutils/ipython-genutils-0.2.0-r4.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
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"
# Needed because package provides decorators which use pytest (after patch)
RDEPEND="
diff --git a/dev-python/ipython-pygments-lexers/ipython-pygments-lexers-1.1.1.ebuild b/dev-python/ipython-pygments-lexers/ipython-pygments-lexers-1.1.1.ebuild
index d18f28323775..425dde03cc8b 100644
--- a/dev-python/ipython-pygments-lexers/ipython-pygments-lexers-1.1.1.ebuild
+++ b/dev-python/ipython-pygments-lexers/ipython-pygments-lexers-1.1.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~ppc ppc64 ~riscv ~s390 sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~ppc ppc64 ~riscv ~s390 ~sparc ~x86"
RDEPEND="
dev-python/pygments[${PYTHON_USEDEP}]
diff --git a/dev-python/ipython/ipython-8.37.0.ebuild b/dev-python/ipython/ipython-8.37.0.ebuild
index fde1f400be99..c9de83001578 100644
--- a/dev-python/ipython/ipython-8.37.0.ebuild
+++ b/dev-python/ipython/ipython-8.37.0.ebuild
@@ -18,7 +18,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"
IUSE="examples notebook nbconvert qt5 +smp test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/ipython/ipython-9.3.0.ebuild b/dev-python/ipython/ipython-9.3.0.ebuild
index 3dab8013bc6b..ff330888120a 100644
--- a/dev-python/ipython/ipython-9.3.0.ebuild
+++ b/dev-python/ipython/ipython-9.3.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~ppc ppc64 ~riscv ~s390 sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~ppc ppc64 ~riscv ~s390 ~sparc ~x86"
IUSE="examples notebook nbconvert qt5 +smp test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/isal/isal-1.7.2-r1.ebuild b/dev-python/isal/isal-1.7.2-r1.ebuild
index 24461dd24867..10259cc19203 100644
--- a/dev-python/isal/isal-1.7.2-r1.ebuild
+++ b/dev-python/isal/isal-1.7.2-r1.ebuild
@@ -25,7 +25,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="PSF-2"
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"
DEPEND="
dev-libs/isa-l:=
diff --git a/dev-python/iso8601/iso8601-2.1.0.ebuild b/dev-python/iso8601/iso8601-2.1.0.ebuild
index 394d1b371aae..e76c7132c4ea 100644
--- a/dev-python/iso8601/iso8601-2.1.0.ebuild
+++ b/dev-python/iso8601/iso8601-2.1.0.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 ~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 ~ppc-macos ~x64-macos ~x64-solaris"
BDEPEND="
test? (
diff --git a/dev-python/isodate/isodate-0.6.1-r1.ebuild b/dev-python/isodate/isodate-0.6.1-r1.ebuild
index 5d968f985328..aeae9b7bd002 100644
--- a/dev-python/isodate/isodate-0.6.1-r1.ebuild
+++ b/dev-python/isodate/isodate-0.6.1-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -16,7 +16,7 @@ HOMEPAGE="
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 ~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/six[${PYTHON_USEDEP}]
diff --git a/dev-python/isodate/isodate-0.7.2.ebuild b/dev-python/isodate/isodate-0.7.2.ebuild
index c749d798b898..d52a3f13a374 100644
--- a/dev-python/isodate/isodate-0.7.2.ebuild
+++ b/dev-python/isodate/isodate-0.7.2.ebuild
@@ -16,6 +16,6 @@ HOMEPAGE="
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 ~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"
distutils_enable_tests pytest
diff --git a/dev-python/isoduration/isoduration-20.11.0-r1.ebuild b/dev-python/isoduration/isoduration-20.11.0-r1.ebuild
index 99680329c85f..62add8fb28eb 100644
--- a/dev-python/isoduration/isoduration-20.11.0-r1.ebuild
+++ b/dev-python/isoduration/isoduration-20.11.0-r1.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="ISC"
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"
RDEPEND="
>=dev-python/arrow-0.15.0[${PYTHON_USEDEP}]
diff --git a/dev-python/isort/isort-6.0.1.ebuild b/dev-python/isort/isort-6.0.1.ebuild
index 9047d453d432..993801ce31ce 100644
--- a/dev-python/isort/isort-6.0.1.ebuild
+++ b/dev-python/isort/isort-6.0.1.ebuild
@@ -20,7 +20,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"
BDEPEND="
dev-python/hatch-vcs[${PYTHON_USEDEP}]
diff --git a/dev-python/itsdangerous/itsdangerous-2.2.0.ebuild b/dev-python/itsdangerous/itsdangerous-2.2.0.ebuild
index f27b6bd2d506..31bf4fb3166c 100644
--- a/dev-python/itsdangerous/itsdangerous-2.2.0.ebuild
+++ b/dev-python/itsdangerous/itsdangerous-2.2.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
BDEPEND="
test? (
diff --git a/dev-python/jaraco-classes/jaraco-classes-3.4.0.ebuild b/dev-python/jaraco-classes/jaraco-classes-3.4.0.ebuild
index af5eec6226d3..12b9d2c0fc5d 100644
--- a/dev-python/jaraco-classes/jaraco-classes-3.4.0.ebuild
+++ b/dev-python/jaraco-classes/jaraco-classes-3.4.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="MIT"
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"
BDEPEND="
dev-python/setuptools-scm[${PYTHON_USEDEP}]
diff --git a/dev-python/jaraco-collections/jaraco-collections-5.2.1.ebuild b/dev-python/jaraco-collections/jaraco-collections-5.2.1.ebuild
index 3a57b4ab1d7e..8c927dde495c 100644
--- a/dev-python/jaraco-collections/jaraco-collections-5.2.1.ebuild
+++ b/dev-python/jaraco-collections/jaraco-collections-5.2.1.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 ~ppc-macos ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
RDEPEND="
dev-python/jaraco-text[${PYTHON_USEDEP}]
diff --git a/dev-python/jaraco-context/jaraco-context-6.0.1-r1.ebuild b/dev-python/jaraco-context/jaraco-context-6.0.1-r1.ebuild
index 212154fda3de..bd9bf1ca5edb 100644
--- a/dev-python/jaraco-context/jaraco-context-6.0.1-r1.ebuild
+++ b/dev-python/jaraco-context/jaraco-context-6.0.1-r1.ebuild
@@ -18,7 +18,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 ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"
RDEPEND="
$(python_gen_cond_dep '
diff --git a/dev-python/jaraco-envs/jaraco-envs-2.6.0.ebuild b/dev-python/jaraco-envs/jaraco-envs-2.6.0.ebuild
index 7c9cef219600..fae255abf058 100644
--- a/dev-python/jaraco-envs/jaraco-envs-2.6.0.ebuild
+++ b/dev-python/jaraco-envs/jaraco-envs-2.6.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="MIT"
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"
RDEPEND="
dev-python/path[${PYTHON_USEDEP}]
diff --git a/dev-python/jaraco-functools/jaraco-functools-4.2.1.ebuild b/dev-python/jaraco-functools/jaraco-functools-4.2.1.ebuild
index 8846af015d0d..85d20d8f8b09 100644
--- a/dev-python/jaraco-functools/jaraco-functools-4.2.1.ebuild
+++ b/dev-python/jaraco-functools/jaraco-functools-4.2.1.ebuild
@@ -18,7 +18,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 ~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"
RDEPEND="
>=dev-python/more-itertools-0.12.0-r1[${PYTHON_USEDEP}]
diff --git a/dev-python/jaraco-itertools/jaraco-itertools-6.4.3.ebuild b/dev-python/jaraco-itertools/jaraco-itertools-6.4.3.ebuild
index 73e2656335a6..f6a4d406f791 100644
--- a/dev-python/jaraco-itertools/jaraco-itertools-6.4.3.ebuild
+++ b/dev-python/jaraco-itertools/jaraco-itertools-6.4.3.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos"
+KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
RDEPEND="
dev-python/inflect[${PYTHON_USEDEP}]
diff --git a/dev-python/jaraco-path/jaraco-path-3.7.2.ebuild b/dev-python/jaraco-path/jaraco-path-3.7.2.ebuild
index 45ca5f339253..422d6fbd8d7e 100644
--- a/dev-python/jaraco-path/jaraco-path-3.7.2.ebuild
+++ b/dev-python/jaraco-path/jaraco-path-3.7.2.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 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
BDEPEND="
dev-python/setuptools-scm[${PYTHON_USEDEP}]
diff --git a/dev-python/jaraco-test/jaraco-test-5.5.1.ebuild b/dev-python/jaraco-test/jaraco-test-5.5.1.ebuild
index ef2db7eccb0c..52a31bd1a34f 100644
--- a/dev-python/jaraco-test/jaraco-test-5.5.1.ebuild
+++ b/dev-python/jaraco-test/jaraco-test-5.5.1.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/jaraco-collections[${PYTHON_USEDEP}]
diff --git a/dev-python/jaraco-text/jaraco-text-4.0.0.ebuild b/dev-python/jaraco-text/jaraco-text-4.0.0.ebuild
index bbd84649db63..783544bfb772 100644
--- a/dev-python/jaraco-text/jaraco-text-4.0.0.ebuild
+++ b/dev-python/jaraco-text/jaraco-text-4.0.0.ebuild
@@ -18,7 +18,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 ~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"
RDEPEND="
>=dev-python/jaraco-context-4.1.1-r1[${PYTHON_USEDEP}]
diff --git a/dev-python/jaraco-vcs/jaraco-vcs-2.4.1.ebuild b/dev-python/jaraco-vcs/jaraco-vcs-2.4.1.ebuild
index a5db8d0fe380..a45e2ab221fa 100644
--- a/dev-python/jaraco-vcs/jaraco-vcs-2.4.1.ebuild
+++ b/dev-python/jaraco-vcs/jaraco-vcs-2.4.1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~mips ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/jaraco-classes[${PYTHON_USEDEP}]
diff --git a/dev-python/jaraco-versioning/jaraco-versioning-1.1.0.ebuild b/dev-python/jaraco-versioning/jaraco-versioning-1.1.0.ebuild
index 596941bf5d96..4ccc2c0e2a34 100644
--- a/dev-python/jaraco-versioning/jaraco-versioning-1.1.0.ebuild
+++ b/dev-python/jaraco-versioning/jaraco-versioning-1.1.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~mips ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/packaging[${PYTHON_USEDEP}]
diff --git a/dev-python/jedi/jedi-0.19.2.ebuild b/dev-python/jedi/jedi-0.19.2.ebuild
index f4ed9a1e3d4b..06020d6ef7f5 100644
--- a/dev-python/jedi/jedi-0.19.2.ebuild
+++ b/dev-python/jedi/jedi-0.19.2.ebuild
@@ -31,7 +31,7 @@ LICENSE="
test? ( Apache-2.0 )
"
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/parso-0.9[${PYTHON_USEDEP}]
diff --git a/dev-python/jeepney/jeepney-0.9.0.ebuild b/dev-python/jeepney/jeepney-0.9.0.ebuild
index 8901979b5a85..cef0adff17ce 100644
--- a/dev-python/jeepney/jeepney-0.9.0.ebuild
+++ b/dev-python/jeepney/jeepney-0.9.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="examples"
BDEPEND="
diff --git a/dev-python/jinja2/jinja2-3.1.6.ebuild b/dev-python/jinja2/jinja2-3.1.6.ebuild
index e90cbf2ca19d..112293312528 100644
--- a/dev-python/jinja2/jinja2-3.1.6.ebuild
+++ b/dev-python/jinja2/jinja2-3.1.6.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris"
RDEPEND="
>=dev-python/markupsafe-2.0[${PYTHON_USEDEP}]
diff --git a/dev-python/jmespath/jmespath-1.0.1.ebuild b/dev-python/jmespath/jmespath-1.0.1.ebuild
index 275db7178a2f..f95147572e54 100644
--- a/dev-python/jmespath/jmespath-1.0.1.ebuild
+++ b/dev-python/jmespath/jmespath-1.0.1.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="MIT"
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"
EPYTEST_IGNORE=(
# fuzzing tests, they take forever
diff --git a/dev-python/jsonpointer/jsonpointer-2.4.ebuild b/dev-python/jsonpointer/jsonpointer-2.4.ebuild
index eb8bb58e8952..1cfd6bc8905f 100644
--- a/dev-python/jsonpointer/jsonpointer-2.4.ebuild
+++ b/dev-python/jsonpointer/jsonpointer-2.4.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -16,7 +16,7 @@ HOMEPAGE="
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 ~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"
python_test() {
"${EPYTHON}" tests.py || die "Tests fail with ${EPYTHON}"
diff --git a/dev-python/jsonpointer/jsonpointer-3.0.0.ebuild b/dev-python/jsonpointer/jsonpointer-3.0.0.ebuild
index 9ef33b4e90f0..1cfd6bc8905f 100644
--- a/dev-python/jsonpointer/jsonpointer-3.0.0.ebuild
+++ b/dev-python/jsonpointer/jsonpointer-3.0.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
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 ~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"
python_test() {
"${EPYTHON}" tests.py || die "Tests fail with ${EPYTHON}"
diff --git a/dev-python/jsonschema-specifications/jsonschema-specifications-2025.4.1.ebuild b/dev-python/jsonschema-specifications/jsonschema-specifications-2025.4.1.ebuild
index dc5d549ed27c..ba701d87e587 100644
--- a/dev-python/jsonschema-specifications/jsonschema-specifications-2025.4.1.ebuild
+++ b/dev-python/jsonschema-specifications/jsonschema-specifications-2025.4.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
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"
RDEPEND="
>=dev-python/referencing-0.31.0[${PYTHON_USEDEP}]
diff --git a/dev-python/jsonschema/jsonschema-4.24.0.ebuild b/dev-python/jsonschema/jsonschema-4.24.0.ebuild
index 1e5725dd7475..10ffc4be27e0 100644
--- a/dev-python/jsonschema/jsonschema-4.24.0.ebuild
+++ b/dev-python/jsonschema/jsonschema-4.24.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
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"
RDEPEND="
>=dev-python/attrs-22.2.0[${PYTHON_USEDEP}]
diff --git a/dev-python/jupyter-client/jupyter-client-8.6.3.ebuild b/dev-python/jupyter-client/jupyter-client-8.6.3.ebuild
index 0452a66670a0..849a3ebb8266 100644
--- a/dev-python/jupyter-client/jupyter-client-8.6.3.ebuild
+++ b/dev-python/jupyter-client/jupyter-client-8.6.3.ebuild
@@ -18,7 +18,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/jupyter-core-5.1[${PYTHON_USEDEP}]
diff --git a/dev-python/jupyter-core/jupyter-core-5.8.1.ebuild b/dev-python/jupyter-core/jupyter-core-5.8.1.ebuild
index 7f330725caae..fb4b6e0a1be3 100644
--- a/dev-python/jupyter-core/jupyter-core-5.8.1.ebuild
+++ b/dev-python/jupyter-core/jupyter-core-5.8.1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
RDEPEND="
>=dev-python/platformdirs-2.5[${PYTHON_USEDEP}]
diff --git a/dev-python/jupyter-events/jupyter-events-0.12.0.ebuild b/dev-python/jupyter-events/jupyter-events-0.12.0.ebuild
index ebce219ab11d..32e0010aff39 100644
--- a/dev-python/jupyter-events/jupyter-events-0.12.0.ebuild
+++ b/dev-python/jupyter-events/jupyter-events-0.12.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
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"
# jsonschema[format-nongpl] deps are always on in our ebuild
RDEPEND="
diff --git a/dev-python/jupyter-packaging/jupyter-packaging-0.12.3.ebuild b/dev-python/jupyter-packaging/jupyter-packaging-0.12.3.ebuild
index 138b836315e6..b6a316bca88d 100644
--- a/dev-python/jupyter-packaging/jupyter-packaging-0.12.3.ebuild
+++ b/dev-python/jupyter-packaging/jupyter-packaging-0.12.3.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/packaging[${PYTHON_USEDEP}]
diff --git a/dev-python/jupyter-server-mathjax/jupyter-server-mathjax-0.2.6.ebuild b/dev-python/jupyter-server-mathjax/jupyter-server-mathjax-0.2.6.ebuild
index 0632a80d49fd..9800b6cabdb7 100644
--- a/dev-python/jupyter-server-mathjax/jupyter-server-mathjax-0.2.6.ebuild
+++ b/dev-python/jupyter-server-mathjax/jupyter-server-mathjax-0.2.6.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/jupyter-server-1.1[${PYTHON_USEDEP}]
diff --git a/dev-python/jupyter-server-terminals/jupyter-server-terminals-0.5.3.ebuild b/dev-python/jupyter-server-terminals/jupyter-server-terminals-0.5.3.ebuild
index e173737ea787..7bb9fc5f51e7 100644
--- a/dev-python/jupyter-server-terminals/jupyter-server-terminals-0.5.3.ebuild
+++ b/dev-python/jupyter-server-terminals/jupyter-server-terminals-0.5.3.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/terminado[${PYTHON_USEDEP}]
diff --git a/dev-python/jupyter-server/jupyter-server-2.16.0.ebuild b/dev-python/jupyter-server/jupyter-server-2.16.0.ebuild
index e30a29c40404..d2762b07a593 100644
--- a/dev-python/jupyter-server/jupyter-server-2.16.0.ebuild
+++ b/dev-python/jupyter-server/jupyter-server-2.16.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/anyio-3.1.0[${PYTHON_USEDEP}]
diff --git a/dev-python/jupyterlab-pygments/jupyterlab-pygments-0.3.0.ebuild b/dev-python/jupyterlab-pygments/jupyterlab-pygments-0.3.0.ebuild
index 922665c54d82..8e505f5c4f3a 100644
--- a/dev-python/jupyterlab-pygments/jupyterlab-pygments-0.3.0.ebuild
+++ b/dev-python/jupyterlab-pygments/jupyterlab-pygments-0.3.0.ebuild
@@ -18,7 +18,7 @@ S=${WORKDIR}
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/pygments[${PYTHON_USEDEP}]
diff --git a/dev-python/jupyterlab/Manifest b/dev-python/jupyterlab/Manifest
index 226751b432f5..8052fd283375 100644
--- a/dev-python/jupyterlab/Manifest
+++ b/dev-python/jupyterlab/Manifest
@@ -2,3 +2,4 @@ DIST jupyterlab-4.3.7.tar.gz 21827544 BLAKE2B 6aa1886b3fa9e67c8e4978e90cf5b0e844
DIST jupyterlab-4.4.4.tar.gz 23044296 BLAKE2B fec6a982a7eaadb8db68aa6e43c9cfb6391c54f7297609233372e21cfc0efc4c7ba87632838c00b540618129ffe85f90ca10fbbc7e786003f3fe67ccef720919 SHA512 342046a7163ee5e9aa137b89105286f104c0394d8b0a5d70e3b8e28c2df08f971cb2b472c47765e74b20c6563e59116b5dfff38f21a330c418a3e164481fd125
DIST jupyterlab-4.4.5.tar.gz 23037079 BLAKE2B ecae32df5481876f3e5e3543fdbb3c2c09a15ca34d778c7b46b7d63d8f9151898d55278e9b9848238f47a911b22244d73b176cdebcc53ad2bd2e276ad3f037ee SHA512 b833ff6ef4b2d9bdfa30ae3f3e9b76799c2602d5a2f4766fedf9e7b1c006f58cd681bce05be29bfa0df895b4d84dd329e3f3a3d2f5a5662257c17008fd821b6c
DIST jupyterlab-4.4.6.tar.gz 23040936 BLAKE2B 4c0bb10bcca57a4b339771a44067939a39b2efb3dd38dd355c83665eda550de0c05897357d2b84fc2e029c237d8fb634a66d8799692cfd9fbf632a2b544cb562 SHA512 49b5fe3689130a34a14d6f3999818ab25ecb89618de795053b6cdd8d7694c78327bd2972cd05dc2b666698d7ea0336ae755ce207a4de7c9d0a394c78584e1887
+DIST jupyterlab-4.4.7.tar.gz 22965570 BLAKE2B e1e2f3dd7fdcfa85525e76bd55965bc9d9ddb482df536c0f9fdd7d1ba189c37956561464b22ab2d95ddacdbd2a5f8cc365d8fc838d19444abb50e7ec8cf1a740 SHA512 2062b72b2a9610bc002a6e5099c3441f3d13af841c2cbabc5e931e0a4b8bafead812cf29982dc4d9f8e4a58302d42fe7c90e96cd7fab776568c1d62cb0f6883d
diff --git a/dev-python/jupyterlab/jupyterlab-4.4.7.ebuild b/dev-python/jupyterlab/jupyterlab-4.4.7.ebuild
new file mode 100644
index 000000000000..6d5c3058cb28
--- /dev/null
+++ b/dev-python/jupyterlab/jupyterlab-4.4.7.ebuild
@@ -0,0 +1,75 @@
+# 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 xdg
+
+DESCRIPTION="JupyterLab computational environment"
+HOMEPAGE="
+ https://jupyter.org/
+ https://github.com/jupyterlab/jupyterlab/
+ https://pypi.org/project/jupyterlab/
+"
+
+LICENSE="BSD MIT GPL-3 Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/async-lru-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/httpx-0.28.0[${PYTHON_USEDEP}]
+ >=dev-python/ipykernel-6.5.0[${PYTHON_USEDEP}]
+ >=dev-python/jinja2-3.0.3[${PYTHON_USEDEP}]
+ dev-python/jupyter-core[${PYTHON_USEDEP}]
+ >=dev-python/jupyter-lsp-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/jupyter-server-2.4.0[${PYTHON_USEDEP}]
+ <dev-python/jupyter-server-3[${PYTHON_USEDEP}]
+ >=dev-python/jupyterlab-server-2.27.1[${PYTHON_USEDEP}]
+ <dev-python/jupyterlab-server-3[${PYTHON_USEDEP}]
+ >=dev-python/notebook-shim-0.2[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-41.1.0[${PYTHON_USEDEP}]
+ >=dev-python/tornado-6.2.0[${PYTHON_USEDEP}]
+ dev-python/traitlets[${PYTHON_USEDEP}]
+ net-libs/nodejs[npm]
+"
+
+BDEPEND="
+ dev-python/hatch-jupyter-builder[${PYTHON_USEDEP}]
+ test? (
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/requests-cache[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_DESELECT=(
+ # These tests call npm and want internet
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_uninstall_core_extension
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_install_and_uninstall_pinned_folder
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_install_and_uninstall_pinned
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_build_custom_minimal_core_config
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_build_custom
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_build_check
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_build
+ jupyterlab/tests/test_build_api.py::TestBuildAPI::test_clear
+ jupyterlab/tests/test_build_api.py::TestBuildAPI::test_build
+)
+
+EPYTEST_IGNORE=(
+ jupyterlab/tests/test_announcements.py
+)
+
+EPYTEST_PLUGINS=( pytest-{console-scripts,jupyter,tornasync,timeout} )
+distutils_enable_tests pytest
+# TODO: package sphinx_copybutton
+#distutils_enable_sphinx docs/source dev-python/sphinx-rtd-theme dev-python/myst-parser
+
+python_install_all() {
+ distutils-r1_python_install_all
+ mv "${ED}/usr/etc" "${ED}/etc" || die
+}
diff --git a/dev-python/kerberos/kerberos-1.3.1-r2.ebuild b/dev-python/kerberos/kerberos-1.3.1-r2.ebuild
index c4e65b65656e..cf345709caea 100644
--- a/dev-python/kerberos/kerberos-1.3.1-r2.ebuild
+++ b/dev-python/kerberos/kerberos-1.3.1-r2.ebuild
@@ -24,7 +24,7 @@ S=${WORKDIR}/${MY_P}
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"
# test environment is non-trivial to set up, so just use docker
# (see python_test below)
# also for alpha/beta Python releases support:
diff --git a/dev-python/keyring/keyring-25.6.0-r1.ebuild b/dev-python/keyring/keyring-25.6.0-r1.ebuild
index b469acd96968..cb457ea9c591 100644
--- a/dev-python/keyring/keyring-25.6.0-r1.ebuild
+++ b/dev-python/keyring/keyring-25.6.0-r1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="PSF-2"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
RDEPEND="
>=dev-python/secretstorage-3.2[${PYTHON_USEDEP}]
diff --git a/dev-python/kiwisolver/kiwisolver-1.4.8.ebuild b/dev-python/kiwisolver/kiwisolver-1.4.8.ebuild
index fe6cff5a7d24..4be00598f797 100644
--- a/dev-python/kiwisolver/kiwisolver-1.4.8.ebuild
+++ b/dev-python/kiwisolver/kiwisolver-1.4.8.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="Clear-BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ppc ppc64 ~riscv ~s390 sparc x86 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
COMMON_DEPEND="
>=dev-python/cppy-1.3.0[${PYTHON_USEDEP}]
diff --git a/dev-python/knowit/knowit-0.5.11.ebuild b/dev-python/knowit/knowit-0.5.11.ebuild
index 0fea987d108e..e6aeb6132c02 100644
--- a/dev-python/knowit/knowit-0.5.11.ebuild
+++ b/dev-python/knowit/knowit-0.5.11.ebuild
@@ -21,7 +21,7 @@ SRC_URI+="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+KEYWORDS="amd64 ~arm ~arm64 ~x86"
# https://github.com/ratoaq2/knowit/blob/d7135a4797440838bca94e76326fc9d4019d8f9a/README.md?plain=1#L224
RDEPEND="
diff --git a/dev-python/krb5/Manifest b/dev-python/krb5/Manifest
index a230d4b658ca..a812468db31b 100644
--- a/dev-python/krb5/Manifest
+++ b/dev-python/krb5/Manifest
@@ -1 +1,2 @@
DIST krb5-0.7.1.tar.gz 235732 BLAKE2B ea3a984fddf4fe17a06cebeacaeefbb8523f58453178c2f302f58cb3035197b7965f6c5e6aa60473e85102701fc314ff83d6ef450027820301dc2f5a492fffa9 SHA512 63ed8e2ae8afb2ea5c6f6ac0604085da813f11e84f12a45fd4bf936af70d1c931eca2f81d52cc44c20dd91db7c2f65fb2985df837bd328e7966030e2403a80a9
+DIST krb5-0.8.0.tar.gz 235540 BLAKE2B f36c1ceedcd7187ea0562789aaf6a147df0078a669729b1e165cb060871f9b45fc594b85bb975d818820cb1203e048abec7a169ca9b8ed1c5b84d830193731d0 SHA512 de4ea8b86acc31b88de5c47454be0901614cb9fe0f53516b96616e46324f689723beee56c49c4fb0bbff97ea7b85a15a0874c69670b5e8bf741a9963439af712
diff --git a/dev-python/krb5/krb5-0.8.0.ebuild b/dev-python/krb5/krb5-0.8.0.ebuild
new file mode 100644
index 000000000000..32c762f6da84
--- /dev/null
+++ b/dev-python/krb5/krb5-0.8.0.ebuild
@@ -0,0 +1,33 @@
+# Copyright 2021-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} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Kerberos API bindings for Python"
+HOMEPAGE="
+ https://github.com/jborean93/pykrb5/
+ https://pypi.org/project/krb5/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+
+RDEPEND="
+ virtual/krb5
+"
+BDEPEND="
+ >=dev-python/cython-3.1.3[${PYTHON_USEDEP}]
+ test? (
+ dev-python/k5test[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/lark/lark-1.2.2.ebuild b/dev-python/lark/lark-1.2.2.ebuild
index ed8430b1143c..caed83e4d209 100644
--- a/dev-python/lark/lark-1.2.2.ebuild
+++ b/dev-python/lark/lark-1.2.2.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 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
# dev-python/regex doesn't support pypy
BDEPEND="
diff --git a/dev-python/lazy-object-proxy/lazy-object-proxy-1.11.0.ebuild b/dev-python/lazy-object-proxy/lazy-object-proxy-1.11.0.ebuild
index 1da28ae9bcfc..18026fd0b972 100644
--- a/dev-python/lazy-object-proxy/lazy-object-proxy-1.11.0.ebuild
+++ b/dev-python/lazy-object-proxy/lazy-object-proxy-1.11.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
IUSE="+native-extensions"
BDEPEND="
diff --git a/dev-python/legacy-cgi/legacy-cgi-2.6.3.ebuild b/dev-python/legacy-cgi/legacy-cgi-2.6.3.ebuild
index 96ae7f5566fb..b30d7ca60a34 100644
--- a/dev-python/legacy-cgi/legacy-cgi-2.6.3.ebuild
+++ b/dev-python/legacy-cgi/legacy-cgi-2.6.3.ebuild
@@ -16,6 +16,6 @@ HOMEPAGE="
LICENSE="PSF-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"
distutils_enable_tests pytest
diff --git a/dev-python/levenshtein/levenshtein-0.27.1.ebuild b/dev-python/levenshtein/levenshtein-0.27.1.ebuild
index faad9ec029e0..7f304eaf10e9 100644
--- a/dev-python/levenshtein/levenshtein-0.27.1.ebuild
+++ b/dev-python/levenshtein/levenshtein-0.27.1.ebuild
@@ -23,7 +23,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="GPL-2+"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
DEPEND="
<dev-cpp/rapidfuzz-cpp-4
diff --git a/dev-python/libevdev/libevdev-0.12.ebuild b/dev-python/libevdev/libevdev-0.12.ebuild
index c5d53ee35447..bf54983c5b27 100644
--- a/dev-python/libevdev/libevdev-0.12.ebuild
+++ b/dev-python/libevdev/libevdev-0.12.ebuild
@@ -21,7 +21,7 @@ S=${WORKDIR}/${MY_P}
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"
BDEPEND="
test? (
diff --git a/dev-python/license-expression/license-expression-30.4.4.ebuild b/dev-python/license-expression/license-expression-30.4.4.ebuild
index 521eea98c66a..6bc78853469a 100644
--- a/dev-python/license-expression/license-expression-30.4.4.ebuild
+++ b/dev-python/license-expression/license-expression-30.4.4.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
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"
RDEPEND="
>=dev-python/boolean-py-4.0[${PYTHON_USEDEP}]
diff --git a/dev-python/linkify-it-py/linkify-it-py-2.0.3.ebuild b/dev-python/linkify-it-py/linkify-it-py-2.0.3.ebuild
index 31c882d6fd2b..fa1be790bf16 100644
--- a/dev-python/linkify-it-py/linkify-it-py-2.0.3.ebuild
+++ b/dev-python/linkify-it-py/linkify-it-py-2.0.3.ebuild
@@ -21,7 +21,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"
RDEPEND="
dev-python/uc-micro-py[${PYTHON_USEDEP}]
diff --git a/dev-python/lit/lit-15.0.7.ebuild b/dev-python/lit/lit-15.0.7.ebuild
index c1626e34b118..a619876ca727 100644
--- a/dev-python/lit/lit-15.0.7.ebuild
+++ b/dev-python/lit/lit-15.0.7.ebuild
@@ -13,7 +13,7 @@ HOMEPAGE="https://llvm.org/"
LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv sparc x86"
+KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv ~sparc x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/lit/lit-16.0.6.ebuild b/dev-python/lit/lit-16.0.6.ebuild
index 95b40ccc3a6d..15bd4e985cef 100644
--- a/dev-python/lit/lit-16.0.6.ebuild
+++ b/dev-python/lit/lit-16.0.6.ebuild
@@ -13,7 +13,7 @@ HOMEPAGE="https://llvm.org/"
LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/lit/lit-17.0.6.ebuild b/dev-python/lit/lit-17.0.6.ebuild
index 9f6e30834d23..d1130c4fe9c9 100644
--- a/dev-python/lit/lit-17.0.6.ebuild
+++ b/dev-python/lit/lit-17.0.6.ebuild
@@ -13,7 +13,7 @@ HOMEPAGE="https://llvm.org/"
LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/lit/lit-18.1.8.ebuild b/dev-python/lit/lit-18.1.8.ebuild
index 544a590790f6..00deb8b1913f 100644
--- a/dev-python/lit/lit-18.1.8.ebuild
+++ b/dev-python/lit/lit-18.1.8.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -13,7 +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"
+KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~sparc x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/lit/lit-19.1.7.ebuild b/dev-python/lit/lit-19.1.7.ebuild
index 83acd60e6930..00deb8b1913f 100644
--- a/dev-python/lit/lit-19.1.7.ebuild
+++ b/dev-python/lit/lit-19.1.7.ebuild
@@ -13,7 +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"
+KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~sparc x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/lit/lit-20.1.8.ebuild b/dev-python/lit/lit-20.1.8.ebuild
index d2b05f03a94e..70450a4b9b23 100644
--- a/dev-python/lit/lit-20.1.8.ebuild
+++ b/dev-python/lit/lit-20.1.8.ebuild
@@ -13,7 +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"
+KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~sparc x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/littleutils/littleutils-0.2.4.ebuild b/dev-python/littleutils/littleutils-0.2.4.ebuild
index 2df3aeefb6f9..2f50711d8cd0 100644
--- a/dev-python/littleutils/littleutils-0.2.4.ebuild
+++ b/dev-python/littleutils/littleutils-0.2.4.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
python_test() {
"${EPYTHON}" -m doctest -v littleutils/__init__.py ||
diff --git a/dev-python/lockfile/lockfile-0.12.2-r3.ebuild b/dev-python/lockfile/lockfile-0.12.2-r3.ebuild
index 3e5e960868ba..50719a0b819e 100644
--- a/dev-python/lockfile/lockfile-0.12.2-r3.ebuild
+++ b/dev-python/lockfile/lockfile-0.12.2-r3.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
BDEPEND="
>dev-python/pbr-1.8[${PYTHON_USEDEP}]
diff --git a/dev-python/looseversion/looseversion-1.3.0.ebuild b/dev-python/looseversion/looseversion-1.3.0.ebuild
index 17b818a6228f..ba67790a3dd6 100644
--- a/dev-python/looseversion/looseversion-1.3.0.ebuild
+++ b/dev-python/looseversion/looseversion-1.3.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="PSF-2"
SLOT="0"
-KEYWORDS="amd64 arm arm64 hppa ppc ppc64 ~riscv sparc x86"
+KEYWORDS="amd64 arm arm64 ~hppa ppc ppc64 ~riscv ~sparc x86"
distutils_enable_tests pytest
diff --git a/dev-python/lxml/lxml-6.0.0.ebuild b/dev-python/lxml/lxml-6.0.0.ebuild
index 0e1b9508ed71..3d981a99c465 100644
--- a/dev-python/lxml/lxml-6.0.0.ebuild
+++ b/dev-python/lxml/lxml-6.0.0.ebuild
@@ -23,7 +23,7 @@ S=${WORKDIR}/lxml-${P}
LICENSE="BSD ElementTree GPL-2 PSF-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="doc examples +threads test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/mako/mako-1.3.10.ebuild b/dev-python/mako/mako-1.3.10.ebuild
index 1c1094598c21..f20c9e3e3b78 100644
--- a/dev-python/mako/mako-1.3.10.ebuild
+++ b/dev-python/mako/mako-1.3.10.ebuild
@@ -18,7 +18,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 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
IUSE="doc"
RDEPEND="
diff --git a/dev-python/mando/mando-0.8.2.ebuild b/dev-python/mando/mando-0.8.2.ebuild
index 5aac8c723a7d..0e752d363afa 100644
--- a/dev-python/mando/mando-0.8.2.ebuild
+++ b/dev-python/mando/mando-0.8.2.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="examples"
distutils_enable_sphinx docs
diff --git a/dev-python/markdown-it-py/markdown-it-py-3.0.0.ebuild b/dev-python/markdown-it-py/markdown-it-py-3.0.0.ebuild
index c6afa33742a9..967b558386de 100644
--- a/dev-python/markdown-it-py/markdown-it-py-3.0.0.ebuild
+++ b/dev-python/markdown-it-py/markdown-it-py-3.0.0.ebuild
@@ -20,7 +20,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"
RDEPEND="
<dev-python/linkify-it-py-3[${PYTHON_USEDEP}]
diff --git a/dev-python/markdown/Manifest b/dev-python/markdown/Manifest
index ecf81f489c4d..26870e71a997 100644
--- a/dev-python/markdown/Manifest
+++ b/dev-python/markdown/Manifest
@@ -1 +1,2 @@
DIST markdown-3.8.2.tar.gz 362071 BLAKE2B 3961c8de4a34ea42656753121958e58d4a5835a14c371d735cc87a7b90d237e04c5ed5f8c1f773ece5689400880d5e74244479bd8da4308b62ce995c29ec2595 SHA512 e5ec7ca85a74e3914f699e79d1e07a55bbe2deabe6781a9f218280a8b4dc11dbb7fe11de4379aa019fe442383d74b01ec88b27640e79481906230f2d6eddf52f
+DIST markdown-3.9.tar.gz 364585 BLAKE2B d6b42c252a80b40f47d8153d3080a817289fbb3093e95dbea96da930af43f3e7d51ae200352abc09eaa87ef79389c526def488e8cf32e8222e0ef4dea26aa8d8 SHA512 3427e5f5ee18d8973dc32e14c38e455a02a8e77521c8db18a750e4a7ec5f6a00c01e3e6528a6e461f35faab00dad80a7b33098fedcdf1d2b136e19daa3e8b09c
diff --git a/dev-python/markdown/markdown-3.8.2.ebuild b/dev-python/markdown/markdown-3.8.2.ebuild
index e52962ad2b77..820232f20667 100644
--- a/dev-python/markdown/markdown-3.8.2.ebuild
+++ b/dev-python/markdown/markdown-3.8.2.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
IUSE="doc test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/markdown/markdown-3.9.ebuild b/dev-python/markdown/markdown-3.9.ebuild
new file mode 100644
index 000000000000..37783cbaf748
--- /dev/null
+++ b/dev-python/markdown/markdown-3.9.ebuild
@@ -0,0 +1,39 @@
+# 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="Python implementation of the markdown markup language"
+HOMEPAGE="
+ https://python-markdown.github.io/
+ https://pypi.org/project/Markdown/
+ https://github.com/Python-Markdown/markdown/
+"
+
+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"
+IUSE="doc test"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ test? (
+ dev-python/pygments[${PYTHON_USEDEP}]
+ dev-python/pytidylib[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests unittest
+
+python_install_all() {
+ use doc && dodoc -r docs/
+
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/markdown2/markdown2-2.5.3.ebuild b/dev-python/markdown2/markdown2-2.5.3.ebuild
index 22d9297caba3..0ea59ea6360f 100644
--- a/dev-python/markdown2/markdown2-2.5.3.ebuild
+++ b/dev-python/markdown2/markdown2-2.5.3.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~ppc ~ppc64 ~riscv sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="amd64 ~arm arm64 ~ppc ~ppc64 ~riscv ~sparc x86 ~amd64-linux ~x86-linux"
RDEPEND="
>=dev-python/pygments-2.7.3[${PYTHON_USEDEP}]
diff --git a/dev-python/markdown2/markdown2-2.5.4.ebuild b/dev-python/markdown2/markdown2-2.5.4.ebuild
index 10f83a5887b6..0ea59ea6360f 100644
--- a/dev-python/markdown2/markdown2-2.5.4.ebuild
+++ b/dev-python/markdown2/markdown2-2.5.4.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+KEYWORDS="amd64 ~arm arm64 ~ppc ~ppc64 ~riscv ~sparc x86 ~amd64-linux ~x86-linux"
RDEPEND="
>=dev-python/pygments-2.7.3[${PYTHON_USEDEP}]
diff --git a/dev-python/markupsafe/markupsafe-3.0.2.ebuild b/dev-python/markupsafe/markupsafe-3.0.2.ebuild
index de9c5ff22b18..afa05d17b6c1 100644
--- a/dev-python/markupsafe/markupsafe-3.0.2.ebuild
+++ b/dev-python/markupsafe/markupsafe-3.0.2.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris"
IUSE="+native-extensions"
distutils_enable_tests pytest
diff --git a/dev-python/matplotlib-inline/matplotlib-inline-0.1.7.ebuild b/dev-python/matplotlib-inline/matplotlib-inline-0.1.7.ebuild
index dbf1caddba6e..f619dbbd652e 100644
--- a/dev-python/matplotlib-inline/matplotlib-inline-0.1.7.ebuild
+++ b/dev-python/matplotlib-inline/matplotlib-inline-0.1.7.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
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"
# Although in theory we could depend on matplotlib, upstream does not.
# This is because the sole purpose of the package is to be loaded by
diff --git a/dev-python/matplotlib/matplotlib-3.10.1.ebuild b/dev-python/matplotlib/matplotlib-3.10.1.ebuild
index 5a2c854a4f25..6ed29e30f494 100644
--- a/dev-python/matplotlib/matplotlib-3.10.1.ebuild
+++ b/dev-python/matplotlib/matplotlib-3.10.1.ebuild
@@ -29,7 +29,7 @@ SRC_URI+="
# Fonts: BitstreamVera, OFL-1.1
LICENSE="BitstreamVera BSD matplotlib MIT OFL-1.1"
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"
IUSE="cairo excel gtk3 latex qt6 tk webagg wxwidgets"
DEPEND="
diff --git a/dev-python/matplotlib/matplotlib-3.10.3.ebuild b/dev-python/matplotlib/matplotlib-3.10.3.ebuild
index 642359427daa..e92ae78b1608 100644
--- a/dev-python/matplotlib/matplotlib-3.10.3.ebuild
+++ b/dev-python/matplotlib/matplotlib-3.10.3.ebuild
@@ -29,7 +29,7 @@ SRC_URI+="
# Fonts: BitstreamVera, OFL-1.1
LICENSE="BitstreamVera BSD matplotlib MIT OFL-1.1"
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"
IUSE="cairo excel gtk3 latex qt6 tk webagg wxwidgets"
DEPEND="
diff --git a/dev-python/mccabe/mccabe-0.7.0.ebuild b/dev-python/mccabe/mccabe-0.7.0.ebuild
index bfbabdc5a801..2b1eb7df7062 100644
--- a/dev-python/mccabe/mccabe-0.7.0.ebuild
+++ b/dev-python/mccabe/mccabe-0.7.0.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 ~ppc-macos ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~ppc-macos ~x64-macos ~x64-solaris"
RDEPEND="
dev-python/flake8[${PYTHON_USEDEP}]
diff --git a/dev-python/mdit-py-plugins/mdit-py-plugins-0.4.2.ebuild b/dev-python/mdit-py-plugins/mdit-py-plugins-0.4.2.ebuild
index 0b583806e08e..f606d6465baa 100644
--- a/dev-python/mdit-py-plugins/mdit-py-plugins-0.4.2.ebuild
+++ b/dev-python/mdit-py-plugins/mdit-py-plugins-0.4.2.ebuild
@@ -20,7 +20,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"
RDEPEND="
<dev-python/markdown-it-py-4[${PYTHON_USEDEP}]
diff --git a/dev-python/mdurl/mdurl-0.1.2.ebuild b/dev-python/mdurl/mdurl-0.1.2.ebuild
index 9ef116bc17ee..a5addad5a2f8 100644
--- a/dev-python/mdurl/mdurl-0.1.2.ebuild
+++ b/dev-python/mdurl/mdurl-0.1.2.ebuild
@@ -20,6 +20,6 @@ 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"
distutils_enable_tests pytest
diff --git a/dev-python/meson-python/meson-python-0.18.0-r1.ebuild b/dev-python/meson-python/meson-python-0.18.0-r1.ebuild
index 505ffa8dcf44..1a89c17b8177 100644
--- a/dev-python/meson-python/meson-python-0.18.0-r1.ebuild
+++ b/dev-python/meson-python/meson-python-0.18.0-r1.ebuild
@@ -20,7 +20,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"
RDEPEND="
>=dev-python/pyproject-metadata-0.7.1[${PYTHON_USEDEP}]
diff --git a/dev-python/mistune/mistune-3.1.3.ebuild b/dev-python/mistune/mistune-3.1.3.ebuild
index 5532370cae75..58bb93970938 100644
--- a/dev-python/mistune/mistune-3.1.3.ebuild
+++ b/dev-python/mistune/mistune-3.1.3.ebuild
@@ -16,6 +16,6 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
distutils_enable_tests pytest
diff --git a/dev-python/mkdocs-material/mkdocs-material-9.6.16.ebuild b/dev-python/mkdocs-material/mkdocs-material-9.6.16.ebuild
index b2827a7488c5..b1db69f4c511 100644
--- a/dev-python/mkdocs-material/mkdocs-material-9.6.16.ebuild
+++ b/dev-python/mkdocs-material/mkdocs-material-9.6.16.ebuild
@@ -29,7 +29,7 @@ LICENSE="MIT"
# bundled icons
LICENSE+=" Apache-2.0 CC0-1.0 CC-BY-4.0 MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
+KEYWORDS="amd64 ~arm arm64 ~ppc ~ppc64 ~riscv x86"
IUSE="social"
RDEPEND="
diff --git a/dev-python/mock/mock-5.2.0.ebuild b/dev-python/mock/mock-5.2.0.ebuild
index fb8d484ab821..3242be375b89 100644
--- a/dev-python/mock/mock-5.2.0.ebuild
+++ b/dev-python/mock/mock-5.2.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris"
distutils_enable_tests pytest
diff --git a/dev-python/more-itertools/Manifest b/dev-python/more-itertools/Manifest
index cf9172ccde79..4506fa939801 100644
--- a/dev-python/more-itertools/Manifest
+++ b/dev-python/more-itertools/Manifest
@@ -1 +1,2 @@
DIST more_itertools-10.7.0.tar.gz 127671 BLAKE2B 0540d13c0dc2918ea612a1f8ca651f6a0a27d1ab3b6b13160f0bca07fc8b80c0d4b5c175c466cde59d24d54d8ed1cc99f1765d1a559064b82e19ead196ae515c SHA512 a0b2b5d7ae4dc6ecc3c6b81dacccbe23174f31cf6eaba4bef27bf17f8b69a083cbad54818db870289d788da8bbffc362f8b34acb838a5af1c398bd85fbd6db5d
+DIST more_itertools-10.8.0.tar.gz 137431 BLAKE2B 7f1a60679eaeed161580bbc7cb3b9bfb798f48828fb02559c70d91c8de0407d927961489b3cb10cb370f6da05cc5b21a0f6d1b6af3190ca4c7b6c39c1db1fd17 SHA512 541ed387a31ee9fe3576c857ea0d552b1280d48d6f94556f83dd813ce19e0f41a40e0ecc7b5b8cc4b854a0920c66ed9a09a6dd63322f597efac15378c532d59c
diff --git a/dev-python/more-itertools/more-itertools-10.7.0.ebuild b/dev-python/more-itertools/more-itertools-10.7.0.ebuild
index 90b0487e9d65..24480cd38f75 100644
--- a/dev-python/more-itertools/more-itertools-10.7.0.ebuild
+++ b/dev-python/more-itertools/more-itertools-10.7.0.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 ~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"
distutils_enable_sphinx docs \
dev-python/furo
diff --git a/dev-python/more-itertools/more-itertools-10.8.0.ebuild b/dev-python/more-itertools/more-itertools-10.8.0.ebuild
new file mode 100644
index 000000000000..a40c3d03c4de
--- /dev/null
+++ b/dev-python/more-itertools/more-itertools-10.8.0.ebuild
@@ -0,0 +1,23 @@
+# 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="More routines for operating on iterables, beyond itertools"
+HOMEPAGE="
+ https://github.com/more-itertools/more-itertools/
+ https://pypi.org/project/more-itertools/
+"
+
+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"
+
+distutils_enable_sphinx docs \
+ dev-python/furo
+distutils_enable_tests unittest
diff --git a/dev-python/mpmath/Manifest b/dev-python/mpmath/Manifest
index 35e75350cadf..11e838dae1bd 100644
--- a/dev-python/mpmath/Manifest
+++ b/dev-python/mpmath/Manifest
@@ -2,3 +2,4 @@ DIST mpmath-1.4.0a2.tar.gz 2079112 BLAKE2B 9d2d99dddd4e800b3860f38ef1955b7d803c9
DIST mpmath-1.4.0a5.tar.gz 2081385 BLAKE2B a6a2b0415f1401948cc8af1bb61449d2804d52a75464b29bbeb18bcda089838336a10c4e5c4cb6a83ac7d710ebbfa1f2ba6566369d5e6bf5ea84047d465570b7 SHA512 998f11ffb66054fab88f6f9aa00def5dc0deee22f59031c8049fb6cda7485ef13352b48e51ab6e490c09c477adcd283b5c8e1d080974488fec5cd9b9139a914d
DIST mpmath-1.4.0a6.tar.gz 2085764 BLAKE2B 0faddbcf68689807fae5c1a21b00e669a3fb5cf834321b2c903f298adf4ab74e2861706c4dc4ba2f10f91da02eee02b79f9720d8a1f58f5bff00c8febf75f13a SHA512 477f6af5e1f2bba5ec31f370549f1d91cff9f2985d579cab1392c3bdf4fa83d1417b015ab65655027a0dea36e41cc984b76f53b1cbe79bb057fe899baaa7fb48
DIST mpmath-1.4.0a7.tar.gz 2088255 BLAKE2B ae8578add85134d72401a1e47e687e35b2c40755f4121013c509bbb5d988b649c6bc7aaa803fe135fb34841ed2c12fd243900add9ba92909de66c32c3433063b SHA512 18be276fc51ae701853047e916c7710f27211a2b6a76f7fc7684794422fb9549cdd066daa3bb712123378787932756cf66bee4b718fb3bece99e886f215d2c27
+DIST mpmath-1.4.0a8.tar.gz 2088916 BLAKE2B b70f95320b9b49d529b8b855a8a641a748bf076866aa08d5e9a616f6c19f5ce9ec840968c05878ed7c813133ac1cbb903cc98b111f194391dbb0b5a283dda8da SHA512 be256da32d6aeef287205677a78f509acf568ee13a154c16222a1bc62ea14405e29adbbb5bb87a50a1105aff8a48bf533a34b514ff7f6fc48b477f9d164f9b6e
diff --git a/dev-python/mpmath/mpmath-1.4.0_alpha2.ebuild b/dev-python/mpmath/mpmath-1.4.0_alpha2.ebuild
index 633803bd5760..51aeee98866f 100644
--- a/dev-python/mpmath/mpmath-1.4.0_alpha2.ebuild
+++ b/dev-python/mpmath/mpmath-1.4.0_alpha2.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+KEYWORDS="amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
BDEPEND="
dev-python/setuptools-scm[${PYTHON_USEDEP}]
diff --git a/dev-python/mpmath/mpmath-1.4.0_alpha5-r1.ebuild b/dev-python/mpmath/mpmath-1.4.0_alpha5-r1.ebuild
index 20dd92fb993f..3641bbf24dea 100644
--- a/dev-python/mpmath/mpmath-1.4.0_alpha5-r1.ebuild
+++ b/dev-python/mpmath/mpmath-1.4.0_alpha5-r1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 ~arm arm64 hppa ~loong ~mips ppc ~ppc64 ~riscv sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+KEYWORDS="amd64 ~arm arm64 ~hppa ~loong ~mips ppc ~ppc64 ~riscv ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
IUSE="test-full"
BDEPEND="
diff --git a/dev-python/mpmath/mpmath-1.4.0_alpha8.ebuild b/dev-python/mpmath/mpmath-1.4.0_alpha8.ebuild
new file mode 100644
index 000000000000..ae970663b077
--- /dev/null
+++ b/dev-python/mpmath/mpmath-1.4.0_alpha8.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=setuptools
+PYTHON_FULLY_TESTED=( pypy3_11 python3_{11..13} )
+PYTHON_COMPAT=( "${PYTHON_FULLY_TESTED[@]}" )
+inherit distutils-r1 optfeature pypi
+
+DESCRIPTION="Python library for arbitrary-precision floating-point arithmetic"
+HOMEPAGE="
+ https://mpmath.org/
+ https://github.com/mpmath/mpmath/
+ https://pypi.org/project/mpmath/
+"
+
+LICENSE="BSD"
+SLOT="0"
+IUSE="test-full"
+
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/pexpect[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/gmpy2-2.3.0_alpha1[${PYTHON_USEDEP}]
+ ' 'python3*')
+ test-full? (
+ $(python_gen_cond_dep '
+ dev-python/matplotlib[${PYTHON_USEDEP}]
+ ' "${PYTHON_FULLY_TESTED[@]}")
+ )
+ )
+"
+
+EPYTEST_PLUGINS=( hypothesis pytest-timeout )
+EPYTEST_RERUNS=5
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # Slow and often needs a re-run to pass
+ mpmath/tests/test_cli.py::test_bare_console_bare_division
+ mpmath/tests/test_cli.py::test_bare_console_no_bare_division
+ mpmath/tests/test_cli.py::test_bare_console_pretty
+ mpmath/tests/test_cli.py::test_bare_console_without_ipython
+ mpmath/tests/test_cli.py::test_bare_console_wrap_floats
+)
+
+pkg_postinst() {
+ optfeature "gmp support" dev-python/gmpy2
+ optfeature "matplotlib support" dev-python/matplotlib
+}
diff --git a/dev-python/msgpack/msgpack-1.1.0.ebuild b/dev-python/msgpack/msgpack-1.1.0.ebuild
index c89877d58560..71de9cadcae5 100644
--- a/dev-python/msgpack/msgpack-1.1.0.ebuild
+++ b/dev-python/msgpack/msgpack-1.1.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
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"
IUSE="+native-extensions"
# extension code is relying on CPython implementation details
diff --git a/dev-python/msgpack/msgpack-1.1.1.ebuild b/dev-python/msgpack/msgpack-1.1.1.ebuild
index c89877d58560..71de9cadcae5 100644
--- a/dev-python/msgpack/msgpack-1.1.1.ebuild
+++ b/dev-python/msgpack/msgpack-1.1.1.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
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"
IUSE="+native-extensions"
# extension code is relying on CPython implementation details
diff --git a/dev-python/multidict/multidict-6.5.1.ebuild b/dev-python/multidict/multidict-6.5.1.ebuild
index 3c043cade12f..6b1a876d9f26 100644
--- a/dev-python/multidict/multidict-6.5.1.ebuild
+++ b/dev-python/multidict/multidict-6.5.1.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
IUSE="+native-extensions"
BDEPEND="
diff --git a/dev-python/multipart/Manifest b/dev-python/multipart/Manifest
index ca35baa311f4..1d5d744db1fd 100644
--- a/dev-python/multipart/Manifest
+++ b/dev-python/multipart/Manifest
@@ -1,2 +1 @@
-DIST multipart-1.2.1.tar.gz 36507 BLAKE2B 62f62aec8708e0fa9ded96cc7c72b5e575cf98e4521cf163e4fa5ec650fa6becc4378ea4c5b9776b95e4fe6caf7775fb16485676fb446c904e8c641f40fb1feb SHA512 755e41a388d16315a90bf9d3a6c340a887d9ece860b09c703771f788c9b2d491aa3dc401e444bf2d558ef81e9afaf498cff140dff8b1ed05341148244f6685d9
DIST multipart-1.3.0.tar.gz 38816 BLAKE2B 60d07adcb8a8ae4c165a3449377e64adc2000e936a0e51b4e8d26794a11800a8c66d1ff5582f66b2096eccb2e16718d009bcedf8f8660ded2cff161def6cd24f SHA512 da7cb2743d9cb6102f064da8313561478083bf3b1a711ec82cad13ec1a1319703d0d72aba9d122ef79a8dd6539ac459189c278978fa2d1e55c131f938fb42a00
diff --git a/dev-python/multipart/multipart-1.2.1.ebuild b/dev-python/multipart/multipart-1.2.1.ebuild
deleted file mode 100644
index d3bc41e7fd7f..000000000000
--- a/dev-python/multipart/multipart-1.2.1.ebuild
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2024-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="Parser for multipart/form-data"
-HOMEPAGE="
- https://github.com/defnull/multipart/
- https://pypi.org/project/multipart/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="amd64 ~arm64 ~ppc64 ~riscv ~x86"
-
-distutils_enable_tests pytest
diff --git a/dev-python/munch/munch-4.0.0.ebuild b/dev-python/munch/munch-4.0.0.ebuild
index a89908b49869..a1ebc707bca1 100644
--- a/dev-python/munch/munch-4.0.0.ebuild
+++ b/dev-python/munch/munch-4.0.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
BDEPEND="
dev-python/pbr[${PYTHON_USEDEP}]
diff --git a/dev-python/munkres/munkres-1.1.4-r1.ebuild b/dev-python/munkres/munkres-1.1.4-r1.ebuild
index 6a7eb0e11656..265b8c8df343 100644
--- a/dev-python/munkres/munkres-1.1.4-r1.ebuild
+++ b/dev-python/munkres/munkres-1.1.4-r1.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P}
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"
distutils_enable_tests pytest
diff --git a/dev-python/mypy-extensions/mypy-extensions-1.1.0.ebuild b/dev-python/mypy-extensions/mypy-extensions-1.1.0.ebuild
index ff13934f9a39..d4648e9497d9 100644
--- a/dev-python/mypy-extensions/mypy-extensions-1.1.0.ebuild
+++ b/dev-python/mypy-extensions/mypy-extensions-1.1.0.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
distutils_enable_tests pytest
diff --git a/dev-python/mypy/mypy-1.16.1.ebuild b/dev-python/mypy/mypy-1.16.1.ebuild
index 0d2f00fae59e..68709b570e62 100644
--- a/dev-python/mypy/mypy-1.16.1.ebuild
+++ b/dev-python/mypy/mypy-1.16.1.ebuild
@@ -22,7 +22,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="+native-extensions"
# stubgen collides with this package: https://bugs.gentoo.org/585594
diff --git a/dev-python/mysqlclient/mysqlclient-2.2.6.ebuild b/dev-python/mysqlclient/mysqlclient-2.2.6.ebuild
index 8421ac00d217..77302e6e9e45 100644
--- a/dev-python/mysqlclient/mysqlclient-2.2.6.ebuild
+++ b/dev-python/mysqlclient/mysqlclient-2.2.6.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="GPL-2+"
SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~hppa ~ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="amd64 ~arm arm64 ~hppa ~ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
DEPEND="
dev-db/mysql-connector-c:0=
diff --git a/dev-python/mysqlclient/mysqlclient-2.2.7.ebuild b/dev-python/mysqlclient/mysqlclient-2.2.7.ebuild
index af1cfe875489..b7b4a65c81e3 100644
--- a/dev-python/mysqlclient/mysqlclient-2.2.7.ebuild
+++ b/dev-python/mysqlclient/mysqlclient-2.2.7.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="GPL-2+"
SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~hppa ~ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="amd64 ~arm arm64 ~hppa ~ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
DEPEND="
dev-db/mysql-connector-c:0=
diff --git a/dev-python/myst-parser/myst-parser-4.0.1-r1.ebuild b/dev-python/myst-parser/myst-parser-4.0.1-r1.ebuild
index 200e3453416e..4540e9eb6efc 100644
--- a/dev-python/myst-parser/myst-parser-4.0.1-r1.ebuild
+++ b/dev-python/myst-parser/myst-parser-4.0.1-r1.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P}
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"
RDEPEND="
>=dev-python/docutils-0.18[${PYTHON_USEDEP}]
diff --git a/dev-python/myst-parser/myst-parser-4.0.1.ebuild b/dev-python/myst-parser/myst-parser-4.0.1.ebuild
index e7c0b4859c87..caac657d0b1f 100644
--- a/dev-python/myst-parser/myst-parser-4.0.1.ebuild
+++ b/dev-python/myst-parser/myst-parser-4.0.1.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P}
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"
RDEPEND="
>=dev-python/docutils-0.18[${PYTHON_USEDEP}]
diff --git a/dev-python/nanobind/Manifest b/dev-python/nanobind/Manifest
index a1dd465b1235..5c9c33157084 100644
--- a/dev-python/nanobind/Manifest
+++ b/dev-python/nanobind/Manifest
@@ -1 +1,2 @@
DIST nanobind-2.8.0.gh.tar.gz 916326 BLAKE2B 3925f261f3c8563d597b9d3e603c539bd589c5b3a581e85e91b013e7d2ec71864ee6cb0806b2d73a08b3ba3c8949f09e62da755521cd5998cdffefaa7bb07c75 SHA512 777436b5136d0e7e59e095d1e067b94f608cd949ec59e497fcab2de16c8c7687e734cc0df1606b5dba40484c4f39ba1014c731cef6ec6a4c5c84d0c33166af70
+DIST nanobind-2.9.2.gh.tar.gz 922360 BLAKE2B 0f8685698e61e72e2b939c0646da0e71ee12af33a2e61c17edc9eb8fcb74f2e47bbb55d34cafff2c0f0175416ff4b4ea66f36cacd32a1ebf4cb93248533c81c4 SHA512 05b2541896e64bb513f915ebc09820b2d3659efa9a1a4bdda9da79a761a23d84e41db22031c02ae816b1f729dab95efcb7c888e926dbb89fb4b34c8a329d59bf
diff --git a/dev-python/nanobind/nanobind-2.9.2.ebuild b/dev-python/nanobind/nanobind-2.9.2.ebuild
new file mode 100644
index 000000000000..9a77fc8442ce
--- /dev/null
+++ b/dev-python/nanobind/nanobind-2.9.2.ebuild
@@ -0,0 +1,63 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=scikit-build-core
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit cmake distutils-r1
+
+DESCRIPTION="Tiny and efficient C++/Python bindings"
+HOMEPAGE="
+ https://github.com/wjakob/nanobind/
+ https://pypi.org/project/nanobind/
+"
+SRC_URI="
+ https://github.com/wjakob/nanobind/archive/refs/tags/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86"
+
+DEPEND="
+ >=dev-cpp/robin-map-1.3.0
+"
+RDEPEND="
+ ${DEPEND}
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ cmake_src_prepare
+ distutils-r1_src_prepare
+}
+
+src_configure() {
+ # XXX: nanobind installs a CMake config file which by default passes -Os
+ # We currently patch around it in dev-python/pyopencl. In future, we
+ # may want to add some override with Gentoo specific environment vars.
+ DISTUTILS_ARGS=(
+ -DNB_CREATE_INSTALL_RULES=ON
+ -DNB_USE_SUBMODULE_DEPS=OFF
+ -DNB_TEST=OFF
+ )
+}
+
+python_test() {
+ local mycmakeargs=(
+ -DNB_CREATE_INSTALL_RULES=OFF
+ -DNB_USE_SUBMODULE_DEPS=OFF
+ -DNB_TEST=ON
+ )
+ cmake_src_configure
+ cmake_src_compile
+
+ cd "${BUILD_DIR}/tests" || die
+ epytest
+}
diff --git a/dev-python/narwhals/Manifest b/dev-python/narwhals/Manifest
index 88fd3edcc009..eafccbc46c82 100644
--- a/dev-python/narwhals/Manifest
+++ b/dev-python/narwhals/Manifest
@@ -1,2 +1,3 @@
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
diff --git a/dev-python/narwhals/narwhals-2.3.0.ebuild b/dev-python/narwhals/narwhals-2.3.0.ebuild
new file mode 100644
index 000000000000..3438ae88552e
--- /dev/null
+++ b/dev-python/narwhals/narwhals-2.3.0.ebuild
@@ -0,0 +1,43 @@
+# 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/natsort/natsort-8.4.0.ebuild b/dev-python/natsort/natsort-8.4.0.ebuild
index 337f844d2b6e..ae43944a6d4b 100644
--- a/dev-python/natsort/natsort-8.4.0.ebuild
+++ b/dev-python/natsort/natsort-8.4.0.ebuild
@@ -16,7 +16,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"
BDEPEND="
test? (
diff --git a/dev-python/nbclassic/Manifest b/dev-python/nbclassic/Manifest
index a78580fe2490..3f10efab1f2c 100644
--- a/dev-python/nbclassic/Manifest
+++ b/dev-python/nbclassic/Manifest
@@ -1 +1,2 @@
DIST nbclassic-1.3.1.tar.gz 81488343 BLAKE2B c10a1feb4a6987c163f8e8356fd80fe6be9e4958950e748e0bfd8ed1772237b909cbea623f01c052389f8721d6a2b7e710a907e91fe5c67b14197bf1a4f1b8c5 SHA512 9c9b45d15c68587e2147f50615b814106505f68a3255539769a78826c63abb85bd9e4b89ee663be609c210e904e9fd34a18a27687526753f9c06a726b6446f0e
+DIST nbclassic-1.3.2.tar.gz 63500110 BLAKE2B 755875fa142ce084c1d8525ec0ae607bc9b9de40298949e40ed1c93390de7c113f988355d67b34da9f0c170654f639b32907fd6fb623c0112622259ba0f0034b SHA512 4c090cf518616d2b485b00c63fe2d2a4c11418e58b4582eed15b84695997ba05181a09042c17482301f53423d84ffc4fceb847a697ccd9a77882e96c73cf1df5
diff --git a/dev-python/nbclassic/nbclassic-1.3.2.ebuild b/dev-python/nbclassic/nbclassic-1.3.2.ebuild
new file mode 100644
index 000000000000..22abf0ffaa96
--- /dev/null
+++ b/dev-python/nbclassic/nbclassic-1.3.2.ebuild
@@ -0,0 +1,87 @@
+# 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=hatchling
+
+inherit distutils-r1 pypi xdg-utils
+
+DESCRIPTION="Jupyter Notebook as a Jupyter Server Extension"
+HOMEPAGE="
+ https://jupyter.org/
+ https://github.com/jupyter/nbclassic/
+ https://pypi.org/project/nbclassic/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+
+RDEPEND="
+ dev-python/ipykernel[${PYTHON_USEDEP}]
+ dev-python/ipython-genutils[${PYTHON_USEDEP}]
+ >=dev-python/nest-asyncio-1.5[${PYTHON_USEDEP}]
+ >=dev-python/notebook-shim-0.2.3[${PYTHON_USEDEP}]
+"
+
+BDEPEND="
+ dev-python/hatch-jupyter-builder[${PYTHON_USEDEP}]
+ test? (
+ dev-python/nbval[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/requests-unixsocket[${PYTHON_USEDEP}]
+ dev-python/testpath[${PYTHON_USEDEP}]
+ )
+ doc? (
+ virtual/pandoc
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{jupyter,tornasync} )
+distutils_enable_tests pytest
+distutils_enable_sphinx docs/source \
+ dev-python/pydata-sphinx-theme \
+ dev-python/nbsphinx \
+ dev-python/sphinxcontrib-github-alt \
+ dev-python/myst-parser \
+ dev-python/ipython-genutils
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # Confuses hatchling sometimes, resulting in partial install.
+ # https://github.com/jupyter/nbclassic/issues/336
+ rm .gitignore || die
+
+ # Let's save some space at build-time, we're not using them anyway.
+ rm -r node_modules || die
+
+ # Dead symlinks that trip up hatchling sometimes, depending
+ # on the phase of the moon.
+ rm -r nbclassic/static/components/*/node_modules || die
+}
+
+python_test() {
+ # Notebook interferes with our tests, pretend it does not exist
+ echo "raise ImportError" > notebook.py || die
+
+ epytest
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+ # move /usr/etc stuff to /etc
+ mv "${ED}/usr/etc" "${ED}/etc" || die
+}
+
+pkg_postinst() {
+ xdg_desktop_database_update
+ xdg_icon_cache_update
+}
+
+pkg_postrm() {
+ xdg_desktop_database_update
+ xdg_icon_cache_update
+}
diff --git a/dev-python/nbclient/nbclient-0.10.2.ebuild b/dev-python/nbclient/nbclient-0.10.2.ebuild
index 6dd89587c1c1..0c93f3e54e0e 100644
--- a/dev-python/nbclient/nbclient-0.10.2.ebuild
+++ b/dev-python/nbclient/nbclient-0.10.2.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/jupyter-client-6.1.12[${PYTHON_USEDEP}]
diff --git a/dev-python/nbconvert/nbconvert-7.16.6.ebuild b/dev-python/nbconvert/nbconvert-7.16.6.ebuild
index 469b25744ef2..a032dfbd447a 100644
--- a/dev-python/nbconvert/nbconvert-7.16.6.ebuild
+++ b/dev-python/nbconvert/nbconvert-7.16.6.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/beautifulsoup4[${PYTHON_USEDEP}]
diff --git a/dev-python/nbformat/nbformat-5.10.4.ebuild b/dev-python/nbformat/nbformat-5.10.4.ebuild
index a3d83f4ee744..8a2d21de17d8 100644
--- a/dev-python/nbformat/nbformat-5.10.4.ebuild
+++ b/dev-python/nbformat/nbformat-5.10.4.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="BSD"
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"
RDEPEND="
>=dev-python/fastjsonschema-2.15[${PYTHON_USEDEP}]
diff --git a/dev-python/nest-asyncio/nest-asyncio-1.6.0.ebuild b/dev-python/nest-asyncio/nest-asyncio-1.6.0.ebuild
index d0cc682145b4..57e4485d423f 100644
--- a/dev-python/nest-asyncio/nest-asyncio-1.6.0.ebuild
+++ b/dev-python/nest-asyncio/nest-asyncio-1.6.0.ebuild
@@ -16,6 +16,6 @@ HOMEPAGE="
LICENSE="BSD-2"
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"
distutils_enable_tests pytest
diff --git a/dev-python/nh3/nh3-0.2.21.ebuild b/dev-python/nh3/nh3-0.2.21.ebuild
index e4725fb3e17b..a3d9c47a55ea 100644
--- a/dev-python/nh3/nh3-0.2.21.ebuild
+++ b/dev-python/nh3/nh3-0.2.21.ebuild
@@ -115,7 +115,7 @@ LICENSE="MIT"
# Dependent crate licenses
LICENSE+=" Apache-2.0-with-LLVM-exceptions MIT Unicode-3.0"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
distutils_enable_tests pytest
diff --git a/dev-python/notebook-shim/notebook-shim-0.2.4.ebuild b/dev-python/notebook-shim/notebook-shim-0.2.4.ebuild
index 7bda5a44c3c1..7dd1206d39ec 100644
--- a/dev-python/notebook-shim/notebook-shim-0.2.4.ebuild
+++ b/dev-python/notebook-shim/notebook-shim-0.2.4.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
<dev-python/jupyter-server-3[${PYTHON_USEDEP}]
diff --git a/dev-python/numpy/numpy-1.26.4.ebuild b/dev-python/numpy/numpy-1.26.4.ebuild
index a32d92e2f72c..f3f2e49df78b 100644
--- a/dev-python/numpy/numpy-1.26.4.ebuild
+++ b/dev-python/numpy/numpy-1.26.4.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -24,7 +24,7 @@ SLOT="0"
# is barely supported anyway, see bug #914358.
IUSE="+lapack"
if [[ ${PV} != *_[rab]* ]] ; then
- 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"
fi
RDEPEND="
diff --git a/dev-python/numpy/numpy-2.2.6.ebuild b/dev-python/numpy/numpy-2.2.6.ebuild
index 02b7c5c42dd9..40b992bb94fa 100644
--- a/dev-python/numpy/numpy-2.2.6.ebuild
+++ b/dev-python/numpy/numpy-2.2.6.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.ebuild b/dev-python/numpy/numpy-2.3.1.ebuild
index 75cbdd2cb0e5..3646e3dc6663 100644
--- a/dev-python/numpy/numpy-2.3.1.ebuild
+++ b/dev-python/numpy/numpy-2.3.1.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/numpydoc/numpydoc-1.9.0-r1.ebuild b/dev-python/numpydoc/numpydoc-1.9.0-r1.ebuild
index c6c800ba6c51..9cf028649b10 100644
--- a/dev-python/numpydoc/numpydoc-1.9.0-r1.ebuild
+++ b/dev-python/numpydoc/numpydoc-1.9.0-r1.ebuild
@@ -23,7 +23,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
RDEPEND="
>=dev-python/sphinx-6[${PYTHON_USEDEP}]
diff --git a/dev-python/objgraph/objgraph-3.6.2.ebuild b/dev-python/objgraph/objgraph-3.6.2.ebuild
index b0b225d82d6e..b6b3ac6fe6d8 100644
--- a/dev-python/objgraph/objgraph-3.6.2.ebuild
+++ b/dev-python/objgraph/objgraph-3.6.2.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
IUSE="doc"
RDEPEND="
diff --git a/dev-python/olefile/olefile-0.47.ebuild b/dev-python/olefile/olefile-0.47.ebuild
index ee6d3678608a..5ed65fcbb927 100644
--- a/dev-python/olefile/olefile-0.47.ebuild
+++ b/dev-python/olefile/olefile-0.47.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="BSD-2"
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"
distutils_enable_sphinx doc \
dev-python/sphinx-rtd-theme
diff --git a/dev-python/ordered-set/ordered-set-4.1.0-r1.ebuild b/dev-python/ordered-set/ordered-set-4.1.0-r1.ebuild
index 32e336aa71c8..28c8cf421c15 100644
--- a/dev-python/ordered-set/ordered-set-4.1.0-r1.ebuild
+++ b/dev-python/ordered-set/ordered-set-4.1.0-r1.ebuild
@@ -17,6 +17,6 @@ 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 ~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"
distutils_enable_tests pytest
diff --git a/dev-python/orjson/orjson-3.10.18.ebuild b/dev-python/orjson/orjson-3.10.18.ebuild
index 4615fbb7bd22..56e969844c67 100644
--- a/dev-python/orjson/orjson-3.10.18.ebuild
+++ b/dev-python/orjson/orjson-3.10.18.ebuild
@@ -27,7 +27,7 @@ LICENSE+="
Apache-2.0-with-LLVM-exceptions BSD Boost-1.0 MIT 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"
BDEPEND="
>=dev-util/maturin-1.7.8[${PYTHON_USEDEP}]
diff --git a/dev-python/outcome/outcome-1.3.0_p0.ebuild b/dev-python/outcome/outcome-1.3.0_p0.ebuild
index a7cf6d6ab7fb..b86da3ab9c3c 100644
--- a/dev-python/outcome/outcome-1.3.0_p0.ebuild
+++ b/dev-python/outcome/outcome-1.3.0_p0.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="|| ( Apache-2.0 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"
RDEPEND="
dev-python/attrs[${PYTHON_USEDEP}]
diff --git a/dev-python/overrides/overrides-7.7.0-r1.ebuild b/dev-python/overrides/overrides-7.7.0-r1.ebuild
index e2721376a589..04863dc858fa 100644
--- a/dev-python/overrides/overrides-7.7.0-r1.ebuild
+++ b/dev-python/overrides/overrides-7.7.0-r1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
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"
distutils_enable_tests pytest
diff --git a/dev-python/packaging/packaging-24.2.ebuild b/dev-python/packaging/packaging-24.2.ebuild
index 8ea8fcccdc3b..90a40e00bf50 100644
--- a/dev-python/packaging/packaging-24.2.ebuild
+++ b/dev-python/packaging/packaging-24.2.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="|| ( Apache-2.0 BSD-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"
RDEPEND="
!<dev-python/setuptools-67
diff --git a/dev-python/packaging/packaging-25.0.ebuild b/dev-python/packaging/packaging-25.0.ebuild
index 8ea8fcccdc3b..90a40e00bf50 100644
--- a/dev-python/packaging/packaging-25.0.ebuild
+++ b/dev-python/packaging/packaging-25.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="|| ( Apache-2.0 BSD-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"
RDEPEND="
!<dev-python/setuptools-67
diff --git a/dev-python/pallets-sphinx-themes/pallets-sphinx-themes-2.3.0.ebuild b/dev-python/pallets-sphinx-themes/pallets-sphinx-themes-2.3.0.ebuild
index 920aff766f06..2e8aa2a5f7db 100644
--- a/dev-python/pallets-sphinx-themes/pallets-sphinx-themes-2.3.0.ebuild
+++ b/dev-python/pallets-sphinx-themes/pallets-sphinx-themes-2.3.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/jinja2[${PYTHON_USEDEP}]
diff --git a/dev-python/pandocfilters/pandocfilters-1.5.1.ebuild b/dev-python/pandocfilters/pandocfilters-1.5.1.ebuild
index 64d4476a6ceb..54049b068a9a 100644
--- a/dev-python/pandocfilters/pandocfilters-1.5.1.ebuild
+++ b/dev-python/pandocfilters/pandocfilters-1.5.1.ebuild
@@ -16,4 +16,4 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
diff --git a/dev-python/parameterized/parameterized-0.9.0.ebuild b/dev-python/parameterized/parameterized-0.9.0.ebuild
index 798eea8b7777..9cebf7b5b50f 100644
--- a/dev-python/parameterized/parameterized-0.9.0.ebuild
+++ b/dev-python/parameterized/parameterized-0.9.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
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"
RESTRICT="!test? ( test )"
diff --git a/dev-python/paramiko/paramiko-3.5.1.ebuild b/dev-python/paramiko/paramiko-3.5.1.ebuild
index 48d01f1ff05a..8bebc1adc346 100644
--- a/dev-python/paramiko/paramiko-3.5.1.ebuild
+++ b/dev-python/paramiko/paramiko-3.5.1.ebuild
@@ -22,7 +22,7 @@ SRC_URI="
LICENSE="LGPL-2.1"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
IUSE="examples server"
RDEPEND="
diff --git a/dev-python/parso/parso-0.8.4-r1.ebuild b/dev-python/parso/parso-0.8.4-r1.ebuild
index d8f70d01c441..59b532bca4f5 100644
--- a/dev-python/parso/parso-0.8.4-r1.ebuild
+++ b/dev-python/parso/parso-0.8.4-r1.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
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"
distutils_enable_sphinx docs
distutils_enable_tests pytest
diff --git a/dev-python/passlib/passlib-1.7.4-r3.ebuild b/dev-python/passlib/passlib-1.7.4-r3.ebuild
index 3ce49005bf3e..be2a4edfcafe 100644
--- a/dev-python/passlib/passlib-1.7.4-r3.ebuild
+++ b/dev-python/passlib/passlib-1.7.4-r3.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD-2"
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"
IUSE="doc test-rust"
BDEPEND="
diff --git a/dev-python/paste/paste-3.10.1.ebuild b/dev-python/paste/paste-3.10.1.ebuild
index ccda44552da5..6115d4ea078e 100644
--- a/dev-python/paste/paste-3.10.1.ebuild
+++ b/dev-python/paste/paste-3.10.1.ebuild
@@ -18,7 +18,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 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
distutils_enable_tests pytest
distutils_enable_sphinx docs
diff --git a/dev-python/pastedeploy/pastedeploy-3.1.ebuild b/dev-python/pastedeploy/pastedeploy-3.1.ebuild
index c0d34bc76e50..d6e8c2d8808a 100644
--- a/dev-python/pastedeploy/pastedeploy-3.1.ebuild
+++ b/dev-python/pastedeploy/pastedeploy-3.1.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 ~amd64-linux ~x86-linux ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
RDEPEND="
!dev-python/namespace-paste
diff --git a/dev-python/path/path-17.1.0.ebuild b/dev-python/path/path-17.1.0.ebuild
index 292dbea9eb3d..fd96fe447606 100644
--- a/dev-python/path/path-17.1.0.ebuild
+++ b/dev-python/path/path-17.1.0.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/pathspec/pathspec-0.12.1.ebuild b/dev-python/pathspec/pathspec-0.12.1.ebuild
index 1649157e9239..cf1dc574f5c7 100644
--- a/dev-python/pathspec/pathspec-0.12.1.ebuild
+++ b/dev-python/pathspec/pathspec-0.12.1.ebuild
@@ -16,6 +16,6 @@ HOMEPAGE="
LICENSE="MPL-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"
distutils_enable_tests unittest
diff --git a/dev-python/pbr/pbr-6.1.1.ebuild b/dev-python/pbr/pbr-6.1.1.ebuild
index 29bb06d9d2f2..e19840eb819d 100644
--- a/dev-python/pbr/pbr-6.1.1.ebuild
+++ b/dev-python/pbr/pbr-6.1.1.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
RDEPEND="
>=dev-python/setuptools-64.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/pbs-installer/Manifest b/dev-python/pbs-installer/Manifest
index 5ad62dc93044..8a508c92cc88 100644
--- a/dev-python/pbs-installer/Manifest
+++ b/dev-python/pbs-installer/Manifest
@@ -1,2 +1,3 @@
DIST pbs-installer-2025.08.27.gh.tar.gz 92668 BLAKE2B c1ef0b4e43d0f9bb8dff43edc6cd023960e7b91b74fb71f6f7152f37c4a41f2f2d780e31b0d96bf697ae6daa3d1aa43055ed4fd6d73772398d21a8ea9711c74e SHA512 a9208a313c8ebf2c561b723d6cfdeccd32be64773dd7e6c782e0cc62557b2ddf658ce1119f925d86f34a4cf530378560384703c270b896740e618a7fa41c069c
DIST pbs-installer-2025.08.28.gh.tar.gz 92723 BLAKE2B e67122d79d4e5666d542ee33dd94d0e2550988aaca3e7c8eb5b9702cbd41664055bfc5884201c1e906a2c16f013dea63aa3a5974b4aacb0038a6b4327a730e9b SHA512 701a9f83585303882371aff9ffa0f9b702ae6ee51555748de3dcbbffc134976c4b52d2344d198ebbb994d6474eae43b14619864a74b2c0a5488e4625aa9d5965
+DIST pbs-installer-2025.09.02.gh.tar.gz 92711 BLAKE2B cccc8fe0ac98bf423ff4aec1fba854be0fb2f4a1e0cd773dd14dcf26fcf8482340df8bdfd0e6385517f368cc8f2617562dd9ae2e7a0a30588cc16567a4f89847 SHA512 a3325d213a486365c3383bcad5d9d6093087fdbe416ea0e43cecbdfc0ff5906fe180e27e974ec808d0d7479c3573ce7e953fbe960ea69f67bca53073ce7abb20
diff --git a/dev-python/pbs-installer/pbs-installer-2025.09.02.ebuild b/dev-python/pbs-installer/pbs-installer-2025.09.02.ebuild
new file mode 100644
index 000000000000..272948979211
--- /dev/null
+++ b/dev-python/pbs-installer/pbs-installer-2025.09.02.ebuild
@@ -0,0 +1,35 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=pdm-backend
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Installer for Python Build Standalone"
+HOMEPAGE="
+ https://pypi.org/project/pbs-installer/
+ https://github.com/frostming/pbs-installer/
+
+"
+SRC_URI="
+ https://github.com/frostming/pbs-installer/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+BDEPEND="
+ dev-python/zstandard[${PYTHON_USEDEP}]
+"
+
+# upstream does not provide any tests
+RESTRICT=test
+
+python_configure_all() {
+ export PDM_BUILD_SCM_VERSION=${PV}
+}
diff --git a/dev-python/pdm-backend/pdm-backend-2.4.5.ebuild b/dev-python/pdm-backend/pdm-backend-2.4.5.ebuild
index e782a597d5a1..6b70980d895b 100644
--- a/dev-python/pdm-backend/pdm-backend-2.4.5.ebuild
+++ b/dev-python/pdm-backend/pdm-backend-2.4.5.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
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"
# see src/pdm/backend/_vendor/vendor.txt
RDEPEND="
diff --git a/dev-python/pebble/pebble-5.1.3.ebuild b/dev-python/pebble/pebble-5.1.3.ebuild
index 16f108112ad0..d50d3f85cc89 100644
--- a/dev-python/pebble/pebble-5.1.3.ebuild
+++ b/dev-python/pebble/pebble-5.1.3.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="LGPL-3+"
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"
EPYTEST_PLUGINS=()
EPYTEST_RERUNS=5
diff --git a/dev-python/pexpect/pexpect-4.9.0.ebuild b/dev-python/pexpect/pexpect-4.9.0.ebuild
index 0d4b717fc629..68ff6f5abd85 100644
--- a/dev-python/pexpect/pexpect-4.9.0.ebuild
+++ b/dev-python/pexpect/pexpect-4.9.0.ebuild
@@ -18,7 +18,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 ~ppc-macos ~x64-macos"
+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"
IUSE="examples"
RDEPEND="
diff --git a/dev-python/pickleshare/pickleshare-0.7.5-r1.ebuild b/dev-python/pickleshare/pickleshare-0.7.5-r1.ebuild
index 781f4c9d9767..fd72fb166954 100644
--- a/dev-python/pickleshare/pickleshare-0.7.5-r1.ebuild
+++ b/dev-python/pickleshare/pickleshare-0.7.5-r1.ebuild
@@ -15,7 +15,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"
RDEPEND="
>=dev-python/path-6.2[${PYTHON_USEDEP}]
diff --git a/dev-python/picobox/picobox-4.0.0.ebuild b/dev-python/picobox/picobox-4.0.0.ebuild
index 91214ea65726..ee3efa8e5294 100644
--- a/dev-python/picobox/picobox-4.0.0.ebuild
+++ b/dev-python/picobox/picobox-4.0.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm arm64 hppa ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~hppa ppc ppc64 ~riscv ~s390 ~sparc x86"
BDEPEND="
dev-python/hatch-vcs[${PYTHON_USEDEP}]
diff --git a/dev-python/pikepdf/pikepdf-9.5.2.ebuild b/dev-python/pikepdf/pikepdf-9.5.2.ebuild
index b3eb24b5b08b..aeb374738268 100644
--- a/dev-python/pikepdf/pikepdf-9.5.2.ebuild
+++ b/dev-python/pikepdf/pikepdf-9.5.2.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MPL-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+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
diff --git a/dev-python/pikepdf/pikepdf-9.9.0.ebuild b/dev-python/pikepdf/pikepdf-9.9.0.ebuild
index 65030f24b0be..9d74582c02e5 100644
--- a/dev-python/pikepdf/pikepdf-9.9.0.ebuild
+++ b/dev-python/pikepdf/pikepdf-9.9.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MPL-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~ppc ~ppc64 ~riscv ~s390 sparc x86"
+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
diff --git a/dev-python/pillow/pillow-11.2.1.ebuild b/dev-python/pillow/pillow-11.2.1.ebuild
index 318ca8986bfd..e7a87802abd5 100644
--- a/dev-python/pillow/pillow-11.2.1.ebuild
+++ b/dev-python/pillow/pillow-11.2.1.ebuild
@@ -35,7 +35,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="HPND"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
IUSE="avif examples imagequant +jpeg jpeg2k lcms test tiff tk truetype webp xcb zlib"
REQUIRED_USE="test? ( jpeg jpeg2k lcms tiff truetype )"
RESTRICT="!test? ( test )"
diff --git a/dev-python/pip/pip-25.1.1.ebuild b/dev-python/pip/pip-25.1.1.ebuild
index 884674df6ad8..3cdb65190c6c 100644
--- a/dev-python/pip/pip-25.1.1.ebuild
+++ b/dev-python/pip/pip-25.1.1.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/pkgconfig/pkgconfig-1.5.5-r1.ebuild b/dev-python/pkgconfig/pkgconfig-1.5.5-r1.ebuild
index dc11f4efa0f8..631ccff40e38 100644
--- a/dev-python/pkgconfig/pkgconfig-1.5.5-r1.ebuild
+++ b/dev-python/pkgconfig/pkgconfig-1.5.5-r1.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
RDEPEND="
virtual/pkgconfig
diff --git a/dev-python/pkginfo/pkginfo-1.12.1.2.ebuild b/dev-python/pkginfo/pkginfo-1.12.1.2.ebuild
index bc526bfca027..480ca8a3f3b1 100644
--- a/dev-python/pkginfo/pkginfo-1.12.1.2.ebuild
+++ b/dev-python/pkginfo/pkginfo-1.12.1.2.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
BDEPEND="
test? (
diff --git a/dev-python/platformdirs/platformdirs-4.3.8.ebuild b/dev-python/platformdirs/platformdirs-4.3.8.ebuild
index ae69f32aa977..a132440891e1 100644
--- a/dev-python/platformdirs/platformdirs-4.3.8.ebuild
+++ b/dev-python/platformdirs/platformdirs-4.3.8.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 ~arm64-macos ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"
BDEPEND="
test? (
diff --git a/dev-python/plexapi/Manifest b/dev-python/plexapi/Manifest
index 65089706e901..c67eaa1d6e98 100644
--- a/dev-python/plexapi/Manifest
+++ b/dev-python/plexapi/Manifest
@@ -1,2 +1,3 @@
DIST plexapi-4.16.1.gh.tar.gz 22524979 BLAKE2B f8a83fc395aed0648f4b5e357934c0efaedb13d15c38cdb1740d0ed3e3fd78e0165b7958ca71b589893170cdebda2a1b1239e91df91095b9f9722f6e3b04b510 SHA512 719a2c6942d4e7b0a4aedbba05fe83ec7e4070db90e6bdb7331698c7c3ae621f96539aa89b548bc57dbb7eaf97a562b7a015746f86609ddbed09ccd5569f8ede
DIST plexapi-4.17.0.gh.tar.gz 22526751 BLAKE2B 675c26c044d5b9114d6547ae6cc1cc3647a4aec61796024cda6c3abecfa0207c5e3858e37bef0c8209942dbc8996628f27424f9a04e70d8df8a03dabdcb0eaba SHA512 6125ab436d4514a5fef9cd733f493778911309f79577e81633f1e2f2f04b81e6c2533c5f7eeb4b0e15b1ecd7a99f9319f6580e421b5a9c7ae8356b5217721867
+DIST plexapi-4.17.1.gh.tar.gz 22527237 BLAKE2B f48d777b5d00e27afd505e44e35284ca70187c433893b17e9d1eecfe1a70c2b3485b585362383e7a8df3ac3c47667edfcc5af07f3721c7cf8fea9731fa5ae486 SHA512 741a1806bd52a9ce85fb34bf7a2a42594e4205e7a7dacc827cc8bf5a9da69290af1e79145b912472ded0aff0478c56d996144ef441a8d5bc3c0f7fec82be8358
diff --git a/dev-python/plexapi/plexapi-4.17.1.ebuild b/dev-python/plexapi/plexapi-4.17.1.ebuild
new file mode 100644
index 000000000000..cb90823a43f9
--- /dev/null
+++ b/dev-python/plexapi/plexapi-4.17.1.ebuild
@@ -0,0 +1,37 @@
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# left here in case we switch to pypi
+PYPI_PN="PlexAPI"
+PYPI_NO_NORMALIZE=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Python bindings for the Plex API."
+HOMEPAGE="
+ https://pypi.org/project/PlexAPI/
+ https://github.com/pkkid/python-plexapi
+"
+
+# pypi release don't have docs
+SRC_URI="https://github.com/pkkid/python-plexapi/archive/refs/tags/${PV}.tar.gz -> ${P}.gh.tar.gz"
+
+S="${WORKDIR}/python-${P}"
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64"
+
+# almost all tests requires a running server
+RESTRICT="test"
+
+RDEPEND="
+ dev-python/requests[${PYTHON_USEDEP}]
+"
+
+BDEPEND="doc? ( dev-python/sphinx-rtd-theme )"
+
+distutils_enable_sphinx docs
diff --git a/dev-python/pluggy/pluggy-1.6.0.ebuild b/dev-python/pluggy/pluggy-1.6.0.ebuild
index c0ef421c46e0..c00f6b3ccd49 100644
--- a/dev-python/pluggy/pluggy-1.6.0.ebuild
+++ b/dev-python/pluggy/pluggy-1.6.0.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 ~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"
BDEPEND="
dev-python/setuptools-scm[${PYTHON_USEDEP}]
diff --git a/dev-python/ply/ply-3.11-r2.ebuild b/dev-python/ply/ply-3.11-r2.ebuild
index 3db9696b1d3f..69382b076749 100644
--- a/dev-python/ply/ply-3.11-r2.ebuild
+++ b/dev-python/ply/ply-3.11-r2.ebuild
@@ -18,7 +18,7 @@ SRC_URI+=" https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${P}-py3.12-a
LICENSE="BSD"
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"
+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"
DOCS=( ANNOUNCE CHANGES TODO )
diff --git a/dev-python/pmw/pmw-2.1.1.ebuild b/dev-python/pmw/pmw-2.1.1.ebuild
index 6680a9607cd5..871657c1bb39 100644
--- a/dev-python/pmw/pmw-2.1.1.ebuild
+++ b/dev-python/pmw/pmw-2.1.1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -16,7 +16,7 @@ HOMEPAGE="https://pypi.org/project/Pmw/"
LICENSE="BSD"
SLOT="py3"
-KEYWORDS="~alpha amd64 ppc sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
+KEYWORDS="~alpha amd64 ppc ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
IUSE="doc test"
# https://sourceforge.net/p/pmw/bugs/39/
RESTRICT="test"
diff --git a/dev-python/pocketlint/Manifest b/dev-python/pocketlint/Manifest
index c7f40bfeab45..69621ccea8fe 100644
--- a/dev-python/pocketlint/Manifest
+++ b/dev-python/pocketlint/Manifest
@@ -1 +1,2 @@
DIST pocketlint-0.25.gh.tar.gz 23931 BLAKE2B e8254477223ea0e631129778cc760ef57d34adb78f783258c8c097f7eac1acfe4cb00d21bc9aff576fbfab2bb3f7b687de33b3bc1f02c8d083d690a2e392bbac SHA512 dcb21ee147839a606520370f948594fc695c779a03d9edfb054dd6c07f4dd1c4ad0b64ccaad504da01e3b6c572ce27db8813ac8b61468d43e3745b5053a4edb7
+DIST pocketlint-0.26.gh.tar.gz 24471 BLAKE2B 608cbb35ae8d4dccc80aa2d50fafa0bdc8e6c08eb89521ceb166a794624784d39709451b628c5c262db5597c2f6a2766ad7f5ce4ec8b85bde14b76a72b7808b5 SHA512 91c8e7a063af008be04a734d265feb0efb6cd701bf29acf890d7a9c1b12d62256cb6930488bc57f4506aa1445e8edaae8b6d6169b730f11b7775f18379e51678
diff --git a/dev-python/pocketlint/pocketlint-0.25-r1.ebuild b/dev-python/pocketlint/pocketlint-0.25-r1.ebuild
index 034aa16d9279..e18e8ba11c23 100644
--- a/dev-python/pocketlint/pocketlint-0.25-r1.ebuild
+++ b/dev-python/pocketlint/pocketlint-0.25-r1.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="GPL-2"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~sparc x86"
RDEPEND="
dev-python/packaging[${PYTHON_USEDEP}]
diff --git a/dev-python/pocketlint/pocketlint-0.26.ebuild b/dev-python/pocketlint/pocketlint-0.26.ebuild
new file mode 100644
index 000000000000..39c0ed84c2b9
--- /dev/null
+++ b/dev-python/pocketlint/pocketlint-0.26.ebuild
@@ -0,0 +1,33 @@
+# 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="Shared code for running pylint against rhinstaller projects"
+HOMEPAGE="
+ https://github.com/rhinstaller/pocketlint/
+ https://pypi.org/project/pocketlint/
+"
+SRC_URI="
+ https://github.com/rhinstaller/${PN}/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+RDEPEND="
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/polib[${PYTHON_USEDEP}]
+ dev-python/pylint[${PYTHON_USEDEP}]
+"
+
+python_test() {
+ "${EPYTHON}" tests/pylint/runpylint.py || die "test failed with ${EPYTHON}"
+}
diff --git a/dev-python/poetry-core/poetry-core-2.1.3.ebuild b/dev-python/poetry-core/poetry-core-2.1.3.ebuild
index d7e4db466791..b1756309da87 100644
--- a/dev-python/poetry-core/poetry-core-2.1.3.ebuild
+++ b/dev-python/poetry-core/poetry-core-2.1.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"
# check inside vendors/pyproject.toml
# (note that some are indirect deps)
diff --git a/dev-python/polib/polib-1.2.0.ebuild b/dev-python/polib/polib-1.2.0.ebuild
index 85023dcbec23..f635ff289712 100644
--- a/dev-python/polib/polib-1.2.0.ebuild
+++ b/dev-python/polib/polib-1.2.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~sparc x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/portend/portend-3.2.1.ebuild b/dev-python/portend/portend-3.2.1.ebuild
index f5f198c13525..1884a05a7002 100644
--- a/dev-python/portend/portend-3.2.1.ebuild
+++ b/dev-python/portend/portend-3.2.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 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
RDEPEND="
>=dev-python/tempora-1.8[${PYTHON_USEDEP}]
diff --git a/dev-python/pretend/pretend-1.0.9-r2.ebuild b/dev-python/pretend/pretend-1.0.9-r2.ebuild
index 78449ad519ec..7975ed0c94d7 100644
--- a/dev-python/pretend/pretend-1.0.9-r2.ebuild
+++ b/dev-python/pretend/pretend-1.0.9-r2.ebuild
@@ -20,6 +20,6 @@ SRC_URI="
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"
+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"
distutils_enable_tests pytest
diff --git a/dev-python/prettytable/prettytable-3.16.0.ebuild b/dev-python/prettytable/prettytable-3.16.0.ebuild
index 7037a1f4d100..aa5b5ed1caa7 100644
--- a/dev-python/prettytable/prettytable-3.16.0.ebuild
+++ b/dev-python/prettytable/prettytable-3.16.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~mips ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~mips ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/wcwidth[${PYTHON_USEDEP}]
diff --git a/dev-python/priority/priority-1.3.0-r1.ebuild b/dev-python/priority/priority-1.3.0-r1.ebuild
index a4550735ff22..805378e715b0 100644
--- a/dev-python/priority/priority-1.3.0-r1.ebuild
+++ b/dev-python/priority/priority-1.3.0-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -18,7 +18,7 @@ HOMEPAGE="
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"
BDEPEND="
test? (
diff --git a/dev-python/priority/priority-2.0.0-r1.ebuild b/dev-python/priority/priority-2.0.0-r1.ebuild
index 477c0ba55aef..a51d4b0c5b0a 100644
--- a/dev-python/priority/priority-2.0.0-r1.ebuild
+++ b/dev-python/priority/priority-2.0.0-r1.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
BDEPEND="
test? (
diff --git a/dev-python/process-tests/process-tests-3.0.0.ebuild b/dev-python/process-tests/process-tests-3.0.0.ebuild
index 7690c121d782..4768279edf6f 100644
--- a/dev-python/process-tests/process-tests-3.0.0.ebuild
+++ b/dev-python/process-tests/process-tests-3.0.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
distutils_enable_tests pytest
diff --git a/dev-python/progress/progress-1.6.1.ebuild b/dev-python/progress/progress-1.6.1.ebuild
index ab5e9dd0d7a0..9e9f9dadcf38 100644
--- a/dev-python/progress/progress-1.6.1.ebuild
+++ b/dev-python/progress/progress-1.6.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="ISC"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ~mips ppc ppc64 ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ~mips ppc ppc64 ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
python_test() {
"${EPYTHON}" test_progress.py || die "Tests fail with ${EPYTHON}"
diff --git a/dev-python/prometheus-client/prometheus-client-0.22.1.ebuild b/dev-python/prometheus-client/prometheus-client-0.22.1.ebuild
index 4a371d544934..8640487758b1 100644
--- a/dev-python/prometheus-client/prometheus-client-0.22.1.ebuild
+++ b/dev-python/prometheus-client/prometheus-client-0.22.1.ebuild
@@ -24,7 +24,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/twisted[${PYTHON_USEDEP}]
diff --git a/dev-python/prompt-toolkit/prompt-toolkit-3.0.51.ebuild b/dev-python/prompt-toolkit/prompt-toolkit-3.0.51.ebuild
index 5b37f8ec5ffc..2b40d6509dc8 100644
--- a/dev-python/prompt-toolkit/prompt-toolkit-3.0.51.ebuild
+++ b/dev-python/prompt-toolkit/prompt-toolkit-3.0.51.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
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"
RDEPEND="
dev-python/wcwidth[${PYTHON_USEDEP}]
diff --git a/dev-python/propcache/propcache-0.3.2.ebuild b/dev-python/propcache/propcache-0.3.2.ebuild
index 5437ff88585c..e820f656c39e 100644
--- a/dev-python/propcache/propcache-0.3.2.ebuild
+++ b/dev-python/propcache/propcache-0.3.2.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"
BDEPEND="
diff --git a/dev-python/protobuf/protobuf-6.31.1.ebuild b/dev-python/protobuf/protobuf-6.31.1.ebuild
index 4599e9f5e956..1c27a4a9b2c4 100644
--- a/dev-python/protobuf/protobuf-6.31.1.ebuild
+++ b/dev-python/protobuf/protobuf-6.31.1.ebuild
@@ -28,7 +28,7 @@ SRC_URI="
LICENSE="BSD"
SLOT="0/$(ver_cut 1-3)"
-KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~mips ~ppc ppc64 ~riscv ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv ~sparc x86"
# need protobuf compiler
BDEPEND="
diff --git a/dev-python/psutil/psutil-7.0.0.ebuild b/dev-python/psutil/psutil-7.0.0.ebuild
index 47a8c75eba4e..bd4db2e67277 100644
--- a/dev-python/psutil/psutil-7.0.0.ebuild
+++ b/dev-python/psutil/psutil-7.0.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
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"
+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"
distutils_enable_tests pytest
diff --git a/dev-python/ptyprocess/ptyprocess-0.7.0-r1.ebuild b/dev-python/ptyprocess/ptyprocess-0.7.0-r1.ebuild
index 4a689f956e26..cf8cd8b6ae8d 100644
--- a/dev-python/ptyprocess/ptyprocess-0.7.0-r1.ebuild
+++ b/dev-python/ptyprocess/ptyprocess-0.7.0-r1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="ISC"
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"
distutils_enable_tests unittest
diff --git a/dev-python/pure-eval/pure-eval-0.2.3.ebuild b/dev-python/pure-eval/pure-eval-0.2.3.ebuild
index 97cda75a923c..0491ab52d89b 100644
--- a/dev-python/pure-eval/pure-eval-0.2.3.ebuild
+++ b/dev-python/pure-eval/pure-eval-0.2.3.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
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"
distutils_enable_tests pytest
diff --git a/dev-python/py/py-1.11.0-r1.ebuild b/dev-python/py/py-1.11.0-r1.ebuild
index d1c5007209a7..c10adb0dd707 100644
--- a/dev-python/py/py-1.11.0-r1.ebuild
+++ b/dev-python/py/py-1.11.0-r1.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 ~amd64-linux ~x86-linux ~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 ~ppc-macos ~x64-macos ~x64-solaris"
# This package is unmaintained and keeps being broken periodically.
RESTRICT=test
diff --git a/dev-python/pyaes/pyaes-1.6.1-r3.ebuild b/dev-python/pyaes/pyaes-1.6.1-r3.ebuild
index 1e47f23d1b7f..7339eed04d39 100644
--- a/dev-python/pyaes/pyaes-1.6.1-r3.ebuild
+++ b/dev-python/pyaes/pyaes-1.6.1-r3.ebuild
@@ -13,7 +13,7 @@ HOMEPAGE="https://pypi.org/project/pyaes/"
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ~mips ppc ppc64 ~s390 sparc x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ~mips ppc ppc64 ~s390 ~sparc x86 ~x64-macos"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/pyalsa/pyalsa-1.2.14.ebuild b/dev-python/pyalsa/pyalsa-1.2.14.ebuild
index 5d9e162a4d30..b50d68d7fef0 100644
--- a/dev-python/pyalsa/pyalsa-1.2.14.ebuild
+++ b/dev-python/pyalsa/pyalsa-1.2.14.ebuild
@@ -15,7 +15,7 @@ SRC_URI="https://www.alsa-project.org/files/pub/pyalsa/${P}.tar.bz2"
LICENSE="LGPL-2.1+"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm64 ~hppa ~mips ppc ppc64 ~riscv sparc x86"
+KEYWORDS="~alpha amd64 ~arm64 ~hppa ~mips ppc ppc64 ~riscv ~sparc x86"
# Needs access to system's alsa configuration/devices
RESTRICT="test"
diff --git a/dev-python/pyasn1-modules/pyasn1-modules-0.4.2.ebuild b/dev-python/pyasn1-modules/pyasn1-modules-0.4.2.ebuild
index 250819e24efa..f3c76fe164ad 100644
--- a/dev-python/pyasn1-modules/pyasn1-modules-0.4.2.ebuild
+++ b/dev-python/pyasn1-modules/pyasn1-modules-0.4.2.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
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-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
RDEPEND="
<dev-python/pyasn1-0.7.0[${PYTHON_USEDEP}]
diff --git a/dev-python/pyasn1/pyasn1-0.6.1.ebuild b/dev-python/pyasn1/pyasn1-0.6.1.ebuild
index c48a6295deaa..be3a8b514d7a 100644
--- a/dev-python/pyasn1/pyasn1-0.6.1.ebuild
+++ b/dev-python/pyasn1/pyasn1-0.6.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
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-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
distutils_enable_tests unittest
distutils_enable_sphinx "docs/source"
diff --git a/dev-python/pyasynchat/pyasynchat-1.0.4.ebuild b/dev-python/pyasynchat/pyasynchat-1.0.4.ebuild
index aae60f673382..3d15335d5f36 100644
--- a/dev-python/pyasynchat/pyasynchat-1.0.4.ebuild
+++ b/dev-python/pyasynchat/pyasynchat-1.0.4.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="PSF-2"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/pyasyncore/pyasyncore-1.0.4.ebuild b/dev-python/pyasyncore/pyasyncore-1.0.4.ebuild
index 070a51320d31..529f0375418a 100644
--- a/dev-python/pyasyncore/pyasyncore-1.0.4.ebuild
+++ b/dev-python/pyasyncore/pyasyncore-1.0.4.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="PSF-2"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/pyatspi/pyatspi-2.46.1.ebuild b/dev-python/pyatspi/pyatspi-2.46.1.ebuild
index 58275c8912a5..ce6436d55278 100644
--- a/dev-python/pyatspi/pyatspi-2.46.1.ebuild
+++ b/dev-python/pyatspi/pyatspi-2.46.1.ebuild
@@ -12,7 +12,7 @@ HOMEPAGE="https://wiki.gnome.org/Accessibility"
# Note: only some of the tests are GPL-licensed, everything else is LGPL
LICENSE="LGPL-2 GPL-2+"
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"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/pybind11/pybind11-2.13.6.ebuild b/dev-python/pybind11/pybind11-2.13.6.ebuild
index 0aa1ecce892c..d34757831b88 100644
--- a/dev-python/pybind11/pybind11-2.13.6.ebuild
+++ b/dev-python/pybind11/pybind11-2.13.6.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
RDEPEND="
dev-cpp/eigen:3
diff --git a/dev-python/pycairo/pycairo-1.28.0.ebuild b/dev-python/pycairo/pycairo-1.28.0.ebuild
index 7d43ef9920d6..72cebe021c75 100644
--- a/dev-python/pycairo/pycairo-1.28.0.ebuild
+++ b/dev-python/pycairo/pycairo-1.28.0.ebuild
@@ -22,7 +22,7 @@ SRC_URI="
LICENSE="|| ( LGPL-2.1 MPL-1.1 )"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
IUSE="X examples test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/pycares/pycares-4.9.0.ebuild b/dev-python/pycares/pycares-4.9.0.ebuild
index cfe0f6ee7a06..3669e7b1ba2f 100644
--- a/dev-python/pycares/pycares-4.9.0.ebuild
+++ b/dev-python/pycares/pycares-4.9.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"
diff --git a/dev-python/pycodestyle/pycodestyle-2.14.0.ebuild b/dev-python/pycodestyle/pycodestyle-2.14.0.ebuild
index 205f15f58cc4..d7c7b75d2cb2 100644
--- a/dev-python/pycodestyle/pycodestyle-2.14.0.ebuild
+++ b/dev-python/pycodestyle/pycodestyle-2.14.0.ebuild
@@ -23,7 +23,7 @@ SRC_URI="
LICENSE="MIT"
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"
+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_sphinx docs \
dev-python/sphinx-rtd-theme
diff --git a/dev-python/pycountry/pycountry-24.6.1.ebuild b/dev-python/pycountry/pycountry-24.6.1.ebuild
index 11d356beee39..d3a88348d233 100644
--- a/dev-python/pycountry/pycountry-24.6.1.ebuild
+++ b/dev-python/pycountry/pycountry-24.6.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="LGPL-2.1"
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"
distutils_enable_tests pytest
diff --git a/dev-python/pycparser/pycparser-2.22.ebuild b/dev-python/pycparser/pycparser-2.22.ebuild
index de51d5d561bc..70baa4b3c866 100644
--- a/dev-python/pycparser/pycparser-2.22.ebuild
+++ b/dev-python/pycparser/pycparser-2.22.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
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"
+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}]
diff --git a/dev-python/pycryptodome/pycryptodome-3.22.0.ebuild b/dev-python/pycryptodome/pycryptodome-3.22.0.ebuild
index 4556bb22dd7e..c82b17950598 100644
--- a/dev-python/pycryptodome/pycryptodome-3.22.0.ebuild
+++ b/dev-python/pycryptodome/pycryptodome-3.22.0.ebuild
@@ -23,7 +23,7 @@ SRC_URI="
LICENSE="BSD-2 Unlicense"
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"
DEPEND="
dev-libs/gmp:=
diff --git a/dev-python/pycryptodome/pycryptodome-3.23.0.ebuild b/dev-python/pycryptodome/pycryptodome-3.23.0.ebuild
index 4556bb22dd7e..c82b17950598 100644
--- a/dev-python/pycryptodome/pycryptodome-3.23.0.ebuild
+++ b/dev-python/pycryptodome/pycryptodome-3.23.0.ebuild
@@ -23,7 +23,7 @@ SRC_URI="
LICENSE="BSD-2 Unlicense"
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"
DEPEND="
dev-libs/gmp:=
diff --git a/dev-python/pycups/pycups-2.0.4.ebuild b/dev-python/pycups/pycups-2.0.4.ebuild
index a8b545ba0765..a562a9617f9c 100644
--- a/dev-python/pycups/pycups-2.0.4.ebuild
+++ b/dev-python/pycups/pycups-2.0.4.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -14,7 +14,7 @@ HOMEPAGE="https://github.com/OpenPrinting/pycups"
LICENSE="GPL-2"
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"
IUSE="examples"
RDEPEND="net-print/cups"
diff --git a/dev-python/pycurl/pycurl-7.45.6.ebuild b/dev-python/pycurl/pycurl-7.45.6.ebuild
index 824bbffe1186..40703550f0e7 100644
--- a/dev-python/pycurl/pycurl-7.45.6.ebuild
+++ b/dev-python/pycurl/pycurl-7.45.6.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="LGPL-2.1"
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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
IUSE="curl_ssl_gnutls +curl_ssl_openssl examples ssl"
# Depend on a curl with curl_ssl_* USE flags.
diff --git a/dev-python/pydantic-core/pydantic-core-2.33.2.ebuild b/dev-python/pydantic-core/pydantic-core-2.33.2.ebuild
index 38d76323fbc8..fddf11b97e3d 100644
--- a/dev-python/pydantic-core/pydantic-core-2.33.2.ebuild
+++ b/dev-python/pydantic-core/pydantic-core-2.33.2.ebuild
@@ -120,7 +120,7 @@ LICENSE+="
|| ( Apache-2.0 Boost-1.0 )
"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/typing-extensions-4.7.1[${PYTHON_USEDEP}]
diff --git a/dev-python/pydantic/pydantic-2.11.7.ebuild b/dev-python/pydantic/pydantic-2.11.7.ebuild
index 1eb12f5382ee..df5287293275 100644
--- a/dev-python/pydantic/pydantic-2.11.7.ebuild
+++ b/dev-python/pydantic/pydantic-2.11.7.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/annotated-types-0.6.0[${PYTHON_USEDEP}]
diff --git a/dev-python/pydata-sphinx-theme/pydata-sphinx-theme-0.16.0.ebuild b/dev-python/pydata-sphinx-theme/pydata-sphinx-theme-0.16.0.ebuild
index 24e2af676b71..b64469b547c4 100644
--- a/dev-python/pydata-sphinx-theme/pydata-sphinx-theme-0.16.0.ebuild
+++ b/dev-python/pydata-sphinx-theme/pydata-sphinx-theme-0.16.0.ebuild
@@ -24,7 +24,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="BSD-with-disclosure"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~mips ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/accessible-pygments[${PYTHON_USEDEP}]
diff --git a/dev-python/pydecomp/pydecomp-0.3-r3.ebuild b/dev-python/pydecomp/pydecomp-0.3-r3.ebuild
index cbfa058739f7..7d9e5672d268 100644
--- a/dev-python/pydecomp/pydecomp-0.3-r3.ebuild
+++ b/dev-python/pydecomp/pydecomp-0.3-r3.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -14,7 +14,7 @@ if [[ ${PV} == "9999" ]] ; then
inherit git-r3
else
SRC_URI="https://dev.gentoo.org/~dolsen/releases/${PN}/pyDeComp-${PV}.tar.gz -> ${P}.tar.gz"
- 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"
S="${WORKDIR}/pyDeComp-${PV}"
fi
diff --git a/dev-python/pyeclib/Manifest b/dev-python/pyeclib/Manifest
index 0debedb620a1..604cb254d551 100644
--- a/dev-python/pyeclib/Manifest
+++ b/dev-python/pyeclib/Manifest
@@ -1 +1,2 @@
DIST pyeclib-1.6.4.tar.gz 50928 BLAKE2B a115cbe6157f30edd2da3c3a16ff2c7871e1349c827491e80d2ca36e0ee221cf37bd49545f375828e16a3ceac7b84fae1d25247c86053ffba62d8196a9d0980d SHA512 132c2fda295f6bea3609b22783c0d68e65814929061785269e94fc29f35054b99c6073d836f61c5396c48d951eb35f3c83010946ac28f9ac900e2ff7bffefc20
+DIST pyeclib-1.7.0.tar.gz 45842 BLAKE2B 92931ee9dcdd980cfad076f89459341e5b5ea8816e2a12081f59faa98bb678090d27494f86bb307948470c04fd1a52219467433fe653858215b02810646e8976 SHA512 b02aec72ebef2086a61c54b05d66641c0a3fb10a4aa636d268679093a330ec4cba92161bae5313e6b74a9af986b01635ca59cd423dbb30ff1469ebf73b3f74b6
diff --git a/dev-python/pyeclib/pyeclib-1.7.0.ebuild b/dev-python/pyeclib/pyeclib-1.7.0.ebuild
new file mode 100644
index 000000000000..aa9c282c6485
--- /dev/null
+++ b/dev-python/pyeclib/pyeclib-1.7.0.ebuild
@@ -0,0 +1,40 @@
+# 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_{11..14} )
+
+inherit distutils-r1 optfeature pypi
+
+DESCRIPTION="Messaging API for RPC and notifications over different messaging transports"
+HOMEPAGE="
+ https://opendev.org/openstack/pyeclib/
+ https://pypi.org/project/pyeclib/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+DEPEND="
+ dev-libs/liberasurecode
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ test? (
+ dev-libs/isa-l
+ dev-libs/jerasure
+ )
+"
+
+distutils_enable_tests unittest
+
+pkg_postinst() {
+ optfeature "isa-l backend" dev-libs/isa-l
+ optfeature "jerasure backend" dev-libs/jerasure
+}
diff --git a/dev-python/pyelftools/pyelftools-0.32.ebuild b/dev-python/pyelftools/pyelftools-0.32.ebuild
index 141352b32895..ff177e0b8d7f 100644
--- a/dev-python/pyelftools/pyelftools-0.32.ebuild
+++ b/dev-python/pyelftools/pyelftools-0.32.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="public-domain"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
python_test() {
# readelf_tests often fails due to host `readelf` changing output format
diff --git a/dev-python/pyenchant/pyenchant-3.2.2-r1.ebuild b/dev-python/pyenchant/pyenchant-3.2.2-r1.ebuild
index f688aa1308f2..9955e6eb9eaf 100644
--- a/dev-python/pyenchant/pyenchant-3.2.2-r1.ebuild
+++ b/dev-python/pyenchant/pyenchant-3.2.2-r1.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="LGPL-2.1"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
app-text/enchant:*
diff --git a/dev-python/pyfakefs/pyfakefs-5.9.1.ebuild b/dev-python/pyfakefs/pyfakefs-5.9.1.ebuild
index b54a6a05533a..b637908127cc 100644
--- a/dev-python/pyfakefs/pyfakefs-5.9.1.ebuild
+++ b/dev-python/pyfakefs/pyfakefs-5.9.1.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"
distutils_enable_tests pytest
diff --git a/dev-python/pyflakes/pyflakes-3.4.0.ebuild b/dev-python/pyflakes/pyflakes-3.4.0.ebuild
index d420c5837a74..e9e82cc68a37 100644
--- a/dev-python/pyflakes/pyflakes-3.4.0.ebuild
+++ b/dev-python/pyflakes/pyflakes-3.4.0.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 ~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 ~ppc-macos ~x64-macos ~x64-solaris"
distutils_enable_tests pytest
diff --git a/dev-python/pyftpdlib/pyftpdlib-2.0.1.ebuild b/dev-python/pyftpdlib/pyftpdlib-2.0.1.ebuild
index 44fa27067ed4..2a8c24969df4 100644
--- a/dev-python/pyftpdlib/pyftpdlib-2.0.1.ebuild
+++ b/dev-python/pyftpdlib/pyftpdlib-2.0.1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
IUSE="examples ssl"
RDEPEND="
diff --git a/dev-python/pygithub/Manifest b/dev-python/pygithub/Manifest
index b7a3e0c5f9b5..4d14f348f2de 100644
--- a/dev-python/pygithub/Manifest
+++ b/dev-python/pygithub/Manifest
@@ -1,2 +1,3 @@
DIST pygithub-2.6.1.tar.gz 3659473 BLAKE2B b76acfe675de3a50dac235ec656e9bef01073aa470812af60ff1d1a3863b9b3c29ff85c05da5aa2b64ee722ad024be2e0e4c1109ddd1d0eb9b3f69c035a63a90 SHA512 884791ebab23bb98d2006592621a4fb2e207a63f2953a590ab653974c3e41c5a95aa5448468763d50125c2b378aaddb304e1b1f9824b9ed4360628f8b79ce6db
DIST pygithub-2.7.0.tar.gz 3707928 BLAKE2B 9b256c33c7c909ed687950d1b5389bebee949be781822ae5cfc772d45095a5b677128eb4e98c2902fc5a36e615d97c8310c1f130ac88a70f83659644f68b9fee SHA512 b0d43f526e1c2cbdbec96793c0495ba80ad0c408c0afe384a3dad6760440a10fa4dd9991a344d5be24be1d071b357880f710167c41db371506341cd17388b3fa
+DIST pygithub-2.8.1.tar.gz 2246994 BLAKE2B 6d54d87abdf20d4068efaff9117e005d970f2d60d52bc3d9d985ef4616004e09c72f27c870b89f506246af7cb9a73c5b9f1b2853e5f980f8f59e6e1f99e2594c SHA512 87724ebb922fe35867a23a56c59cc6fc56fd2a4c24129ebfdd06683797aa8398e68379b42a6fb73ebb0dae5e2e403cf9fb518c5738f156e40a76bea6661c2192
diff --git a/dev-python/pygithub/pygithub-2.7.0.ebuild b/dev-python/pygithub/pygithub-2.7.0.ebuild
index b0519bc55f07..1f1e8af0e93a 100644
--- a/dev-python/pygithub/pygithub-2.7.0.ebuild
+++ b/dev-python/pygithub/pygithub-2.7.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="LGPL-3+"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
+KEYWORDS="amd64 arm64 x86"
# cryptography via pyjwt[crypto]
RDEPEND="
diff --git a/dev-python/pygithub/pygithub-2.8.1.ebuild b/dev-python/pygithub/pygithub-2.8.1.ebuild
new file mode 100644
index 000000000000..9e0cc3d38e61
--- /dev/null
+++ b/dev-python/pygithub/pygithub-2.8.1.ebuild
@@ -0,0 +1,39 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_PN=PyGithub
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python library to access the Github API v3"
+HOMEPAGE="
+ https://github.com/PyGithub/PyGithub/
+ https://pypi.org/project/PyGithub/
+"
+
+LICENSE="LGPL-3+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+# cryptography via pyjwt[crypto]
+RDEPEND="
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ >=dev-python/pyjwt-2.4.0[${PYTHON_USEDEP}]
+ >=dev-python/pynacl-1.4.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.14.0[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.5.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ dev-python/responses[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-subtests )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
diff --git a/dev-python/pygments/pygments-2.19.2.ebuild b/dev-python/pygments/pygments-2.19.2.ebuild
index 08eb6d0adfc3..e9aece22d4a6 100644
--- a/dev-python/pygments/pygments-2.19.2.ebuild
+++ b/dev-python/pygments/pygments-2.19.2.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="BSD-2"
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="
test? (
diff --git a/dev-python/pygobject/pygobject-3.50.0.ebuild b/dev-python/pygobject/pygobject-3.50.0.ebuild
index 530a1abb604f..39c93938bd9d 100644
--- a/dev-python/pygobject/pygobject-3.50.0.ebuild
+++ b/dev-python/pygobject/pygobject-3.50.0.ebuild
@@ -15,7 +15,7 @@ HOMEPAGE="https://pygobject.gnome.org"
LICENSE="LGPL-2.1+"
SLOT="3"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="+cairo test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/pygobject/pygobject-3.50.1.ebuild b/dev-python/pygobject/pygobject-3.50.1.ebuild
index 9ff496735cba..a7355c38afb1 100644
--- a/dev-python/pygobject/pygobject-3.50.1.ebuild
+++ b/dev-python/pygobject/pygobject-3.50.1.ebuild
@@ -15,7 +15,7 @@ HOMEPAGE="https://pygobject.gnome.org"
LICENSE="LGPL-2.1+"
SLOT="3"
-KEYWORDS="~alpha amd64 arm ~arm64 hppa ~loong ~mips ~ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ~loong ~mips ~ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="+cairo test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/pyhamcrest/pyhamcrest-2.1.0.ebuild b/dev-python/pyhamcrest/pyhamcrest-2.1.0.ebuild
index 11a3788668bb..0c62126c82b4 100644
--- a/dev-python/pyhamcrest/pyhamcrest-2.1.0.ebuild
+++ b/dev-python/pyhamcrest/pyhamcrest-2.1.0.ebuild
@@ -22,7 +22,7 @@ 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 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
IUSE="examples"
BDEPEND="
diff --git a/dev-python/pyinotify/pyinotify-0.9.6-r1.ebuild b/dev-python/pyinotify/pyinotify-0.9.6-r1.ebuild
index 8e750ad8473b..bfdd44f6d120 100644
--- a/dev-python/pyinotify/pyinotify-0.9.6-r1.ebuild
+++ b/dev-python/pyinotify/pyinotify-0.9.6-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
IUSE="examples"
PATCHES=(
diff --git a/dev-python/pyjwt/pyjwt-2.10.1.ebuild b/dev-python/pyjwt/pyjwt-2.10.1.ebuild
index d828c1c7cf4b..a044f80599e5 100644
--- a/dev-python/pyjwt/pyjwt-2.10.1.ebuild
+++ b/dev-python/pyjwt/pyjwt-2.10.1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
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/python-jwt
diff --git a/dev-python/pylast/pylast-5.5.0.ebuild b/dev-python/pylast/pylast-5.5.0.ebuild
index 75f3a9d20c06..08eee4003f6a 100644
--- a/dev-python/pylast/pylast-5.5.0.ebuild
+++ b/dev-python/pylast/pylast-5.5.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~hppa ppc ppc64 ~riscv sparc x86"
+KEYWORDS="amd64 arm arm64 ~hppa ppc ppc64 ~riscv ~sparc x86"
RDEPEND="
dev-python/httpx[${PYTHON_USEDEP}]
diff --git a/dev-python/pylibacl/pylibacl-0.7.2.ebuild b/dev-python/pylibacl/pylibacl-0.7.2.ebuild
index 0594f4ce7948..4b3e37d72d75 100644
--- a/dev-python/pylibacl/pylibacl-0.7.2.ebuild
+++ b/dev-python/pylibacl/pylibacl-0.7.2.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="LGPL-2.1"
SLOT="0"
-KEYWORDS="~alpha amd64 arm ~arm64 ~mips ppc ppc64 sparc x86"
+KEYWORDS="~alpha amd64 arm ~arm64 ~mips ppc ppc64 ~sparc x86"
DEPEND="
sys-apps/acl
diff --git a/dev-python/pylibmc/pylibmc-1.6.3-r2.ebuild b/dev-python/pylibmc/pylibmc-1.6.3-r2.ebuild
index 534bf111cd39..405761c6c908 100644
--- a/dev-python/pylibmc/pylibmc-1.6.3-r2.ebuild
+++ b/dev-python/pylibmc/pylibmc-1.6.3-r2.ebuild
@@ -22,7 +22,7 @@ SRC_URI="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 x86"
IUSE="sasl"
DEPEND="
diff --git a/dev-python/pylint/pylint-3.3.7.ebuild b/dev-python/pylint/pylint-3.3.7.ebuild
index d9b8ba91fa2f..49f3d31e481e 100644
--- a/dev-python/pylint/pylint-3.3.7.ebuild
+++ b/dev-python/pylint/pylint-3.3.7.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/pylsqpack/pylsqpack-0.3.22.ebuild b/dev-python/pylsqpack/pylsqpack-0.3.22.ebuild
index 6cab0cf2ca6b..169d6659d6fe 100644
--- a/dev-python/pylsqpack/pylsqpack-0.3.22.ebuild
+++ b/dev-python/pylsqpack/pylsqpack-0.3.22.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 ~arm64"
+KEYWORDS="amd64 ~arm ~arm64 ~x86"
distutils_enable_tests pytest
diff --git a/dev-python/pymongo/pymongo-4.11.3.ebuild b/dev-python/pymongo/pymongo-4.11.3.ebuild
index ee78c1cfaf3e..c09f77ca58f9 100644
--- a/dev-python/pymongo/pymongo-4.11.3.ebuild
+++ b/dev-python/pymongo/pymongo-4.11.3.ebuild
@@ -23,7 +23,7 @@ S=${WORKDIR}/${MY_P}
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="doc kerberos +native-extensions +test-full"
RDEPEND="
diff --git a/dev-python/pymongo/pymongo-4.13.2.ebuild b/dev-python/pymongo/pymongo-4.13.2.ebuild
index 46a440660996..7386e92320bf 100644
--- a/dev-python/pymongo/pymongo-4.13.2.ebuild
+++ b/dev-python/pymongo/pymongo-4.13.2.ebuild
@@ -23,7 +23,7 @@ S=${WORKDIR}/${MY_P}
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="doc kerberos +native-extensions +test-full"
RDEPEND="
diff --git a/dev-python/pynacl/pynacl-1.5.0-r3.ebuild b/dev-python/pynacl/pynacl-1.5.0-r3.ebuild
index f739647615e5..e035079f85ff 100644
--- a/dev-python/pynacl/pynacl-1.5.0-r3.ebuild
+++ b/dev-python/pynacl/pynacl-1.5.0-r3.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
DEPEND="
dev-libs/libsodium:=
diff --git a/dev-python/pynacl/pynacl-1.5.0-r4.ebuild b/dev-python/pynacl/pynacl-1.5.0-r4.ebuild
index 692af2fc650c..3a25fa213869 100644
--- a/dev-python/pynacl/pynacl-1.5.0-r4.ebuild
+++ b/dev-python/pynacl/pynacl-1.5.0-r4.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
DEPEND="
dev-libs/libsodium:=
diff --git a/dev-python/pynput/Manifest b/dev-python/pynput/Manifest
index 42a186bc9f38..b5e74eac5ab4 100644
--- a/dev-python/pynput/Manifest
+++ b/dev-python/pynput/Manifest
@@ -1 +1,2 @@
DIST pynput-1.7.6.tar.gz 79501 BLAKE2B cb356271ef0688ff6532fb79b858c10fb3a52abc4f6db5f4758948cb16f01e96e9377894ea211952b58f5ff6d997ceeec9ba51a29aef866e65cd83900a9894ae SHA512 66639096a83b7ea7c926bfab67ef6c54b913fc4ffe5814bbc4ace6e4d298237a3623066f4f5c08a2bcf1cc5e40d18dc35b77c18afbd0d00b7b4bf4ed2233d9ff
+DIST pynput-1.8.1.tar.gz 82289 BLAKE2B 07338c7d3f755af103d0f61874d536a0444cdddf0c3a450e51cf87e1375943fffcf20a747f25b2ca53365250e8e09d403421cf658077603b7c86a9e5794d3bd6 SHA512 4f28bbc908a4ecbfb8ef1d5b222ddc36269fe2f6361a45609afd60196eb05474569efd2267ae2028abfb85eae6825cea6215351974419ca640c7e069e6983132
diff --git a/dev-python/pynput/files/patches/uinput.patch b/dev-python/pynput/files/patches/uinput.patch
new file mode 100644
index 000000000000..a464b02af0c9
--- /dev/null
+++ b/dev-python/pynput/files/patches/uinput.patch
@@ -0,0 +1,37 @@
+diff --git a/lib/pynput/_util/uinput.py b/lib/pynput/_util/uinput.py
+index b0a6a78..c891b83 100644
+--- a/lib/pynput/_util/uinput.py
++++ b/lib/pynput/_util/uinput.py
+@@ -72,6 +72,14 @@ def _device(self, paths):
+ except OSError:
+ continue
+
++ # Some programmable mouse devices report each programmable input as
++ # a separate capability, so it is possible for a mouse to exceed
++ # keyboards in capability count; for this reason we will prefer a
++ # device with "keyboard" in its name
++ if 'keyboard' in next_dev.name.lower():
++ dev = next_dev
++ break
++
+ # Does this device provide more handled event codes?
+ capabilities = next_dev.capabilities()
+ next_count = sum(
+diff --git a/lib/pynput/keyboard/_uinput.py b/lib/pynput/keyboard/_uinput.py
+index 2f63dd3..747d19d 100644
+--- a/lib/pynput/keyboard/_uinput.py
++++ b/lib/pynput/keyboard/_uinput.py
+@@ -204,10 +204,10 @@ def as_char(k):
+ as_char(key): (
+ vk,
+ set()
+- | {Key.shift} if i & 1 else set()
+- | {Key.alt_gr} if i & 2 else set())
++ | ({Key.shift} if i & 1 else set())
++ | ({Key.alt_gr} if i & 2 else set()))
+ for vk, keys in self._vk_table.items()
+- for i, key in enumerate(keys)
++ for i, key in reversed(list(enumerate(keys)))
+ if key is not None and as_char(key) is not None}
+
+ def for_vk(self, vk, modifiers):
diff --git a/dev-python/pynput/files/patches/wheel.patch b/dev-python/pynput/files/patches/wheel.patch
new file mode 100644
index 000000000000..064b21ce5fe9
--- /dev/null
+++ b/dev-python/pynput/files/patches/wheel.patch
@@ -0,0 +1,11 @@
+diff --git a/setup.cfg b/setup.cfg
+index 99723b7..8ae701e 100644
+--- a/setup.cfg
++++ b/setup.cfg
+@@ -1,6 +1,3 @@
+-[bdist_wheel]
+-universal = 1
+-
+ [build_sphinx]
+ source-dir = docs
+ build-dir = build/docs
diff --git a/dev-python/pynput/pynput-1.8.1.ebuild b/dev-python/pynput/pynput-1.8.1.ebuild
new file mode 100644
index 000000000000..21ac12c2c518
--- /dev/null
+++ b/dev-python/pynput/pynput-1.8.1.ebuild
@@ -0,0 +1,28 @@
+# Copyright 2021-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="Sends virtual input commands"
+HOMEPAGE="https://github.com/moses-palmer/pynput https://pypi.org/project/pynput"
+RDEPEND="
+ dev-python/evdev[${PYTHON_USEDEP}]
+ X? ( dev-python/python-xlib[${PYTHON_USEDEP}] )
+ dev-python/six[${PYTHON_USEDEP}]
+"
+
+LICENSE="LGPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+IUSE="X"
+
+PATCHES=(
+ # issue # 657
+ "${FILESDIR}/patches/uinput.patch"
+ # Remove deprecated bdist_wheel.universal
+ "${FILESDIR}/patches/wheel.patch"
+)
diff --git a/dev-python/pyopenssl/pyopenssl-25.1.0.ebuild b/dev-python/pyopenssl/pyopenssl-25.1.0.ebuild
index 203b12568aa2..4bc13b6bca48 100644
--- a/dev-python/pyopenssl/pyopenssl-25.1.0.ebuild
+++ b/dev-python/pyopenssl/pyopenssl-25.1.0.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="Apache-2.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"
RDEPEND="
<dev-python/cryptography-46[${PYTHON_USEDEP}]
diff --git a/dev-python/pyparsing/pyparsing-3.2.3.ebuild b/dev-python/pyparsing/pyparsing-3.2.3.ebuild
index cf9bfb28b161..60b7bf6f9aae 100644
--- a/dev-python/pyparsing/pyparsing-3.2.3.ebuild
+++ b/dev-python/pyparsing/pyparsing-3.2.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 ~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="examples"
distutils_enable_tests pytest
diff --git a/dev-python/pyparted/pyparted-3.13.0.ebuild b/dev-python/pyparted/pyparted-3.13.0.ebuild
index bb0fa19a5bf3..e079e3a0d085 100644
--- a/dev-python/pyparted/pyparted-3.13.0.ebuild
+++ b/dev-python/pyparted/pyparted-3.13.0.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="GPL-2+"
SLOT="0"
-KEYWORDS="~alpha amd64 ~hppa ppc ppc64 sparc x86"
+KEYWORDS="~alpha amd64 ~hppa ppc ppc64 ~sparc x86"
DEPEND="
>=sys-block/parted-3.4
diff --git a/dev-python/pypax/pypax-0.9.5-r2.ebuild b/dev-python/pypax/pypax-0.9.5-r2.ebuild
index e54b191f5208..36bd084ca5e3 100644
--- a/dev-python/pypax/pypax-0.9.5-r2.ebuild
+++ b/dev-python/pypax/pypax-0.9.5-r2.ebuild
@@ -14,7 +14,7 @@ if [[ ${PV} == *9999* ]] ; then
inherit git-r3
else
SRC_URI="https://dev.gentoo.org/~blueness/elfix/elfix-${PV}.tar.gz"
- KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv sparc x86"
+ KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~sparc x86"
S="${WORKDIR}/elfix-${PV}"
fi
diff --git a/dev-python/pypax/pypax-9999.ebuild b/dev-python/pypax/pypax-9999.ebuild
index 5f8f6264e6e9..e3e4fb261fd9 100644
--- a/dev-python/pypax/pypax-9999.ebuild
+++ b/dev-python/pypax/pypax-9999.ebuild
@@ -14,7 +14,7 @@ if [[ ${PV} == *9999* ]] ; then
inherit git-r3
else
SRC_URI="https://dev.gentoo.org/~blueness/elfix/elfix-${PV}.tar.gz"
- KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv sparc x86"
+ KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv ~sparc x86"
S="${WORKDIR}/elfix-${PV}"
fi
diff --git a/dev-python/pyperclip/pyperclip-1.9.0.ebuild b/dev-python/pyperclip/pyperclip-1.9.0.ebuild
index b65bac9c07d9..58c31044b9dd 100644
--- a/dev-python/pyperclip/pyperclip-1.9.0.ebuild
+++ b/dev-python/pyperclip/pyperclip-1.9.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ~ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ~ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
|| (
diff --git a/dev-python/pypiserver/pypiserver-2.3.2-r1.ebuild b/dev-python/pypiserver/pypiserver-2.3.2-r1.ebuild
index df5226277828..dd5d87ff2ac3 100644
--- a/dev-python/pypiserver/pypiserver-2.3.2-r1.ebuild
+++ b/dev-python/pypiserver/pypiserver-2.3.2-r1.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="ZLIB"
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"
RDEPEND="
dev-python/bottle[${PYTHON_USEDEP}]
diff --git a/dev-python/pyproject-api/pyproject-api-1.9.1.ebuild b/dev-python/pyproject-api/pyproject-api-1.9.1.ebuild
index e55932406c67..73cefa6b33cf 100644
--- a/dev-python/pyproject-api/pyproject-api-1.9.1.ebuild
+++ b/dev-python/pyproject-api/pyproject-api-1.9.1.ebuild
@@ -16,7 +16,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"
RDEPEND="
>=dev-python/packaging-25[${PYTHON_USEDEP}]
diff --git a/dev-python/pyproject-fmt/pyproject-fmt-2.5.1.ebuild b/dev-python/pyproject-fmt/pyproject-fmt-2.5.1.ebuild
index 8f4a6d31b3a8..406a9db41a75 100644
--- a/dev-python/pyproject-fmt/pyproject-fmt-2.5.1.ebuild
+++ b/dev-python/pyproject-fmt/pyproject-fmt-2.5.1.ebuild
@@ -134,7 +134,7 @@ LICENSE+="
|| ( Apache-2.0 Boost-1.0 )
"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
~dev-python/toml-fmt-common-1.0.1[${PYTHON_USEDEP}]
diff --git a/dev-python/pyproject-fmt/pyproject-fmt-2.6.0.ebuild b/dev-python/pyproject-fmt/pyproject-fmt-2.6.0.ebuild
index 339308b53113..e996b72a16cd 100644
--- a/dev-python/pyproject-fmt/pyproject-fmt-2.6.0.ebuild
+++ b/dev-python/pyproject-fmt/pyproject-fmt-2.6.0.ebuild
@@ -152,7 +152,7 @@ LICENSE+="
|| ( Apache-2.0 Boost-1.0 )
"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
~dev-python/toml-fmt-common-1.0.1[${PYTHON_USEDEP}]
diff --git a/dev-python/pyproject-hooks/pyproject-hooks-1.2.0.ebuild b/dev-python/pyproject-hooks/pyproject-hooks-1.2.0.ebuild
index 6831274f7dbc..c50f49dcb1e6 100644
--- a/dev-python/pyproject-hooks/pyproject-hooks-1.2.0.ebuild
+++ b/dev-python/pyproject-hooks/pyproject-hooks-1.2.0.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
BDEPEND="
test? (
diff --git a/dev-python/pyproject-metadata/pyproject-metadata-0.9.1.ebuild b/dev-python/pyproject-metadata/pyproject-metadata-0.9.1.ebuild
index bf3593517b4c..e4371373ec3d 100644
--- a/dev-python/pyproject-metadata/pyproject-metadata-0.9.1.ebuild
+++ b/dev-python/pyproject-metadata/pyproject-metadata-0.9.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 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
RDEPEND="
>=dev-python/packaging-19[${PYTHON_USEDEP}]
diff --git a/dev-python/pyquery/pyquery-2.0.1.ebuild b/dev-python/pyquery/pyquery-2.0.1.ebuild
index 140743f2fcdf..559fb18e3429 100644
--- a/dev-python/pyquery/pyquery-2.0.1.ebuild
+++ b/dev-python/pyquery/pyquery-2.0.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
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"
RDEPEND="
>=dev-python/lxml-2.1[${PYTHON_USEDEP}]
diff --git a/dev-python/pyrsistent/pyrsistent-0.20.0.ebuild b/dev-python/pyrsistent/pyrsistent-0.20.0.ebuild
index 2257d48d8e92..e34e28e94d9a 100644
--- a/dev-python/pyrsistent/pyrsistent-0.20.0.ebuild
+++ b/dev-python/pyrsistent/pyrsistent-0.20.0.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 ~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="+native-extensions"
BDEPEND="
diff --git a/dev-python/pyscard/pyscard-2.3.0.ebuild b/dev-python/pyscard/pyscard-2.3.0.ebuild
index 02f9190ea901..21ede4943e6d 100644
--- a/dev-python/pyscard/pyscard-2.3.0.ebuild
+++ b/dev-python/pyscard/pyscard-2.3.0.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="LGPL-2.1"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~amd64 arm arm64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc x86"
DEPEND="
sys-apps/pcsc-lite
diff --git a/dev-python/pyserial/pyserial-3.5-r2.ebuild b/dev-python/pyserial/pyserial-3.5-r2.ebuild
index 6936eee62e21..c15e596d4dde 100644
--- a/dev-python/pyserial/pyserial-3.5-r2.ebuild
+++ b/dev-python/pyserial/pyserial-3.5-r2.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
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="examples"
DOCS=( CHANGES.rst README.rst )
diff --git a/dev-python/pysocks/pysocks-1.7.1-r2.ebuild b/dev-python/pysocks/pysocks-1.7.1-r2.ebuild
index f6570123b170..cdbe84a52456 100644
--- a/dev-python/pysocks/pysocks-1.7.1-r2.ebuild
+++ b/dev-python/pysocks/pysocks-1.7.1-r2.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
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"
+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"
# tests are broken beyond repair and the package is no longer maintained
RESTRICT="test"
diff --git a/dev-python/pyspnego/Manifest b/dev-python/pyspnego/Manifest
index cbb514fe5323..becdb5458648 100644
--- a/dev-python/pyspnego/Manifest
+++ b/dev-python/pyspnego/Manifest
@@ -1 +1,2 @@
DIST pyspnego-0.11.2.tar.gz 225954 BLAKE2B 58a2f17a74805ae68cd49b382e2185b6d9e4920e8be7d672efff3258e37d2b8adb56092c5bfbcbb02b7106ad039e08394d60e389dac930a1fff7d4f85e353512 SHA512 6e2a16b538d5c078842db1629628b13257a900c51778b9186f4edff33b4e932eaff2a8ccad41b50a8a89118283059fc716cfc92dfe423ed1ead1a22e6a172a9c
+DIST pyspnego-0.12.0.tar.gz 225764 BLAKE2B 06abe5628ee0f92fb5b6a752d301a592639c3a1e6b33445465cba8cf42380adba6ceb1f47e11e1f48995b09874659e28d7db619d0eb13c1d3ab0a05948bc7c31 SHA512 0fb6d0c7f07a9ed0ab10ea5bf771acb7b99d91c6f3031faa5451520004fcc6868751f86725a3b8a75078d6396ffae60669a40fca46f24853587922d01ae76e52
diff --git a/dev-python/pyspnego/pyspnego-0.12.0.ebuild b/dev-python/pyspnego/pyspnego-0.12.0.ebuild
new file mode 100644
index 000000000000..f4106aed73ab
--- /dev/null
+++ b/dev-python/pyspnego/pyspnego-0.12.0.ebuild
@@ -0,0 +1,38 @@
+# 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_{11..14} )
+
+inherit distutils-r1 optfeature pypi
+
+DESCRIPTION="Library to handle SPNEGO and CredSSP authentication"
+HOMEPAGE="
+ https://github.com/jborean93/pyspnego/
+ https://pypi.org/project/pyspnego/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+
+RDEPEND="
+ dev-python/cryptography[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/gssapi[${PYTHON_USEDEP}]
+ >=dev-python/krb5-0.3.0[${PYTHON_USEDEP}]
+ dev-python/ruamel-yaml[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-mock )
+distutils_enable_tests pytest
+
+pkg_postinst() {
+ optfeature "Kerberos authentication" "dev-python/gssapi >=dev-python/krb5-0.3.0"
+ optfeature "YAML output support" "dev-python/ruamel-yaml"
+}
diff --git a/dev-python/pytest-aiohttp/pytest-aiohttp-1.1.0.ebuild b/dev-python/pytest-aiohttp/pytest-aiohttp-1.1.0.ebuild
index 2b4d03453683..23ded425c963 100644
--- a/dev-python/pytest-aiohttp/pytest-aiohttp-1.1.0.ebuild
+++ b/dev-python/pytest-aiohttp/pytest-aiohttp-1.1.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
RDEPEND="
>=dev-python/aiohttp-3.11.0_beta1[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-asyncio/pytest-asyncio-0.26.0.ebuild b/dev-python/pytest-asyncio/pytest-asyncio-0.26.0.ebuild
index 090866164ab2..a17969b0a2b9 100644
--- a/dev-python/pytest-asyncio/pytest-asyncio-0.26.0.ebuild
+++ b/dev-python/pytest-asyncio/pytest-asyncio-0.26.0.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 ~x64-macos"
+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}]
diff --git a/dev-python/pytest-asyncio/pytest-asyncio-1.0.0.ebuild b/dev-python/pytest-asyncio/pytest-asyncio-1.0.0.ebuild
index 5b3429ea01bb..0db39772cdbb 100644
--- a/dev-python/pytest-asyncio/pytest-asyncio-1.0.0.ebuild
+++ b/dev-python/pytest-asyncio/pytest-asyncio-1.0.0.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 ~x64-macos"
+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}]
diff --git a/dev-python/pytest-asyncio/pytest-asyncio-1.1.0.ebuild b/dev-python/pytest-asyncio/pytest-asyncio-1.1.0.ebuild
index 555734406b95..ef6dc9aca676 100644
--- a/dev-python/pytest-asyncio/pytest-asyncio-1.1.0.ebuild
+++ b/dev-python/pytest-asyncio/pytest-asyncio-1.1.0.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 ~x64-macos"
+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}]
diff --git a/dev-python/pytest-check/pytest-check-2.5.3.ebuild b/dev-python/pytest-check/pytest-check-2.5.3.ebuild
index 81e4b9debfca..52ac58fb3032 100644
--- a/dev-python/pytest-check/pytest-check-2.5.3.ebuild
+++ b/dev-python/pytest-check/pytest-check-2.5.3.ebuild
@@ -16,7 +16,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"
RDEPEND="
>=dev-python/pytest-7.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-console-scripts/pytest-console-scripts-1.4.1.ebuild b/dev-python/pytest-console-scripts/pytest-console-scripts-1.4.1.ebuild
index f4a2c01a390c..6958cbd30eb6 100644
--- a/dev-python/pytest-console-scripts/pytest-console-scripts-1.4.1.ebuild
+++ b/dev-python/pytest-console-scripts/pytest-console-scripts-1.4.1.ebuild
@@ -14,7 +14,7 @@ HOMEPAGE="https://github.com/kvas-it/pytest-console-scripts"
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/pytest-4.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-cov/pytest-cov-6.2.0.ebuild b/dev-python/pytest-cov/pytest-cov-6.2.0.ebuild
index ba4830f81b58..272b55eb62e0 100644
--- a/dev-python/pytest-cov/pytest-cov-6.2.0.ebuild
+++ b/dev-python/pytest-cov/pytest-cov-6.2.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/py-1.4.22[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-datadir/pytest-datadir-1.7.2.ebuild b/dev-python/pytest-datadir/pytest-datadir-1.7.2.ebuild
index 57698d91c52f..9e3eb91b3ef6 100644
--- a/dev-python/pytest-datadir/pytest-datadir-1.7.2.ebuild
+++ b/dev-python/pytest-datadir/pytest-datadir-1.7.2.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/pytest-7.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-django/pytest-django-4.11.1.ebuild b/dev-python/pytest-django/pytest-django-4.11.1.ebuild
index 2b5deeaa9f07..eef01d722bfb 100644
--- a/dev-python/pytest-django/pytest-django-4.11.1.ebuild
+++ b/dev-python/pytest-django/pytest-django-4.11.1.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="BSD"
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-7.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-expect/pytest-expect-1.1.0-r2.ebuild b/dev-python/pytest-expect/pytest-expect-1.1.0-r2.ebuild
index 5a0e90a8eb81..00240341b226 100644
--- a/dev-python/pytest-expect/pytest-expect-1.1.0-r2.ebuild
+++ b/dev-python/pytest-expect/pytest-expect-1.1.0-r2.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
# no tests
RESTRICT="test"
diff --git a/dev-python/pytest-forked/pytest-forked-1.6.0.ebuild b/dev-python/pytest-forked/pytest-forked-1.6.0.ebuild
index 4fdc8de18a5d..8e80fb8ab9f9 100644
--- a/dev-python/pytest-forked/pytest-forked-1.6.0.ebuild
+++ b/dev-python/pytest-forked/pytest-forked-1.6.0.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
# Please do not RDEPEND on pytest; this package won't do anything
# without pytest installed, and there is no reason to force older
diff --git a/dev-python/pytest-freezer/pytest-freezer-0.4.9.ebuild b/dev-python/pytest-freezer/pytest-freezer-0.4.9.ebuild
index c63eaf86ad4c..6d9acae41650 100644
--- a/dev-python/pytest-freezer/pytest-freezer-0.4.9.ebuild
+++ b/dev-python/pytest-freezer/pytest-freezer-0.4.9.ebuild
@@ -16,7 +16,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"
RDEPEND="
>=dev-python/freezegun-1.1[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-home/pytest-home-0.6.0.ebuild b/dev-python/pytest-home/pytest-home-0.6.0.ebuild
index b400556c962a..137f85e5dd44 100644
--- a/dev-python/pytest-home/pytest-home-0.6.0.ebuild
+++ b/dev-python/pytest-home/pytest-home-0.6.0.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/pytest[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-httpbin/pytest-httpbin-2.1.0.ebuild b/dev-python/pytest-httpbin/pytest-httpbin-2.1.0.ebuild
index 87a67a29add7..a93c4d2d4ac1 100644
--- a/dev-python/pytest-httpbin/pytest-httpbin-2.1.0.ebuild
+++ b/dev-python/pytest-httpbin/pytest-httpbin-2.1.0.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
RDEPEND="
dev-python/httpbin[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-httpserver/pytest-httpserver-1.1.3.ebuild b/dev-python/pytest-httpserver/pytest-httpserver-1.1.3.ebuild
index 3afe80995b1a..25f33589b043 100644
--- a/dev-python/pytest-httpserver/pytest-httpserver-1.1.3.ebuild
+++ b/dev-python/pytest-httpserver/pytest-httpserver-1.1.3.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/werkzeug[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-import-check/pytest-import-check-0.0.4.ebuild b/dev-python/pytest-import-check/pytest-import-check-0.0.4.ebuild
index a788b589de26..7c2838731b56 100644
--- a/dev-python/pytest-import-check/pytest-import-check-0.0.4.ebuild
+++ b/dev-python/pytest-import-check/pytest-import-check-0.0.4.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
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"
RDEPEND="
>=dev-python/pytest-8.1[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-jupyter/pytest-jupyter-0.10.1.ebuild b/dev-python/pytest-jupyter/pytest-jupyter-0.10.1.ebuild
index 650ddc8caa43..32460e3686a9 100644
--- a/dev-python/pytest-jupyter/pytest-jupyter-0.10.1.ebuild
+++ b/dev-python/pytest-jupyter/pytest-jupyter-0.10.1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/ipykernel-6.14[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-lazy-fixtures/pytest-lazy-fixtures-1.3.2.ebuild b/dev-python/pytest-lazy-fixtures/pytest-lazy-fixtures-1.3.2.ebuild
index 619ad526f22e..e54b203144b0 100644
--- a/dev-python/pytest-lazy-fixtures/pytest-lazy-fixtures-1.3.2.ebuild
+++ b/dev-python/pytest-lazy-fixtures/pytest-lazy-fixtures-1.3.2.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~mips ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~mips ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/pytest-7[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-localserver/pytest-localserver-0.9.0_p0.ebuild b/dev-python/pytest-localserver/pytest-localserver-0.9.0_p0.ebuild
index 78f346ec5d2e..c1e3925bf87b 100644
--- a/dev-python/pytest-localserver/pytest-localserver-0.9.0_p0.ebuild
+++ b/dev-python/pytest-localserver/pytest-localserver-0.9.0_p0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~m68k ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
RDEPEND="
>=dev-python/werkzeug-0.10[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-mock/Manifest b/dev-python/pytest-mock/Manifest
index cdbfe857e5b0..d0ad20fa7ccc 100644
--- a/dev-python/pytest-mock/Manifest
+++ b/dev-python/pytest-mock/Manifest
@@ -1 +1,2 @@
DIST pytest_mock-3.14.1.tar.gz 33241 BLAKE2B bfc638313f3169e2eb5ed69d6eaa89742cc43a39b51c2d41860848f03bbdcd062749294526cb555fafb99fadc4c566ed6cf96baf2491b74d0aec69f9d793c9ff SHA512 fff44e9520ce5cb55f259f60af5a9cc2c114e0b94d9493cd87381fc0939cfa89a6370304369ab2e5b06b3437c7525175860d35e526c2e9c84f01c0e47bab9cf9
+DIST pytest_mock-3.15.0.tar.gz 33838 BLAKE2B 3830a747e7e35fbf4a696ce131406606808d230547ffbdc0dbaf8c4aac2e05ee7a73143c6b364deaa017cf70b2be04c44ccd9755f49fec195f2ec87d31a75409 SHA512 4687b94b6e68e18c2f44244b7200a80689fffca94f8d5f18aa75541496e20fd547c8f8b530af3cfffd3872c3c7b386a1070a2a16d2d11c4ce5504e65e30795ca
diff --git a/dev-python/pytest-mock/pytest-mock-3.14.1.ebuild b/dev-python/pytest-mock/pytest-mock-3.14.1.ebuild
index e588e28a3c10..f7d0f447f756 100644
--- a/dev-python/pytest-mock/pytest-mock-3.14.1.ebuild
+++ b/dev-python/pytest-mock/pytest-mock-3.14.1.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 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
RDEPEND="
>=dev-python/pytest-6.2.5[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-mock/pytest-mock-3.15.0.ebuild b/dev-python/pytest-mock/pytest-mock-3.15.0.ebuild
new file mode 100644
index 000000000000..46eacc1f462d
--- /dev/null
+++ b/dev-python/pytest-mock/pytest-mock-3.15.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_TESTED=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Thin-wrapper around the mock package for easier use with pytest"
+HOMEPAGE="
+ https://github.com/pytest-dev/pytest-mock/
+ https://pypi.org/project/pytest-mock/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/pytest-6.2.5[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ $(python_gen_cond_dep '
+ dev-python/pytest-asyncio[${PYTHON_USEDEP}]
+ ' "${PYTHON_TESTED[@]}")
+ )
+"
+
+python_test() {
+ if ! has "${EPYTHON/./_}" "${PYTHON_TESTED[@]}"; then
+ einfo "Skipping tests on ${EPYTHON}"
+ return
+ fi
+
+ local EPYTEST_PLUGINS=( "${PN}" pytest-asyncio )
+ local EPYTEST_PLUGIN_LOAD_VIA_ENV=1
+ local EPYTEST_DESELECT=()
+
+ if has_version dev-python/mock; then
+ EPYTEST_DESELECT+=(
+ tests/test_pytest_mock.py::test_standalone_mock
+ )
+ fi
+
+ epytest --assert=plain
+}
diff --git a/dev-python/pytest-ordering/pytest-ordering-0.6-r1.ebuild b/dev-python/pytest-ordering/pytest-ordering-0.6-r1.ebuild
index 37b8bc39ef96..56fbba173af6 100644
--- a/dev-python/pytest-ordering/pytest-ordering-0.6-r1.ebuild
+++ b/dev-python/pytest-ordering/pytest-ordering-0.6-r1.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
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"
RDEPEND="
dev-python/pytest[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-param-files/pytest-param-files-0.6.0.ebuild b/dev-python/pytest-param-files/pytest-param-files-0.6.0.ebuild
index a16ad52c8fe1..01b01ec64c4e 100644
--- a/dev-python/pytest-param-files/pytest-param-files-0.6.0.ebuild
+++ b/dev-python/pytest-param-files/pytest-param-files-0.6.0.ebuild
@@ -20,7 +20,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"
RDEPEND="
dev-python/pytest[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-regressions/pytest-regressions-2.8.1.ebuild b/dev-python/pytest-regressions/pytest-regressions-2.8.1.ebuild
index e33e8dfeb36c..82d24b8fbe33 100644
--- a/dev-python/pytest-regressions/pytest-regressions-2.8.1.ebuild
+++ b/dev-python/pytest-regressions/pytest-regressions-2.8.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/pytest[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-rerunfailures/Manifest b/dev-python/pytest-rerunfailures/Manifest
index cad53a470734..bdc227c4cb28 100644
--- a/dev-python/pytest-rerunfailures/Manifest
+++ b/dev-python/pytest-rerunfailures/Manifest
@@ -1,2 +1,3 @@
DIST pytest_rerunfailures-15.1.tar.gz 26981 BLAKE2B 78413183180edccbd9be6ca85ef05be7a1cce96470cf086a056b21231f84a9c7af4a3923fcb18f2081f14e53f6aea7a97807f7c311323cd5b99ff740c9aefedd SHA512 6344d625829038978f9cf224d59d3de07b1afcc6dcea578b22cdff8faefdbcacfaa54d6fc142351f9f5af6bacf6c2bda0e3f62013439b0276e1d48d6c30e8fe0
+DIST pytest_rerunfailures-16.0.1.tar.gz 27612 BLAKE2B 4b0271ae5158fbc44d770c5fc46d9e27cf456a70fa54c1f194fce71b97b786c625a56f5cbb2c3e74a14207b1817e1e026ac0f2743f4d7a75d39d467763eb97bb SHA512 2c8c95c451ffbf86f99ff5862c75bf45b754e68e1e41d5cdd65ceead4e7619637ad1ec75c0c7c0efab1f842ee8544ea7d68b17912acfccf8da573a9365d88bd5
DIST pytest_rerunfailures-16.0.tar.gz 28338 BLAKE2B ea90b0fb1fc3aee61f58b475b6ad53f646fcd5fe27233073104124f71e2d44d32381cb130563c3766c7b446328b12c5602b7130ce3b513436bd856d982074126 SHA512 30eb96a1cd442544a99653c4f0291909f330c5beb6a8b29e115bb63db68a35dda1587d093f641b253535503e41bb6282808e8e9583741861dbd27b36d0f1339a
diff --git a/dev-python/pytest-rerunfailures/pytest-rerunfailures-15.1.ebuild b/dev-python/pytest-rerunfailures/pytest-rerunfailures-15.1.ebuild
index 14d3e96857e3..320326dfd4fc 100644
--- a/dev-python/pytest-rerunfailures/pytest-rerunfailures-15.1.ebuild
+++ b/dev-python/pytest-rerunfailures/pytest-rerunfailures-15.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MPL-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
RDEPEND="
>=dev-python/packaging-17.1[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-rerunfailures/pytest-rerunfailures-16.0.1.ebuild b/dev-python/pytest-rerunfailures/pytest-rerunfailures-16.0.1.ebuild
new file mode 100644
index 000000000000..6741207a6414
--- /dev/null
+++ b/dev-python/pytest-rerunfailures/pytest-rerunfailures-16.0.1.ebuild
@@ -0,0 +1,28 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="pytest plugin to re-run tests to eliminate flaky failures"
+HOMEPAGE="
+ https://github.com/pytest-dev/pytest-rerunfailures/
+ https://pypi.org/project/pytest-rerunfailures/
+"
+
+LICENSE="MPL-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ >=dev-python/packaging-17.1[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGIN_LOAD_VIA_ENV=1
+EPYTEST_PLUGINS=( "${PN}" )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
diff --git a/dev-python/pytest-services/pytest-services-2.2.2.ebuild b/dev-python/pytest-services/pytest-services-2.2.2.ebuild
index e2eb8ca323c9..a03a4db591af 100644
--- a/dev-python/pytest-services/pytest-services-2.2.2.ebuild
+++ b/dev-python/pytest-services/pytest-services-2.2.2.ebuild
@@ -20,7 +20,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"
RDEPEND="
dev-python/requests[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-subprocess/pytest-subprocess-1.5.3.ebuild b/dev-python/pytest-subprocess/pytest-subprocess-1.5.3.ebuild
index 56741328b7b3..b38923dafe63 100644
--- a/dev-python/pytest-subprocess/pytest-subprocess-1.5.3.ebuild
+++ b/dev-python/pytest-subprocess/pytest-subprocess-1.5.3.ebuild
@@ -20,7 +20,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"
RDEPEND="
>=dev-python/pytest-4.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-subtests/pytest-subtests-0.14.2.ebuild b/dev-python/pytest-subtests/pytest-subtests-0.14.2.ebuild
index 051dad30f3ec..d8bc2dce1d8c 100644
--- a/dev-python/pytest-subtests/pytest-subtests-0.14.2.ebuild
+++ b/dev-python/pytest-subtests/pytest-subtests-0.14.2.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/attrs-19.2.0[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-testinfra/pytest-testinfra-10.2.2.ebuild b/dev-python/pytest-testinfra/pytest-testinfra-10.2.2.ebuild
index 6770d7f50ea6..787fcfbded89 100644
--- a/dev-python/pytest-testinfra/pytest-testinfra-10.2.2.ebuild
+++ b/dev-python/pytest-testinfra/pytest-testinfra-10.2.2.ebuild
@@ -4,7 +4,7 @@
EAPI=8
DISTUTILS_USE_PEP517=hatchling
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_COMPAT=( python3_{11..14} )
inherit distutils-r1 pypi
@@ -31,13 +31,13 @@ BDEPEND="
)
"
+EPYTEST_PLUGINS=()
distutils_enable_tests pytest
export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
python_test() {
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- local -x EPYTEST_DESELECT=()
+ local EPYTEST_DESELECT=()
# This is the only test which actually fails if salt cannot be imported
if ! has_version "dev-python/salt[${PYTHON_USEDEP}]"; then
diff --git a/dev-python/pytest-timeout/pytest-timeout-2.4.0.ebuild b/dev-python/pytest-timeout/pytest-timeout-2.4.0.ebuild
index e36012915295..7eb564510c08 100644
--- a/dev-python/pytest-timeout/pytest-timeout-2.4.0.ebuild
+++ b/dev-python/pytest-timeout/pytest-timeout-2.4.0.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
# do not rdepend on pytest, it won't be used without it anyway
# pytest-cov used to test compatibility
diff --git a/dev-python/pytest-tornasync/pytest-tornasync-0.6.0_p2-r1.ebuild b/dev-python/pytest-tornasync/pytest-tornasync-0.6.0_p2-r1.ebuild
index 5f7d9a7b432a..39faff3040d6 100644
--- a/dev-python/pytest-tornasync/pytest-tornasync-0.6.0_p2-r1.ebuild
+++ b/dev-python/pytest-tornasync/pytest-tornasync-0.6.0_p2-r1.ebuild
@@ -23,7 +23,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="MIT"
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"
RDEPEND="
>=dev-python/pytest-3.0[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-trio/pytest-trio-0.8.0-r1.ebuild b/dev-python/pytest-trio/pytest-trio-0.8.0-r1.ebuild
index 85418d326b9c..fcbfa8295a23 100644
--- a/dev-python/pytest-trio/pytest-trio-0.8.0-r1.ebuild
+++ b/dev-python/pytest-trio/pytest-trio-0.8.0-r1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="|| ( MIT Apache-2.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"
RDEPEND="
>=dev-python/outcome-1.1.0[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-xdist/pytest-xdist-3.8.0.ebuild b/dev-python/pytest-xdist/pytest-xdist-3.8.0.ebuild
index 8e6db84e867b..2f29ff10d4ea 100644
--- a/dev-python/pytest-xdist/pytest-xdist-3.8.0.ebuild
+++ b/dev-python/pytest-xdist/pytest-xdist-3.8.0.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 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
RDEPEND="
>=dev-python/execnet-2.1[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-xprocess/pytest-xprocess-0.23.0.ebuild b/dev-python/pytest-xprocess/pytest-xprocess-0.23.0.ebuild
index 2805d6a5495b..b15ae91eb115 100644
--- a/dev-python/pytest-xprocess/pytest-xprocess-0.23.0.ebuild
+++ b/dev-python/pytest-xprocess/pytest-xprocess-0.23.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -17,7 +17,7 @@ HOMEPAGE="
SLOT="0"
LICENSE="MIT"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
RDEPEND="
dev-python/pytest[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest-xprocess/pytest-xprocess-1.0.2.ebuild b/dev-python/pytest-xprocess/pytest-xprocess-1.0.2.ebuild
index c0bc71e6bb49..80c6e985739a 100644
--- a/dev-python/pytest-xprocess/pytest-xprocess-1.0.2.ebuild
+++ b/dev-python/pytest-xprocess/pytest-xprocess-1.0.2.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 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
RDEPEND="
dev-python/pytest[${PYTHON_USEDEP}]
diff --git a/dev-python/pytest/Manifest b/dev-python/pytest/Manifest
index 2d8805980375..605ec6b6e574 100644
--- a/dev-python/pytest/Manifest
+++ b/dev-python/pytest/Manifest
@@ -4,3 +4,4 @@ DIST pytest-8.1.2.tar.gz 1410060 BLAKE2B 1379047c5ba434e98a383756c53a9cf31dc3bd3
DIST pytest-8.2.2.tar.gz 1427980 BLAKE2B 7f343e5ff05e4d26f816595ad1c52ee2b79d38029e75e3641ed0bbb7477e0a47e5ae48ebc3058a8e9f374cd1a391d360d9eda73eca2e41d8b533eda7948aedcb SHA512 896192f0d41f3fef49915dfea6ae33dbb939f6bbe54de27861bf1554bf87f910702169293e923af9bc40466e7f806aa19ca54cbe41a848c233f70b52bb86a63c
DIST pytest-8.3.5.tar.gz 1450891 BLAKE2B 7a5fb565eb13041f6513bef344ec6caa24464cb3e9a335c4a196ae12e47a51692cff658e839ad139f88965098831ec5ede7d32fd6bf3b29c51205d4dfe50ed9b SHA512 386573a40f78c1dc864a0af7d765d49e9e91a38dd61bef95b07631bffba0806b34264622a998e849727f50fb220ada7b8242f7f7dbd501408e7bf4701d36589d
DIST pytest-8.4.1.tar.gz 1517714 BLAKE2B 1122694101de967a16f3103aa54e02baf28e03ad231f8e3cd93a559d1d9c9249046e95cfcf5708821a4b843b6474e4d30793a454e93e5167b1ff7ddc4514f71b SHA512 1ed64a70e6b49f52364f4d08ca179a47bcd0a709c327c1666f6e5f909c723ce1e2ba56abe08cf1348f75c1fa447da71c4faac8e3e76adb0c563cf66267c8633a
+DIST pytest-8.4.2.tar.gz 1519618 BLAKE2B 0676b8a3510dc740d94e96eaa6312574ed0058baec13f161c4f1ab85872ac69ebabaa707032becb068fc128662d931b6b05f92dec9bdf6c268553b956bf43003 SHA512 a6732666e7b59b2c28b47b1020a8381d31073cf9113086c562295429fddfa6b4ef2afda3cdcce0ec60bf60d038ad2bf8e921a2a409f3d56e31d94ca39e5ea81b
diff --git a/dev-python/pytest/pytest-7.4.4.ebuild b/dev-python/pytest/pytest-7.4.4.ebuild
index 989e6a31cf80..fd618813c7af 100644
--- a/dev-python/pytest/pytest-7.4.4.ebuild
+++ b/dev-python/pytest/pytest-7.4.4.ebuild
@@ -18,7 +18,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 ~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 ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/pytest/pytest-8.0.2.ebuild b/dev-python/pytest/pytest-8.0.2.ebuild
index 9b1f87deeff3..d2af11ef1da3 100644
--- a/dev-python/pytest/pytest-8.0.2.ebuild
+++ b/dev-python/pytest/pytest-8.0.2.ebuild
@@ -18,7 +18,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 ~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 ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/pytest/pytest-8.1.2.ebuild b/dev-python/pytest/pytest-8.1.2.ebuild
index 48292aea1690..ac9fdf79b395 100644
--- a/dev-python/pytest/pytest-8.1.2.ebuild
+++ b/dev-python/pytest/pytest-8.1.2.ebuild
@@ -18,7 +18,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 ~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 ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/pytest/pytest-8.2.2.ebuild b/dev-python/pytest/pytest-8.2.2.ebuild
index 05a1d8aa73ec..dde17b2a5cb1 100644
--- a/dev-python/pytest/pytest-8.2.2.ebuild
+++ b/dev-python/pytest/pytest-8.2.2.ebuild
@@ -18,7 +18,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 ~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 ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/pytest/pytest-8.3.5-r1.ebuild b/dev-python/pytest/pytest-8.3.5-r1.ebuild
index c2e0895b6f18..d6c69a394ad5 100644
--- a/dev-python/pytest/pytest-8.3.5-r1.ebuild
+++ b/dev-python/pytest/pytest-8.3.5-r1.ebuild
@@ -18,7 +18,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 ~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 ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/pytest/pytest-8.4.1.ebuild b/dev-python/pytest/pytest-8.4.1.ebuild
index 04ff365ced21..c09df7600ae9 100644
--- a/dev-python/pytest/pytest-8.4.1.ebuild
+++ b/dev-python/pytest/pytest-8.4.1.ebuild
@@ -18,7 +18,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 ~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 ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/pytest/pytest-8.4.2.ebuild b/dev-python/pytest/pytest-8.4.2.ebuild
new file mode 100644
index 000000000000..572e22fb8143
--- /dev/null
+++ b/dev-python/pytest/pytest-8.4.2.ebuild
@@ -0,0 +1,120 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_TESTED=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Simple powerful testing with Python"
+HOMEPAGE="
+ https://pytest.org/
+ https://github.com/pytest-dev/pytest/
+ https://pypi.org/project/pytest/
+"
+
+LICENSE="MIT"
+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="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ dev-python/iniconfig[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ <dev-python/pluggy-2[${PYTHON_USEDEP}]
+ >=dev-python/pluggy-1.5.0[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.7.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ >=dev-python/setuptools-scm-6.2.3[${PYTHON_USEDEP}]
+ test? (
+ ${RDEPEND}
+ $(python_gen_cond_dep '
+ dev-python/argcomplete[${PYTHON_USEDEP}]
+ >=dev-python/attrs-19.2[${PYTHON_USEDEP}]
+ >=dev-python/hypothesis-3.56[${PYTHON_USEDEP}]
+ dev-python/mock[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/xmlschema[${PYTHON_USEDEP}]
+ ' "${PYTHON_TESTED[@]}")
+ )
+"
+
+src_test() {
+ # workaround new readline defaults
+ echo "set enable-bracketed-paste off" > "${T}"/inputrc || die
+ local -x INPUTRC="${T}"/inputrc
+ distutils-r1_src_test
+}
+
+python_test() {
+ if ! has "${EPYTHON}" "${PYTHON_TESTED[@]/_/.}"; then
+ einfo "Skipping tests on ${EPYTHON}"
+ return
+ fi
+
+ local -x COLUMNS=80
+
+ local EPYTEST_DESELECT=(
+ # broken by epytest args
+ testing/test_warnings.py::test_works_with_filterwarnings
+ testing/test_threadexception.py::test_unhandled_thread_exception_after_teardown
+ testing/test_unraisableexception.py::test_refcycle_unraisable
+
+ # does not like verbosity
+ testing/test_assertrewrite.py::TestAssertionRewrite::test_len
+
+ # tend to be broken by random pytest plugins
+ # (these tests patch PYTEST_DISABLE_PLUGIN_AUTOLOAD out)
+ testing/test_helpconfig.py::test_version_less_verbose
+ testing/test_helpconfig.py::test_version_verbose
+ testing/test_junitxml.py::test_random_report_log_xdist
+ testing/test_junitxml.py::test_runs_twice_xdist
+ testing/test_terminal.py::TestProgressOutputStyle::test_xdist_normal
+ testing/test_terminal.py::TestProgressOutputStyle::test_xdist_normal_count
+ testing/test_terminal.py::TestProgressOutputStyle::test_xdist_verbose
+ testing/test_terminal.py::TestProgressWithTeardown::test_xdist_normal
+ testing/test_terminal.py::TestTerminalFunctional::test_header_trailer_info
+ testing/test_terminal.py::TestTerminalFunctional::test_no_header_trailer_info
+
+ # unstable with xdist
+ testing/test_terminal.py::TestTerminalFunctional::test_verbose_reporting_xdist
+
+ # TODO (XPASS)
+ testing/test_debugging.py::TestDebuggingBreakpoints::test_pdb_not_altered
+ testing/test_debugging.py::TestPDB::test_pdb_interaction_capturing_simple
+ testing/test_debugging.py::TestPDB::test_pdb_interaction_capturing_twice
+ testing/test_debugging.py::TestPDB::test_pdb_with_injected_do_debug
+ testing/test_debugging.py::test_pdb_suspends_fixture_capturing
+
+ # setuptools warnings
+ testing/acceptance_test.py::TestInvocationVariants::test_cmdline_python_namespace_package
+
+ # PDB tests seem quite flaky (they time out often)
+ testing/test_debugging.py::TestPDB
+ )
+
+ case ${EPYTHON} in
+ pypy3*)
+ EPYTEST_DESELECT+=(
+ # regressions on pypy3.9
+ # https://github.com/pytest-dev/pytest/issues/9787
+ testing/test_skipping.py::test_errors_in_xfail_skip_expressions
+ )
+ ;;
+ python3.14)
+ EPYTEST_DESELECT+=(
+ testing/test_doctest.py::TestDoctests::test_doctest_unexpected_exception
+ )
+ ;;
+ esac
+
+ local EPYTEST_PLUGINS=()
+ local EPYTEST_XDIST=1
+ epytest
+}
diff --git a/dev-python/python-bugzilla/python-bugzilla-3.3.0.ebuild b/dev-python/python-bugzilla/python-bugzilla-3.3.0.ebuild
index 155096a008e5..609fc172640b 100644
--- a/dev-python/python-bugzilla/python-bugzilla-3.3.0.ebuild
+++ b/dev-python/python-bugzilla/python-bugzilla-3.3.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="GPL-2+"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
|| (
diff --git a/dev-python/python-cinderclient/Manifest b/dev-python/python-cinderclient/Manifest
index 5b5903114835..59f2bb8cb16f 100644
--- a/dev-python/python-cinderclient/Manifest
+++ b/dev-python/python-cinderclient/Manifest
@@ -1 +1,2 @@
DIST python_cinderclient-9.7.0.tar.gz 236901 BLAKE2B 9cf188fd8960a99dfee68ec943b0e4124a78c2a8d9bc990f8bbe98646886e462e3bdd3449772492d07a1d8697423f57ae06d55daba5ce2ac44205407dc554d3b SHA512 b1a0222b7d67cda221086c469f76dc757905ca2b92645389603b0ba28c1a6b5eedd0049dbc09b6da1fc097e4ab7826c11927c88cf7c314757cdde1826cf55d1c
+DIST python_cinderclient-9.8.0.tar.gz 237057 BLAKE2B ade3ad6adddb11e5b82039228e2b1251d576bd4d5cda530dd8a3a44d58c04a1585afd17e53fe73281b9155584caf8ee6bda8f5f5826823c4872fd95e904f7878 SHA512 1bd29ad5a8ebd176a2d537d9935570676e8300bd4cbf38c61b16ac7d2b833a25a39467c1c659be48d22fbf8fcd6a514ab18733154a15ca6884df65a4d9f188e9
diff --git a/dev-python/python-cinderclient/python-cinderclient-9.8.0.ebuild b/dev-python/python-cinderclient/python-cinderclient-9.8.0.ebuild
new file mode 100644
index 000000000000..6aa843002894
--- /dev/null
+++ b/dev-python/python-cinderclient/python-cinderclient-9.8.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
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A client for the OpenStack Cinder API"
+HOMEPAGE="
+ https://opendev.org/openstack/python-cinderclient/
+ https://github.com/openstack/python-cinderclient/
+ https://pypi.org/project/python-cinderclient/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/keystoneauth1-5.9.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-i18n-5.0.1[${PYTHON_USEDEP}]
+ >=dev-python/oslo-utils-4.8.0[${PYTHON_USEDEP}]
+ >=dev-python/pbr-5.5.0[${PYTHON_USEDEP}]
+ >=dev-python/prettytable-0.7.2[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.25.1[${PYTHON_USEDEP}]
+ >=dev-python/stevedore-3.3.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/pbr[${PYTHON_USEDEP}]
+ test? (
+ dev-python/ddt[${PYTHON_USEDEP}]
+ dev-python/fixtures[${PYTHON_USEDEP}]
+ dev-python/oslo-serialization[${PYTHON_USEDEP}]
+ dev-python/requests-mock[${PYTHON_USEDEP}]
+ dev-python/testtools[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests unittest
+
+python_test() {
+ # functional tests require cloud instance access
+ eunittest -b cinderclient/tests/unit
+}
diff --git a/dev-python/python-dateutil/python-dateutil-2.9.0_p0.ebuild b/dev-python/python-dateutil/python-dateutil-2.9.0_p0.ebuild
index 468a90a5c714..5d2d63e74e35 100644
--- a/dev-python/python-dateutil/python-dateutil-2.9.0_p0.ebuild
+++ b/dev-python/python-dateutil/python-dateutil-2.9.0_p0.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
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"
+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"
RDEPEND="
>=dev-python/six-1.5[${PYTHON_USEDEP}]
diff --git a/dev-python/python-dbusmock/python-dbusmock-0.36.0.ebuild b/dev-python/python-dbusmock/python-dbusmock-0.36.0.ebuild
index f18e55d1c7c3..b49d59ee89d5 100644
--- a/dev-python/python-dbusmock/python-dbusmock-0.36.0.ebuild
+++ b/dev-python/python-dbusmock/python-dbusmock-0.36.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="LGPL-3+"
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"
RDEPEND="
dev-python/dbus-python[${PYTHON_USEDEP}]
diff --git a/dev-python/python-dotenv/python-dotenv-1.1.1.ebuild b/dev-python/python-dotenv/python-dotenv-1.1.1.ebuild
index 9d2a15ffa23b..eaa1bb0a5b3c 100644
--- a/dev-python/python-dotenv/python-dotenv-1.1.1.ebuild
+++ b/dev-python/python-dotenv/python-dotenv-1.1.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
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"
BDEPEND="
test? (
diff --git a/dev-python/python-gnupg/python-gnupg-0.5.4.ebuild b/dev-python/python-gnupg/python-gnupg-0.5.4.ebuild
index f0e1c6340ba1..2a9cb38ed05b 100644
--- a/dev-python/python-gnupg/python-gnupg-0.5.4.ebuild
+++ b/dev-python/python-gnupg/python-gnupg-0.5.4.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-ironicclient/Manifest b/dev-python/python-ironicclient/Manifest
index 7a508bbd16d6..4ac6b224bf62 100644
--- a/dev-python/python-ironicclient/Manifest
+++ b/dev-python/python-ironicclient/Manifest
@@ -1 +1,2 @@
DIST python_ironicclient-5.12.0.tar.gz 225775 BLAKE2B 6068b55887e1ede35a9a2ee0df0aa894ed5d64e49f65bbe2138bbac8ef17992461f42737fb6f296a8e90e14aa250e50b602731db34038eb3f2db698bdee11d53 SHA512 921cc1a925e8a4bf7b57be14054f7f4064574b259d4768da262adee94e0f997e845f576210bccbc48752b2273cf9cc7471d3cc9ea9391b3e47220f7754a12814
+DIST python_ironicclient-5.13.0.tar.gz 225872 BLAKE2B 528827c20507b23a2d4fe2c2bb158ccca5bff1c269b9b58b0293b772942c7fb30460a3f933eed554f848c8e58453e4a9024111fec2c7fe5107099c5326d409a1 SHA512 2c9bfeea82df5156a283baf182bf21f46e56bec555ec64849d12b540f269f5f5a421e5949e86070eeeb79d26295e20556596a896710f9f3fe9e7bd7fd67ad458
diff --git a/dev-python/python-ironicclient/python-ironicclient-5.13.0.ebuild b/dev-python/python-ironicclient/python-ironicclient-5.13.0.ebuild
new file mode 100644
index 000000000000..e06777f8031d
--- /dev/null
+++ b/dev-python/python-ironicclient/python-ironicclient-5.13.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=pbr
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python bindings for the Ironic API"
+HOMEPAGE="
+ https://opendev.org/openstack/python-ironicclient/
+ https://github.com/openstack/python-ironicclient/
+ https://pypi.org/project/python-ironicclient/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ >=dev-python/pbr-6.0.0[${PYTHON_USEDEP}]
+ >=dev-python/cliff-2.8.0[${PYTHON_USEDEP}]
+ >=dev-python/dogpile-cache-0.8.0[${PYTHON_USEDEP}]
+ >=dev-python/jsonschema-3.2.0[${PYTHON_USEDEP}]
+ >=dev-python/keystoneauth1-3.11.0[${PYTHON_USEDEP}]
+ >=dev-python/openstacksdk-0.18.0[${PYTHON_USEDEP}]
+ >=dev-python/osc-lib-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-utils-3.33.0[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-3[${PYTHON_USEDEP}]
+ >=dev-python/pyyaml-3.13.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.14.2[${PYTHON_USEDEP}]
+ >=dev-python/stevedore-1.20.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ >=dev-python/fixtures-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-mock-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/oslotest-3.2.0[${PYTHON_USEDEP}]
+ >=dev-python/testtools-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/tempest-17.1.0[${PYTHON_USEDEP}]
+ >=dev-python/ddt-1.0.1[${PYTHON_USEDEP}]
+ >=dev-python/python-openstackclient-3.12.0[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests unittest
diff --git a/dev-python/python-json-logger/python-json-logger-3.3.0.ebuild b/dev-python/python-json-logger/python-json-logger-3.3.0.ebuild
index 19bcbcca23aa..d871d3095f83 100644
--- a/dev-python/python-json-logger/python-json-logger-3.3.0.ebuild
+++ b/dev-python/python-json-logger/python-json-logger-3.3.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
BDEPEND="
test? (
diff --git a/dev-python/python-ldap/python-ldap-3.4.4.ebuild b/dev-python/python-ldap/python-ldap-3.4.4.ebuild
index 123173df5a9a..8e50a177a131 100644
--- a/dev-python/python-ldap/python-ldap-3.4.4.ebuild
+++ b/dev-python/python-ldap/python-ldap-3.4.4.ebuild
@@ -23,7 +23,7 @@ S=${WORKDIR}/${PN}-${P}
LICENSE="MIT PSF-2"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ~ppc ppc64 ~riscv sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ~ppc ppc64 ~riscv ~sparc x86"
IUSE="examples sasl ssl"
RDEPEND="
diff --git a/dev-python/python-magic/python-magic-0.4.27.ebuild b/dev-python/python-magic/python-magic-0.4.27.ebuild
index 2cce5ae807d5..da727f2812ea 100644
--- a/dev-python/python-magic/python-magic-0.4.27.ebuild
+++ b/dev-python/python-magic/python-magic-0.4.27.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="BSD-2 MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux"
RDEPEND="
sys-apps/file[-python]
diff --git a/dev-python/python-mimeparse/python-mimeparse-2.0.0.ebuild b/dev-python/python-mimeparse/python-mimeparse-2.0.0.ebuild
index d51de9fd189b..a0345a30c735 100644
--- a/dev-python/python-mimeparse/python-mimeparse-2.0.0.ebuild
+++ b/dev-python/python-mimeparse/python-mimeparse-2.0.0.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 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
python_test() {
"${EPYTHON}" mimeparse_test.py -v || die "Tests fail with ${EPYTHON}"
diff --git a/dev-python/python-multipart/python-multipart-0.0.20.ebuild b/dev-python/python-multipart/python-multipart-0.0.20.ebuild
index 429486534a16..33db66e8645d 100644
--- a/dev-python/python-multipart/python-multipart-0.0.20.ebuild
+++ b/dev-python/python-multipart/python-multipart-0.0.20.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
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"
BDEPEND="
test? (
diff --git a/dev-python/python-novaclient/Manifest b/dev-python/python-novaclient/Manifest
index 1da1fde28b24..42f74aee9f6c 100644
--- a/dev-python/python-novaclient/Manifest
+++ b/dev-python/python-novaclient/Manifest
@@ -1 +1,2 @@
DIST python_novaclient-18.10.0.tar.gz 340630 BLAKE2B 6457e951ae338f5bd2af95e9db59dc7587c19ecb2a927c4e53c523410f7f2b5de2b1a575242a41b06c6db075e29a45f00825645a79b7ad241ab682303b7ed038 SHA512 d5a8ee3751e7f258204afec4a60db3947522c6fd016ab3166d234f5fad6ef7303fcda27159357ca65a2b5ea5d62a112088f6cd489c86963068d61ca6b4ffcf3b
+DIST python_novaclient-18.11.0.tar.gz 340209 BLAKE2B 0845630883e2924b07748911e662b53bfbf0312cc6cd91c98a31f20991db73739526f66d8345c00d681276b1bd5557d54a0e91d4ac59a4405df57a12633bc1e3 SHA512 870251052beb88e7e47ef88a386583d6710f1fa40d934f70552e9333de394c70efbe510191e69871ff60e0f634ca42fd3d358d1900e8892c1164eb2f9cc33b80
diff --git a/dev-python/python-novaclient/python-novaclient-18.11.0.ebuild b/dev-python/python-novaclient/python-novaclient-18.11.0.ebuild
new file mode 100644
index 000000000000..6eb1a6b56b2d
--- /dev/null
+++ b/dev-python/python-novaclient/python-novaclient-18.11.0.ebuild
@@ -0,0 +1,57 @@
+# 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 client for the OpenStack Nova API"
+HOMEPAGE="
+ https://opendev.org/openstack/python-novaclient/
+ https://github.com/openstack/python-novaclient/
+ https://pypi.org/project/python-novaclient/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/pbr-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/keystoneauth1-3.5.0[${PYTHON_USEDEP}]
+ >=dev-python/iso8601-0.1.11[${PYTHON_USEDEP}]
+ >=dev-python/oslo-i18n-3.15.3[${PYTHON_USEDEP}]
+ >=dev-python/oslo-serialization-2.19.1[${PYTHON_USEDEP}]
+ >=dev-python/oslo-utils-3.33.0[${PYTHON_USEDEP}]
+ >=dev-python/prettytable-0.7.2[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.12.2[${PYTHON_USEDEP}]
+ >=dev-python/stevedore-2.0.1[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/bandit[${PYTHON_USEDEP}]
+ dev-python/ddt[${PYTHON_USEDEP}]
+ dev-python/fixtures[${PYTHON_USEDEP}]
+ dev-python/requests-mock[${PYTHON_USEDEP}]
+ dev-python/openstacksdk[${PYTHON_USEDEP}]
+ dev-python/testscenarios[${PYTHON_USEDEP}]
+ dev-python/testtools[${PYTHON_USEDEP}]
+ dev-python/tempest[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests unittest
+
+src_prepare() {
+ sed -e 's/test_osprofiler/_&/' -i novaclient/tests/unit/test_shell.py || die
+ sed -e 's/novaclient\.tests\.unit\.//' -i novaclient/tests/unit/test_api_versions.py || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ # functional tests require cloud instance access
+ eunittest -b novaclient/tests/unit
+}
diff --git a/dev-python/python-socks/python-socks-2.7.1.ebuild b/dev-python/python-socks/python-socks-2.7.1.ebuild
index fa8e8b3687b3..1d3dac4fb066 100644
--- a/dev-python/python-socks/python-socks-2.7.1.ebuild
+++ b/dev-python/python-socks/python-socks-2.7.1.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/python-subunit/python-subunit-1.4.4.ebuild b/dev-python/python-subunit/python-subunit-1.4.4.ebuild
index 9b144ac05f49..98f710173780 100644
--- a/dev-python/python-subunit/python-subunit-1.4.4.ebuild
+++ b/dev-python/python-subunit/python-subunit-1.4.4.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="Apache-2.0 BSD"
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="static-libs test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/python-systemd/python-systemd-235.ebuild b/dev-python/python-systemd/python-systemd-235.ebuild
index 6afe24da537b..abdde0a1949e 100644
--- a/dev-python/python-systemd/python-systemd-235.ebuild
+++ b/dev-python/python-systemd/python-systemd-235.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2015-2024 Gentoo Authors
+# Copyright 2015-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -15,7 +15,7 @@ SRC_URI="https://github.com/systemd/python-systemd/archive/v${PV}.tar.gz -> ${P}
LICENSE="LGPL-2.1"
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"
DEPEND="sys-apps/systemd:="
RDEPEND="${DEPEND}
diff --git a/dev-python/python-tests/python-tests-3.11.13.ebuild b/dev-python/python-tests/python-tests-3.11.13.ebuild
index 1d3b71369371..2efeceea3f68 100644
--- a/dev-python/python-tests/python-tests-3.11.13.ebuild
+++ b/dev-python/python-tests/python-tests-3.11.13.ebuild
@@ -28,7 +28,7 @@ S="${WORKDIR}/${MY_P}/Lib"
LICENSE="PSF-2"
SLOT="${PYVER}"
-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"
# enable by default to help CI handle it (we have no additional deps)
IUSE="+python_targets_${PYTHON_COMPAT[0]}"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
diff --git a/dev-python/python-tests/python-tests-3.12.11.ebuild b/dev-python/python-tests/python-tests-3.12.11.ebuild
index d23e0d912367..e0939ea6e83c 100644
--- a/dev-python/python-tests/python-tests-3.12.11.ebuild
+++ b/dev-python/python-tests/python-tests-3.12.11.ebuild
@@ -28,7 +28,7 @@ S="${WORKDIR}/${MY_P}/Lib"
LICENSE="PSF-2"
SLOT="${PYVER}"
-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"
# enable by default to help CI handle it (we have no additional deps)
IUSE="+python_targets_${PYTHON_COMPAT[0]}"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
diff --git a/dev-python/python-tests/python-tests-3.13.5.ebuild b/dev-python/python-tests/python-tests-3.13.5.ebuild
index d1f1977b8fe7..1641a285b2af 100644
--- a/dev-python/python-tests/python-tests-3.13.5.ebuild
+++ b/dev-python/python-tests/python-tests-3.13.5.ebuild
@@ -28,7 +28,7 @@ S="${WORKDIR}/${MY_P}/Lib"
LICENSE="PSF-2"
SLOT="${PYVER}"
-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"
# enable by default to help CI handle it (we have no additional deps)
IUSE="+python_targets_${PYTHON_COMPAT[0]}"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
diff --git a/dev-python/pythondialog/pythondialog-3.5.3.ebuild b/dev-python/pythondialog/pythondialog-3.5.3.ebuild
index c02a59263ae0..10d371b8e4a4 100644
--- a/dev-python/pythondialog/pythondialog-3.5.3.ebuild
+++ b/dev-python/pythondialog/pythondialog-3.5.3.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -14,7 +14,7 @@ SRC_URI="https://downloads.sourceforge.net/project/${PN}/${PN}/${PV}/python3-${P
LICENSE="LGPL-2"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm ppc ~riscv sparc x86"
+KEYWORDS="~alpha amd64 ~arm ppc ~riscv ~sparc x86"
RDEPEND="dev-util/dialog"
diff --git a/dev-python/pytidylib/pytidylib-0.3.2-r2.ebuild b/dev-python/pytidylib/pytidylib-0.3.2-r2.ebuild
index ba90dc877e3b..5eef420b9aee 100644
--- a/dev-python/pytidylib/pytidylib-0.3.2-r2.ebuild
+++ b/dev-python/pytidylib/pytidylib-0.3.2-r2.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="app-text/htmltidy"
DEPEND=${RDEPEND}
diff --git a/dev-python/pytools/Manifest b/dev-python/pytools/Manifest
index 51677cdb7e34..0b340f731401 100644
--- a/dev-python/pytools/Manifest
+++ b/dev-python/pytools/Manifest
@@ -1,2 +1,3 @@
DIST pytools-2025.2.2.tar.gz 84641 BLAKE2B 942b949ee3d6c0ad27300cd35bb6b8ae44e352943fb7213769e73295cf337164a028a6f58e5f1b4fd427a68b5e877fcb2ce8086cc44f73d0987ffa29c24518d2 SHA512 eaef09ffedec7d73fe9d397502c0f28ad1383f07d68aa8b317c641cc274148a19ea17e1bc07387d4990fce5783031d4040059f0131aaf8660420096a96e27954
DIST pytools-2025.2.3.tar.gz 85860 BLAKE2B d76daad77e500e1a531f0720ea3b7a7b2b1fb46173df85a852c4eaedf0bc192377aaa308be3d38c32da842d58543b876624b9f84238e836570dc0d048f80cd43 SHA512 4aac187d61c82e7bc871b5fe64e0a3438afb42838ac2f72072caac51f409fb7776230cde672ff9543be5b388407975cdd1a6bce13df7e8e0b1eb3e11371e7b11
+DIST pytools-2025.2.4.tar.gz 85878 BLAKE2B 4618f89842762b52355522ce6c6be79dbb7d693140420003b91acae1a1e46464e7d76d520d7f438fb813f99d87dcd8b18b0e2c16a401d4e68a4b12a9d6835b2f SHA512 bdbff20bc828117fddabde4b71bd166a94381d913c98e1cf49eace165a4440faf9ecb68ed5b0e5be429127423cf532a70f6edd13cf18d8cede833c1fb0d6d08d
diff --git a/dev-python/pytools/pytools-2025.2.4.ebuild b/dev-python/pytools/pytools-2025.2.4.ebuild
new file mode 100644
index 000000000000..4d847634cb6a
--- /dev/null
+++ b/dev-python/pytools/pytools-2025.2.4.ebuild
@@ -0,0 +1,33 @@
+# 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} )
+PYTHON_REQ_USE='sqlite'
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Collection of tools missing from the Python standard library"
+HOMEPAGE="
+ https://mathema.tician.de/software/pytools/
+ https://github.com/inducer/pytools/
+ https://pypi.org/project/pytools/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv"
+
+# NB: numpy are an "extra" (optional) deps
+RDEPEND="
+ >=dev-python/numpy-1.6[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-2.2[${PYTHON_USEDEP}]
+ >=dev-python/siphash24-1.6[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.5[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
diff --git a/dev-python/pytz/pytz-2025.2.ebuild b/dev-python/pytz/pytz-2025.2.ebuild
index 09d078384ede..e95e2282868b 100644
--- a/dev-python/pytz/pytz-2025.2.ebuild
+++ b/dev-python/pytz/pytz-2025.2.ebuild
@@ -18,7 +18,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 ~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/pyudev/pyudev-0.24.3.ebuild b/dev-python/pyudev/pyudev-0.24.3.ebuild
index b4189ad1e7d2..5717ce9196cb 100644
--- a/dev-python/pyudev/pyudev-0.24.3.ebuild
+++ b/dev-python/pyudev/pyudev-0.24.3.ebuild
@@ -13,7 +13,7 @@ SRC_URI="https://github.com/pyudev/pyudev/archive/refs/tags/v${PV}.tar.gz -> ${P
LICENSE="LGPL-2.1"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~sparc x86"
# Known to fail on test system that aren't exactly the same devices as on CI
#RESTRICT="test"
diff --git a/dev-python/pywinrm/pywinrm-0.5.0.ebuild b/dev-python/pywinrm/pywinrm-0.5.0.ebuild
index f12ae2510bd8..701220363e11 100644
--- a/dev-python/pywinrm/pywinrm-0.5.0.ebuild
+++ b/dev-python/pywinrm/pywinrm-0.5.0.ebuild
@@ -1,10 +1,10 @@
-# 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
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_COMPAT=( python3_{11..14} )
inherit distutils-r1 pypi
@@ -35,6 +35,7 @@ BDEPEND="
)
"
+EPYTEST_PLUGINS=()
distutils_enable_tests pytest
src_prepare() {
diff --git a/dev-python/pyxattr/pyxattr-0.8.1.ebuild b/dev-python/pyxattr/pyxattr-0.8.1.ebuild
index 97341e34831a..901234342d27 100644
--- a/dev-python/pyxattr/pyxattr-0.8.1.ebuild
+++ b/dev-python/pyxattr/pyxattr-0.8.1.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="LGPL-2.1"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
DEPEND="
sys-apps/attr:=
diff --git a/dev-python/pyxdg/pyxdg-0.28-r2.ebuild b/dev-python/pyxdg/pyxdg-0.28-r2.ebuild
index cba39bfc7515..aad84a326cdc 100644
--- a/dev-python/pyxdg/pyxdg-0.28-r2.ebuild
+++ b/dev-python/pyxdg/pyxdg-0.28-r2.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="LGPL-2"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~sparc x86"
PATCHES=(
"${FILESDIR}"/${PN}-0.28-py3.12.patch
diff --git a/dev-python/pyyaml/pyyaml-6.0.2.ebuild b/dev-python/pyyaml/pyyaml-6.0.2.ebuild
index 05837c058f97..1cf18f174cfb 100644
--- a/dev-python/pyyaml/pyyaml-6.0.2.ebuild
+++ b/dev-python/pyyaml/pyyaml-6.0.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="examples"
DEPEND="
diff --git a/dev-python/pyzmq/pyzmq-26.4.0.ebuild b/dev-python/pyzmq/pyzmq-26.4.0.ebuild
index 8ae4a9af7da1..5c9441bd3409 100644
--- a/dev-python/pyzmq/pyzmq-26.4.0.ebuild
+++ b/dev-python/pyzmq/pyzmq-26.4.0.ebuild
@@ -23,7 +23,7 @@ SRC_URI="
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"
+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.
diff --git a/dev-python/pyzmq/pyzmq-27.0.0.ebuild b/dev-python/pyzmq/pyzmq-27.0.0.ebuild
index 169939117403..2d11a1a0692b 100644
--- a/dev-python/pyzmq/pyzmq-27.0.0.ebuild
+++ b/dev-python/pyzmq/pyzmq-27.0.0.ebuild
@@ -23,7 +23,7 @@ SRC_URI="
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"
+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.
diff --git a/dev-python/qiskit/Manifest b/dev-python/qiskit/Manifest
index 9a331227f027..3f8ac4f9bf78 100644
--- a/dev-python/qiskit/Manifest
+++ b/dev-python/qiskit/Manifest
@@ -3,3 +3,5 @@ DIST qiskit-2.1.1.gh.tar.gz 7095152 BLAKE2B fa611f4a5e772ba66bc58bc2832f6779dee5
DIST qiskit-2.1.2.gh.tar.gz 7100760 BLAKE2B 01f5789f20d1c73e73000ec87579981380d201b4d614dbfd7974d603c031de2a567e42c41f4552442805eb38b729784442a1e04e36054ba0c0a44a68b7410ad4 SHA512 a2e435f2523f538c922c868bf1fb303143f2efe4f3f70fe286d25fe467c454888f4fe7dc81b94e30e134e15446c6f3364a9ee932b5229952cb178e5db019ac1d
DIST qiskit-2.2.0b1-crates.tar.xz 16206228 BLAKE2B 2b654513fb78ae35e9179c094ea0ff05bafbd3ae226b6665034ad396c64ccf6a7d539a5e89a2815a241fe4a081b09cd43fd5779b0854ad6638c5f0a9b2bed7c7 SHA512 6a1550163808579adeaff9524fd494c153524d1780f459629943d95c0e712c310b8c0cf0325497c47caacf5a08ee0cdbe09c42e40329b305953aee2fa147b349
DIST qiskit-2.2.0b1.gh.tar.gz 7242652 BLAKE2B ab708fcf06294ad3d218768ebde618d43efe23460ea4ba52ceacee1bb562c331e356c1620fdebb2c8b6eb265e84cbe4a258bcbec9474112c891a8db6e3262fac SHA512 b98e04655cf6ebc9a3591a8fa50c1afdc653bb352ea91ce93f6bcda311cedb450da1947785d5b68088a04a0fa295c5df6358b4b3fe67d89d47e242d4d606442a
+DIST qiskit-2.2.0rc1-crates.tar.xz 16224208 BLAKE2B 5e218dd807216b0164680c9d0be0f8ca821ddd0d959a3401f3613f5264a35d4fd6d0c9c99fa55d6875606a9a956e5e6639cdc5ed0060dca2cf8ea8739e1fd608 SHA512 fb0fb3bdcfae60fe045c8214dc22619b15d961e169b9f28d3036b29d001bfe1fde07c33c20250088707502feebdc1d43f2d4d215353b562d3d4d553fae26099d
+DIST qiskit-2.2.0rc1.gh.tar.gz 7315424 BLAKE2B c89dc4fcfbe316b6f79f714f889a9b4a9e10a6c86e3c31ae557d94305826024bb04a3c1f6f25faec4e4b19deab6c004752d1ee9066562a46cc2a0c1951c0970e SHA512 1742b4e73eda2d8d6eca6a5f33bae360a084c2debbbbc441a4ab8036a1ead76b64850b949ec1dd4db3b7109951817a6a6dce7e4655d7f77d728c7bdb97545428
diff --git a/dev-python/qiskit/qiskit-2.2.0_rc1.ebuild b/dev-python/qiskit/qiskit-2.2.0_rc1.ebuild
new file mode 100644
index 000000000000..79c53538a42f
--- /dev/null
+++ b/dev-python/qiskit/qiskit-2.2.0_rc1.ebuild
@@ -0,0 +1,109 @@
+# 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
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+CRATES=""
+RUST_MIN_VER="1.84.0"
+
+inherit cargo distutils-r1
+
+MY_P=${P/_}
+CRATE_PV=2.2.0rc1
+DESCRIPTION="An open-source SDK for working with quantum computers"
+HOMEPAGE="
+ https://github.com/Qiskit/qiskit/
+ https://pypi.org/project/qiskit/
+"
+SRC_URI="
+ https://github.com/Qiskit/qiskit/archive/${PV/_}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+ ${CARGO_CRATE_URIS}
+ https://github.com/gentoo-crate-dist/qiskit/releases/download/${CRATE_PV/_}/${PN}-${CRATE_PV}-crates.tar.xz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="Apache-2.0"
+# Dependent crate licenses
+LICENSE+="
+ Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 MIT MPL-2.0
+ Unicode-3.0 ZLIB
+"
+SLOT="0"
+IUSE="+visualization"
+
+RDEPEND="
+ >=dev-python/dill-0.3[${PYTHON_USEDEP}]
+ >=dev-python/numpy-1.17[${PYTHON_USEDEP}]
+ >=dev-python/python-constraint-1.4[${PYTHON_USEDEP}]
+ >=dev-python/rustworkx-0.15.0[${PYTHON_USEDEP}]
+ >=dev-python/scipy-1.5[${PYTHON_USEDEP}]
+ >=dev-python/stevedore-3.0.0[${PYTHON_USEDEP}]
+ visualization? (
+ >=dev-python/matplotlib-3.3[${PYTHON_USEDEP}]
+ dev-python/pydot[${PYTHON_USEDEP}]
+ >=dev-python/pillow-4.2.1[${PYTHON_USEDEP}]
+ >=dev-python/pylatexenc-1.4[${PYTHON_USEDEP}]
+ >=dev-python/seaborn-0.9.0[${PYTHON_USEDEP}]
+ >=dev-python/symengine-0.11.0[${PYTHON_USEDEP}]
+ >=dev-python/sympy-1.3[${PYTHON_USEDEP}]
+ )
+"
+BDEPEND="
+ >=dev-python/cython-0.27.1[${PYTHON_USEDEP}]
+ test? (
+ app-text/poppler[png]
+ >=dev-python/ddt-1.4.4[${PYTHON_USEDEP}]
+ >=dev-python/networkx-2.2[${PYTHON_USEDEP}]
+ >=dev-python/qiskit-aer-0.14[${PYTHON_USEDEP}]
+ >=dev-python/scikit-learn-0.20.0[${PYTHON_USEDEP}]
+ )
+"
+
+# Files built without CFLAGS/LDFLAGS, acceptable for rust
+QA_FLAGS_IGNORED="
+ usr/lib.*/py.*/site-packages/qiskit/_accelerate.*.so
+ usr/lib.*/py.*/site-packages/qiskit/_qasm2.*.so
+"
+
+EPYTEST_PLUGINS=( hypothesis )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # strip forcing -Werror from tests that also leaks to other packages
+ sed -i -e '/filterwarnings.*error/d' test/utils/base.py || die
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # TODO
+ test/python/circuit/test_equivalence.py::TestEquivalenceLibraryVisualization::test_equivalence_draw
+ test/python/transpiler/test_unitary_synthesis_plugin.py::TestUnitarySynthesisPlugin
+ test/python/visualization/test_dag_drawer.py::TestDagDrawer::test_dag_drawer_no_register
+ # tiny image differences, sigh
+ test/python/visualization/test_gate_map.py::TestGateMap::test_plot_error_map_over_100_qubit
+ # TODO: failures from dill
+ test/python/circuit/test_parameters.py::TestParameters::test_transpiling_multiple_parameterized_circuits
+ test/python/compiler/test_transpiler.py::TestTranspile::test_delay_converts_expr_to_dt
+ test/python/compiler/test_transpiler.py::TestTranspile::test_transpile_two
+ test/python/transpiler/test_naming_transpiled_circuits.py::TestNamingTranspiledCircuits::test_multiple_circuits_name_list
+ )
+
+ local EPYTEST_IGNORE=(
+ # Breaks xdist
+ test/python/qasm2/test_parse_errors.py
+ test/python/transpiler/test_preset_passmanagers.py
+ )
+
+ rm -rf qiskit || die
+ # Run the Python test suite rather than everything under test/ which
+ # includes the 'randomized' suite. Upstream run that in a separate CI job.
+ epytest test/python
+}
diff --git a/dev-python/quart-trio/quart-trio-0.12.0.ebuild b/dev-python/quart-trio/quart-trio-0.12.0.ebuild
index e8a9a82d8444..6d7e3e09322e 100644
--- a/dev-python/quart-trio/quart-trio-0.12.0.ebuild
+++ b/dev-python/quart-trio/quart-trio-0.12.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
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"
RDEPEND="
$(python_gen_cond_dep '
diff --git a/dev-python/quart/quart-0.20.0.ebuild b/dev-python/quart/quart-0.20.0.ebuild
index 2786afc3679d..52133ce2ec91 100644
--- a/dev-python/quart/quart-0.20.0.ebuild
+++ b/dev-python/quart/quart-0.20.0.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
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"
RDEPEND="
dev-python/aiofiles[${PYTHON_USEDEP}]
diff --git a/dev-python/radon/radon-6.0.1-r2.ebuild b/dev-python/radon/radon-6.0.1-r2.ebuild
index a64d93f681d4..facbab545399 100644
--- a/dev-python/radon/radon-6.0.1-r2.ebuild
+++ b/dev-python/radon/radon-6.0.1-r2.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/colorama-0.4.1[${PYTHON_USEDEP}]
diff --git a/dev-python/rapidfuzz/rapidfuzz-3.13.0.ebuild b/dev-python/rapidfuzz/rapidfuzz-3.13.0.ebuild
index b00eeb39c879..40c9b9aaa6d2 100644
--- a/dev-python/rapidfuzz/rapidfuzz-3.13.0.ebuild
+++ b/dev-python/rapidfuzz/rapidfuzz-3.13.0.ebuild
@@ -18,7 +18,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"
# all these are header-only libraries
DEPEND="
diff --git a/dev-python/rdflib/rdflib-7.1.4.ebuild b/dev-python/rdflib/rdflib-7.1.4.ebuild
index b24a522dd038..4f30a6895d00 100644
--- a/dev-python/rdflib/rdflib-7.1.4.ebuild
+++ b/dev-python/rdflib/rdflib-7.1.4.ebuild
@@ -22,7 +22,7 @@ SRC_URI="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~sparc x86"
IUSE="examples sqlite"
RDEPEND="
diff --git a/dev-python/re-assert/re-assert-1.1.0-r3.ebuild b/dev-python/re-assert/re-assert-1.1.0-r3.ebuild
index 311d318daed2..3b68b900ad65 100644
--- a/dev-python/re-assert/re-assert-1.1.0-r3.ebuild
+++ b/dev-python/re-assert/re-assert-1.1.0-r3.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
RDEPEND="
$(python_gen_cond_dep '
diff --git a/dev-python/readme-renderer/readme-renderer-44.0.ebuild b/dev-python/readme-renderer/readme-renderer-44.0.ebuild
index 8cbccf7ea1cd..bdf76af615d4 100644
--- a/dev-python/readme-renderer/readme-renderer-44.0.ebuild
+++ b/dev-python/readme-renderer/readme-renderer-44.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/docutils-0.21.2[${PYTHON_USEDEP}]
diff --git a/dev-python/readthedocs-sphinx-ext/readthedocs-sphinx-ext-2.2.5.ebuild b/dev-python/readthedocs-sphinx-ext/readthedocs-sphinx-ext-2.2.5.ebuild
index 30ace5aed263..3d438b32b24c 100644
--- a/dev-python/readthedocs-sphinx-ext/readthedocs-sphinx-ext-2.2.5.ebuild
+++ b/dev-python/readthedocs-sphinx-ext/readthedocs-sphinx-ext-2.2.5.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/jinja2-2.9[${PYTHON_USEDEP}]
diff --git a/dev-python/recommonmark/recommonmark-0.7.1-r1.ebuild b/dev-python/recommonmark/recommonmark-0.7.1-r1.ebuild
index 8763de87bdcf..a1cae8ca887d 100644
--- a/dev-python/recommonmark/recommonmark-0.7.1-r1.ebuild
+++ b/dev-python/recommonmark/recommonmark-0.7.1-r1.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
RDEPEND="
>=dev-python/commonmark-0.8.1[${PYTHON_USEDEP}]
diff --git a/dev-python/referencing/referencing-0.36.2-r1.ebuild b/dev-python/referencing/referencing-0.36.2-r1.ebuild
index d72829230a99..a2c6dffcdc66 100644
--- a/dev-python/referencing/referencing-0.36.2-r1.ebuild
+++ b/dev-python/referencing/referencing-0.36.2-r1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
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"
RDEPEND="
>=dev-python/attrs-22.2.0[${PYTHON_USEDEP}]
diff --git a/dev-python/regex/Manifest b/dev-python/regex/Manifest
index e23210381b58..b366988b575b 100644
--- a/dev-python/regex/Manifest
+++ b/dev-python/regex/Manifest
@@ -2,3 +2,4 @@ DIST regex-2024.11.6.tar.gz 399494 BLAKE2B 5b805e71d505516f1b1454d5198591c902ead
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
index c620c5aaf5ed..1d170ecafed6 100644
--- a/dev-python/regex/regex-2024.11.6.ebuild
+++ b/dev-python/regex/regex-2024.11.6.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/regex/regex-2025.9.1.ebuild b/dev-python/regex/regex-2025.9.1.ebuild
new file mode 100644
index 000000000000..f59db819ba31
--- /dev/null
+++ b/dev-python/regex/regex-2025.9.1.ebuild
@@ -0,0 +1,32 @@
+# 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/reportlab/reportlab-4.4.2.ebuild b/dev-python/reportlab/reportlab-4.4.2.ebuild
index 11e062983fb4..847d9681fdba 100644
--- a/dev-python/reportlab/reportlab-4.4.2.ebuild
+++ b/dev-python/reportlab/reportlab-4.4.2.ebuild
@@ -20,7 +20,7 @@ SRC_URI+="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
RDEPEND="
dev-python/charset-normalizer[${PYTHON_USEDEP}]
diff --git a/dev-python/repoze-lru/repoze-lru-0.7-r3.ebuild b/dev-python/repoze-lru/repoze-lru-0.7-r3.ebuild
index 4da6b7907ed6..e6116cd42c14 100644
--- a/dev-python/repoze-lru/repoze-lru-0.7-r3.ebuild
+++ b/dev-python/repoze-lru/repoze-lru-0.7-r3.ebuild
@@ -24,7 +24,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="repoze"
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"
distutils_enable_tests unittest
diff --git a/dev-python/requests-credssp/requests-credssp-2.0.0.ebuild b/dev-python/requests-credssp/requests-credssp-2.0.0.ebuild
index 77c6d59c7c7c..d98a4bfdf7a8 100644
--- a/dev-python/requests-credssp/requests-credssp-2.0.0.ebuild
+++ b/dev-python/requests-credssp/requests-credssp-2.0.0.ebuild
@@ -1,10 +1,10 @@
-# 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
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_COMPAT=( python3_{11..14} )
inherit distutils-r1
@@ -30,4 +30,5 @@ RDEPEND="
>=dev-python/requests-2.0.0[${PYTHON_USEDEP}]
"
+EPYTEST_PLUGINS=()
distutils_enable_tests pytest
diff --git a/dev-python/requests-kerberos/requests-kerberos-0.15.0.ebuild b/dev-python/requests-kerberos/requests-kerberos-0.15.0.ebuild
index b18961fe4d17..4633f95d3e5e 100644
--- a/dev-python/requests-kerberos/requests-kerberos-0.15.0.ebuild
+++ b/dev-python/requests-kerberos/requests-kerberos-0.15.0.ebuild
@@ -1,10 +1,10 @@
-# 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
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_COMPAT=( python3_{11..14} )
inherit distutils-r1
@@ -29,10 +29,6 @@ RDEPEND="
dev-python/gssapi[${PYTHON_USEDEP}]
dev-python/krb5[${PYTHON_USEDEP}]
"
-BDEPEND="
- test? (
- dev-python/pytest-mock[${PYTHON_USEDEP}]
- )
-"
+EPYTEST_PLUGINS=( pytest-mock )
distutils_enable_tests pytest
diff --git a/dev-python/requests-ntlm/requests-ntlm-1.3.0.ebuild b/dev-python/requests-ntlm/requests-ntlm-1.3.0.ebuild
index 52dd1c30ac8a..ded0359a6c02 100644
--- a/dev-python/requests-ntlm/requests-ntlm-1.3.0.ebuild
+++ b/dev-python/requests-ntlm/requests-ntlm-1.3.0.ebuild
@@ -1,10 +1,10 @@
-# 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
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_COMPAT=( python3_{11..14} )
inherit distutils-r1
@@ -34,6 +34,7 @@ BDEPEND="
)
"
+EPYTEST_PLUGINS=()
distutils_enable_tests pytest
python_test() {
diff --git a/dev-python/requests-toolbelt/requests-toolbelt-1.0.0.ebuild b/dev-python/requests-toolbelt/requests-toolbelt-1.0.0.ebuild
index c80316374252..cddcef2bee96 100644
--- a/dev-python/requests-toolbelt/requests-toolbelt-1.0.0.ebuild
+++ b/dev-python/requests-toolbelt/requests-toolbelt-1.0.0.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/${P#requests-}
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"
IUSE="test-rust"
RDEPEND="
diff --git a/dev-python/requests-unixsocket/requests-unixsocket-0.4.1.ebuild b/dev-python/requests-unixsocket/requests-unixsocket-0.4.1.ebuild
index bfca730d9399..059895da2000 100644
--- a/dev-python/requests-unixsocket/requests-unixsocket-0.4.1.ebuild
+++ b/dev-python/requests-unixsocket/requests-unixsocket-0.4.1.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"
RDEPEND="
dev-python/requests[${PYTHON_USEDEP}]
diff --git a/dev-python/requests/requests-2.32.4.ebuild b/dev-python/requests/requests-2.32.4.ebuild
index 6dc19173f27d..3231d97f46d2 100644
--- a/dev-python/requests/requests-2.32.4.ebuild
+++ b/dev-python/requests/requests-2.32.4.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="socks5 test-rust"
RDEPEND="
diff --git a/dev-python/resolvelib/resolvelib-1.1.0.ebuild b/dev-python/resolvelib/resolvelib-1.1.0.ebuild
index 2bdeeb958895..e2100dc02680 100644
--- a/dev-python/resolvelib/resolvelib-1.1.0.ebuild
+++ b/dev-python/resolvelib/resolvelib-1.1.0.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="ISC"
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"
BDEPEND="
test? (
diff --git a/dev-python/resolvelib/resolvelib-1.2.0.ebuild b/dev-python/resolvelib/resolvelib-1.2.0.ebuild
index 369858845b7c..0d7034efde3d 100644
--- a/dev-python/resolvelib/resolvelib-1.2.0.ebuild
+++ b/dev-python/resolvelib/resolvelib-1.2.0.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="ISC"
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"
BDEPEND="
test? (
diff --git a/dev-python/responses/responses-0.25.7.ebuild b/dev-python/responses/responses-0.25.7.ebuild
index 582f274f5cb6..f8e13027367b 100644
--- a/dev-python/responses/responses-0.25.7.ebuild
+++ b/dev-python/responses/responses-0.25.7.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/retrying/retrying-1.4.1.ebuild b/dev-python/retrying/retrying-1.4.1.ebuild
index a9beb3cd6da2..bd47e51db297 100644
--- a/dev-python/retrying/retrying-1.4.1.ebuild
+++ b/dev-python/retrying/retrying-1.4.1.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ~mips ppc ppc64 ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ~mips ppc ppc64 ~s390 ~sparc x86"
EPYTEST_PLUGINS=( pytest-rerunfailures )
distutils_enable_tests pytest
diff --git a/dev-python/retrying/retrying-1.4.2.ebuild b/dev-python/retrying/retrying-1.4.2.ebuild
index 90bb01a53d0d..d0171410ddaf 100644
--- a/dev-python/retrying/retrying-1.4.2.ebuild
+++ b/dev-python/retrying/retrying-1.4.2.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~m68k ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ~mips ppc ppc64 ~s390 ~sparc x86"
# this package is very flaky
EPYTEST_RERUNS=10
diff --git a/dev-python/rfc3339-validator/rfc3339-validator-0.1.4-r1.ebuild b/dev-python/rfc3339-validator/rfc3339-validator-0.1.4-r1.ebuild
index c340b339b0da..12cc04d42cd9 100644
--- a/dev-python/rfc3339-validator/rfc3339-validator-0.1.4-r1.ebuild
+++ b/dev-python/rfc3339-validator/rfc3339-validator-0.1.4-r1.ebuild
@@ -20,7 +20,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"
RDEPEND="
dev-python/six[${PYTHON_USEDEP}]
diff --git a/dev-python/rfc3986-validator/rfc3986-validator-0.1.1-r2.ebuild b/dev-python/rfc3986-validator/rfc3986-validator-0.1.1-r2.ebuild
index 26869aef7c2e..2dd28742f6d0 100644
--- a/dev-python/rfc3986-validator/rfc3986-validator-0.1.1-r2.ebuild
+++ b/dev-python/rfc3986-validator/rfc3986-validator-0.1.1-r2.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 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
# not a typo, it actually test-depends on rfc3987, and not rfc3986
BDEPEND="
diff --git a/dev-python/rfc3986/rfc3986-2.0.0-r1.ebuild b/dev-python/rfc3986/rfc3986-2.0.0-r1.ebuild
index b64d40505951..752db59bef7f 100644
--- a/dev-python/rfc3986/rfc3986-2.0.0-r1.ebuild
+++ b/dev-python/rfc3986/rfc3986-2.0.0-r1.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
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"
IUSE="idna"
RDEPEND="
diff --git a/dev-python/rfc3987/rfc3987-1.3.8-r3.ebuild b/dev-python/rfc3987/rfc3987-1.3.8-r3.ebuild
index d4ebfd426b72..25984a88b42a 100644
--- a/dev-python/rfc3987/rfc3987-1.3.8-r3.ebuild
+++ b/dev-python/rfc3987/rfc3987-1.3.8-r3.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="GPL-3"
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"
# dev-python/regex doesn't support pypy. The package falls back to re and has most
# functionality without it.
diff --git a/dev-python/rich/rich-14.1.0.ebuild b/dev-python/rich/rich-14.1.0.ebuild
index 6a3105ec78b8..02f75e769c99 100644
--- a/dev-python/rich/rich-14.1.0.ebuild
+++ b/dev-python/rich/rich-14.1.0.ebuild
@@ -20,7 +20,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"
RDEPEND="
dev-python/colorama[${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 e897e80de6c2..235dc720a362 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 ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
distutils_enable_tests pytest
diff --git a/dev-python/routes/routes-2.5.1-r2.ebuild b/dev-python/routes/routes-2.5.1-r2.ebuild
index b76efbca9396..8efb18f1c9dd 100644
--- a/dev-python/routes/routes-2.5.1-r2.ebuild
+++ b/dev-python/routes/routes-2.5.1-r2.ebuild
@@ -23,7 +23,7 @@ SRC_URI="
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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
RDEPEND="
>=dev-python/repoze-lru-0.3[${PYTHON_USEDEP}]
diff --git a/dev-python/rpds-py/rpds-py-0.25.1.ebuild b/dev-python/rpds-py/rpds-py-0.25.1.ebuild
index 2db25d8cab22..223a52721c96 100644
--- a/dev-python/rpds-py/rpds-py-0.25.1.ebuild
+++ b/dev-python/rpds-py/rpds-py-0.25.1.ebuild
@@ -34,7 +34,7 @@ CRATES="
unindent@0.2.4
"
-RUST_MIN_VER="1.77.1"
+RUST_MIN_VER="1.85.0"
inherit cargo distutils-r1 pypi
@@ -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/rsa/rsa-4.9.ebuild b/dev-python/rsa/rsa-4.9.ebuild
index 151a5ad6ce51..20875d519ee5 100644
--- a/dev-python/rsa/rsa-4.9.ebuild
+++ b/dev-python/rsa/rsa-4.9.ebuild
@@ -23,7 +23,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv sparc x86"
+KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv ~sparc x86"
RDEPEND="
>=dev-python/pyasn1-0.1.3[${PYTHON_USEDEP}]
diff --git a/dev-python/rst-linker/rst-linker-2.6.0.ebuild b/dev-python/rst-linker/rst-linker-2.6.0.ebuild
index 4baee484c08a..344e68f44f17 100644
--- a/dev-python/rst-linker/rst-linker-2.6.0.ebuild
+++ b/dev-python/rst-linker/rst-linker-2.6.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~mips ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/jaraco-context[${PYTHON_USEDEP}]
diff --git a/dev-python/rtslib-fb/rtslib-fb-2.1.76.ebuild b/dev-python/rtslib-fb/rtslib-fb-2.1.76.ebuild
index 4d1397b014d3..173b3cb20a62 100644
--- a/dev-python/rtslib-fb/rtslib-fb-2.1.76.ebuild
+++ b/dev-python/rtslib-fb/rtslib-fb-2.1.76.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~x86-linux"
RDEPEND="
dev-python/pyudev[${PYTHON_USEDEP}]
diff --git a/dev-python/rtslib-fb/rtslib-fb-2.2.3.ebuild b/dev-python/rtslib-fb/rtslib-fb-2.2.3.ebuild
index 7944ab7209c3..916b21cb61cf 100644
--- a/dev-python/rtslib-fb/rtslib-fb-2.2.3.ebuild
+++ b/dev-python/rtslib-fb/rtslib-fb-2.2.3.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~x86-linux"
RDEPEND="
dev-python/pyudev[${PYTHON_USEDEP}]
diff --git a/dev-python/ruamel-yaml-clib/ruamel-yaml-clib-0.2.12.ebuild b/dev-python/ruamel-yaml-clib/ruamel-yaml-clib-0.2.12.ebuild
index a617f800735e..394d3629230b 100644
--- a/dev-python/ruamel-yaml-clib/ruamel-yaml-clib-0.2.12.ebuild
+++ b/dev-python/ruamel-yaml-clib/ruamel-yaml-clib-0.2.12.ebuild
@@ -21,7 +21,7 @@ S=${WORKDIR}/ruamel_yaml_clib
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"
BDEPEND="
dev-python/cython[${PYTHON_USEDEP}]
diff --git a/dev-python/ruamel-yaml/ruamel-yaml-0.18.14.ebuild b/dev-python/ruamel-yaml/ruamel-yaml-0.18.14.ebuild
index f0f2c827b878..f55e1ab446b8 100644
--- a/dev-python/ruamel-yaml/ruamel-yaml-0.18.14.ebuild
+++ b/dev-python/ruamel-yaml/ruamel-yaml-0.18.14.ebuild
@@ -20,7 +20,7 @@ S="${WORKDIR}"/${MY_P}
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"
RDEPEND="
dev-python/ruamel-yaml-clib[${PYTHON_USEDEP}]
diff --git a/dev-python/s3transfer/s3transfer-0.13.1.ebuild b/dev-python/s3transfer/s3transfer-0.13.1.ebuild
index 9aebe8bf5887..a7ef4b7a61d1 100644
--- a/dev-python/s3transfer/s3transfer-0.13.1.ebuild
+++ b/dev-python/s3transfer/s3transfer-0.13.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
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-2[${PYTHON_USEDEP}]
diff --git a/dev-python/scikit-build-core/scikit-build-core-0.11.5.ebuild b/dev-python/scikit-build-core/scikit-build-core-0.11.5.ebuild
index e0cbc3c55d9c..00491f27c9be 100644
--- a/dev-python/scikit-build-core/scikit-build-core-0.11.5.ebuild
+++ b/dev-python/scikit-build-core/scikit-build-core-0.11.5.ebuild
@@ -16,7 +16,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"
# we always want [pyproject] extra
RDEPEND="
diff --git a/dev-python/scikit-build/scikit-build-0.17.6.ebuild b/dev-python/scikit-build/scikit-build-0.17.6.ebuild
index 8de639c783f3..501f79a50a68 100644
--- a/dev-python/scikit-build/scikit-build-0.17.6.ebuild
+++ b/dev-python/scikit-build/scikit-build-0.17.6.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/distro[${PYTHON_USEDEP}]
diff --git a/dev-python/scikit-build/scikit-build-0.18.0.ebuild b/dev-python/scikit-build/scikit-build-0.18.0.ebuild
index aa9aa095d2ee..7472732cc379 100644
--- a/dev-python/scikit-build/scikit-build-0.18.0.ebuild
+++ b/dev-python/scikit-build/scikit-build-0.18.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -16,7 +16,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"
RDEPEND="
dev-python/distro[${PYTHON_USEDEP}]
diff --git a/dev-python/scikit-build/scikit-build-0.18.1.ebuild b/dev-python/scikit-build/scikit-build-0.18.1.ebuild
index ca10c22f9231..ca92afbde3d9 100644
--- a/dev-python/scikit-build/scikit-build-0.18.1.ebuild
+++ b/dev-python/scikit-build/scikit-build-0.18.1.ebuild
@@ -16,7 +16,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"
RDEPEND="
dev-python/distro[${PYTHON_USEDEP}]
diff --git a/dev-python/scripttest/scripttest-2.0_p1.ebuild b/dev-python/scripttest/scripttest-2.0_p1.ebuild
index fb480abc23c0..5a44f47f2f34 100644
--- a/dev-python/scripttest/scripttest-2.0_p1.ebuild
+++ b/dev-python/scripttest/scripttest-2.0_p1.ebuild
@@ -16,6 +16,6 @@ HOMEPAGE="
LICENSE="MIT"
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"
distutils_enable_tests pytest
diff --git a/dev-python/secretstorage/secretstorage-3.3.3.ebuild b/dev-python/secretstorage/secretstorage-3.3.3.ebuild
index e4c0a7ddd38d..8c1b88b0228d 100644
--- a/dev-python/secretstorage/secretstorage-3.3.3.ebuild
+++ b/dev-python/secretstorage/secretstorage-3.3.3.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
RDEPEND="
dev-python/cryptography[${PYTHON_USEDEP}]
diff --git a/dev-python/seedir/seedir-0.5.1.ebuild b/dev-python/seedir/seedir-0.5.1.ebuild
index 32c154869e33..5ef2e150a1f6 100644
--- a/dev-python/seedir/seedir-0.5.1.ebuild
+++ b/dev-python/seedir/seedir-0.5.1.ebuild
@@ -20,7 +20,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/natsort[${PYTHON_USEDEP}]
diff --git a/dev-python/selenium/selenium-4.26.1.ebuild b/dev-python/selenium/selenium-4.26.1.ebuild
index 5574c8bb8d74..2306d62cd532 100644
--- a/dev-python/selenium/selenium-4.26.1.ebuild
+++ b/dev-python/selenium/selenium-4.26.1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -28,7 +28,7 @@ SRC_URI+="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="amd64 arm ~arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm ~arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="test-rust"
RDEPEND="
diff --git a/dev-python/selenium/selenium-4.31.0.ebuild b/dev-python/selenium/selenium-4.31.0.ebuild
index 96d4edadec6a..b9f86c761ead 100644
--- a/dev-python/selenium/selenium-4.31.0.ebuild
+++ b/dev-python/selenium/selenium-4.31.0.ebuild
@@ -29,7 +29,7 @@ SRC_URI+="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~ppc ~ppc64 ~riscv sparc ~x86"
+KEYWORDS="amd64 ~arm arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86"
IUSE="test-rust"
RDEPEND="
diff --git a/dev-python/selenium/selenium-4.33.0-r1.ebuild b/dev-python/selenium/selenium-4.33.0-r1.ebuild
index 88ad7a151bc5..6690c973616c 100644
--- a/dev-python/selenium/selenium-4.33.0-r1.ebuild
+++ b/dev-python/selenium/selenium-4.33.0-r1.ebuild
@@ -29,7 +29,7 @@ SRC_URI+="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ~ppc64 ~riscv ~s390 sparc ~x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
IUSE="test test-rust"
RESTRICT="!test? ( test )"
diff --git a/dev-python/semantic-version/semantic-version-2.10.0.ebuild b/dev-python/semantic-version/semantic-version-2.10.0.ebuild
index ca8ac6a5bf5c..ea14299bf280 100644
--- a/dev-python/semantic-version/semantic-version-2.10.0.ebuild
+++ b/dev-python/semantic-version/semantic-version-2.10.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
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"
distutils_enable_sphinx docs \
dev-python/sphinx-rtd-theme
diff --git a/dev-python/send2trash/send2trash-1.8.3.ebuild b/dev-python/send2trash/send2trash-1.8.3.ebuild
index 94230a6e003e..db7ddf1f002d 100644
--- a/dev-python/send2trash/send2trash-1.8.3.ebuild
+++ b/dev-python/send2trash/send2trash-1.8.3.ebuild
@@ -18,6 +18,6 @@ HOMEPAGE="
LICENSE="BSD"
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"
distutils_enable_tests pytest
diff --git a/dev-python/service-identity/service-identity-24.2.0.ebuild b/dev-python/service-identity/service-identity-24.2.0.ebuild
index 7a44711dc08b..04f1b91ea73c 100644
--- a/dev-python/service-identity/service-identity-24.2.0.ebuild
+++ b/dev-python/service-identity/service-identity-24.2.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
+KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
RDEPEND="
>=dev-python/attrs-19.1.0[${PYTHON_USEDEP}]
diff --git a/dev-python/setproctitle/setproctitle-1.3.5.ebuild b/dev-python/setproctitle/setproctitle-1.3.5.ebuild
index d1abde7f4e4c..232e6600d421 100644
--- a/dev-python/setproctitle/setproctitle-1.3.5.ebuild
+++ b/dev-python/setproctitle/setproctitle-1.3.5.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
distutils_enable_tests pytest
diff --git a/dev-python/setuptools-git/setuptools-git-1.2-r3.ebuild b/dev-python/setuptools-git/setuptools-git-1.2-r3.ebuild
index fcd5eb48c764..d00899205a18 100644
--- a/dev-python/setuptools-git/setuptools-git-1.2-r3.ebuild
+++ b/dev-python/setuptools-git/setuptools-git-1.2-r3.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
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"
RDEPEND="
dev-python/setuptools[${PYTHON_USEDEP}]
diff --git a/dev-python/setuptools-rust/setuptools-rust-1.11.1.ebuild b/dev-python/setuptools-rust/setuptools-rust-1.11.1.ebuild
index 9bb396ec852f..993699f41596 100644
--- a/dev-python/setuptools-rust/setuptools-rust-1.11.1.ebuild
+++ b/dev-python/setuptools-rust/setuptools-rust-1.11.1.ebuild
@@ -118,7 +118,7 @@ SRC_URI="
# crates are used at test time only, update via pycargoebuild -L -i ...
LICENSE="MIT"
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"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/setuptools-scm/setuptools-scm-8.3.1.ebuild b/dev-python/setuptools-scm/setuptools-scm-8.3.1.ebuild
index 62a7428d16d3..ba9c7701582b 100644
--- a/dev-python/setuptools-scm/setuptools-scm-8.3.1.ebuild
+++ b/dev-python/setuptools-scm/setuptools-scm-8.3.1.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 ~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"
# there's an optional dep on rich for cute logs
RDEPEND="
diff --git a/dev-python/setuptools/setuptools-79.0.1.ebuild b/dev-python/setuptools/setuptools-79.0.1.ebuild
index 25c858a78c11..e42dbc085907 100644
--- a/dev-python/setuptools/setuptools-79.0.1.ebuild
+++ b/dev-python/setuptools/setuptools-79.0.1.ebuild
@@ -21,7 +21,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 ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/setuptools/setuptools-80.9.0-r1.ebuild b/dev-python/setuptools/setuptools-80.9.0-r1.ebuild
index 48a1c820386c..7f4556071845 100644
--- a/dev-python/setuptools/setuptools-80.9.0-r1.ebuild
+++ b/dev-python/setuptools/setuptools-80.9.0-r1.ebuild
@@ -21,7 +21,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 ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/sgmllib3k/sgmllib3k-1.0.0-r1.ebuild b/dev-python/sgmllib3k/sgmllib3k-1.0.0-r1.ebuild
index f27c93a4f913..481746f3b087 100644
--- a/dev-python/sgmllib3k/sgmllib3k-1.0.0-r1.ebuild
+++ b/dev-python/sgmllib3k/sgmllib3k-1.0.0-r1.ebuild
@@ -20,7 +20,7 @@ SRC_URI+="
LICENSE="PSF-2"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/sh/sh-2.2.2.ebuild b/dev-python/sh/sh-2.2.2.ebuild
index 1d0305f76e0b..7e5ac5c98d44 100644
--- a/dev-python/sh/sh-2.2.2.ebuild
+++ b/dev-python/sh/sh-2.2.2.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
distutils_enable_tests unittest
diff --git a/dev-python/simplejson/simplejson-3.20.1.ebuild b/dev-python/simplejson/simplejson-3.20.1.ebuild
index 6511497136d9..d28ab6b3f176 100644
--- a/dev-python/simplejson/simplejson-3.20.1.ebuild
+++ b/dev-python/simplejson/simplejson-3.20.1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="|| ( MIT AFL-2.1 )"
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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
IUSE="+native-extensions"
DOCS=( README.rst CHANGES.txt )
diff --git a/dev-python/siphash24/Manifest b/dev-python/siphash24/Manifest
index 14060bef2e72..dad7366b179d 100644
--- a/dev-python/siphash24/Manifest
+++ b/dev-python/siphash24/Manifest
@@ -1 +1,2 @@
DIST siphash24-1.7.tar.gz 19801 BLAKE2B ba7df43dbd691fddc5dc31a58ff184c421a2554bb898948bdd7070976b55f9eb06eb0705accbcd4902e7a66d8a5acbe558cbeb2fe5ad71a13a83a8f7b125d391 SHA512 95b63330a0097f03b7798f37fa4ba28cbb22b7e44b8c2b2500d6035c23a80a90f2c4b5897a9787ab37d31c6627532979f73d55ae7d2b945dca9918a6658acb65
+DIST siphash24-1.8.tar.gz 19946 BLAKE2B b6c54c6ee528c01cc575985144bb2c27cc1ef7411d66ec9ec1a15fa3c48afa4fa53ad19d2d3b88af32b2cbbe69def2f5e1567ae4bbabdeb2f75e525a657a5810 SHA512 90511e7d6105f48527fd5927b0dc89f477ca0ae122b3d793bd666b187a3236866bb3c51e3282ac455bf4f26e9fa087ca4215b9ad8a3003fa10d3b76f67ee2ec5
diff --git a/dev-python/siphash24/siphash24-1.8.ebuild b/dev-python/siphash24/siphash24-1.8.ebuild
new file mode 100644
index 000000000000..ee01810252fb
--- /dev/null
+++ b/dev-python/siphash24/siphash24-1.8.ebuild
@@ -0,0 +1,29 @@
+# Copyright 2024-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 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Streaming-capable SipHash-1-3 and SipHash-2-4 Implementation"
+HOMEPAGE="
+ https://github.com/dnicolodi/python-siphash24/
+ https://pypi.org/project/siphash24/
+"
+
+LICENSE="|| ( Apache-2.0 LGPL-2.1+ )"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv"
+
+DEPEND="
+ dev-libs/c-siphash
+"
+BDEPEND="
+ >=dev-python/cython-3.1.0[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests unittest
diff --git a/dev-python/six/six-1.17.0.ebuild b/dev-python/six/six-1.17.0.ebuild
index 9cde8b68b37b..cf38e5940350 100644
--- a/dev-python/six/six-1.17.0.ebuild
+++ b/dev-python/six/six-1.17.0.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 ~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"
distutils_enable_sphinx documentation --no-autodoc
distutils_enable_tests pytest
diff --git a/dev-python/slixmpp/Manifest b/dev-python/slixmpp/Manifest
index 070875026463..4d9ae2ce7548 100644
--- a/dev-python/slixmpp/Manifest
+++ b/dev-python/slixmpp/Manifest
@@ -1,27 +1,45 @@
DIST autocfg-1.4.0.crate 17712 BLAKE2B 7f7300439899be03d001dd32b7e797bc4b9a58103081b6f7353c4b5897813cedf870b3fb1fa25d320a75326b334b44d8287e8603de34fc560d0b567143915cc6 SHA512 3b5e7c30bc73e105e4bfcab584c24fc4016db41fac9c356c6649fd841051704bbe8848e09546eb50d7c1f18ea8ce1cb72fbc268a620d5c609b3472114b5be73c
+DIST autocfg-1.5.0.crate 18729 BLAKE2B 27580e39b366c6fca02c9db09997b6415c409f12068f1249184268bf96fd85ba659e25ec730f99e10caf452f96c486f3d7442bf09c4552b5f39519b21d6f88cc SHA512 f279856f234d39d369623576acf9546a1ca24d7fe449f36d4fb93ea75a7efaf2c4015b9616a69bbbed358c5e5882e16b045352f046aa4c049b3d13b1e8257b08
DIST cfg-if-1.0.0.crate 7934 BLAKE2B e99a5589c11d79d77a4537b34ce0a45d37b981c123b79b807cea836c89fc3926d693458893baca2882448d3d44e3f64e06141f6d916b748daa10b8cc1ae16d1b SHA512 0fb16a8882fd30e86b62c5143b1cb18ab564e84e75bd1f28fd12f24ffdc4a42e0d2e012a99abb606c12efe3c11061ff5bf8e24ab053e550ae083f7d90f6576ff
+DIST cfg-if-1.0.3.crate 8719 BLAKE2B 5cd0ac122110740895b45cdf8e0f738f2de1882d5a06c696d08e906765e4ddcd72a866dcc115da52d9fece205c9ad15dc25ad98dff36b32517012a7586e986ee SHA512 afe424a191c2aaaffec3d114e0116d0324d12117aeb22df78e47ad6752444bc5acb074ab0a174476b71e584a37743f9dcc2b0e8036d590fcc5afc7c55f86122b
DIST displaydoc-0.2.5.crate 24219 BLAKE2B ba3396c93d27a99a92ff4a0f01a8d192b419bad25e48d9427b76260ebf2f9982291d77f2eb24d239c0b1fbb097e866a20bc46dc1879fdfc6637ea49928444a92 SHA512 5ca35fa59f263162389c1180331e9df607d9374bcb056cb04bc46c98e4d87277162ddb2335ffa8a8c5f69218abc3eabccdcaa71c21b8dd9081cc4146f266b948
DIST heck-0.5.0.crate 11517 BLAKE2B 5365ec43b2239a76b33a174f1a4292ece4147f9d382a68c6c60db78fdc8bad0afb1d51a65bcb25e96675372faa4ea37c318265030b0546ba51942f7c929e1835 SHA512 f044fc9c3d22466629fd8f772ec0555350fd611c0cfadca51d99a3d2f10e155f77c1091916c8a95a6b9b499f366c2e99a5fbf45b010f988bfb9b2501bf9f6a76
DIST icu_collections-1.5.0.crate 82762 BLAKE2B ab89336790ceafe62dd72f0aaef16a6eb47fa5e41424ed990e6c059ad431cdb3dcea943436aed0bf9c6eabd7aba12d255a2233fbbcf9cf5f666ef1dfd5b79a16 SHA512 127f1c91101ba69405b10a2590579606df766166fcf1fe6aa9a74c4900296425cba5c47a391a53a01b02026af5581f068fce4a7a400179809f7ed9922b94c0db
+DIST icu_collections-2.0.0.crate 83033 BLAKE2B a67f95177d820ab3b0f9d5ede716551aece974545c1fa6654e27b923c85b43fbdb9fb73bcf2dab2bf9a0d5b0bad4acd953fcb3418bc73261ef2f6e3407ab155b SHA512 646f41881cc2861504ee9753795e596b85f90f108c2d509563bb007fe52b08e9bb6dbc7b762b8ec60012ec53bd51e25a1e16f9fea2ed2c11355ae619c49c5034
+DIST icu_locale_core-2.0.0.crate 74430 BLAKE2B b01a63614fd91840cbaf00285ecfdec7f90eb9e23066a6c3b1a477574aeb8da1ba0b7f9115f8e5fde8454022cddfb54a25b2791ae33ec827f98fd1daf28a8ffc SHA512 cdebcb5e434b606da9fa24ef741a63d2cc2e6c20a2e47276aaf8923a578f6449bd319baabfd847640a65dac38858734554fc00474511d02c7145dd5d3f10e150
DIST icu_locid-1.5.0.crate 55131 BLAKE2B cde2b988f0af200b8e7851a66b8ae08881670ad6ff79c5caf5135a04c200e5ecd0acf27d8856fb0fce46d502527d506095f469c28f325b9b9d21d2a3657149be SHA512 4b85f0e7cc73166a542b2e502b3ffae1f30d2a9609ab83acf98e90b0edb37fa8ae4592f61ecf48a0ae0779fdd376abeff59e1d5cb97475012eda99ce2a97da57
DIST icu_locid_transform-1.5.0.crate 29094 BLAKE2B c7bb5c5ed273a6a97279d4599f612dccdd796f3ae717411aa5b21949721989986d8b766041b9c7e49a91cdd42a48fc965effb8d7fb6d33554926d203a6535953 SHA512 1779078e2ef9859bee2bfd5414ad7e4b0f0a40e6813f4ccf8de2bbe8c764fac7f99ef001cce22332a8b3840af22e9c7fb7cc0341cf8ba61303794ebe87071e63
DIST icu_locid_transform_data-1.5.1.crate 42937 BLAKE2B d9d1d66a556ba5383abe07c23cb96765312fe9637aeea50d030488faa9431cdeccfe42a5367d84c8fddb7a3fd2550fef106876798a1f020821ebc1cb6d32cbbc SHA512 fe5b5563248ea0c78f63b8f5fa19b7298776e0d6dca062af108e388565c932d098b98f1e7eba1469c705184684a369e9d142b3123b24451bf5084bc7b83245db
DIST icu_normalizer-1.5.0.crate 53113 BLAKE2B ccd58f24469da1f237ed9a349f0b3bdbb49b8f5b1995d6254c6e3eab53a71208ff4a0b09bdc68082cdbd288df66499efb19555f41d12a19205d724af22fb504c SHA512 22612b86a24e3ea222469392763ae9d40dcbb37191dd8b9fa1c64332463a4299a53275a1cd3deb7e0f057d137f4312d990762f9925d0ceafbc8839d67c425a13
+DIST icu_normalizer-2.0.0.crate 61543 BLAKE2B c91b1c26e0bc995ca3bc32c743a53074955079de642dba1982816218b38a175af297f3adc4cf0048c354e9bbad813aed817d124fc0bf7f95aeab5c1ea005a22d SHA512 7947a3b7132860935b1f8d77cc02be402933be7c2728b815a455bec3533f5d52f8ef02f762ef5ca3d9fa615677527326fc3dfb0cce0590da0ab44a5ae5f7c84e
DIST icu_normalizer_data-1.5.1.crate 50737 BLAKE2B 3beba44344a525220cb64bed28c1d869d2df0cd7091c92841ed08b1a82b958e61d388653ffce6dbc49781a8a157d427f7ff89f0b5a3bf874d1dd3f4461a1f00f SHA512 372ea6d0ed10bbba7392cb563997dca1601b3799c5c9ae585602629cd064461d096bbb0c624f14e43ccbeb6186d28d2d75e7f2ae98bc3a5ccbc0893b15dce7f2
+DIST icu_normalizer_data-2.0.0.crate 68101 BLAKE2B c129699813d651acc32b900d4d9fb052f352635925b13b33095ec8b66c841654bcd6d0c4cf3389c70587e31e4c1d0368c4d59e7263b8b8a366d6a544cfbee2be SHA512 20e443013977d65441366ca680c923760992ebed24171e87b62e4caf87bd2f52ef9a2a4537fbc1feaf1768a7ed1ece889b0b88449a0dbe025f6567b17996c0f5
DIST icu_properties-1.5.1.crate 64479 BLAKE2B be7d3a1663664095f4af654723ebc74f385a6423fbd3acad325ba0d6188dce9d9321eb323c1b1d8e6d75fc9aaef3d873b609d7049525d2402456c6331bcbf486 SHA512 7e347c0a02a41a3add950290bee90a339091a713546d4369c2995022e64f127f54204b0d46cbb88f396b3bccbd4cf12720a93d8551b73926f78fd5ec01829cac
+DIST icu_properties-2.0.1.crate 58165 BLAKE2B 265ffe58e96b7d3a1cbf56c3208ceb8ff73edb5dd82e719eaaff52c351c07f4a8b019bdeec52d1fb0a646d57f125d54783001545c7384ebf580521b11552bd70 SHA512 a963a6777a72ee044b33b284de95d6031dfdb56c72bfd535769d9c66d7a2cdd9e5734553f9d92708b53db46d1cc008680b6e1ea0ea1f598c2e29b025a5893bb8
DIST icu_properties_data-1.5.1.crate 229231 BLAKE2B 9bf61185e1e99f213fda4e28e0fe196e9884de0bf00783357607ee9d055d43c4303e611248b174e7cce0df3978f028d15188503160ae2b08ef9696f9dc835d35 SHA512 f37bb469d33f6a0d5126a37469783bdbd268dee081cdcaa8d18461c8bcbf91b08a75ecabe6df8c47e532838c95816778ae7aa36a22571fbba452d84fa6d63228
+DIST icu_properties_data-2.0.1.crate 159735 BLAKE2B d9b10e303614d1b380126daf43d36e858aa99740da6fd1ed416afff0f2c3b48ca49791ac5ebe098ee4c931b9d6b33b8598209b8294f54f72a5a6987be6c33f78 SHA512 f503b84491c77e2616f6b5a076acbe117832e5fd924df613389f06a6a479de1aa3d2106d1795692bc2818920c3d2d7005e1911787ae20e194a2fc11c175fa15f
DIST icu_provider-1.5.0.crate 52722 BLAKE2B b1e53ac677e2db5870df0a91de405ebbc635c3f7931960f3bd744b57350c7536116f3861d4177faed2145b79c1c957d79815fadc2dc85faa656a1f0bb338a16d SHA512 6c11d89c7d2b788a44757f02b0e298b558ebe174fe917664401d91109cdc7bd1aba5526b3cdcee1f066018de1b775bc9dfc294bdfb40476c53d552bd6f29d6a1
+DIST icu_provider-2.0.0.crate 50966 BLAKE2B 3e6f00e8c98df2a239a4c9b5c322d0ea9784b4f4401e3a62219fd5ec68a3f5f3c8714bf8c91c2a97b038956b013aacc24c55827138ac5f7b25d6807499766b0e SHA512 9353cfeacb76cfffa3132a77529c8a4cafd4fc943b0d9616d6ec80f04e67677e3cdd9369eaba1e655ecaa3af4433d82e12c1dd45dc190a4cdaeffcb2886ae6e2
DIST icu_provider_macros-1.5.0.crate 6436 BLAKE2B 7405924dca41db72ce422437434a4affece69f888e5c18d2a92f761a8d83b180f40c8de9a34ec15d0e107b63b2fe0502cebd0a0ae6f98d9d6ee37d197e754703 SHA512 a0dd58d731556a010428fe4aebbc9dbcd626b46d380cf28ba5236ec8824045a20f6f2ec986e0c1e791bc8bc2b692a10306f448279f079b4c37237e4a3c3cef63
DIST idna-1.0.3.crate 142515 BLAKE2B 6835a64772e5d301c2456a94f8f5f40ebe6828aaeb1d48e3fbe015917dc3ef95ac7cfd0e1f1763e23950482f4b46ef7987928c8dfddebab63947d5a29fb490ac SHA512 e75ab18297878df11d82bf3623b005a3dbf7a6fa38c8f78830c219adc7d6f4ac07dce24a5f1186de69035ec316421319e487396cfacb053674137342d72a4126
+DIST idna-1.1.0.crate 148747 BLAKE2B 89c6bec54cc2717741ddb5cff2939c08823189a490b79ec0e9c7acb3aa2b4fee472e33f36d7c345fb6658c863d3c174577aa1f1a10c9bba7558fca9f76b8ae82 SHA512 1d49993145fe694f33f7c71ebe62face416f2229b12690cec23ae2e4be2fc1c5aa5ad5651d815ab70057b68edc450ef6004306a775b920b8773c221c0fe6c106
DIST idna_adapter-1.2.0.crate 8206 BLAKE2B 5e8d7dbfea699584542cde53039df9d8c3dd408efa2534f11fce7086f679872c45d9905d6b2cfe523148eda3bb0cd4820a7b14317f91725f3d9cdb475aafbd57 SHA512 1d8b54c19878645749a1bae768dacf353b07d266f2cb3bfa1071a7afb56ca68f534dc1d54cae277b777bc97e5986f297cbe2051a82e14f553ea73cd723d9da7e
+DIST idna_adapter-1.2.1.crate 10389 BLAKE2B 464a9a20da73aad657cb7c0d573d92bd21159032daa8e28fbe61a980b44e59d1a2b2e076d30ca35a49abcaf1bb71ec51f774ee137792dcddc81086a1b6c2eb61 SHA512 e94555b58646c596fe64006ee6f4458962987ceedc3341a12694d809cc298c38799fb56b382adaa966e3171b1f62b7835fbb2e688251e742deb7067975bf1aba
DIST indoc-2.0.6.crate 17164 BLAKE2B 1a6cff95bc12ea885ef36b935bf4f1c7870d65be0ff31ffc67dcab904fa80215c1254c1803c5d0c5686252addfad3512e9e1ec79d3edcba026a879f4706926d1 SHA512 e2ea2e5c8226c802bbe0631c1a99d2edd088cbafbf978b2a7b71c7c7f47754c6d4653f466e286441b61cc46def1c7f7a02d4785caab93a61dd785211dba7d1a9
DIST jid-0.12.0.crate 28603 BLAKE2B ae0e6b4b73a08892cc93c7e11814fcdd6e2b1c8b76ce17c5c602ff1f750226b14add7d376d8362cb7b91cb7a6976796023f11aef1a93268eb5a48640bf108b4a SHA512 b41b022dd5f830b63871a60ba36842f0a9ab3582c401748116b9977585f44d866d4a23c042809e973bcf44d99a63cd921095974f0fde6fabc7f71a38e01d0f74
DIST libc-0.2.171.crate 785246 BLAKE2B 2bfbb3146d63444632b924520bc3d8af4adc6bbc38f4a7c6e8a003365430372ac1c05246684b54f0a98c36c8a7f02c325e1a6dd7fec44adeff41767e427ea77f SHA512 aca8b5f769dff18d9b3d73cae2c496f64a9828edfb0b57412da01a89158e770a5dcbb74bd83612870f9a08eb31647c1a2c92463189f16b01be8cdfc76fe0bacd
+DIST libc-0.2.175.crate 788728 BLAKE2B dfbcc891a6da7d327916883deec54dbcb0ee5e7fda0b805926f06088dbbbef0520a838c07a62ea075d6a5a035994ea8130efbbc88e08b928c13b06bc5cf75bb9 SHA512 02fa1b6e61ecec3b626f3c802b53e7f46c98558f6e8c810b46d7322c2e4825f1be87068942ac81c07a2188356c6e2b6836b0dddd784396e43ab3712a62cd17ea
DIST litemap-0.7.5.crate 29962 BLAKE2B c94ddff0b5f6fb99d6adf31ee7c953bb1bb3741e5a68cfa598c75f58f6f426a53d19423e40b0b3ae2010e1533b4d46eefeeb7e86fdfc72289748cac897ba99c9 SHA512 722345f73b4ec2e91a9407dafd3951f1aad0acfb66e0adfed8b0a83dc1ea71d513fa5570bf960ef51409c9d50aeac23f85410ec6392f5620dc1f1e1e1f884659
+DIST litemap-0.8.0.crate 34344 BLAKE2B 0f083fa9ecb78ef6de4c094db8a7cebe2ff47af6e46414c06cc0dd0e92ecca06c941dca6ea0ac1b4982f14f6027cad979fd37d19db6631e3952dffb6e33c8798 SHA512 61162bd55b28540ec2d61262698045a78efbfadc7e2fa248d9e0215fd7d3ce53a8c50ea0487f2f7df41149e41c0131849e507737e3bbae29cb69ea41dcb8e2d9
DIST memchr-2.7.4.crate 96670 BLAKE2B da38114beca670467c3e1fbf4e415af6f22d52e3223715d52e181babb89b872b46511563985bcc16d7ff4e82f812c6e83ad904b0fe2501b14445119dfa8240e6 SHA512 8d0e8b9c30208897d4b1b920f1bdcccd0c2b75d92a06abe4a1b2407938768abb6487d63de56c6a80419798fe69517210643dfaf11f5f5540185f0eccf220adb2
+DIST memchr-2.7.5.crate 97603 BLAKE2B ee41ef722d90265064db3ffe22d52eff8f7627ac1ae9b0bad6ca9fa06c1027dca8d67e594e03b03c944dbf85930d2dbf030c5aaed369020ca1a1ba00f153d91a SHA512 2606ee16a7dc02db95dac17cebd2cac9deb2e23d7ea62972cdb19145c06eaf75631347a49c4e6ceeff89fb6e90e992f9bca0a9c955eb5130f89ba2bd865936e1
DIST memoffset-0.9.1.crate 9032 BLAKE2B 0aab55fe084134bb599c52d77c96400db40949b1013e7037747ada4fcec8dc4a124b6f3755f04b36e057eb2fb4a6bd6f07d6eebcf166f8a71405ef434d802fbf SHA512 3a236c0f481e36973b9f805e454c2efe4dd375e6b4ee406b57145136c70d5fbf4e1183d563ebf3b5fbde7363bbf5f08f0d88e507aae5bda4cc75664ecd0e33aa
DIST once_cell-1.21.1.crate 34256 BLAKE2B f1df22fc081762f4205d0d18ac1f0bacd1528dc214453b7980d82fbae23ddb6a395e68eda838a0e8d82e411c58e9a8106ea00f3da53b82272467452efeea2388 SHA512 964ddde874d5059680229b74cfd607f558c02385da5141f12b1f1769f9843a627265cd52a95bfa7718e41103eaf67fafe8022d8e3d47338701b37bcc38c8fd71
+DIST once_cell-1.21.3.crate 34534 BLAKE2B 3578aaef305cad2fdffdc40c392775a3540bfab3f3aeafd22466d9507bf8346b9fcc200929d48525b051070c0aaa423ecbcaa12868b34dca007991effb224166 SHA512 32a87506c6f4598f3ca2c88556014ef2093d5db9a08602335e847caa537a866492fa74c894e7e1da2e4289a1d3dbffcb90a9e37a4a1453203832f434b8206990
DIST portable-atomic-1.11.0.crate 181258 BLAKE2B 627bd7c306f6c4d7991abd9f995b7e0ce110a7ace738690c287a43ce3b979691214e525876f8ace0c2f0d10d781fba95c7d3bf29aea28e09b05b06f4764db03f SHA512 71774f8308963c5399095c6b755befdf9ff3d28f9529b4bae1fe0f2aba733339a267aa6f0ff854e59fa5044a9b0c2c86bad3bc4fcaa951724c839b0d6a22041e
+DIST portable-atomic-1.11.1.crate 185506 BLAKE2B 953bb1f2059dc1d891305eb89945f1f6a172fa50972725aee499de72b5dd9b4ad8ccefe4e891183ff8e6b64f4d1bb45ec33b06e0f5af34c940f817b290f746d9 SHA512 4c037ae0b4aef43077bdbf803389bc078d963f20d023e2e1d339a54f67fa9b27c174e7c1b6eca8881ecf301e30c431632d2c0dcedfb5b19552892fac0f81e2e1
+DIST potential_utf-0.1.3.crate 9698 BLAKE2B 16efbc71ed6516cf52a361118323e26a61af776378382f1ad73121f526484c0df2e915c847ab0bc487ad1e661f839599a0e8c66faae8da9f9e589209e03c1778 SHA512 8f5de5763b073b7869c2a9e5336f0bfaeb45407cb0f4c62a16319ecdf308c8490bceb8bb7c386bfcf700d145d52d591135a288f069b4c64b06d9aaf348316a8e
+DIST proc-macro2-1.0.101.crate 53886 BLAKE2B db566c4fb6a197e0aa45cc074310853eaa24ceeafe9fb91f2014ba47cf6b1cbc34e4e9391456c946587540c8e270e1a37f5195cf03bd15ea5d4f171bba9772db SHA512 3171c807d24371da2931f9c706fb3129bb9bf3ac40418e5d14cfc372baf96e5fee9ede72091163858e3ba0b4f88594efa1031b0bb7128ca68e7b847dead6856c
DIST proc-macro2-1.0.94.crate 52391 BLAKE2B c50986bb34468379e22215c6572c2b722f54381c02258fcba6805eef0166e4bb591d20b94b9084b5d68972df8ef12476ce0d1081588cf80dad3c4ffffa347660 SHA512 3fc4552187d4130f0fdb415f94e625c156a1fdc6cc955fda8a68b49983ac8a83b897f43d1caa130c4f0932fbd9651140b7670601faa2b9b936947c3fd89f7769
DIST pyo3-0.23.5.crate 1088533 BLAKE2B 2efae0a42c1d33e25c5871e3f61a3cea9890d278a20e2777307752b544ab3a634059bba896a1df0df4eadd0ae3c2e63b6d637aecd6699b31fac4107e3a43a387 SHA512 efd3a86dd70c199304463c0ae18dbdf4d9176d1af13b664bdd05a1e218cffda3f29f06d868d0d852d51c3e85b7e07c39617206b3feddc913b3b622f3fcf59d5f
DIST pyo3-build-config-0.23.5.crate 33885 BLAKE2B 14e3897186abb772bcde147a9ebf2a70f5cbd634cb0240e1dbba71079acd2f9cd61fd263a5d32bc583e188ec84b6db8b93f018ab954ac9da66f423183ad5c176 SHA512 72aac032e3026554761eb81dc9c57591abc4d0c329c46918da13a8cc93c0532eba2fe3d971699a50890c66d8853b93a67840b0e8f1c15747d184b873dec2894a
@@ -32,13 +50,19 @@ DIST quote-1.0.40.crate 31063 BLAKE2B 09036ff3e5ebbd775c466bb936de91d4c070481eb4
DIST serde-1.0.219.crate 78983 BLAKE2B 7e9542a04c7f1aeff95b821245034368ff1721d98d7138bb1e0a99cdd6436dc37d69606308834fd33daaea3a1792409b3b2305b802433fa1d155816c55ca2a7d SHA512 0d3fe9a47af027d0d79499e60d940661dba6e29e8f0ce47d0db2ab722030d255aff637248af6f893a9c4224239733db09ffcdc6e1923a7177bfae55c98ebe769
DIST serde_derive-1.0.219.crate 57798 BLAKE2B 071f02019f829a2753769ce915d11df8f0d202ca67314fe83b42e1f1f3d07bc91b7e7c38fe498a0513714f80d3a3dbf2b447b1f85762de06dd021119801afa89 SHA512 1676bbf09e11273705a35c540d52d35d1bba7cdf1f347d40a364d7ae9269167f9f0f62ff4fa384aaa613c83e432a8eb3c016587ea643bb11434c00664a5c116b
DIST slixmpp-1.10.0.tar.gz 705681 BLAKE2B 3d37490ced1dbcb41959409885e6f51b7249515bfc41f45ff63d0d9e8779a7bfd707232b74cb6fb0149d7d8a02d0e65db3679b75a253edb4637783a5ef995041 SHA512 9b78197b6653a3f43a663bd842adae9af5ae24ff8496dd77800cf555813d2604178691b6f4c7b1eac4cd7eb5cd914ee8370c21c7af117e296fa47ff9487aaffb
+DIST slixmpp-1.11.0.tar.gz 710258 BLAKE2B 28b77840fd3dc90acc2bc58eb0afbf66dee571b2925f66a94e25be7fa779751302d668df5eda1ccbb41d41a41748453e38fa9fdf8d447e4ac2d795f60a1d39e8 SHA512 10302a02b48ffb92b7013aa81a0690566ec8770ae4658b3823d5cc743e04cee191094c763d941366b74215f6a43c07c61aa44a4037217457c4dab04f4e373667
DIST smallvec-1.14.0.crate 35561 BLAKE2B aa8ee61800a6d13eda5acb4e9dc03543160849479a96a72c50ab38013b23e9593a665773b455a09777038edd436d7a35b501f6d4a0e16ff49544be60345a1e50 SHA512 90de38f208f551cdbf4980fda2314dee57d4e2bbf769a01c47bc849189e9243474932052faa92fe0ca59ecc9c5d1ed84091ef87f724343d38ebbbf710ba232be
+DIST smallvec-1.15.1.crate 38116 BLAKE2B 8dd779d7726694672945e928399e0459f4973d284a6c2d664c2fc757ebb1177658f47c812d9800e982479cbd7413fd4283c64a4d248ba5cff6397f96b758676e SHA512 c26b097a063353beedfcc921129cd0fb838c1c9420218993a05b2655b47b6ec16f11e0054312018658b4abd893beee140c5d2739401a5e5aea2e64575f237047
DIST stable_deref_trait-1.2.0.crate 8054 BLAKE2B 287a65c3e5b47213544a43e57c60a54add60b4c2e3c8d042407d860cc950ba7ca01a2e67ce56aed6744992b61ec1f9aed3321e3d88482e33129548b7d51df205 SHA512 a13cfb22723f1f2cf089b2d07d657846f50c37bc0438d1a76096bea30214cad226b7a422c21f9e191ce87071da8a141d61882aedf9e0203a5fffdfda86a5fb03
DIST stringprep-0.1.5.crate 23573 BLAKE2B 8b5ae2f278603553761e0b98a3f0a02c6a81fd117fee57a8186a015a58ce5ec8d91d9f3decb393f53e07d8df05963f399e63afa46bca937b99f609204582aa50 SHA512 f5dd6ee410e42f285b4da85e76d514ef697cd995c601b5ed23e25f702d920dcc76f15fad41610b6554b692ca0f939f329845535fe4ea167df3ea0e628b1da447
DIST syn-2.0.100.crate 297947 BLAKE2B 50a9b244732eebc16464bef152bb620d86aba590942b0d68710d36e89c0ee752629be5bb8db48866c7d252d545ab910625891a5a9b499ad9142191881eb9b42b SHA512 082a975c6448febe38abdc0b43ae929a97a303c0f980ecd2bdd6c44aa2b39ee5aeedf6b1c84316cf088e0d97aff011ec0482a5242ddb338dcf7db5d55926cf6c
+DIST syn-2.0.106.crate 301514 BLAKE2B 6b28b30ee067c23dc4bd1b38365d14c1700245c974e785173965b0822301966d642b36bdda25210d61f17a99fc71eb81e29a56c89d1649773908bae32778fb1f SHA512 e07e1058770fa3f1039eaf335340cefb597c0dd11bb90fec9fa777ca5815d0e0bb1711bb4db52cac77e205dd68fbe2bce0e1aa9895c2a52a1ea6d7758d13424c
DIST synstructure-0.13.1.crate 18327 BLAKE2B b29ee88c559a2d58fa46b7af155b448f001649ea79a1898f0ac87e69108b87c65cbd287d8f9001f360df7fef06ff39c937b48d33e487a30c8eec6a46c639c0c2 SHA512 09024193b44fc9a8901bda845b9f86c57dad65d0f53e309b2e7e968538fab6f67db1c86e5e52a2eb8fd116dc073e3ad10983bd60764662ec6ba94fee22a958aa
+DIST synstructure-0.13.2.crate 18950 BLAKE2B c475f370d901a371262f466dd98e3914dd6f36aa473a33362866c0f781d27b1813233f96b02208f3463a825e8012cab0f8872eed848d9aa0eac88b581a0d261e SHA512 2698f4e80b93f7cf1d8ae97c4c42a7f61e7b7081f7f1bbb94d7f48ab7ae813a666d73c49ba3812cda9155e0138b55cc246fb96e5858e411a8d32bafb3e2b2afb
DIST target-lexicon-0.12.16.crate 26488 BLAKE2B e7950e4a302059a1bfc9bc15618a3c1b971a17cffae117a6e8f5f63a0d82fd2bd02680301d15338612d5426d349dd24cfee30ee787a15a7d3187f2a6825e69ce SHA512 092639957c4a0391560b6442b31c47159c04d12e971010f730a6ec9cb5389e4be903ef3d7daa06db95e64dc78b6970731fb647179ebaad2b12e9ed5e9b24da27
DIST tinystr-0.7.6.crate 16971 BLAKE2B 33a248261c4cded41a81f0d6e6c8df55437f042b37f235c39787986ec562f0dbff50b282ad0f1483daaf49c4b33e6618e139a6677d1238c21f4e12082562b4ae SHA512 a33051848de248cac0a2d151760a78cb3aa62c787d84ff7aac38b11c0660e9188e4d43d43a77fb8676e49ac6102015e9c3db057848d809e71981851875d0fb25
+DIST tinystr-0.8.1.crate 23333 BLAKE2B 59bc4a522d81bc53c7acff215ec711e0f340c3884858fd4e985d655eb620d4a8b2679854e23f035bbcb6d795647fd314e26707eda564f07c05850c010db084a2 SHA512 07e32300424c9adf7e8bb830efdfcb23460b712c72c3eff11b9d00f1496c8082659bab52914cbac0bd26e45c352fcb859fc6b1cfbb2028a49cfc03e75ab0ea2a
+DIST tinyvec-1.10.0.crate 51996 BLAKE2B af3e3e415061eccdd1ba1d157e513323259d05688f8ee3d10fb3d9dc0a51bbfc9f8bdfebc2de12bcfe573196457acf60826d8eeb4b5e913b4d92c09c8891a9cb SHA512 e64ea6ce2bf8f4d2a38a00402cff2b79c06082f8a9ecfd774e7acf143b18a8116b95a8921e516f56d6519ad7bfca1d11e762328cee1e4534ea83f3f2e98eeda7
DIST tinyvec-1.9.0.crate 54137 BLAKE2B 68a96ec0ffa392586c3bdadf2323b2a3b416ecb81db5d18ae0e05187b097c7882da6678bc881e70f935554862fab5cf41ae590b27e0fab7c1c73995449b84f5f SHA512 5f42811be51c58c72b80fe9a7199250fb6176f5766dc774b39ff656ae5ebead0d9c91ed7db1046288b8e05e20edba36455e4cc6fc0766c60898187f30c232aab
DIST tinyvec_macros-0.1.1.crate 5865 BLAKE2B 2bf4f68ca11dc19c72232951605a4c809b34ff38ee365ee4f592a3c41360e23c9330cfba961e2692a0ad568fef4aaaac51c40808d491178cf7a0c4b5a1c5d484 SHA512 10008c7b3a3d50c94b9c370015b76ee082f5dfb6dcacf014dc2f2dbe92f903618d10d0202b21f48fcf98a94ae76fb712db55a5e8ad353645d378cf0e6ec74f7e
DIST unicode-bidi-0.3.18.crate 58300 BLAKE2B 388af09d26248f2059d251f9c2b7d949112a430b16ad5868874d436346e2e753875ae382257cf5bb1d41d6ce9f2d7a34d37d2a2e88f9cc051b85a53c3baf5ee0 SHA512 69b5f220cfe8b7b36471fb0adc7d7852a8c40c497b8a81eacd1293b72c46e09c39c2e0a7218b58f0cb62c5ced397a8eda2c5f358eacdfe5d18aba2bc14afe2bd
@@ -50,9 +74,15 @@ DIST utf16_iter-1.0.5.crate 9736 BLAKE2B edcd9776113d4d2b267a9cbd58cab11c5497ff1
DIST utf8_iter-1.0.4.crate 10437 BLAKE2B 1e7a8b9241ebbb62cb497542b970473780f735010a0af900771a43abceae4e7f362d21d4f79f7c00630e4549400875ea17574b2cbe4f5ea19e8ed428e3b5577d SHA512 a72671995b3eb295581c60dc632e4a25ba257227fb5d58a8bec322428b6d69529bba79a6f02b8e7ee6698b7779d9d6695f5badad73e07c254b00c9d6256c9090
DIST write16-1.0.0.crate 7218 BLAKE2B 548796314339463e4b71f8af3d344e45dc89480e103180b6d56c90fcb816ad1a37ab2ba20766c4b9754f2cc686752eb1f3a5a12ec1ed4369a9cef749ad4f3e97 SHA512 655a207b8082bb88e462f992ecb4833cef9d590da06d6356b41d109df2862b49ee5705189c78a607b549e7343035119d158020d58fcad49608e51659357a83c1
DIST writeable-0.5.5.crate 22354 BLAKE2B e4ff9862c070b413568ce0c75d1eccafcf1db8578eee4795ea9046dadd643f8a77258b437be288b93af247199d63455298ac2cff909226bc432f91c0aa863921 SHA512 818b2546c8ec25816aeaf5e31a1ded927d197bf7256e7c5073738c2709bc58a95d382a0256eb38a99235ae83729b578701261866d42ea3357a26024906e196c1
+DIST writeable-0.6.1.crate 24068 BLAKE2B c513c806d6abf7459db1a203c7b4aed4766e6f75cd82a40a874fac50cb50d03970d0500251551192164da14bd7d2341961fff78b7e01c88bab83007008c3e1b2 SHA512 686ca04702815096ac529ae6b9b80a30338f42eb5d414331992518c467c1827462673fcbbeb293818bbe570bd2723e9c60324522071c1b790c862fa6652c1385
DIST yoke-0.7.5.crate 29673 BLAKE2B cd2e42103140e080a29bf579fe5176b36a192f9b1309c1f2fd7557fe93b2f6eadbf6fca4a6a3b1a7b6288403d2f643841dfc7a5b6a4476776943950abe5c1613 SHA512 6bbd99671d1a5a5217890eaa267113d193b3636b265393afb6e72a313f01704d462fe017264f061405e8e84c188b590094c29e3fcf19a63c375ae165d1a0bbef
+DIST yoke-0.8.0.crate 28726 BLAKE2B 1013ebf0478242d9172179b53a638fcf7a167e554b40464ba67a4c4db17f75963703b2c9aba29f9368af7530f475ed79a43672bf6f0840b0d77fb0d2539f8c3d SHA512 6b6efbfd2bcb7e06fd6f9ae7bd213a54fedc7550273e2613fee3b8791bbe1038a7e7209142cc673d71fd57b7184cbb1209115ecd15c647db1a74f2966d593276
DIST yoke-derive-0.7.5.crate 7525 BLAKE2B 9b6b97eaf3c50f0f5ce8cebf685a1a17d4c21eb9b26d38eac99e0a4c0f9d592e95a7843b7a0b897945a14c4eb78ffdf2c0972b448d31d7bc7b077f27aad81d9a SHA512 e30b06b020aa283080905004295fb643c539b130d0d53bda51927b95e79ba562336aad30d8a6202d9a0c62d5b64559a01218c6f02f3faada6003d4b03c205cd6
+DIST yoke-derive-0.8.0.crate 7521 BLAKE2B 088fc7f5954704c453dbd2abd2a9a5a779552067aec8e51793cb6fb8144f0bee7a7b04d777bbd05c1c62f49c9c75c7f3df09b5497d35eb64c079bc04867e42f2 SHA512 38672da30ebb9657e2b5f3d509940ea80ee6cfbdad61b14b84ee8a7d96c1dc597eff7f3c75e5c375bcdcf8ef5bebe21f9f520844f448ca215a3be19763f578c3
DIST zerofrom-0.1.6.crate 5669 BLAKE2B 1428e9cfdcdae13b39b7465524d1b8b79bdd89f743d3db4a3305c2b39d61ad7ced958dabd673a135147a04c8ace69d8c710dc06c6a07b1dd3987fc0a45148094 SHA512 e87c50b4f87caff70d026099bddcced73398c432f6aade32d74ad199cb3a985956bac282f48efdd501e64e80297afe4f8a4518db32437bf297fcf51a6f94bbd9
DIST zerofrom-derive-0.1.6.crate 8305 BLAKE2B 9ab7425b450bf8c47538be7ff32901045393bdd91b9687b8a32ac194b7272dbd4f5310629647c6710f97a50cea45c722c018a77006f24da2b44a4c475daa54cb SHA512 ef4226df3c9ca9c0146639b19d9aa611f2ea3148c10ea875f43ca1960ee8ed438a553b078a9b449a58862f44cb7d4434fa35bbd6db6f0a773618f63d2575c985
+DIST zerotrie-0.2.2.crate 74423 BLAKE2B ddbf7c1a1e45fd4b3c44bd7036e46070a2d9fbb338de719c2c775dfa96ed11d06e14232f05eec4b5c9ac500ed4e7abd8a483dcd06a6a60ba20e6b6b6fa7333ff SHA512 72b6e9633f100172b5e8ef25dce004ea1eb14e110b9189d91faf19f63f8a7714325c2847df559b7ade1f0b2c54369c63fb9745946c4976750a28853790328ee8
DIST zerovec-0.10.4.crate 126398 BLAKE2B b078784d6f178bbb9de1c3c1b6c7ef996f00bdd7dfd2924bda921e62f3e09e953fbf50f8d0da99ac6ff6d134f146253846f5663549dcf8df08eaf34b9d4016b3 SHA512 db12bba1d7476ddead92e6dfcdcc30e2e0defff4f263a740244eabee265a2cab265473a663d3dc3210f48e113b66d951da496dfab7965ce1bc792e5f2db422a0
+DIST zerovec-0.11.4.crate 125080 BLAKE2B 67957532912716a8fe7b5468effc8af700251acfedad13e4874229ce91a2450026a2a336b542cc1239f62a71da997e406c49f85f4f8c7019a9228997d8a31750 SHA512 461ac55146b32f323dff50f85044040096369361bd23e341d729467e99b5c825ec0add8fa940bf0c17cd4990fd7e629268891a711d5b49348167c0a9d6c03e31
DIST zerovec-derive-0.10.3.crate 19438 BLAKE2B 9f7df8a4e4a0b62ab25aed967b26509db4bcc5d5b10b3bd73305099a4c49a60be8921484ced1a34d9b7ae30ffa5abe789686f432416a8f1cfc07de1db1dff594 SHA512 caefbffeb35265db9f74933bf07109d57f0da48156cafd4f330af78a5c7eb9ab0831a80789ad4fb119875ebc6cfd7e3de68c9984b77dca5151f9be41f1ae6e09
+DIST zerovec-derive-0.11.1.crate 21294 BLAKE2B cb51fbd289868568f65ca7253059c1c2c94a8130a2a9879b2a0129faf5867e13ff675cfc9b359793629d955a1b39617c6fce9079398a54ae31670ec29eab6ef1 SHA512 5836035134bdf09a4a8cdd5a18f629696902704903c4b3579ddf1adfa49ab47a68287ecf2be165d631ba454daf150c043410359783bf1ce448e7ca46b8cb6039
diff --git a/dev-python/slixmpp/slixmpp-1.11.0.ebuild b/dev-python/slixmpp/slixmpp-1.11.0.ebuild
new file mode 100644
index 000000000000..92894993505a
--- /dev/null
+++ b/dev-python/slixmpp/slixmpp-1.11.0.ebuild
@@ -0,0 +1,103 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=maturin
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+RUST_MIN_VER="1.82"
+CRATES="
+ autocfg@1.5.0
+ cfg-if@1.0.3
+ displaydoc@0.2.5
+ heck@0.5.0
+ icu_collections@2.0.0
+ icu_locale_core@2.0.0
+ icu_normalizer@2.0.0
+ icu_normalizer_data@2.0.0
+ icu_properties@2.0.1
+ icu_properties_data@2.0.1
+ icu_provider@2.0.0
+ idna@1.1.0
+ idna_adapter@1.2.1
+ indoc@2.0.6
+ jid@0.12.0
+ libc@0.2.175
+ litemap@0.8.0
+ memchr@2.7.5
+ memoffset@0.9.1
+ once_cell@1.21.3
+ portable-atomic@1.11.1
+ potential_utf@0.1.3
+ proc-macro2@1.0.101
+ pyo3-build-config@0.23.5
+ pyo3-ffi@0.23.5
+ pyo3-macros-backend@0.23.5
+ pyo3-macros@0.23.5
+ pyo3@0.23.5
+ quote@1.0.40
+ serde@1.0.219
+ serde_derive@1.0.219
+ smallvec@1.15.1
+ stable_deref_trait@1.2.0
+ stringprep@0.1.5
+ syn@2.0.106
+ synstructure@0.13.2
+ target-lexicon@0.12.16
+ tinystr@0.8.1
+ tinyvec@1.10.0
+ tinyvec_macros@0.1.1
+ unicode-bidi@0.3.18
+ unicode-ident@1.0.18
+ unicode-normalization@0.1.24
+ unicode-properties@0.1.3
+ unindent@0.2.4
+ utf8_iter@1.0.4
+ writeable@0.6.1
+ yoke-derive@0.8.0
+ yoke@0.8.0
+ zerofrom-derive@0.1.6
+ zerofrom@0.1.6
+ zerotrie@0.2.2
+ zerovec-derive@0.11.1
+ zerovec@0.11.4
+"
+
+inherit cargo distutils-r1 pypi
+
+DESCRIPTION="Python 3 library for XMPP"
+HOMEPAGE="
+ https://codeberg.org/poezio/slixmpp/
+ https://pypi.org/project/slixmpp/
+"
+SRC_URI+="
+ ${CARGO_CRATE_URIS}
+"
+
+LICENSE="MIT"
+# Dependent crate licenses
+LICENSE+=" Apache-2.0-with-LLVM-exceptions MIT MPL-2.0 Unicode-3.0"
+SLOT="0"
+KEYWORDS="~amd64 ~riscv"
+
+RDEPEND="
+ >=dev-python/aiodns-3.2.0[${PYTHON_USEDEP}]
+ dev-python/aiohttp[${PYTHON_USEDEP}]
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ dev-python/defusedxml[${PYTHON_USEDEP}]
+ dev-python/emoji[${PYTHON_USEDEP}]
+ >=dev-python/pyasn1-modules-0.4.1[${PYTHON_USEDEP}]
+ >=dev-python/pyasn1-0.6.1[${PYTHON_USEDEP}]
+"
+
+# Rust
+QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/slixmpp/jid.*.so"
+
+distutils_enable_tests unittest
+
+python_test() {
+ rm -rf slixmpp || die
+ eunittest -s tests
+}
diff --git a/dev-python/slixmpp/slixmpp-9999.ebuild b/dev-python/slixmpp/slixmpp-9999.ebuild
deleted file mode 100644
index 429af7d14f21..000000000000
--- a/dev-python/slixmpp/slixmpp-9999.ebuild
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright 1999-2024 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="Python 3 library for XMPP"
-HOMEPAGE="
- https://codeberg.org/poezio/slixmpp/
- https://pypi.org/project/slixmpp/
-"
-LICENSE="MIT"
-SLOT="0"
-
-if [[ "${PV}" == "9999" ]]; then
- EGIT_REPO_URI="https://codeberg.org/poezio/slixmpp.git"
- inherit git-r3
-else
- inherit pypi
- KEYWORDS="amd64 ~riscv"
-fi
-
-DEPEND="
- net-dns/libidn:=
-"
-RDEPEND="
- dev-python/aiodns[${PYTHON_USEDEP}]
- dev-python/aiohttp[${PYTHON_USEDEP}]
- dev-python/cryptography[${PYTHON_USEDEP}]
- dev-python/defusedxml[${PYTHON_USEDEP}]
- dev-python/pyasn1-modules[${PYTHON_USEDEP}]
- dev-python/pyasn1[${PYTHON_USEDEP}]
- ${DEPEND}
- $(python_gen_cond_dep '
- >=dev-lang/python-3.12.1_p1:3.12
- ' python3_12)
-"
-BDEPEND="
- dev-python/cython[${PYTHON_USEDEP}]
-"
-
-distutils_enable_tests unittest
-
-python_test() {
- rm -rf slixmpp || die
- eunittest -s tests
-}
diff --git a/dev-python/smartypants/smartypants-2.0.1-r1.ebuild b/dev-python/smartypants/smartypants-2.0.1-r1.ebuild
index d5c6020d8a7f..24a54e95b7de 100644
--- a/dev-python/smartypants/smartypants-2.0.1-r1.ebuild
+++ b/dev-python/smartypants/smartypants-2.0.1-r1.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P}
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"
distutils_enable_sphinx docs
distutils_enable_tests unittest
diff --git a/dev-python/smmap/smmap-6.0.0.ebuild b/dev-python/smmap/smmap-6.0.0.ebuild
index 45f170677798..af6350811dbf 100644
--- a/dev-python/smmap/smmap-6.0.0.ebuild
+++ b/dev-python/smmap/smmap-6.0.0.ebuild
@@ -16,6 +16,6 @@ HOMEPAGE="
LICENSE="BSD"
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"
distutils_enable_tests unittest
diff --git a/dev-python/snakeoil/snakeoil-0.10.10.ebuild b/dev-python/snakeoil/snakeoil-0.10.10.ebuild
index 5ae9812f354f..7062ec584926 100644
--- a/dev-python/snakeoil/snakeoil-0.10.10.ebuild
+++ b/dev-python/snakeoil/snakeoil-0.10.10.ebuild
@@ -13,7 +13,7 @@ if [[ ${PV} == *9999 ]] ; then
https://github.com/pkgcore/snakeoil.git"
inherit git-r3
else
- 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"
inherit pypi
fi
diff --git a/dev-python/snakeoil/snakeoil-0.10.11.ebuild b/dev-python/snakeoil/snakeoil-0.10.11.ebuild
index 08fd3fbb838f..d067b8bbbb80 100644
--- a/dev-python/snakeoil/snakeoil-0.10.11.ebuild
+++ b/dev-python/snakeoil/snakeoil-0.10.11.ebuild
@@ -13,7 +13,7 @@ if [[ ${PV} == *9999 ]] ; then
https://github.com/pkgcore/snakeoil.git"
inherit git-r3
else
- 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"
inherit pypi
fi
diff --git a/dev-python/sniffio/sniffio-1.3.1.ebuild b/dev-python/sniffio/sniffio-1.3.1.ebuild
index e941129609f5..0310a4bcc151 100644
--- a/dev-python/sniffio/sniffio-1.3.1.ebuild
+++ b/dev-python/sniffio/sniffio-1.3.1.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="|| ( Apache-2.0 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"
BDEPEND="
dev-python/setuptools-scm[${PYTHON_USEDEP}]
diff --git a/dev-python/snowballstemmer/snowballstemmer-3.0.1.ebuild b/dev-python/snowballstemmer/snowballstemmer-3.0.1.ebuild
index 4be6477b437b..413c93b7aebf 100644
--- a/dev-python/snowballstemmer/snowballstemmer-3.0.1.ebuild
+++ b/dev-python/snowballstemmer/snowballstemmer-3.0.1.ebuild
@@ -16,4 +16,4 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos ~x64-solaris"
diff --git a/dev-python/socksio/socksio-1.0.0.ebuild b/dev-python/socksio/socksio-1.0.0.ebuild
index 8ff3e0074d1e..3c34f572b21f 100644
--- a/dev-python/socksio/socksio-1.0.0.ebuild
+++ b/dev-python/socksio/socksio-1.0.0.ebuild
@@ -16,7 +16,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"
distutils_enable_tests pytest
diff --git a/dev-python/sortedcontainers/sortedcontainers-2.4.0-r1.ebuild b/dev-python/sortedcontainers/sortedcontainers-2.4.0-r1.ebuild
index a62d5b87dae3..20aff059975b 100644
--- a/dev-python/sortedcontainers/sortedcontainers-2.4.0-r1.ebuild
+++ b/dev-python/sortedcontainers/sortedcontainers-2.4.0-r1.ebuild
@@ -23,7 +23,7 @@ S=${WORKDIR}/${MY_P}
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 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
distutils_enable_tests pytest
diff --git a/dev-python/soupsieve/soupsieve-2.7.ebuild b/dev-python/soupsieve/soupsieve-2.7.ebuild
index 9131964c3713..9bee9fdf3d3b 100644
--- a/dev-python/soupsieve/soupsieve-2.7.ebuild
+++ b/dev-python/soupsieve/soupsieve-2.7.ebuild
@@ -20,7 +20,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"
BDEPEND="
test? (
diff --git a/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.0.1.ebuild b/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.0.1.ebuild
index f486ae23ebac..26e94f144019 100644
--- a/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.0.1.ebuild
+++ b/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.0.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~mips ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/sphinx-8.1.3[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.1.0.ebuild b/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.1.0.ebuild
index cc44cc36ce65..b81f098a22b6 100644
--- a/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.1.0.ebuild
+++ b/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.1.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
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"
RDEPEND="
>=dev-python/sphinx-8.2.0[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.2.0.ebuild b/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.2.0.ebuild
index 761e32b46724..a351521393c9 100644
--- a/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.2.0.ebuild
+++ b/dev-python/sphinx-autodoc-typehints/sphinx-autodoc-typehints-3.2.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/sphinx-8.2.0[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinx-basic-ng/sphinx-basic-ng-1.0.0_beta2.ebuild b/dev-python/sphinx-basic-ng/sphinx-basic-ng-1.0.0_beta2.ebuild
index 0c9e669e03b0..39586d6c7c27 100644
--- a/dev-python/sphinx-basic-ng/sphinx-basic-ng-1.0.0_beta2.ebuild
+++ b/dev-python/sphinx-basic-ng/sphinx-basic-ng-1.0.0_beta2.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/sphinx-bootstrap-theme/sphinx-bootstrap-theme-0.8.1.ebuild b/dev-python/sphinx-bootstrap-theme/sphinx-bootstrap-theme-0.8.1.ebuild
index f4085455f56f..f4d6053aa643 100644
--- a/dev-python/sphinx-bootstrap-theme/sphinx-bootstrap-theme-0.8.1.ebuild
+++ b/dev-python/sphinx-bootstrap-theme/sphinx-bootstrap-theme-0.8.1.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/sphinx-epytext/sphinx-epytext-0.0.4-r2.ebuild b/dev-python/sphinx-epytext/sphinx-epytext-0.0.4-r2.ebuild
index da33908ae93c..d75853971684 100644
--- a/dev-python/sphinx-epytext/sphinx-epytext-0.0.4-r2.ebuild
+++ b/dev-python/sphinx-epytext/sphinx-epytext-0.0.4-r2.ebuild
@@ -14,6 +14,6 @@ HOMEPAGE="https://pypi.org/project/sphinx-epytext/ https://github.com/jayvdb/sph
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"
RDEPEND=">=dev-python/sphinx-1.7.5[${PYTHON_USEDEP}]"
diff --git a/dev-python/sphinx-issues/sphinx-issues-5.0.1.ebuild b/dev-python/sphinx-issues/sphinx-issues-5.0.1.ebuild
index 7f844aa5601a..2e6f3fdd79ad 100644
--- a/dev-python/sphinx-issues/sphinx-issues-5.0.1.ebuild
+++ b/dev-python/sphinx-issues/sphinx-issues-5.0.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris"
RDEPEND="
dev-python/sphinx[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinx-lv2-theme/sphinx-lv2-theme-1.4.2.ebuild b/dev-python/sphinx-lv2-theme/sphinx-lv2-theme-1.4.2.ebuild
index df757e73c944..fcf9e0a84003 100644
--- a/dev-python/sphinx-lv2-theme/sphinx-lv2-theme-1.4.2.ebuild
+++ b/dev-python/sphinx-lv2-theme/sphinx-lv2-theme-1.4.2.ebuild
@@ -16,4 +16,4 @@ HOMEPAGE="
LICENSE="ISC"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv ~sparc x86"
diff --git a/dev-python/sphinx-notfound-page/sphinx-notfound-page-1.1.0.ebuild b/dev-python/sphinx-notfound-page/sphinx-notfound-page-1.1.0.ebuild
index a163a2e9f96d..20f7aab7c128 100644
--- a/dev-python/sphinx-notfound-page/sphinx-notfound-page-1.1.0.ebuild
+++ b/dev-python/sphinx-notfound-page/sphinx-notfound-page-1.1.0.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
RDEPEND="
>=dev-python/sphinx-5[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinx-prompt/sphinx-prompt-1.10.0.ebuild b/dev-python/sphinx-prompt/sphinx-prompt-1.10.0.ebuild
index a326038fbe35..36166b25acbf 100644
--- a/dev-python/sphinx-prompt/sphinx-prompt-1.10.0.ebuild
+++ b/dev-python/sphinx-prompt/sphinx-prompt-1.10.0.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~m68k ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/sphinx[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinx-pytest/sphinx-pytest-0.2.0.ebuild b/dev-python/sphinx-pytest/sphinx-pytest-0.2.0.ebuild
index d625385e9497..fe9ec38b087a 100644
--- a/dev-python/sphinx-pytest/sphinx-pytest-0.2.0.ebuild
+++ b/dev-python/sphinx-pytest/sphinx-pytest-0.2.0.ebuild
@@ -20,7 +20,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"
RDEPEND="
dev-python/pytest[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinx-rtd-theme/sphinx-rtd-theme-3.0.2.ebuild b/dev-python/sphinx-rtd-theme/sphinx-rtd-theme-3.0.2.ebuild
index afa5ef1cd00f..9fe3735bdc74 100644
--- a/dev-python/sphinx-rtd-theme/sphinx-rtd-theme-3.0.2.ebuild
+++ b/dev-python/sphinx-rtd-theme/sphinx-rtd-theme-3.0.2.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/docutils-0.18[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinx-tabs/sphinx-tabs-3.4.7.ebuild b/dev-python/sphinx-tabs/sphinx-tabs-3.4.7.ebuild
index 0a85d752437c..8e75dd874ec4 100644
--- a/dev-python/sphinx-tabs/sphinx-tabs-3.4.7.ebuild
+++ b/dev-python/sphinx-tabs/sphinx-tabs-3.4.7.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~m68k ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/docutils[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinx/files/sphinx-8.2.3-metadata-docutils-0.22.patch b/dev-python/sphinx/files/sphinx-8.2.3-metadata-docutils-0.22.patch
new file mode 100644
index 000000000000..7f3ec4b6cd29
--- /dev/null
+++ b/dev-python/sphinx/files/sphinx-8.2.3-metadata-docutils-0.22.patch
@@ -0,0 +1,27 @@
+From 5d3bb2e3b7c47e4ecd540c657018f16b961c821b Mon Sep 17 00:00:00 2001
+From: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
+Date: Tue, 29 Jul 2025 19:44:31 +0200
+Subject: [PATCH] Support Docutils 0.22 (#13786)
+
+---
+ CHANGES.rst | 4 ++++
+ doc/changes/7.3.rst | 2 +-
+ pyproject.toml | 2 +-
+ sphinx/transforms/__init__.py | 2 +-
+ sphinx/transforms/references.py | 2 +-
+ tests/test_markup/test_markup.py | 2 +-
+ 6 files changed, 9 insertions(+), 5 deletions(-)
+
+diff --git a/pyproject.toml b/pyproject.toml
+index 75ae0f71a9d..d915f293f3b 100644
+--- a/pyproject.toml
++++ b/pyproject.toml
+@@ -76,7 +76,7 @@ dependencies = [
+ "sphinxcontrib-serializinghtml>=1.1.9",
+ "Jinja2>=3.1",
+ "Pygments>=2.17",
+- "docutils>=0.20,<0.22",
++ "docutils>=0.20,<0.23",
+ "snowballstemmer>=2.2",
+ "babel>=2.13",
+ "alabaster>=0.7.14",
diff --git a/dev-python/sphinx/sphinx-8.1.3.ebuild b/dev-python/sphinx/sphinx-8.1.3.ebuild
index f4bc80ad0587..f942057f4955 100644
--- a/dev-python/sphinx/sphinx-8.1.3.ebuild
+++ b/dev-python/sphinx/sphinx-8.1.3.ebuild
@@ -24,7 +24,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="BSD-2"
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"
+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="doc latex"
RDEPEND="
diff --git a/dev-python/sphinx/sphinx-8.2.3-r1.ebuild b/dev-python/sphinx/sphinx-8.2.3-r2.ebuild
index c418387ceb99..b0878b64c3a9 100644
--- a/dev-python/sphinx/sphinx-8.2.3-r1.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 ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="doc latex"
RDEPEND="
@@ -76,6 +76,7 @@ PATCHES=(
# https://github.com/sphinx-doc/sphinx/pull/13610
# test assumptions for docutils 0.22
"${FILESDIR}"/${P}-testfix-docutils-0.22.patch
+ "${FILESDIR}"/${P}-metadata-docutils-0.22.patch
)
distutils_enable_tests pytest
diff --git a/dev-python/sphinxcontrib-applehelp/sphinxcontrib-applehelp-2.0.0-r1.ebuild b/dev-python/sphinxcontrib-applehelp/sphinxcontrib-applehelp-2.0.0-r1.ebuild
index 6cb99e8c584b..df9e9dcf6c8a 100644
--- a/dev-python/sphinxcontrib-applehelp/sphinxcontrib-applehelp-2.0.0-r1.ebuild
+++ b/dev-python/sphinxcontrib-applehelp/sphinxcontrib-applehelp-2.0.0-r1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD-2"
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"
+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"
PDEPEND="
>=dev-python/sphinx-5[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinxcontrib-applehelp/sphinxcontrib-applehelp-2.0.0.ebuild b/dev-python/sphinxcontrib-applehelp/sphinxcontrib-applehelp-2.0.0.ebuild
index 6cb99e8c584b..df9e9dcf6c8a 100644
--- a/dev-python/sphinxcontrib-applehelp/sphinxcontrib-applehelp-2.0.0.ebuild
+++ b/dev-python/sphinxcontrib-applehelp/sphinxcontrib-applehelp-2.0.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD-2"
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"
+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"
PDEPEND="
>=dev-python/sphinx-5[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinxcontrib-devhelp/sphinxcontrib-devhelp-2.0.0-r1.ebuild b/dev-python/sphinxcontrib-devhelp/sphinxcontrib-devhelp-2.0.0-r1.ebuild
index 0e8bd26f719f..084b56b91f2d 100644
--- a/dev-python/sphinxcontrib-devhelp/sphinxcontrib-devhelp-2.0.0-r1.ebuild
+++ b/dev-python/sphinxcontrib-devhelp/sphinxcontrib-devhelp-2.0.0-r1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD-2"
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"
+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"
PDEPEND="
>=dev-python/sphinx-5[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinxcontrib-devhelp/sphinxcontrib-devhelp-2.0.0.ebuild b/dev-python/sphinxcontrib-devhelp/sphinxcontrib-devhelp-2.0.0.ebuild
index 0e8bd26f719f..084b56b91f2d 100644
--- a/dev-python/sphinxcontrib-devhelp/sphinxcontrib-devhelp-2.0.0.ebuild
+++ b/dev-python/sphinxcontrib-devhelp/sphinxcontrib-devhelp-2.0.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD-2"
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"
+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"
PDEPEND="
>=dev-python/sphinx-5[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinxcontrib-github-alt/sphinxcontrib-github-alt-1.2-r3.ebuild b/dev-python/sphinxcontrib-github-alt/sphinxcontrib-github-alt-1.2-r3.ebuild
index 32938ea8521a..47da9d557204 100644
--- a/dev-python/sphinxcontrib-github-alt/sphinxcontrib-github-alt-1.2-r3.ebuild
+++ b/dev-python/sphinxcontrib-github-alt/sphinxcontrib-github-alt-1.2-r3.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="BSD-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"
RDEPEND="
dev-python/sphinx[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinxcontrib-htmlhelp/sphinxcontrib-htmlhelp-2.1.0-r1.ebuild b/dev-python/sphinxcontrib-htmlhelp/sphinxcontrib-htmlhelp-2.1.0-r1.ebuild
index 1db2b22e96ab..9461ab873c07 100644
--- a/dev-python/sphinxcontrib-htmlhelp/sphinxcontrib-htmlhelp-2.1.0-r1.ebuild
+++ b/dev-python/sphinxcontrib-htmlhelp/sphinxcontrib-htmlhelp-2.1.0-r1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD-2"
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"
+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"
PDEPEND="
>=dev-python/sphinx-5[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinxcontrib-htmlhelp/sphinxcontrib-htmlhelp-2.1.0.ebuild b/dev-python/sphinxcontrib-htmlhelp/sphinxcontrib-htmlhelp-2.1.0.ebuild
index 1db2b22e96ab..9461ab873c07 100644
--- a/dev-python/sphinxcontrib-htmlhelp/sphinxcontrib-htmlhelp-2.1.0.ebuild
+++ b/dev-python/sphinxcontrib-htmlhelp/sphinxcontrib-htmlhelp-2.1.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD-2"
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"
+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"
PDEPEND="
>=dev-python/sphinx-5[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinxcontrib-httpdomain/sphinxcontrib-httpdomain-1.8.1.ebuild b/dev-python/sphinxcontrib-httpdomain/sphinxcontrib-httpdomain-1.8.1.ebuild
index d6c7fd2c0dad..b24542eaed4e 100644
--- a/dev-python/sphinxcontrib-httpdomain/sphinxcontrib-httpdomain-1.8.1.ebuild
+++ b/dev-python/sphinxcontrib-httpdomain/sphinxcontrib-httpdomain-1.8.1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2022-2024 Gentoo Authors
+# Copyright 2022-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -21,7 +21,7 @@ S="${WORKDIR}/httpdomain-${PV}"
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~hppa ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~hppa ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/sphinx[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinxcontrib-jquery/sphinxcontrib-jquery-4.1.ebuild b/dev-python/sphinxcontrib-jquery/sphinxcontrib-jquery-4.1.ebuild
index 02801c043723..83769c04c41f 100644
--- a/dev-python/sphinxcontrib-jquery/sphinxcontrib-jquery-4.1.ebuild
+++ b/dev-python/sphinxcontrib-jquery/sphinxcontrib-jquery-4.1.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
# MIT for jQuery
LICENSE="0BSD 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"
RDEPEND="
dev-python/sphinx[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinxcontrib-jsmath/sphinxcontrib-jsmath-1.0.1-r3.ebuild b/dev-python/sphinxcontrib-jsmath/sphinxcontrib-jsmath-1.0.1-r3.ebuild
index aa8f617ab965..0fd5e9b153d0 100644
--- a/dev-python/sphinxcontrib-jsmath/sphinxcontrib-jsmath-1.0.1-r3.ebuild
+++ b/dev-python/sphinxcontrib-jsmath/sphinxcontrib-jsmath-1.0.1-r3.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="BSD-2"
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"
+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"
PDEPEND="
>=dev-python/sphinx-2.0[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinxcontrib-jsmath/sphinxcontrib-jsmath-1.0.1-r4.ebuild b/dev-python/sphinxcontrib-jsmath/sphinxcontrib-jsmath-1.0.1-r4.ebuild
index aa8f617ab965..0fd5e9b153d0 100644
--- a/dev-python/sphinxcontrib-jsmath/sphinxcontrib-jsmath-1.0.1-r4.ebuild
+++ b/dev-python/sphinxcontrib-jsmath/sphinxcontrib-jsmath-1.0.1-r4.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="BSD-2"
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"
+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"
PDEPEND="
>=dev-python/sphinx-2.0[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinxcontrib-log-cabinet/sphinxcontrib-log-cabinet-1.0.1-r1.ebuild b/dev-python/sphinxcontrib-log-cabinet/sphinxcontrib-log-cabinet-1.0.1-r1.ebuild
index 7429d08ea8fd..86e94137312b 100644
--- a/dev-python/sphinxcontrib-log-cabinet/sphinxcontrib-log-cabinet-1.0.1-r1.ebuild
+++ b/dev-python/sphinxcontrib-log-cabinet/sphinxcontrib-log-cabinet-1.0.1-r1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/sphinx[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinxcontrib-plantuml/Manifest b/dev-python/sphinxcontrib-plantuml/Manifest
index 513b43ec0e5b..96ac2b838a0b 100644
--- a/dev-python/sphinxcontrib-plantuml/Manifest
+++ b/dev-python/sphinxcontrib-plantuml/Manifest
@@ -1,2 +1,3 @@
DIST sphinxcontrib-plantuml-0.30-fix-tests-python-3.13.patch 1033 BLAKE2B d1dc69918c4b0171d060e43863993fc23dea995f102fdd889b0face66587558b4fa4a02662026d8ce166be0f92cc63b8419ae0bb2d5586b98d840fe3fe2776cf SHA512 ca134e5d2e73b28e3f6e77ac46b12d869312601af4ef7e0f9e0ada30c9d26fa1e976693f286bd3613c8b07fee152abccf889066139c35df25892addf8bc3b759
DIST sphinxcontrib-plantuml-0.30.gh.tar.gz 19378 BLAKE2B 1f146b59184acec99ff4320199943b2193c3e4c5f5d1f62c6741fb9bbd9802d7c3955bfad786bf7dd4b937b99b974f94d753212c95e7940ab066a9d6ee02af9a SHA512 e85c6332d26d09531c961f8026c72cd82ff4a31700a38cb8285f24d942340700012c08cc1f87a86389b71bfc5d32164586407b5c6777cc94d4d0022c9872ee3a
+DIST sphinxcontrib-plantuml-0.31.gh.tar.gz 19729 BLAKE2B ef24e807dd29a34719ef13201fc1e250351f85879c606eb3c3b850b5556be06453c9f9bba30488f4a9bb69def7e75b26ae800a9a52422aa85607ce7598700f67 SHA512 3c58a3c70fe78d8c0c8be8f3255ea534fb8fe689e3b020da8d1c96ca2b0aafb870762e7e77e405b7c82b4bcad9c6dfb828f3562de09c6a9740afef1a2cc24345
diff --git a/dev-python/sphinxcontrib-plantuml/sphinxcontrib-plantuml-0.31.ebuild b/dev-python/sphinxcontrib-plantuml/sphinxcontrib-plantuml-0.31.ebuild
new file mode 100644
index 000000000000..a9e2522483ba
--- /dev/null
+++ b/dev-python/sphinxcontrib-plantuml/sphinxcontrib-plantuml-0.31.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
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Sphinx extensions for PlantUML"
+HOMEPAGE="
+ https://github.com/sphinx-contrib/plantuml/
+ https://pypi.org/project/sphinxcontrib-plantuml/
+"
+SRC_URI="
+ https://github.com/sphinx-contrib/plantuml/archive/refs/tags/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+ https://github.com/sphinx-contrib/plantuml/commit/27ece3637c0ec5fa91cacf511349e290a1440ba9.patch
+ -> ${PN}-0.30-fix-tests-python-3.13.patch
+"
+S="${WORKDIR}/${P#sphinxcontrib-}"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+BDEPEND="
+ test? (
+ app-text/texlive
+ dev-python/sphinxcontrib-applehelp[${PYTHON_USEDEP}]
+ dev-tex/latexmk
+ dev-texlive/texlive-fontutils
+ dev-texlive/texlive-latexextra
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_test() {
+ # Fix for sphinx.errors.ExtensionError: Could not import extension sphinxcontrib.applehelp
+ # See https://projects.gentoo.org/python/guide/test.html#importerrors-for-c-extensions, thanks to mgorny.
+ rm -rf sphinxcontrib || die
+
+ epytest
+}
diff --git a/dev-python/sphinxcontrib-programoutput/sphinxcontrib-programoutput-0.18.ebuild b/dev-python/sphinxcontrib-programoutput/sphinxcontrib-programoutput-0.18.ebuild
index fb8972331872..1b3afcbe8bc7 100644
--- a/dev-python/sphinxcontrib-programoutput/sphinxcontrib-programoutput-0.18.ebuild
+++ b/dev-python/sphinxcontrib-programoutput/sphinxcontrib-programoutput-0.18.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
RDEPEND="
dev-python/sphinx[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinxcontrib-qthelp/sphinxcontrib-qthelp-2.0.0-r1.ebuild b/dev-python/sphinxcontrib-qthelp/sphinxcontrib-qthelp-2.0.0-r1.ebuild
index 6d48f484c5fe..aa3901939ccd 100644
--- a/dev-python/sphinxcontrib-qthelp/sphinxcontrib-qthelp-2.0.0-r1.ebuild
+++ b/dev-python/sphinxcontrib-qthelp/sphinxcontrib-qthelp-2.0.0-r1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD-2"
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"
+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"
PDEPEND="
>=dev-python/sphinx-5[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinxcontrib-qthelp/sphinxcontrib-qthelp-2.0.0.ebuild b/dev-python/sphinxcontrib-qthelp/sphinxcontrib-qthelp-2.0.0.ebuild
index 6d48f484c5fe..aa3901939ccd 100644
--- a/dev-python/sphinxcontrib-qthelp/sphinxcontrib-qthelp-2.0.0.ebuild
+++ b/dev-python/sphinxcontrib-qthelp/sphinxcontrib-qthelp-2.0.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD-2"
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"
+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"
PDEPEND="
>=dev-python/sphinx-5[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinxcontrib-serializinghtml/sphinxcontrib-serializinghtml-2.0.0-r1.ebuild b/dev-python/sphinxcontrib-serializinghtml/sphinxcontrib-serializinghtml-2.0.0-r1.ebuild
index 5e5ad9cfc96d..83ae78c063e0 100644
--- a/dev-python/sphinxcontrib-serializinghtml/sphinxcontrib-serializinghtml-2.0.0-r1.ebuild
+++ b/dev-python/sphinxcontrib-serializinghtml/sphinxcontrib-serializinghtml-2.0.0-r1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD-2"
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"
+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"
PDEPEND="
>=dev-python/sphinx-5[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinxcontrib-serializinghtml/sphinxcontrib-serializinghtml-2.0.0.ebuild b/dev-python/sphinxcontrib-serializinghtml/sphinxcontrib-serializinghtml-2.0.0.ebuild
index 5e5ad9cfc96d..83ae78c063e0 100644
--- a/dev-python/sphinxcontrib-serializinghtml/sphinxcontrib-serializinghtml-2.0.0.ebuild
+++ b/dev-python/sphinxcontrib-serializinghtml/sphinxcontrib-serializinghtml-2.0.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD-2"
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"
+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"
PDEPEND="
>=dev-python/sphinx-5[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinxcontrib-spelling/sphinxcontrib-spelling-8.0.1.ebuild b/dev-python/sphinxcontrib-spelling/sphinxcontrib-spelling-8.0.1.ebuild
index 0d5b5d8e0d07..27100a4b7742 100644
--- a/dev-python/sphinxcontrib-spelling/sphinxcontrib-spelling-8.0.1.ebuild
+++ b/dev-python/sphinxcontrib-spelling/sphinxcontrib-spelling-8.0.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD-2"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
RDEPEND="
>=dev-python/pyenchant-3.1.1[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinxcontrib-trio/sphinxcontrib-trio-1.1.2-r1.ebuild b/dev-python/sphinxcontrib-trio/sphinxcontrib-trio-1.1.2-r1.ebuild
index 78775711f63f..7d50cb83f551 100644
--- a/dev-python/sphinxcontrib-trio/sphinxcontrib-trio-1.1.2-r1.ebuild
+++ b/dev-python/sphinxcontrib-trio/sphinxcontrib-trio-1.1.2-r1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="|| ( Apache-2.0 MIT )"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
dev-python/sphinx[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinxcontrib-websupport/sphinxcontrib-websupport-1.2.7-r1.ebuild b/dev-python/sphinxcontrib-websupport/sphinxcontrib-websupport-1.2.7-r1.ebuild
index 64610ae76618..564ea88682a8 100644
--- a/dev-python/sphinxcontrib-websupport/sphinxcontrib-websupport-1.2.7-r1.ebuild
+++ b/dev-python/sphinxcontrib-websupport/sphinxcontrib-websupport-1.2.7-r1.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
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"
+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}]
diff --git a/dev-python/sphinxcontrib-websupport/sphinxcontrib-websupport-1.2.7.ebuild b/dev-python/sphinxcontrib-websupport/sphinxcontrib-websupport-1.2.7.ebuild
index 64610ae76618..564ea88682a8 100644
--- a/dev-python/sphinxcontrib-websupport/sphinxcontrib-websupport-1.2.7.ebuild
+++ b/dev-python/sphinxcontrib-websupport/sphinxcontrib-websupport-1.2.7.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
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"
+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}]
diff --git a/dev-python/sphinxemoji/sphinxemoji-0.3.1.ebuild b/dev-python/sphinxemoji/sphinxemoji-0.3.1.ebuild
index ffa371a929fe..a5e0b26e7fe3 100644
--- a/dev-python/sphinxemoji/sphinxemoji-0.3.1.ebuild
+++ b/dev-python/sphinxemoji/sphinxemoji-0.3.1.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 arm arm64 hppa ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~hppa ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/sphinx-5.0[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinxygen/sphinxygen-1.0.10.ebuild b/dev-python/sphinxygen/sphinxygen-1.0.10.ebuild
index 5f33478864f4..3360fb9297bd 100644
--- a/dev-python/sphinxygen/sphinxygen-1.0.10.ebuild
+++ b/dev-python/sphinxygen/sphinxygen-1.0.10.ebuild
@@ -20,7 +20,7 @@ S="${WORKDIR}/${PN}-v${PV}"
LICENSE="ISC"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~sparc x86"
RDEPEND="
app-text/doxygen
diff --git a/dev-python/sphobjinv/sphobjinv-2.3.1.3.ebuild b/dev-python/sphobjinv/sphobjinv-2.3.1.3.ebuild
index 1f237d1ac598..63c6d3db934f 100644
--- a/dev-python/sphobjinv/sphobjinv-2.3.1.3.ebuild
+++ b/dev-python/sphobjinv/sphobjinv-2.3.1.3.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/attrs-19.2[${PYTHON_USEDEP}]
diff --git a/dev-python/sqlalchemy/sqlalchemy-1.4.54.ebuild b/dev-python/sqlalchemy/sqlalchemy-1.4.54.ebuild
index 1cee1f15071e..3f89f24298cf 100644
--- a/dev-python/sqlalchemy/sqlalchemy-1.4.54.ebuild
+++ b/dev-python/sqlalchemy/sqlalchemy-1.4.54.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -20,7 +20,7 @@ HOMEPAGE="
LICENSE="MIT"
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"
+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="examples +sqlite test"
BDEPEND="
diff --git a/dev-python/sqlalchemy/sqlalchemy-2.0.40.ebuild b/dev-python/sqlalchemy/sqlalchemy-2.0.40.ebuild
index e60b198dff26..57a9c069e5ae 100644
--- a/dev-python/sqlalchemy/sqlalchemy-2.0.40.ebuild
+++ b/dev-python/sqlalchemy/sqlalchemy-2.0.40.ebuild
@@ -20,7 +20,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 ~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 ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="examples +sqlite test"
RDEPEND="
diff --git a/dev-python/sqlalchemy/sqlalchemy-2.0.41.ebuild b/dev-python/sqlalchemy/sqlalchemy-2.0.41.ebuild
index 5de4d6d546c7..57c4f856a6f1 100644
--- a/dev-python/sqlalchemy/sqlalchemy-2.0.41.ebuild
+++ b/dev-python/sqlalchemy/sqlalchemy-2.0.41.ebuild
@@ -20,7 +20,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 ~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 ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="examples +sqlite test"
RDEPEND="
diff --git a/dev-python/sqlglot/Manifest b/dev-python/sqlglot/Manifest
index 0d6a3e2534a0..da5102c54d0b 100644
--- a/dev-python/sqlglot/Manifest
+++ b/dev-python/sqlglot/Manifest
@@ -1,4 +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.9.0.tar.gz 5430361 BLAKE2B a64bcdf6c71389694010f6b380418a313f238043e157589cd9479626f8a920bd0d0ff5f8b998353d55ad0ae563d1df37d7b639e094e70abf3640d3401fb4e211 SHA512 c510ffea3f18b1776ddf606a84799cbc63fdb77ee267c9cfd481cf0ad0f971916cadabce5f9cd356c7dc99bbaf8f3468bf903b3ca058e9a18e6e012904d97427
+DIST sqlglot-27.11.0.tar.gz 5443357 BLAKE2B 6af93c7efd402e1ed94fc52d74503945b99e832196d2edd3eb5ee315a7c8ec31d4c3380d5270b78ac8ea54959f4b6dabbad2794d05e78d90588d99195190cc17 SHA512 58ca620725c253f1f917ff468f797d9afb68186b987dc3770c1a78d8a4d59f3d0453a26239e4f0080214316fd1abbb21653c3795a7099f515dae366ab5c4e951
+DIST sqlglot-27.12.0.tar.gz 5450508 BLAKE2B f7eb5b9aebed247f9896cf7e2afe0aa217a2db9c0f25c0527a31769e8921446e6ced1fd7a233fb95db162ade7fb2840404bb31e3197cff62a1b0b6e45c047bcb SHA512 95e6e161b0b586d28ce4ee3470f09b06fef996600b9d6f200fdc5d5a0e844b30166be0efd28fc9cc2f447547d3b53ecbb618e9bd3fe7420f2ba06354135b6c20
diff --git a/dev-python/sqlglot/sqlglot-27.9.0.ebuild b/dev-python/sqlglot/sqlglot-27.11.0.ebuild
index dd19ceb9d941..9a517e6a4e70 100644
--- a/dev-python/sqlglot/sqlglot-27.9.0.ebuild
+++ b/dev-python/sqlglot/sqlglot-27.11.0.ebuild
@@ -154,11 +154,6 @@ python_compile() {
}
python_test() {
- local EPYTEST_DESELECT=(
- # timing, sigh
- # https://github.com/tobymao/sqlglot/issues/3961
- tests/test_generator.py::TestGenerator::test_generate_nested_binary
- )
local EPYTEST_IGNORE=(
# Tests require pyspark or duckdb which aren't in the tree.
# Pandas would be a requirement normally, but it gets ignored by proxy.
diff --git a/dev-python/sqlglot/sqlglot-27.12.0.ebuild b/dev-python/sqlglot/sqlglot-27.12.0.ebuild
new file mode 100644
index 000000000000..9a517e6a4e70
--- /dev/null
+++ b/dev-python/sqlglot/sqlglot-27.12.0.ebuild
@@ -0,0 +1,175 @@
+# Copyright 2023-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CRATES="
+ aho-corasick@1.1.3
+ anes@0.1.6
+ anstyle@1.0.10
+ autocfg@1.1.0
+ bumpalo@3.16.0
+ cast@0.3.0
+ cfg-if@1.0.0
+ ciborium-io@0.2.2
+ ciborium-ll@0.2.2
+ ciborium@0.2.2
+ clap@4.5.23
+ clap_builder@4.5.23
+ clap_lex@0.7.4
+ criterion-plot@0.5.0
+ criterion@0.5.1
+ crossbeam-deque@0.8.6
+ crossbeam-epoch@0.9.18
+ crossbeam-utils@0.8.21
+ crunchy@0.2.2
+ either@1.13.0
+ half@2.4.1
+ heck@0.5.0
+ hermit-abi@0.4.0
+ indoc@2.0.4
+ is-terminal@0.4.13
+ itertools@0.10.5
+ itoa@1.0.14
+ js-sys@0.3.76
+ libc@0.2.169
+ log@0.4.22
+ memchr@2.7.4
+ memoffset@0.9.0
+ num-traits@0.2.19
+ once_cell@1.19.0
+ oorandom@11.1.4
+ plotters-backend@0.3.7
+ plotters-svg@0.3.7
+ plotters@0.3.7
+ portable-atomic@1.9.0
+ proc-macro2@1.0.89
+ pyo3-build-config@0.25.0
+ pyo3-ffi@0.25.0
+ pyo3-macros-backend@0.25.0
+ pyo3-macros@0.25.0
+ pyo3@0.25.0
+ quote@1.0.37
+ rayon-core@1.12.1
+ rayon@1.10.0
+ regex-automata@0.4.9
+ regex-syntax@0.8.5
+ regex@1.11.1
+ rustc-hash@2.1.0
+ ryu@1.0.18
+ same-file@1.0.6
+ serde@1.0.216
+ serde_derive@1.0.216
+ serde_json@1.0.133
+ syn@2.0.87
+ target-lexicon@0.13.2
+ tinytemplate@1.2.1
+ unicode-ident@1.0.12
+ unindent@0.2.3
+ walkdir@2.5.0
+ wasm-bindgen-backend@0.2.99
+ wasm-bindgen-macro-support@0.2.99
+ wasm-bindgen-macro@0.2.99
+ wasm-bindgen-shared@0.2.99
+ wasm-bindgen@0.2.99
+ web-sys@0.3.76
+ winapi-util@0.1.9
+ windows-sys@0.52.0
+ 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
+"
+
+CARGO_OPTIONAL=1
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{11..14} )
+CRATE_PV=26.33.0
+
+inherit cargo distutils-r1 pypi optfeature
+
+DESCRIPTION="An easily customizable SQL parser and transpiler"
+HOMEPAGE="
+ https://sqlglot.com/
+ https://github.com/tobymao/sqlglot/
+ https://pypi.org/project/sqlglot/
+"
+SRC_URI+="
+ native-extensions? (
+ https://github.com/gentoo-crate-dist/sqlglot/releases/download/v${CRATE_PV}/sqlglot-${CRATE_PV}-crates.tar.xz
+ )
+"
+
+LICENSE="MIT"
+LICENSE+=" native-extensions? ("
+# Dependent crate licenses
+LICENSE+="
+ Apache-2.0 Apache-2.0-with-LLVM-exceptions MIT Unicode-DFS-2016
+"
+LICENSE+=" )"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="+native-extensions"
+
+BDEPEND="
+ native-extensions? (
+ ${RUST_DEPEND}
+ dev-util/maturin[${PYTHON_USEDEP}]
+ )
+ test? (
+ dev-python/pytz[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/sqlglotrs/sqlglotrs.*.so"
+
+pkg_setup() {
+ use native-extensions && rust_pkg_setup
+}
+
+src_unpack() {
+ cargo_src_unpack
+}
+
+python_compile() {
+ distutils-r1_python_compile
+
+ if use native-extensions; then
+ local DISTUTILS_USE_PEP517=maturin
+ local DISTUTILS_UPSTREAM_PEP517=maturin
+ cd sqlglotrs || die
+ distutils-r1_python_compile
+ cd - >/dev/null || die
+ fi
+}
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ # Tests require pyspark or duckdb which aren't in the tree.
+ # Pandas would be a requirement normally, but it gets ignored by proxy.
+ "tests/dataframe/integration/test_dataframe.py"
+ "tests/dataframe/integration/test_grouped_data.py"
+ "tests/dataframe/integration/test_session.py"
+ "tests/test_executor.py"
+ "tests/test_optimizer.py"
+ )
+
+ # make sure not to use an earlier installed version
+ local -x SQLGLOTRS_TOKENIZER=$(usex native-extensions 1 0)
+ rm -rf sqlglotrs || die
+ epytest
+}
+
+pkg_postinst() {
+ optfeature "simplifying timedelta expressions" dev-python/python-dateutil
+}
diff --git a/dev-python/sqlparse/sqlparse-0.5.3.ebuild b/dev-python/sqlparse/sqlparse-0.5.3.ebuild
index 5f8d3a89bf4b..c4d5a166f091 100644
--- a/dev-python/sqlparse/sqlparse-0.5.3.ebuild
+++ b/dev-python/sqlparse/sqlparse-0.5.3.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD-2"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
distutils_enable_sphinx docs/source
distutils_enable_tests pytest
diff --git a/dev-python/stack-data/stack-data-0.6.3.ebuild b/dev-python/stack-data/stack-data-0.6.3.ebuild
index c87717c3ac0b..abdadf3e9c51 100644
--- a/dev-python/stack-data/stack-data-0.6.3.ebuild
+++ b/dev-python/stack-data/stack-data-0.6.3.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
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/asttokens-2.1.0[${PYTHON_USEDEP}]
diff --git a/dev-python/starlette/starlette-0.47.2.ebuild b/dev-python/starlette/starlette-0.47.2.ebuild
index afc0b7b13be0..8b2f6a069e91 100644
--- a/dev-python/starlette/starlette-0.47.2.ebuild
+++ b/dev-python/starlette/starlette-0.47.2.ebuild
@@ -24,7 +24,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="BSD"
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"
RDEPEND="
<dev-python/anyio-5[${PYTHON_USEDEP}]
diff --git a/dev-python/stdio-mgr/stdio-mgr-1.0.1-r1.ebuild b/dev-python/stdio-mgr/stdio-mgr-1.0.1-r1.ebuild
index e066902f1c37..44a13af04759 100644
--- a/dev-python/stdio-mgr/stdio-mgr-1.0.1-r1.ebuild
+++ b/dev-python/stdio-mgr/stdio-mgr-1.0.1-r1.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
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"
RDEPEND="
>=dev-python/attrs-17.1[${PYTHON_USEDEP}]
diff --git a/dev-python/stestr/stestr-4.2.0.ebuild b/dev-python/stestr/stestr-4.2.0.ebuild
index 00b1cb5a484f..20c4ddd3d08d 100644
--- a/dev-python/stestr/stestr-4.2.0.ebuild
+++ b/dev-python/stestr/stestr-4.2.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~mips ~ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~mips ~ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/stevedore/stevedore-5.4.1.ebuild b/dev-python/stevedore/stevedore-5.4.1.ebuild
index 89fcb3260605..6d84a8b45d41 100644
--- a/dev-python/stevedore/stevedore-5.4.1.ebuild
+++ b/dev-python/stevedore/stevedore-5.4.1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~mips ~ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~mips ~ppc64 ~riscv ~s390 ~sparc x86"
BDEPEND="
>=dev-python/pbr-2.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/strict-rfc3339/strict-rfc3339-0.7-r2.ebuild b/dev-python/strict-rfc3339/strict-rfc3339-0.7-r2.ebuild
index 564785b805bc..b47ffedbaf0b 100644
--- a/dev-python/strict-rfc3339/strict-rfc3339-0.7-r2.ebuild
+++ b/dev-python/strict-rfc3339/strict-rfc3339-0.7-r2.ebuild
@@ -22,6 +22,6 @@ S=${WORKDIR}/${MY_P}
LICENSE="GPL-3+"
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"
distutils_enable_tests unittest
diff --git a/dev-python/sure/sure-2.0.1.ebuild b/dev-python/sure/sure-2.0.1.ebuild
index 53fd3a9f96c6..93d545260849 100644
--- a/dev-python/sure/sure-2.0.1.ebuild
+++ b/dev-python/sure/sure-2.0.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="GPL-3+"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86"
RDEPEND="
dev-python/mock[${PYTHON_USEDEP}]
diff --git a/dev-python/sybil/sybil-9.1.0.ebuild b/dev-python/sybil/sybil-9.1.0.ebuild
index 003c1d0f314f..70a2a8a5d310 100644
--- a/dev-python/sybil/sybil-9.1.0.ebuild
+++ b/dev-python/sybil/sybil-9.1.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/tabulate/tabulate-0.9.0-r1.ebuild b/dev-python/tabulate/tabulate-0.9.0-r1.ebuild
index 01b63faeae40..f8ff276296ee 100644
--- a/dev-python/tabulate/tabulate-0.9.0-r1.ebuild
+++ b/dev-python/tabulate/tabulate-0.9.0-r1.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
RDEPEND="
dev-python/wcwidth[${PYTHON_USEDEP}]
diff --git a/dev-python/tap-py/tap-py-3.2.1.ebuild b/dev-python/tap-py/tap-py-3.2.1.ebuild
index b8a0dcbed9fd..0958920da2a5 100644
--- a/dev-python/tap-py/tap-py-3.2.1.ebuild
+++ b/dev-python/tap-py/tap-py-3.2.1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
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 ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
BDEPEND="
test? (
diff --git a/dev-python/tblib/tblib-3.1.0.ebuild b/dev-python/tblib/tblib-3.1.0.ebuild
index 8f03df7440f9..5ba4b28a355d 100644
--- a/dev-python/tblib/tblib-3.1.0.ebuild
+++ b/dev-python/tblib/tblib-3.1.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
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"
BDEPEND="
test? (
diff --git a/dev-python/tempora/tempora-5.8.1.ebuild b/dev-python/tempora/tempora-5.8.1.ebuild
index 0b95bcd22174..8383255004b6 100644
--- a/dev-python/tempora/tempora-5.8.1.ebuild
+++ b/dev-python/tempora/tempora-5.8.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 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
RDEPEND="
>=dev-python/jaraco-functools-1.20[${PYTHON_USEDEP}]
diff --git a/dev-python/termcolor/termcolor-3.1.0.ebuild b/dev-python/termcolor/termcolor-3.1.0.ebuild
index bc6f92d4c833..ec9c3c967c32 100644
--- a/dev-python/termcolor/termcolor-3.1.0.ebuild
+++ b/dev-python/termcolor/termcolor-3.1.0.ebuild
@@ -18,7 +18,7 @@ SRC_URI="$(pypi_sdist_url) -> ${P}.py.tar.gz"
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
BDEPEND="
dev-python/hatch-vcs[${PYTHON_USEDEP}]
diff --git a/dev-python/terminado/terminado-0.18.1.ebuild b/dev-python/terminado/terminado-0.18.1.ebuild
index 1945afa3e2b0..e52a2753d92c 100644
--- a/dev-python/terminado/terminado-0.18.1.ebuild
+++ b/dev-python/terminado/terminado-0.18.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD-2"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
RDEPEND="
dev-python/ptyprocess[${PYTHON_USEDEP}]
diff --git a/dev-python/test/test-0.ebuild b/dev-python/test/test-0.ebuild
index 01327d8cf95f..392391d30c6b 100644
--- a/dev-python/test/test-0.ebuild
+++ b/dev-python/test/test-0.ebuild
@@ -12,7 +12,7 @@ HOMEPAGE="https://docs.python.org/3/library/test.html"
LICENSE="metapackage"
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"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
RDEPEND="
diff --git a/dev-python/testfixtures/testfixtures-9.1.0.ebuild b/dev-python/testfixtures/testfixtures-9.1.0.ebuild
index 9fb8137ae3b7..eca4be28b5c7 100644
--- a/dev-python/testfixtures/testfixtures-9.1.0.ebuild
+++ b/dev-python/testfixtures/testfixtures-9.1.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~x86-linux"
BDEPEND="
test? (
diff --git a/dev-python/testpath/testpath-0.6.0.ebuild b/dev-python/testpath/testpath-0.6.0.ebuild
index 9a7f1d1e42c5..3a20914be70a 100644
--- a/dev-python/testpath/testpath-0.6.0.ebuild
+++ b/dev-python/testpath/testpath-0.6.0.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="MIT"
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"
distutils_enable_tests pytest
distutils_enable_sphinx doc
diff --git a/dev-python/testresources/testresources-2.0.2.ebuild b/dev-python/testresources/testresources-2.0.2.ebuild
index cbd793a9235f..f0f2fb4fe0a9 100644
--- a/dev-python/testresources/testresources-2.0.2.ebuild
+++ b/dev-python/testresources/testresources-2.0.2.ebuild
@@ -17,7 +17,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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
RDEPEND="
dev-python/pbr[${PYTHON_USEDEP}]
diff --git a/dev-python/testscenarios/testscenarios-0.5.0-r3.ebuild b/dev-python/testscenarios/testscenarios-0.5.0-r3.ebuild
index 1a273f38b73a..37f689223cec 100644
--- a/dev-python/testscenarios/testscenarios-0.5.0-r3.ebuild
+++ b/dev-python/testscenarios/testscenarios-0.5.0-r3.ebuild
@@ -17,7 +17,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 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
RDEPEND="
dev-python/testtools[${PYTHON_USEDEP}]
diff --git a/dev-python/testtools/testtools-2.7.2-r1.ebuild b/dev-python/testtools/testtools-2.7.2-r1.ebuild
index 472a3408bccf..fe429ee291b2 100644
--- a/dev-python/testtools/testtools-2.7.2-r1.ebuild
+++ b/dev-python/testtools/testtools-2.7.2-r1.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 ~amd64-linux ~x86-linux ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/textile/textile-4.0.3-r1.ebuild b/dev-python/textile/textile-4.0.3-r1.ebuild
index 9a99d65afa20..d4280059e9cc 100644
--- a/dev-python/textile/textile-4.0.3-r1.ebuild
+++ b/dev-python/textile/textile-4.0.3-r1.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 arm64 ppc ppc64 ~riscv sparc x86"
+KEYWORDS="amd64 arm64 ppc ppc64 ~riscv ~sparc x86"
RDEPEND="
dev-python/nh3[${PYTHON_USEDEP}]
diff --git a/dev-python/time-machine/time-machine-2.16.0.ebuild b/dev-python/time-machine/time-machine-2.16.0.ebuild
index 0340b914d817..48dc72807eb5 100644
--- a/dev-python/time-machine/time-machine-2.16.0.ebuild
+++ b/dev-python/time-machine/time-machine-2.16.0.ebuild
@@ -21,7 +21,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"
RDEPEND="
dev-python/python-dateutil[${PYTHON_USEDEP}]
diff --git a/dev-python/timeout-decorator/timeout-decorator-0.5.0-r1.ebuild b/dev-python/timeout-decorator/timeout-decorator-0.5.0-r1.ebuild
index c054c3faedad..9406cf742b2d 100644
--- a/dev-python/timeout-decorator/timeout-decorator-0.5.0-r1.ebuild
+++ b/dev-python/timeout-decorator/timeout-decorator-0.5.0-r1.ebuild
@@ -24,6 +24,6 @@ S=${WORKDIR}/${MY_P}
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"
distutils_enable_tests pytest
diff --git a/dev-python/tiny-proxy/tiny-proxy-0.2.1.ebuild b/dev-python/tiny-proxy/tiny-proxy-0.2.1.ebuild
index 0f4bc49cec7d..08b7a59f38c9 100644
--- a/dev-python/tiny-proxy/tiny-proxy-0.2.1.ebuild
+++ b/dev-python/tiny-proxy/tiny-proxy-0.2.1.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"
RDEPEND="
<dev-python/anyio-5.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/tinycss2/tinycss2-1.4.0.ebuild b/dev-python/tinycss2/tinycss2-1.4.0.ebuild
index 5d4dc293c244..3b8f1f9a2468 100644
--- a/dev-python/tinycss2/tinycss2-1.4.0.ebuild
+++ b/dev-python/tinycss2/tinycss2-1.4.0.ebuild
@@ -25,7 +25,7 @@ SRC_URI+="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/webencodings-0.4[${PYTHON_USEDEP}]
diff --git a/dev-python/toml-fmt-common/toml-fmt-common-1.0.1.ebuild b/dev-python/toml-fmt-common/toml-fmt-common-1.0.1.ebuild
index 3c6c591345ae..5fe40cc43238 100644
--- a/dev-python/toml-fmt-common/toml-fmt-common-1.0.1.ebuild
+++ b/dev-python/toml-fmt-common/toml-fmt-common-1.0.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
BDEPEND="
dev-python/hatch-vcs[${PYTHON_USEDEP}]
diff --git a/dev-python/tomli-w/tomli-w-1.2.0.ebuild b/dev-python/tomli-w/tomli-w-1.2.0.ebuild
index a23cda52bd5d..65a2a37a73ad 100644
--- a/dev-python/tomli-w/tomli-w-1.2.0.ebuild
+++ b/dev-python/tomli-w/tomli-w-1.2.0.ebuild
@@ -20,7 +20,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"
BDEPEND="
test? (
diff --git a/dev-python/tomli/tomli-2.2.1.ebuild b/dev-python/tomli/tomli-2.2.1.ebuild
index 4b2fd1c31247..12adb6172500 100644
--- a/dev-python/tomli/tomli-2.2.1.ebuild
+++ b/dev-python/tomli/tomli-2.2.1.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 ~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"
BDEPEND="
app-arch/unzip
diff --git a/dev-python/tomlkit/tomlkit-0.13.3.ebuild b/dev-python/tomlkit/tomlkit-0.13.3.ebuild
index caa53d3122e0..42146cb956b8 100644
--- a/dev-python/tomlkit/tomlkit-0.13.3.ebuild
+++ b/dev-python/tomlkit/tomlkit-0.13.3.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
BDEPEND="
test? (
diff --git a/dev-python/tornado/tornado-6.5.1.ebuild b/dev-python/tornado/tornado-6.5.1.ebuild
index aebe0bc0accf..4a04bb53a9b1 100644
--- a/dev-python/tornado/tornado-6.5.1.ebuild
+++ b/dev-python/tornado/tornado-6.5.1.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/towncrier/towncrier-24.8.0.ebuild b/dev-python/towncrier/towncrier-24.8.0.ebuild
index 37c1f65e6e14..d73f4bd570e4 100644
--- a/dev-python/towncrier/towncrier-24.8.0.ebuild
+++ b/dev-python/towncrier/towncrier-24.8.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/tox/Manifest b/dev-python/tox/Manifest
index 7513bcd4e7a4..cab923fa776d 100644
--- a/dev-python/tox/Manifest
+++ b/dev-python/tox/Manifest
@@ -1,4 +1,5 @@
-DIST tox-4.26.0.tar.gz 197260 BLAKE2B be05b52e88e3a3d0484203cb893af25e6e6e6f3719cf9e8d5cecf5343e22382b86676345ce00219d599353330ade897f710daf4976e48c2d7277664094a263c9 SHA512 ad2e311cd63c45a079b8c230a2feb364270b7a8bcf44b626385f8e442c6683ae841b3f34417b504f927608685a254fef3767d832fb5cfcc324c9cbf6ff7ea997
DIST tox-4.28.3.tar.gz 199617 BLAKE2B 4bccdf5e4202bb5ea27868ebbf9aadb9f9447a474540a7c41f2b960ef685c8ff7a273da5a920c998eff62cbea891170dc7f3a6b6f814149d37e69560902231d6 SHA512 149a303b3af65987f165e1237dc0f7591bc4970cbb8c5002b6bd927afafb3f76c748757f5b3014f754903b191587181148c17ca83fd1337b7e96bf0cd087bd2a
DIST tox-4.28.4.tar.gz 199692 BLAKE2B 0cefd242537cf1f8bd29dac7d3b2553c019b9878d9abbd8388047f6b276287996274f4957ec541e814d5db175784d25ad4e56605d962b9646b66b1e37b13e51b SHA512 f1f19cb41f54a63036cb32e4f4e8ee281b687f71b8baab9cd0d06287af52e84a75eca99a27b5b450105753c1a31cc9b2a53c8cff8e60878a93275dfaf42c94c0
DIST tox-4.29.0.tar.gz 200853 BLAKE2B 6b9ea0be59a0a73d71b87f4f7b5aa5ca075b80316d5ce2a52a093a717c63eef7cf250efb692a4d962abdeb6f421628cb726b41eb674bebc1f43573813545ad85 SHA512 9f1a88c42d90717f59a414490052107f6f2d357bf981ad6d0c63569af31d2215e626a28c1b3fcdd7e30883f0df5fda0207ed12f91683b0d3261b69af630fa84a
+DIST tox-4.30.1.tar.gz 202209 BLAKE2B 4f6eb88e771efb738575540a3ca4a3fb0d261ddc2ded7938576034f5950d26f5fa41dfd01a235d2c6b180fe345d94c4e26ccb0628be15210033b6010f096eaaf SHA512 55fd7a07d697faedde4fa3ed586b56cc6bba4c9ab73620ee9f6a33dddff674af0bb5d58897b3bd844aefa5b8cae0b1c159407245f9c4457c4fa77201b2cbbb0b
+DIST tox-4.30.2.tar.gz 202622 BLAKE2B adcfcca1d9b41cdf7fcbd287f387948607615a344dc97046fd873bd8348447e40e8a9eb265c301e2fe31c24c9b74b38b82fe5b35e663d9147993673e548c9144 SHA512 abcae2d0a28e54cdc6a6f149c06a10bc3a1eaedf81f6125dea82c5aa02acdab560877061de9fd12535e25c0bdce20839a36083e01f103d941980d20d4755ddcc
diff --git a/dev-python/tox/tox-4.28.3.ebuild b/dev-python/tox/tox-4.28.3.ebuild
index 37db9528b396..1075397a1c27 100644
--- a/dev-python/tox/tox-4.28.3.ebuild
+++ b/dev-python/tox/tox-4.28.3.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"
RDEPEND="
dev-python/cachetools[${PYTHON_USEDEP}]
diff --git a/dev-python/tox/tox-4.26.0.ebuild b/dev-python/tox/tox-4.30.1.ebuild
index 662607985d54..cba3047518a2 100644
--- a/dev-python/tox/tox-4.26.0.ebuild
+++ b/dev-python/tox/tox-4.30.1.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"
RDEPEND="
dev-python/cachetools[${PYTHON_USEDEP}]
@@ -35,10 +35,7 @@ BDEPEND="
test? (
dev-python/build[${PYTHON_USEDEP}]
dev-python/distlib[${PYTHON_USEDEP}]
- dev-python/flaky[${PYTHON_USEDEP}]
dev-python/psutil[${PYTHON_USEDEP}]
- dev-python/pytest-mock[${PYTHON_USEDEP}]
- dev-python/pytest-xdist[${PYTHON_USEDEP}]
dev-python/re-assert[${PYTHON_USEDEP}]
$(python_gen_cond_dep '
dev-python/time-machine[${PYTHON_USEDEP}]
@@ -46,6 +43,8 @@ BDEPEND="
)
"
+EPYTEST_PLUGINS=( pytest-{mock,rerunfailures,xdist} )
+# xdist seems to mess up state between successive implementation runs
distutils_enable_tests pytest
src_prepare() {
@@ -65,6 +64,7 @@ python_test() {
# Internet
tests/tox_env/python/virtual_env/package/test_package_cmd_builder.py::test_build_wheel_external
tests/tox_env/python/virtual_env/package/test_package_cmd_builder.py::test_run_installpkg_targz
+ tests/tox_env/python/virtual_env/package/test_package_pyproject.py::test_pyproject_installpkg_pep517_envs
)
local EPYTEST_IGNORE=(
# requires devpi*
@@ -72,6 +72,9 @@ python_test() {
)
case ${EPYTHON} in
+ python*)
+ local EPYTEST_PLUGINS=( "${EPYTEST_PLUGINS[@]}" time-machine )
+ ;;
pypy3*)
EPYTEST_DESELECT+=(
'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[explicit-True-True]'
@@ -82,13 +85,7 @@ python_test() {
'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[requirements_constraints_indirect-True-True]'
)
;;
- python3.13)
- EPYTEST_DESELECT+=(
- # https://github.com/tox-dev/tox/issues/3290
- 'tests/config/loader/test_str_convert.py::test_str_convert_ok_py39[1,2-value1-Optional]'
- )
- ;;
esac
- epytest
+ epytest -o addopts=
}
diff --git a/dev-python/tox/tox-4.30.2.ebuild b/dev-python/tox/tox-4.30.2.ebuild
new file mode 100644
index 000000000000..cba3047518a2
--- /dev/null
+++ b/dev-python/tox/tox-4.30.2.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=hatchling
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="virtualenv-based automation of test activities"
+HOMEPAGE="
+ https://tox.readthedocs.io/
+ https://github.com/tox-dev/tox/
+ https://pypi.org/project/tox/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ dev-python/cachetools[${PYTHON_USEDEP}]
+ dev-python/chardet[${PYTHON_USEDEP}]
+ dev-python/colorama[${PYTHON_USEDEP}]
+ dev-python/filelock[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/platformdirs[${PYTHON_USEDEP}]
+ dev-python/pluggy[${PYTHON_USEDEP}]
+ dev-python/pyproject-api[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ dev-python/build[${PYTHON_USEDEP}]
+ dev-python/distlib[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ dev-python/re-assert[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/time-machine[${PYTHON_USEDEP}]
+ ' 'python*')
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-{mock,rerunfailures,xdist} )
+# xdist seems to mess up state between successive implementation runs
+distutils_enable_tests pytest
+
+src_prepare() {
+ # upstream lower bounds are meaningless
+ sed -i -e 's:>=[0-9.]*::' pyproject.toml || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ # devpi_process is not packaged, and has lots of dependencies
+ cat > "${T}"/devpi_process.py <<-EOF || die
+ def IndexServer(*args, **kwargs): raise NotImplementedError()
+ EOF
+
+ local -x PYTHONPATH=${T}:${PYTHONPATH}
+ local EPYTEST_DESELECT=(
+ # Internet
+ tests/tox_env/python/virtual_env/package/test_package_cmd_builder.py::test_build_wheel_external
+ tests/tox_env/python/virtual_env/package/test_package_cmd_builder.py::test_run_installpkg_targz
+ tests/tox_env/python/virtual_env/package/test_package_pyproject.py::test_pyproject_installpkg_pep517_envs
+ )
+ local EPYTEST_IGNORE=(
+ # requires devpi*
+ tests/test_provision.py
+ )
+
+ case ${EPYTHON} in
+ python*)
+ local EPYTEST_PLUGINS=( "${EPYTEST_PLUGINS[@]}" time-machine )
+ ;;
+ pypy3*)
+ EPYTEST_DESELECT+=(
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[explicit-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[requirements-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[constraints-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[explicit+requirements-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[requirements_indirect-True-True]'
+ 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[requirements_constraints_indirect-True-True]'
+ )
+ ;;
+ esac
+
+ epytest -o addopts=
+}
diff --git a/dev-python/tqdm/tqdm-4.67.1.ebuild b/dev-python/tqdm/tqdm-4.67.1.ebuild
index e07e4af6179e..d8837b7cf702 100644
--- a/dev-python/tqdm/tqdm-4.67.1.ebuild
+++ b/dev-python/tqdm/tqdm-4.67.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
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"
IUSE="examples"
BDEPEND="
diff --git a/dev-python/traitlets/traitlets-5.14.3.ebuild b/dev-python/traitlets/traitlets-5.14.3.ebuild
index d7bba4acac03..8bdbd09243e7 100644
--- a/dev-python/traitlets/traitlets-5.14.3.ebuild
+++ b/dev-python/traitlets/traitlets-5.14.3.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos"
BDEPEND="
test? (
diff --git a/dev-python/translate-toolkit/Manifest b/dev-python/translate-toolkit/Manifest
index 4f142a292579..f6e7fa9e603a 100644
--- a/dev-python/translate-toolkit/Manifest
+++ b/dev-python/translate-toolkit/Manifest
@@ -1 +1,2 @@
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
diff --git a/dev-python/translate-toolkit/translate-toolkit-3.16.0.ebuild b/dev-python/translate-toolkit/translate-toolkit-3.16.0.ebuild
new file mode 100644
index 000000000000..6a327edeacb4
--- /dev/null
+++ b/dev-python/translate-toolkit/translate-toolkit-3.16.0.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/tree-sitter/tree-sitter-0.23.0-r1.ebuild b/dev-python/tree-sitter/tree-sitter-0.23.0-r1.ebuild
index 6d2556939c53..2703502c19b6 100644
--- a/dev-python/tree-sitter/tree-sitter-0.23.0-r1.ebuild
+++ b/dev-python/tree-sitter/tree-sitter-0.23.0-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -22,7 +22,7 @@ S=${WORKDIR}/py-${P}
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"
# setuptools is needed for distutils import
DEPEND="
diff --git a/dev-python/tree-sitter/tree-sitter-0.23.1-r1.ebuild b/dev-python/tree-sitter/tree-sitter-0.23.1-r1.ebuild
index ede91ce99634..cb93f117c0da 100644
--- a/dev-python/tree-sitter/tree-sitter-0.23.1-r1.ebuild
+++ b/dev-python/tree-sitter/tree-sitter-0.23.1-r1.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/py-${P}
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"
# setuptools is needed for distutils import
DEPEND="<dev-libs/tree-sitter-0.25.0:="
diff --git a/dev-python/tree-sitter/tree-sitter-0.24.0.ebuild b/dev-python/tree-sitter/tree-sitter-0.24.0.ebuild
index 47e29d03baf5..11aab4e76031 100644
--- a/dev-python/tree-sitter/tree-sitter-0.24.0.ebuild
+++ b/dev-python/tree-sitter/tree-sitter-0.24.0.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/py-${P}
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"
# setuptools is needed for distutils import
DEPEND=">=dev-libs/tree-sitter-0.25.0:="
diff --git a/dev-python/trimesh/Manifest b/dev-python/trimesh/Manifest
index 0b5533431bf8..9ce1fb4d23eb 100644
--- a/dev-python/trimesh/Manifest
+++ b/dev-python/trimesh/Manifest
@@ -1,3 +1,5 @@
DIST trimesh-4.7.1.gh.tar.gz 13638994 BLAKE2B 4dfc3585decf462b0c9b62336ada80f07b71e2fa66596a828f42978c7957ab336424d3d6d96d430656cff9d7db6ab8bb29b55f70150c90579b22298013546ae1 SHA512 a62e56709800525b1292c607e4ad251c7703dd03c636e82fed52b3ef92cf59a9230ce8bb2c00a8e5ac78e7b41bb34bb29c272bb2fe9f60974e18eb13761f43be
DIST trimesh-4.7.3.gh.tar.gz 13640391 BLAKE2B 16228912f1f95dcadef0fa1fede4567129059cec78ac64a49fd17a4e68f54503538577854e6d4860c62536c477c58ef518241d3759c1b0a188d2cd92250a5049 SHA512 dada2fd9890700d39741cd1d10c1fe1cfc907055281e9e0ead6f5c017141019d10bb20b580d0ad9e33ff9693f311efdd0c5ae5c52ffce2e7cb69bb5f9f05133e
DIST trimesh-4.7.4.gh.tar.gz 13640438 BLAKE2B 657d69e3ce886167c9c8b4e2080b961dda41c7420da7f5e4dfeb8bfba5aa3cd1a83c9e44eebdf8c27770fad3bc712874becf37f98307973ec2f1707f32106699 SHA512 4b51e642eb4dbfe6898082dbd9017b9da70093036cb826d909e55295d65e43a4933c8a94d8a1f653a713e235b7bc48bb30f30f4df7a36ae115302c031ee0f03e
+DIST trimesh-4.8.0.gh.tar.gz 13660712 BLAKE2B 5c667c6c6840e8921e8fc3cfa17179c6dd8c93e692c6fa3c0ebfebf3b0d2cc24e0cc1108297268705eb84e011058b66ff77494c69018e5064e0db2d82bc73c80 SHA512 8ccbb5913154a725bfc6a0259d8d240cf730e99e863d41f4c1b3e1c91c3bfbb1da4a0a7c7e84969a5c1fa3acebac0b9b2dcbccb4a5c9f904944ed5d169f51a3a
+DIST trimesh-4.8.1.gh.tar.gz 13660870 BLAKE2B 788ba3bdd7847d95431c415f2fd32c9efbd76258be91ad3043a314d2064d5b0c31c6b613e847dea8fb099d23995d4770f9c1303af0c1474d0b3a047a4b6b684f SHA512 4505b804b9ae2a0a676f8cceb081a6dfbdb2ade75dcbe66e15d8aaeca69988be129145c424052e2898459def6ed740b8e6c17a40f86961c8c3db6f0378fca07a
diff --git a/dev-python/trimesh/trimesh-4.8.0.ebuild b/dev-python/trimesh/trimesh-4.8.0.ebuild
new file mode 100644
index 000000000000..062f57fd3b56
--- /dev/null
+++ b/dev-python/trimesh/trimesh-4.8.0.ebuild
@@ -0,0 +1,76 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1 optfeature
+
+DESCRIPTION="Python library for loading and using triangular meshes"
+HOMEPAGE="
+ https://trimesh.org/
+ https://github.com/mikedh/trimesh/
+ https://pypi.org/project/trimesh/
+"
+SRC_URI="
+ https://github.com/mikedh/${PN}/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ dev-python/charset-normalizer[${PYTHON_USEDEP}]
+ dev-python/colorlog[${PYTHON_USEDEP}]
+ dev-python/httpx[${PYTHON_USEDEP}]
+ dev-python/jsonschema[${PYTHON_USEDEP}]
+ dev-python/lxml[${PYTHON_USEDEP}]
+ dev-python/networkx[${PYTHON_USEDEP}]
+ >=dev-python/numpy-1.20[${PYTHON_USEDEP}]
+ dev-python/pillow[${PYTHON_USEDEP}]
+ dev-python/pycollada[${PYTHON_USEDEP}]
+ dev-python/pyglet[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/scipy[${PYTHON_USEDEP}]
+ >=dev-python/shapely-1.8.2[${PYTHON_USEDEP}]
+ dev-python/svg-path[${PYTHON_USEDEP}]
+ dev-python/sympy[${PYTHON_USEDEP}]
+ dev-python/xxhash[${PYTHON_USEDEP}]
+ dev-python/rtree[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/mapbox-earcut[${PYTHON_USEDEP}]
+ dev-python/pillow[webp,${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_DESELECT=(
+ # requires manifold3d
+ tests/test_boolean.py::test_multiple_difference
+ # timing nonsense
+ tests/test_bounds.py::BoundsTest::test_obb_mesh_large
+)
+EPYTEST_IGNORE=(
+ # require pyinstrument
+ tests/test_sweep.py
+)
+
+EPYTEST_PLUGINS=()
+: ${EPYTEST_TIMEOUT:=1800}
+EPYTEST_XDIST=1
+
+distutils_enable_tests pytest
+
+pkg_postinst() {
+ optfeature_header "${PN} functionality can be extended by installing the following packages:"
+ optfeature "making GUI applications with 3D stuff" dev-python/glooey
+ optfeature "2D triangulations of polygons" dev-python/mapbox-earcut
+ optfeature "loading a number of additional mesh formats" dev-python/meshio
+ optfeature "figuring out how much memory we have" dev-python/psutil
+ optfeature "marching cubes and other nice stuff" dev-python/scikit-image
+}
diff --git a/dev-python/trimesh/trimesh-4.8.1.ebuild b/dev-python/trimesh/trimesh-4.8.1.ebuild
new file mode 100644
index 000000000000..7ffba0c82ba1
--- /dev/null
+++ b/dev-python/trimesh/trimesh-4.8.1.ebuild
@@ -0,0 +1,77 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1 optfeature
+
+DESCRIPTION="Python library for loading and using triangular meshes"
+HOMEPAGE="
+ https://trimesh.org/
+ https://github.com/mikedh/trimesh/
+ https://pypi.org/project/trimesh/
+"
+SRC_URI="
+ https://github.com/mikedh/${PN}/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ dev-python/charset-normalizer[${PYTHON_USEDEP}]
+ dev-python/colorlog[${PYTHON_USEDEP}]
+ dev-python/httpx[${PYTHON_USEDEP}]
+ dev-python/jsonschema[${PYTHON_USEDEP}]
+ dev-python/lxml[${PYTHON_USEDEP}]
+ dev-python/networkx[${PYTHON_USEDEP}]
+ >=dev-python/numpy-1.20[${PYTHON_USEDEP}]
+ dev-python/pillow[${PYTHON_USEDEP}]
+ dev-python/pycollada[${PYTHON_USEDEP}]
+ dev-python/pyglet[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/scipy[${PYTHON_USEDEP}]
+ >=dev-python/shapely-1.8.2[${PYTHON_USEDEP}]
+ dev-python/svg-path[${PYTHON_USEDEP}]
+ dev-python/sympy[${PYTHON_USEDEP}]
+ dev-python/xxhash[${PYTHON_USEDEP}]
+ dev-python/rtree[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/mapbox-earcut[${PYTHON_USEDEP}]
+ dev-python/pillow[webp,${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_DESELECT=(
+ # requires manifold3d
+ tests/test_boolean.py::test_multiple_difference
+ # timing nonsense
+ tests/test_bounds.py::BoundsTest::test_obb_mesh_large
+)
+EPYTEST_IGNORE=(
+ # require pyinstrument
+ tests/test_sweep.py
+)
+
+EPYTEST_PLUGINS=()
+: ${EPYTEST_TIMEOUT:=300}
+EPYTEST_RERUNS=3
+EPYTEST_XDIST=1
+
+distutils_enable_tests pytest
+
+pkg_postinst() {
+ optfeature_header "${PN} functionality can be extended by installing the following packages:"
+ optfeature "making GUI applications with 3D stuff" dev-python/glooey
+ optfeature "2D triangulations of polygons" dev-python/mapbox-earcut
+ optfeature "loading a number of additional mesh formats" dev-python/meshio
+ optfeature "figuring out how much memory we have" dev-python/psutil
+ optfeature "marching cubes and other nice stuff" dev-python/scikit-image
+}
diff --git a/dev-python/trio-websocket/trio-websocket-0.12.2.ebuild b/dev-python/trio-websocket/trio-websocket-0.12.2.ebuild
index 1c65a49d5106..8221d289997c 100644
--- a/dev-python/trio-websocket/trio-websocket-0.12.2.ebuild
+++ b/dev-python/trio-websocket/trio-websocket-0.12.2.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
$(python_gen_cond_dep '
diff --git a/dev-python/trio/trio-0.30.0.ebuild b/dev-python/trio/trio-0.30.0.ebuild
index 692eb39e699d..ac8d4c659aa6 100644
--- a/dev-python/trio/trio-0.30.0.ebuild
+++ b/dev-python/trio/trio-0.30.0.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="|| ( Apache-2.0 MIT )"
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"
RDEPEND="
>=dev-python/attrs-23.2.0[${PYTHON_USEDEP}]
diff --git a/dev-python/trove-classifiers/trove-classifiers-2025.5.9.12.ebuild b/dev-python/trove-classifiers/trove-classifiers-2025.5.9.12.ebuild
index 85ec99e9e268..b48e176ebe4e 100644
--- a/dev-python/trove-classifiers/trove-classifiers-2025.5.9.12.ebuild
+++ b/dev-python/trove-classifiers/trove-classifiers-2025.5.9.12.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 ~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"
distutils_enable_tests pytest
diff --git a/dev-python/trustme/trustme-1.2.1.ebuild b/dev-python/trustme/trustme-1.2.1.ebuild
index c4029a78a137..4b70339ab91d 100644
--- a/dev-python/trustme/trustme-1.2.1.ebuild
+++ b/dev-python/trustme/trustme-1.2.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="|| ( Apache-2.0 MIT )"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~ppc-macos ~x64-macos ~x64-solaris"
+KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~ppc-macos ~x64-macos ~x64-solaris"
RDEPEND="
>=dev-python/cryptography-3.1[${PYTHON_USEDEP}]
diff --git a/dev-python/truststore/truststore-0.10.1.ebuild b/dev-python/truststore/truststore-0.10.1.ebuild
index 4174216abf46..12768b1016dd 100644
--- a/dev-python/truststore/truststore-0.10.1.ebuild
+++ b/dev-python/truststore/truststore-0.10.1.ebuild
@@ -20,7 +20,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"
# The vast majority of tests require Internet access.
PROPERTIES="test_network"
RESTRICT="test"
diff --git a/dev-python/truststore/truststore-0.10.4.ebuild b/dev-python/truststore/truststore-0.10.4.ebuild
index 4174216abf46..12768b1016dd 100644
--- a/dev-python/truststore/truststore-0.10.4.ebuild
+++ b/dev-python/truststore/truststore-0.10.4.ebuild
@@ -20,7 +20,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"
# The vast majority of tests require Internet access.
PROPERTIES="test_network"
RESTRICT="test"
diff --git a/dev-python/twine/Manifest b/dev-python/twine/Manifest
index dfb924bb4b5a..a1a2fda1dc87 100644
--- a/dev-python/twine/Manifest
+++ b/dev-python/twine/Manifest
@@ -1,2 +1,3 @@
DIST twine-6.0.1.gh.tar.gz 223827 BLAKE2B ab88eb21908954ee7c32744ae9f7ccd7d50cb2b5207917144ef559e142837c89625596dea2c1bb0be21858bb0967690df999bb8a123e01beb5637a025dc490f9 SHA512 4fa7727d0728da3e05eaca068bf1dd85656225dd61958666ec0747359ee6bd88b25fd443d6c77bd8db245e71418cf8e5b594a6559ac1ecaafe3c079ecaefadba
DIST twine-6.1.0.gh.tar.gz 163562 BLAKE2B c1fa279f62c5c6c5dfdc59120a9d80776d69527fec69356358963956ce7e1f76f05b432eaef3586c52a4150ce2893975cff252361740a7ce24b2917379c212f8 SHA512 d8235561f13eaaee7607b4b50dd70fdb67b9a9863a7d69fa2d173d8625cb3c44c8adccb27c5fe2203b3c1db7f36a685cc9da7f847aac3d5a3622b8e7125dd2b8
+DIST twine-6.2.0.gh.tar.gz 167087 BLAKE2B 51c95da17fee1336bc94b0847035c0a6e115915696b8a127fb21f8e75c4a8090af221cacd6196279a9352c607a8b643500a6260963f2bc9e6f570b318626d4f6 SHA512 3637b9b6644678a9573ba93d5f2b90b5660f8df126f7a6fde1519fc45f93f1fa0646b16b35087c4b1187b2be1845ce2c3c6f40f96716e2c44d1a6cd471e3b64b
diff --git a/dev-python/twine/twine-6.0.1.ebuild b/dev-python/twine/twine-6.0.1.ebuild
index 456ec8b01bad..eaa9eea3b261 100644
--- a/dev-python/twine/twine-6.0.1.ebuild
+++ b/dev-python/twine/twine-6.0.1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/colorama-0.4.3[${PYTHON_USEDEP}]
diff --git a/dev-python/twine/twine-6.1.0.ebuild b/dev-python/twine/twine-6.1.0.ebuild
index 43b30b4e46ad..9d9f950c611c 100644
--- a/dev-python/twine/twine-6.1.0.ebuild
+++ b/dev-python/twine/twine-6.1.0.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ~ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ~ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/colorama-0.4.3[${PYTHON_USEDEP}]
diff --git a/dev-python/twine/twine-6.2.0.ebuild b/dev-python/twine/twine-6.2.0.ebuild
new file mode 100644
index 000000000000..67c6af8ce4b9
--- /dev/null
+++ b/dev-python/twine/twine-6.2.0.ebuild
@@ -0,0 +1,76 @@
+# 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="Collection of utilities for publishing packages on PyPI"
+HOMEPAGE="
+ https://twine.readthedocs.io/
+ https://github.com/pypa/twine/
+ https://pypi.org/project/twine/
+"
+SRC_URI="
+ https://github.com/pypa/twine/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/colorama-0.4.3[${PYTHON_USEDEP}]
+ dev-python/id[${PYTHON_USEDEP}]
+ >=dev-python/keyring-21.2.0[${PYTHON_USEDEP}]
+ >=dev-python/packaging-24.0[${PYTHON_USEDEP}]
+ >=dev-python/readme-renderer-35.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.20.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-toolbelt-0.8.0[${PYTHON_USEDEP}]
+ >=dev-python/rfc3986-1.4.0[${PYTHON_USEDEP}]
+ >=dev-python/rich-12.0.0[${PYTHON_USEDEP}]
+ >=dev-python/urllib3-1.26.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ dev-python/build[${PYTHON_USEDEP}]
+ dev-python/jaraco-envs[${PYTHON_USEDEP}]
+ dev-python/jaraco-functools[${PYTHON_USEDEP}]
+ dev-python/munch[${PYTHON_USEDEP}]
+ dev-python/portend[${PYTHON_USEDEP}]
+ dev-python/pretend[${PYTHON_USEDEP}]
+ dev-python/pypiserver[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ distutils-r1_python_prepare_all
+
+ # pytest-socket dep relevant only to test_integration, and upstream
+ # disables it anyway
+ sed -i -e '/--disable-socket/d' pytest.ini || die
+
+ export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
+}
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ # Internet
+ tests/test_integration.py
+ )
+ local EPYTEST_DESELECT=(
+ # Avoid needing heavy virtualx
+ tests/test_auth.py::test_warns_for_empty_password
+ )
+
+ local -x COLUMNS=80
+ epytest
+}
diff --git a/dev-python/twisted/twisted-24.10.0.ebuild b/dev-python/twisted/twisted-24.10.0.ebuild
index a37ea9587e59..5374abd208f0 100644
--- a/dev-python/twisted/twisted-24.10.0.ebuild
+++ b/dev-python/twisted/twisted-24.10.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -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"
RESTRICT="!test? ( test )"
diff --git a/dev-python/twisted/twisted-24.11.0-r1.ebuild b/dev-python/twisted/twisted-24.11.0-r1.ebuild
index 2d7a75854db6..e5a8a29048d3 100644
--- a/dev-python/twisted/twisted-24.11.0-r1.ebuild
+++ b/dev-python/twisted/twisted-24.11.0-r1.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"
RESTRICT="!test? ( test )"
diff --git a/dev-python/twisted/twisted-25.5.0.ebuild b/dev-python/twisted/twisted-25.5.0.ebuild
index 687482bf277e..ea0b307e5233 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/typeguard/typeguard-4.4.4.ebuild b/dev-python/typeguard/typeguard-4.4.4.ebuild
index 163ecc64d29c..602835ed7ac6 100644
--- a/dev-python/typeguard/typeguard-4.4.4.ebuild
+++ b/dev-python/typeguard/typeguard-4.4.4.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"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/typing-extensions-4.14.0[${PYTHON_USEDEP}]
diff --git a/dev-python/types-docutils/types-docutils-0.21.0.20250728.ebuild b/dev-python/types-docutils/types-docutils-0.21.0.20250728.ebuild
index 9fdbbf2b35dd..29b3eac5da76 100644
--- a/dev-python/types-docutils/types-docutils-0.21.0.20250728.ebuild
+++ b/dev-python/types-docutils/types-docutils-0.21.0.20250728.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-gdb/types-gdb-15.0.0.20250801.ebuild b/dev-python/types-gdb/types-gdb-15.0.0.20250801.ebuild
index 5249cc2ff879..c647fa187938 100644
--- a/dev-python/types-gdb/types-gdb-15.0.0.20250801.ebuild
+++ b/dev-python/types-gdb/types-gdb-15.0.0.20250801.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-psutil/types-psutil-7.0.0.20250601.ebuild b/dev-python/types-psutil/types-psutil-7.0.0.20250601.ebuild
index 7cc0c410d9fc..27dbe28429dc 100644
--- a/dev-python/types-psutil/types-psutil-7.0.0.20250601.ebuild
+++ b/dev-python/types-psutil/types-psutil-7.0.0.20250601.ebuild
@@ -13,4 +13,4 @@ HOMEPAGE="https://pypi.org/project/types-psutil/"
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/types-psutil/types-psutil-7.0.0.20250801.ebuild b/dev-python/types-psutil/types-psutil-7.0.0.20250801.ebuild
index da0f9d713bcd..27dbe28429dc 100644
--- a/dev-python/types-psutil/types-psutil-7.0.0.20250801.ebuild
+++ b/dev-python/types-psutil/types-psutil-7.0.0.20250801.ebuild
@@ -13,4 +13,4 @@ HOMEPAGE="https://pypi.org/project/types-psutil/"
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/types-setuptools/types-setuptools-80.9.0.20250529.ebuild b/dev-python/types-setuptools/types-setuptools-80.9.0.20250529.ebuild
index fadb3d040bae..2086c497e4d7 100644
--- a/dev-python/types-setuptools/types-setuptools-80.9.0.20250529.ebuild
+++ b/dev-python/types-setuptools/types-setuptools-80.9.0.20250529.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/types-setuptools/types-setuptools-80.9.0.20250801.ebuild b/dev-python/types-setuptools/types-setuptools-80.9.0.20250801.ebuild
index 078677754317..2086c497e4d7 100644
--- a/dev-python/types-setuptools/types-setuptools-80.9.0.20250801.ebuild
+++ b/dev-python/types-setuptools/types-setuptools-80.9.0.20250801.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/typing-extensions/typing-extensions-4.14.1.ebuild b/dev-python/typing-extensions/typing-extensions-4.14.1.ebuild
index 7cde208e1712..5d3015a99ea2 100644
--- a/dev-python/typing-extensions/typing-extensions-4.14.1.ebuild
+++ b/dev-python/typing-extensions/typing-extensions-4.14.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="PSF-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/typing-inspection/typing-inspection-0.4.1.ebuild b/dev-python/typing-inspection/typing-inspection-0.4.1.ebuild
index a71502262cb6..d7ef4fe64132 100644
--- a/dev-python/typing-inspection/typing-inspection-0.4.1.ebuild
+++ b/dev-python/typing-inspection/typing-inspection-0.4.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/typing-extensions-4.12.0[${PYTHON_USEDEP}]
diff --git a/dev-python/typogrify/typogrify-2.1.0.ebuild b/dev-python/typogrify/typogrify-2.1.0.ebuild
index 6738d42e8211..ba47034dcd58 100644
--- a/dev-python/typogrify/typogrify-2.1.0.ebuild
+++ b/dev-python/typogrify/typogrify-2.1.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
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"
RDEPEND="
>=dev-python/smartypants-1.8.3[${PYTHON_USEDEP}]
diff --git a/dev-python/tzdata/tzdata-10001.ebuild b/dev-python/tzdata/tzdata-10001.ebuild
index 56a02c18e1a1..51d1d82a03f5 100644
--- a/dev-python/tzdata/tzdata-10001.ebuild
+++ b/dev-python/tzdata/tzdata-10001.ebuild
@@ -13,7 +13,7 @@ HOMEPAGE="https://peps.python.org/pep-0615/"
LICENSE="public-domain"
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"
RDEPEND="
sys-libs/timezone-data
diff --git a/dev-python/u-msgpack-python/u-msgpack-python-2.8.0.ebuild b/dev-python/u-msgpack-python/u-msgpack-python-2.8.0.ebuild
index f73923007876..4a6d1ab0b6fb 100644
--- a/dev-python/u-msgpack-python/u-msgpack-python-2.8.0.ebuild
+++ b/dev-python/u-msgpack-python/u-msgpack-python-2.8.0.ebuild
@@ -17,6 +17,6 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
distutils_enable_tests pytest
diff --git a/dev-python/uc-micro-py/uc-micro-py-1.0.3.ebuild b/dev-python/uc-micro-py/uc-micro-py-1.0.3.ebuild
index 8227a809edca..3dd974991bef 100644
--- a/dev-python/uc-micro-py/uc-micro-py-1.0.3.ebuild
+++ b/dev-python/uc-micro-py/uc-micro-py-1.0.3.ebuild
@@ -17,6 +17,6 @@ HOMEPAGE="
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"
distutils_enable_tests pytest
diff --git a/dev-python/ujson/ujson-5.10.0.ebuild b/dev-python/ujson/ujson-5.10.0.ebuild
index 3428066cdc69..6304f2c3c8eb 100644
--- a/dev-python/ujson/ujson-5.10.0.ebuild
+++ b/dev-python/ujson/ujson-5.10.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
DEPEND="
dev-libs/double-conversion:=
diff --git a/dev-python/unidecode/unidecode-1.4.0.ebuild b/dev-python/unidecode/unidecode-1.4.0.ebuild
index 1baa1751c5c9..c84788f4beda 100644
--- a/dev-python/unidecode/unidecode-1.4.0.ebuild
+++ b/dev-python/unidecode/unidecode-1.4.0.ebuild
@@ -15,6 +15,6 @@ HOMEPAGE="https://pypi.org/project/Unidecode/"
LICENSE="GPL-2+"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ppc ppc64 ~riscv sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ppc ppc64 ~riscv ~sparc x86"
distutils_enable_tests unittest
diff --git a/dev-python/unittest-mixins/unittest-mixins-1.6-r2.ebuild b/dev-python/unittest-mixins/unittest-mixins-1.6-r2.ebuild
index f6e167cab7ff..6d2cf84190b1 100644
--- a/dev-python/unittest-mixins/unittest-mixins-1.6-r2.ebuild
+++ b/dev-python/unittest-mixins/unittest-mixins-1.6-r2.ebuild
@@ -17,7 +17,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"
RDEPEND="
>=dev-python/six-1.10.0[${PYTHON_USEDEP}]
diff --git a/dev-python/untangle/untangle-1.2.1-r2.ebuild b/dev-python/untangle/untangle-1.2.1-r2.ebuild
index 05a6c36edbf2..5d1cd2aa3342 100644
--- a/dev-python/untangle/untangle-1.2.1-r2.ebuild
+++ b/dev-python/untangle/untangle-1.2.1-r2.ebuild
@@ -20,7 +20,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"
RDEPEND="
>=dev-python/defusedxml-0.7.1[${PYTHON_USEDEP}]
diff --git a/dev-python/uri-template/uri-template-1.3.0.ebuild b/dev-python/uri-template/uri-template-1.3.0.ebuild
index 69dc3d274537..96e4b84ecab4 100644
--- a/dev-python/uri-template/uri-template-1.3.0.ebuild
+++ b/dev-python/uri-template/uri-template-1.3.0.ebuild
@@ -21,7 +21,7 @@ S=${WORKDIR}/${MY_P}
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-scm[${PYTHON_USEDEP}]
diff --git a/dev-python/uritemplate/uritemplate-4.2.0.ebuild b/dev-python/uritemplate/uritemplate-4.2.0.ebuild
index adb2932ac834..36a060bf3cd9 100644
--- a/dev-python/uritemplate/uritemplate-4.2.0.ebuild
+++ b/dev-python/uritemplate/uritemplate-4.2.0.ebuild
@@ -17,6 +17,6 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
distutils_enable_tests pytest
diff --git a/dev-python/urllib3/urllib3-2.5.0.ebuild b/dev-python/urllib3/urllib3-2.5.0.ebuild
index 03efb63062db..5a45a3d2314d 100644
--- a/dev-python/urllib3/urllib3-2.5.0.ebuild
+++ b/dev-python/urllib3/urllib3-2.5.0.ebuild
@@ -27,7 +27,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 ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"
IUSE="brotli http2 test zstd"
RESTRICT="!test? ( test )"
diff --git a/dev-python/urwid/urwid-3.0.2.ebuild b/dev-python/urwid/urwid-3.0.2.ebuild
index 3c57130316fa..3481244c8f84 100644
--- a/dev-python/urwid/urwid-3.0.2.ebuild
+++ b/dev-python/urwid/urwid-3.0.2.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="LGPL-2.1"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~x86-linux"
IUSE="examples"
RDEPEND="
diff --git a/dev-python/uv-build/Manifest b/dev-python/uv-build/Manifest
index 2646992516a8..356fc78473f6 100644
--- a/dev-python/uv-build/Manifest
+++ b/dev-python/uv-build/Manifest
@@ -1,5 +1,6 @@
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.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.15.ebuild b/dev-python/uv-build/uv-build-0.8.15.ebuild
new file mode 100644
index 000000000000..aafb223c5bb8
--- /dev/null
+++ b/dev-python/uv-build/uv-build-0.8.15.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 2ed36604571c..1c27d72a7d9b 100644
--- a/dev-python/uv/Manifest
+++ b/dev-python/uv/Manifest
@@ -1,8 +1,11 @@
DIST pubgrub-06ec5a5f59ffaeb6cf5079c6cb184467da06c9db.gh.tar.gz 99881 BLAKE2B 5fcc2d1a06eb44351773081de4f616c93301eb2fe71b0c6f7b95779ec4bd9bb6cccc702a87a6399b0674711302a19de3a96fa31044660430fd74ff549000ad25 SHA512 3f0b18aecbc73fee91fc7de9f10d240ddc06c836fa2f116c1f007dd7818d099e6aea1852ca0b8d1a26ac19aac896535dba1a6298851a65515b553810c6245784
+DIST reqwest-middleware-7650ed76215a962a96d94a79be71c27bffde7ab2.gh.tar.gz 42520 BLAKE2B ca415865947873f8b309f5b348a600677802fa8128a154b7c86d3e30bffece9df8606504073ddb688c5185e27866b5d7dc8a891e6d390ca075910a691e9bb2aa SHA512 904fd652b0f3ecc90eee571d5488aba977dee643a1d6267e2fda264fa4c7b4bfcfacd4d5a23287dfb710ecc82d667479fcd0c48166259c2368df0e8b0c9d6707
DIST reqwest-middleware-ad8b9d332d1773fde8b4cd008486de5973e0a3f8.gh.tar.gz 41975 BLAKE2B db42a68b8f0d592edc297462c19a34caa068464b9a5f307e8e1c1fdacde95cd08c5af0f73fa55ed62217dee63940a1d02a4322c5edb2c2c8a568a7e04efd80e6 SHA512 2dad83835c87cdd79e2a08c19b5024b3fdf30d1d8cd14e480e434612e856ecc20a5404881ff81d5793d3e9d5808ee3d59ce920312a86a100535009da43d7d46b
DIST rs-async-zip-285e48742b74ab109887d62e1ae79e7c15fd4878.gh.tar.gz 37003 BLAKE2B c4aed18d82641ced2771ad8b8e800c45b1ded279e8ba1874ec9766907d042ae13b460beac739ced6e31c03a647e4238af96fb41e8c0dff4c5d4dd7f59c0ebbff SHA512 d6dd699f43ca6e23a4c8abb8673b37d3983081a8c78545492ea3c1d0b35e3a491277c341df6dd64fb7efaec3b23eb479dede99e9b41016b5504d1a6dc9fbc617
DIST rs-async-zip-c909fda63fcafe4af496a07bfda28a5aae97e58d.gh.tar.gz 51763 BLAKE2B 59d053bc6692014d884a9247dea1b57a8789469ba2abbcc92ec21bb0022cbd74874afc463082156ab697aa6c80635019857a5d7e2dc150274e8b04d720518c36 SHA512 3a309566f4925b02496fcf19bc2865968edf6fb65082ca4079d2cee79e6b0353a1910c079f2afe656da0d0f6ddde5102052a221ea35a7dabc6d690a11218b20a
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.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.15.ebuild b/dev-python/uv/uv-0.8.15.ebuild
new file mode 100644
index 000000000000..d5a02e6201af
--- /dev/null
+++ b/dev-python/uv/uv-0.8.15.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-9999.ebuild b/dev-python/uv/uv-9999.ebuild
new file mode 100644
index 000000000000..0ebc73e88b05
--- /dev/null
+++ b/dev-python/uv/uv-9999.ebuild
@@ -0,0 +1,145 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+RUST_MIN_VER="1.88.0"
+
+inherit cargo check-reqs git-r3
+
+DESCRIPTION="A Python package installer and resolver, written in Rust"
+HOMEPAGE="
+ https://github.com/astral-sh/uv/
+ https://pypi.org/project/uv/
+"
+EGIT_REPO_URI="https://github.com/astral-sh/uv.git"
+
+LICENSE="|| ( Apache-2.0 MIT )"
+SLOT="0"
+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_unpack() {
+ git-r3_src_unpack
+ cargo_live_src_unpack
+}
+
+src_prepare() {
+ default
+
+ # 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?
+
+ # 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/uvicorn/uvicorn-0.35.0.ebuild b/dev-python/uvicorn/uvicorn-0.35.0.ebuild
index 1dc834dd8504..38744d446253 100644
--- a/dev-python/uvicorn/uvicorn-0.35.0.ebuild
+++ b/dev-python/uvicorn/uvicorn-0.35.0.ebuild
@@ -22,7 +22,7 @@ SRC_URI="
LICENSE="BSD"
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-rust"
RDEPEND="
diff --git a/dev-python/uvloop/uvloop-0.21.0.ebuild b/dev-python/uvloop/uvloop-0.21.0.ebuild
index c77d3c6a509b..3c917c6e0076 100644
--- a/dev-python/uvloop/uvloop-0.21.0.ebuild
+++ b/dev-python/uvloop/uvloop-0.21.0.ebuild
@@ -18,7 +18,7 @@ SRC_URI+=" https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${PN}-0.19.0-
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 -riscv sparc x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 -riscv ~sparc x86"
IUSE="examples"
DEPEND="
diff --git a/dev-python/validators/validators-0.35.0.ebuild b/dev-python/validators/validators-0.35.0.ebuild
index 4a060e869d63..ddb6c5a55979 100644
--- a/dev-python/validators/validators-0.35.0.ebuild
+++ b/dev-python/validators/validators-0.35.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
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"
distutils_enable_tests pytest
diff --git a/dev-python/vcrpy/vcrpy-7.0.0.ebuild b/dev-python/vcrpy/vcrpy-7.0.0.ebuild
index 26da5f2b323d..577794b99bf7 100644
--- a/dev-python/vcrpy/vcrpy-7.0.0.ebuild
+++ b/dev-python/vcrpy/vcrpy-7.0.0.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
RDEPEND="
>=dev-python/httplib2-0.9.1[${PYTHON_USEDEP}]
diff --git a/dev-python/versioneer/versioneer-0.29-r1.ebuild b/dev-python/versioneer/versioneer-0.29-r1.ebuild
index bb880b6aa818..2b4c2a01ec8e 100644
--- a/dev-python/versioneer/versioneer-0.29-r1.ebuild
+++ b/dev-python/versioneer/versioneer-0.29-r1.ebuild
@@ -23,7 +23,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="Unlicense"
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/virtualenv/virtualenv-20.32.0.ebuild b/dev-python/virtualenv/virtualenv-20.32.0.ebuild
index 86741385e337..e0b93c518e8f 100644
--- a/dev-python/virtualenv/virtualenv-20.32.0.ebuild
+++ b/dev-python/virtualenv/virtualenv-20.32.0.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
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"
RESTRICT="!test? ( test )"
diff --git a/dev-python/voluptuous/voluptuous-0.15.2.ebuild b/dev-python/voluptuous/voluptuous-0.15.2.ebuild
index 50de99dc011d..1fdd0d361568 100644
--- a/dev-python/voluptuous/voluptuous-0.15.2.ebuild
+++ b/dev-python/voluptuous/voluptuous-0.15.2.ebuild
@@ -20,6 +20,6 @@ SRC_URI="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
distutils_enable_tests pytest
diff --git a/dev-python/waitress/waitress-3.0.2.ebuild b/dev-python/waitress/waitress-3.0.2.ebuild
index 4bdbc7db11a8..c2ac1f300cce 100644
--- a/dev-python/waitress/waitress-3.0.2.ebuild
+++ b/dev-python/waitress/waitress-3.0.2.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="ZPL"
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"
distutils_enable_tests pytest
diff --git a/dev-python/watchdog/watchdog-6.0.0.ebuild b/dev-python/watchdog/watchdog-6.0.0.ebuild
index a827867ce7a5..d4479e7578f4 100644
--- a/dev-python/watchdog/watchdog-6.0.0.ebuild
+++ b/dev-python/watchdog/watchdog-6.0.0.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"
RDEPEND="
dev-python/pyyaml[${PYTHON_USEDEP}]
diff --git a/dev-python/watchfiles/watchfiles-1.0.4.ebuild b/dev-python/watchfiles/watchfiles-1.0.4.ebuild
index 44ec6fb86346..71edd3676090 100644
--- a/dev-python/watchfiles/watchfiles-1.0.4.ebuild
+++ b/dev-python/watchfiles/watchfiles-1.0.4.ebuild
@@ -83,7 +83,7 @@ LICENSE+="
Apache-2.0-with-LLVM-exceptions BSD CC0-1.0 ISC MIT Unicode-DFS-2016
"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/anyio-4.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/watchfiles/watchfiles-1.1.0.ebuild b/dev-python/watchfiles/watchfiles-1.1.0.ebuild
index 1569befe56cb..abe9a9dc2a66 100644
--- a/dev-python/watchfiles/watchfiles-1.1.0.ebuild
+++ b/dev-python/watchfiles/watchfiles-1.1.0.ebuild
@@ -82,7 +82,7 @@ LICENSE+="
Apache-2.0-with-LLVM-exceptions CC0-1.0 ISC MIT Unicode-DFS-2016
"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/anyio-4.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/wcag-contrast-ratio/wcag-contrast-ratio-0.9-r1.ebuild b/dev-python/wcag-contrast-ratio/wcag-contrast-ratio-0.9-r1.ebuild
index c9bbc886330b..dd34d0d112a5 100644
--- a/dev-python/wcag-contrast-ratio/wcag-contrast-ratio-0.9-r1.ebuild
+++ b/dev-python/wcag-contrast-ratio/wcag-contrast-ratio-0.9-r1.ebuild
@@ -20,7 +20,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"
BDEPEND="
test? (
diff --git a/dev-python/wcwidth/wcwidth-0.2.13.ebuild b/dev-python/wcwidth/wcwidth-0.2.13.ebuild
index 5adf7b2cc52a..123aecd50b73 100644
--- a/dev-python/wcwidth/wcwidth-0.2.13.ebuild
+++ b/dev-python/wcwidth/wcwidth-0.2.13.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"
distutils_enable_tests pytest
diff --git a/dev-python/webcolors/webcolors-24.11.1.ebuild b/dev-python/webcolors/webcolors-24.11.1.ebuild
index acd22cc885f9..a8bb657a01a6 100644
--- a/dev-python/webcolors/webcolors-24.11.1.ebuild
+++ b/dev-python/webcolors/webcolors-24.11.1.ebuild
@@ -16,6 +16,6 @@ HOMEPAGE="
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 ~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"
distutils_enable_tests unittest
diff --git a/dev-python/webencodings/webencodings-0.5.1-r2.ebuild b/dev-python/webencodings/webencodings-0.5.1-r2.ebuild
index 0dc56b96881e..32d34253a218 100644
--- a/dev-python/webencodings/webencodings-0.5.1-r2.ebuild
+++ b/dev-python/webencodings/webencodings-0.5.1-r2.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
distutils_enable_tests pytest
diff --git a/dev-python/webob/webob-1.8.9.ebuild b/dev-python/webob/webob-1.8.9.ebuild
index d042304a3e46..6fb67e89c7fc 100644
--- a/dev-python/webob/webob-1.8.9.ebuild
+++ b/dev-python/webob/webob-1.8.9.ebuild
@@ -18,7 +18,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 ~ppc-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
RDEPEND="
$(python_gen_cond_dep '
diff --git a/dev-python/websocket-client/websocket-client-1.8.0.ebuild b/dev-python/websocket-client/websocket-client-1.8.0.ebuild
index ca3be924eae9..4a11ca1d8784 100644
--- a/dev-python/websocket-client/websocket-client-1.8.0.ebuild
+++ b/dev-python/websocket-client/websocket-client-1.8.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
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"
IUSE="examples test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/websockets/websockets-15.0.1.ebuild b/dev-python/websockets/websockets-15.0.1.ebuild
index 8851a20d253d..46a5495cf398 100644
--- a/dev-python/websockets/websockets-15.0.1.ebuild
+++ b/dev-python/websockets/websockets-15.0.1.ebuild
@@ -23,7 +23,7 @@ SRC_URI="
LICENSE="BSD"
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"
BDEPEND="
diff --git a/dev-python/webtest/webtest-3.0.6.ebuild b/dev-python/webtest/webtest-3.0.6.ebuild
index b8034be2a7c4..95d974c0bd60 100644
--- a/dev-python/webtest/webtest-3.0.6.ebuild
+++ b/dev-python/webtest/webtest-3.0.6.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="MIT"
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"
RDEPEND="
dev-python/paste[${PYTHON_USEDEP}]
diff --git a/dev-python/werkzeug/werkzeug-3.1.3.ebuild b/dev-python/werkzeug/werkzeug-3.1.3.ebuild
index a438b28445cb..f7b241d73116 100644
--- a/dev-python/werkzeug/werkzeug-3.1.3.ebuild
+++ b/dev-python/werkzeug/werkzeug-3.1.3.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
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-rust"
RDEPEND="
diff --git a/dev-python/wheel/wheel-0.45.1.ebuild b/dev-python/wheel/wheel-0.45.1.ebuild
index ee9fb894e585..fd41ce474476 100644
--- a/dev-python/wheel/wheel-0.45.1.ebuild
+++ b/dev-python/wheel/wheel-0.45.1.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 ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"
RDEPEND="
dev-python/packaging[${PYTHON_USEDEP}]
diff --git a/dev-python/whoosh/whoosh-2.7.4-r2.ebuild b/dev-python/whoosh/whoosh-2.7.4-r2.ebuild
index b74e1f5440ef..7a21bb1cf2a2 100644
--- a/dev-python/whoosh/whoosh-2.7.4-r2.ebuild
+++ b/dev-python/whoosh/whoosh-2.7.4-r2.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD-2"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-solaris"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-solaris"
PATCHES=(
"${FILESDIR}"/${PN}-2.7.4-tests-specify-utf8.patch
diff --git a/dev-python/wrapt/wrapt-1.17.2.ebuild b/dev-python/wrapt/wrapt-1.17.2.ebuild
index 682de42accbc..57b635871d4b 100644
--- a/dev-python/wrapt/wrapt-1.17.2.ebuild
+++ b/dev-python/wrapt/wrapt-1.17.2.ebuild
@@ -23,7 +23,7 @@ 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 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
IUSE="+native-extensions"
distutils_enable_tests pytest
diff --git a/dev-python/wsgiproxy2/wsgiproxy2-0.5.1-r1.ebuild b/dev-python/wsgiproxy2/wsgiproxy2-0.5.1-r1.ebuild
index c65187eaaeb2..1d2984bafc4a 100644
--- a/dev-python/wsgiproxy2/wsgiproxy2-0.5.1-r1.ebuild
+++ b/dev-python/wsgiproxy2/wsgiproxy2-0.5.1-r1.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="MIT"
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"
RDEPEND="
dev-python/requests[${PYTHON_USEDEP}]
diff --git a/dev-python/wsproto/wsproto-1.2.0.ebuild b/dev-python/wsproto/wsproto-1.2.0.ebuild
index 6bed20e0feef..c2825d9be4db 100644
--- a/dev-python/wsproto/wsproto-1.2.0.ebuild
+++ b/dev-python/wsproto/wsproto-1.2.0.ebuild
@@ -16,7 +16,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"
RDEPEND="
>=dev-python/h11-0.9[${PYTHON_USEDEP}]
diff --git a/dev-python/wurlitzer/wurlitzer-3.1.1.ebuild b/dev-python/wurlitzer/wurlitzer-3.1.1.ebuild
index 7d099607e18a..cb3f7937efb3 100644
--- a/dev-python/wurlitzer/wurlitzer-3.1.1.ebuild
+++ b/dev-python/wurlitzer/wurlitzer-3.1.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
distutils_enable_tests pytest
diff --git a/dev-python/xarray/Manifest b/dev-python/xarray/Manifest
index 0306bbfb30a8..5e8722cbbb86 100644
--- a/dev-python/xarray/Manifest
+++ b/dev-python/xarray/Manifest
@@ -2,3 +2,4 @@ DIST xarray-2025.6.1.tar.gz 3003185 BLAKE2B a75f68947922e922dad94dc6ab5454d9d2b2
DIST xarray-2025.7.0.tar.gz 3005754 BLAKE2B 5e1cf6f1a845a9d38fee6f639016c79b14c10922fa96d241cea0a0a35d2c784ce98cfeb70ea49e03de0fd82d966e9656482caa380b48dbace7cf26b31a34b2fb SHA512 3cfe560c261cdd6a6c64cf100951e92cf63fff835dfa82ee7d1c7578ff808706905fbc2a1ae65a0db1c5abead203be43aff4771420f6851bfc357bacca4ffc95
DIST xarray-2025.7.1.tar.gz 3013717 BLAKE2B 37abbeec6736745a9a0cc098bfdb36b76c5b07a1f762a3207e7a69bda1670ad464c328daabcb5845f65dcb0b9901f045c633fb12fed4524bcc7dacfcc259e65b SHA512 446e50cfa16a3ba54124dc9417203ea96f6232e05515de38dc191b06ee417e165fd2faefaf4718eddb9620d32675abc6c2125ac7555759eb003263a70662cb7e
DIST xarray-2025.8.0.tar.gz 3034425 BLAKE2B 089eecd4b8928bcc4cae2aa590a06f4d8b45b2886f1cb7f26114f97ea55914fecf83e58eec637c83123e1d81ff2bfb92f1d4ac18161b39495beb4975af71f255 SHA512 2ace4ae6736a5cde298f7d0da6b704326fa5b28d758744e0db022cc3e9ea6514ac447c5d7762fc273bc192ad7b31517edc0cda7a16302c3e9a63d5c952b1bcd2
+DIST xarray-2025.9.0.tar.gz 3040318 BLAKE2B dd4482cb5263339360ae4bfc6046dfb7fe32748927af0a913cabd77699f74fff3f6ad4405a496e6fb98a78c752af5ffc89c69a734e2870458ece3d67c77c8fab SHA512 0cc572de58c59badb383d20292cf092500192e1723c12423f7d4c87e110feb08156cff71c136e45dd35eb70941a55e44a88774b698d09ecd083a882a207317e1
diff --git a/dev-python/xarray/xarray-2025.9.0.ebuild b/dev-python/xarray/xarray-2025.9.0.ebuild
new file mode 100644
index 000000000000..0dc4a4299df0
--- /dev/null
+++ b/dev-python/xarray/xarray-2025.9.0.ebuild
@@ -0,0 +1,129 @@
+# 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="N-D labeled arrays and datasets in Python"
+HOMEPAGE="
+ https://xarray.pydata.org/
+ https://github.com/pydata/xarray/
+ https://pypi.org/project/xarray/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+IUSE="big-endian"
+
+RDEPEND="
+ >=dev-python/numpy-1.26[${PYTHON_USEDEP}]
+ >=dev-python/pandas-2.2[${PYTHON_USEDEP}]
+ >=dev-python/packaging-24.1[${PYTHON_USEDEP}]
+"
+# note: most of the test dependencies are optional
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ dev-python/bottleneck[${PYTHON_USEDEP}]
+ dev-python/cftime[${PYTHON_USEDEP}]
+ dev-python/hypothesis[${PYTHON_USEDEP}]
+ dev-python/matplotlib[${PYTHON_USEDEP}]
+ !riscv? ( !x86? (
+ >=dev-python/netcdf4-1.6.0[bzip2,szip,${PYTHON_USEDEP}]
+ ) )
+ dev-python/toolz[${PYTHON_USEDEP}]
+ !hppa? ( >=dev-python/scipy-1.13[${PYTHON_USEDEP}] )
+ )
+"
+
+EPYTEST_PLUGINS=( pytest-asyncio )
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+ # indirect pin, sigh
+ sed -i -e '/numpy/d' pyproject.toml || die
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # TODO: these fail with filter errors even if netcdf4 is built
+ # with blosc/zstd support
+ 'xarray/tests/test_backends.py::TestNetCDF4Data::test_compression_encoding[zstd]'
+ 'xarray/tests/test_backends.py::TestNetCDF4Data::test_compression_encoding[blosc_lz]'
+ 'xarray/tests/test_backends.py::TestNetCDF4Data::test_compression_encoding[blosc_lz4]'
+ 'xarray/tests/test_backends.py::TestNetCDF4Data::test_compression_encoding[blosc_lz4hc]'
+ 'xarray/tests/test_backends.py::TestNetCDF4Data::test_compression_encoding[blosc_zlib]'
+ 'xarray/tests/test_backends.py::TestNetCDF4Data::test_compression_encoding[blosc_zstd]'
+ # requires h5netcdf package
+ xarray/tests/test_backends_datatree.py::TestNetCDF4DatatreeIO::test_open_datatree_specific_group
+ )
+
+ if ! has_version ">=dev-python/scipy-1.4[${PYTHON_USEDEP}]" ; then
+ EPYTEST_DESELECT+=(
+ 'xarray/tests/test_missing.py::test_interpolate_na_2d[coords1]'
+ )
+
+ if ! has_version "dev-python/scipy[${PYTHON_USEDEP}]" ; then
+ EPYTEST_DESELECT+=(
+ xarray/tests/test_calendar_ops.py::test_interp_calendar
+ )
+ fi
+ fi
+
+ if use big-endian ; then
+ EPYTEST_DESELECT+=(
+ # Appears to be a numpy issue in display? See bug #916460.
+ 'xarray/tests/test_coding_times.py::test_roundtrip_datetime64_nanosecond_precision[1677-09-21T00:12:43.145224193-ns-int64-20-True]'
+ 'xarray/tests/test_coding_times.py::test_roundtrip_datetime64_nanosecond_precision[1970-09-21T00:12:44.145224808-ns-float64-1e+30-True]'
+ 'xarray/tests/test_coding_times.py::test_roundtrip_datetime64_nanosecond_precision[1677-09-21T00:12:43.145225216-ns-float64--9.223372036854776e+18-True]'
+ 'xarray/tests/test_coding_times.py::test_roundtrip_datetime64_nanosecond_precision[1677-09-21T00:12:43.145224193-ns-int64-None-False]'
+ 'xarray/tests/test_coding_times.py::test_roundtrip_datetime64_nanosecond_precision[1677-09-21T00:12:43.145225-us-int64-None-False]'
+ 'xarray/tests/test_coding_times.py::test_roundtrip_datetime64_nanosecond_precision[1970-01-01T00:00:01.000001-us-int64-None-False]'
+ 'xarray/tests/test_coding_times.py::test_roundtrip_datetime64_nanosecond_precision[1677-09-21T00:21:52.901038080-ns-float32-20.0-True]'
+ )
+ fi
+
+ if [[ ${ABI} != *64* ]]; then
+ EPYTEST_DESELECT+=(
+ # these tests hardcode object sizes for 64-bit arches
+ # https://github.com/pydata/xarray/issues/9127
+ xarray/tests/test_dataarray.py::TestDataArray::test_repr_multiindex
+ xarray/tests/test_dataarray.py::TestDataArray::test_repr_multiindex_long
+ xarray/tests/test_dataset.py::TestDataset::test_repr
+ xarray/tests/test_dataset.py::TestDataset::test_repr_multiindex
+ xarray/tests/test_datatree.py::TestRepr::test_doc_example
+ xarray/tests/test_datatree.py::TestRepr::test_repr_truncates_nodes
+ xarray/tests/test_formatting.py::test_array_repr_dtypes_unix
+
+ # converting timestamps into ns, causing an overflow
+ xarray/tests/test_cftimeindex.py::test_asi8
+ xarray/tests/test_coding_times.py::test_decode_cf_time_bounds
+ xarray/tests/test_coding_times.py::test_use_cftime_false_standard_calendar_in_range
+ xarray/tests/test_coding_times.py::test_decode_cf_datetime_non_standard_units
+ )
+ fi
+
+ case ${ARCH} in
+ arm64)
+ EPYTEST_DESELECT+=(
+ 'xarray/tests/test_backends.py::TestNetCDF4Data::test_roundtrip_mask_and_scale[dtype0-create_unsigned_false_masked_scaled_data-create_encoded_unsigned_false_masked_scaled_data]'
+ 'xarray/tests/test_backends.py::TestNetCDF4Data::test_roundtrip_mask_and_scale[dtype1-create_unsigned_false_masked_scaled_data-create_encoded_unsigned_false_masked_scaled_data]'
+ )
+ ;;
+ esac
+
+ if ! has_version "dev-python/seaborn[${PYTHON_USEDEP}]"; then
+ EPYTEST_DESELECT+=(
+ xarray/tests/test_plot.py::TestContour::test_colors
+ )
+ fi
+
+ epytest -o addopts=
+}
diff --git a/dev-python/xcffib/xcffib-1.9.0.ebuild b/dev-python/xcffib/xcffib-1.9.0.ebuild
index ac5d2c25730e..8406f41aca28 100644
--- a/dev-python/xcffib/xcffib-1.9.0.ebuild
+++ b/dev-python/xcffib/xcffib-1.9.0.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ppc ppc64 ~riscv ~s390 ~sparc x86"
DEPEND="
x11-libs/libxcb
diff --git a/dev-python/xlwt/xlwt-1.3.0-r2.ebuild b/dev-python/xlwt/xlwt-1.3.0-r2.ebuild
index 96c50e83cd8e..abdf6fdac0c2 100644
--- a/dev-python/xlwt/xlwt-1.3.0-r2.ebuild
+++ b/dev-python/xlwt/xlwt-1.3.0-r2.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
IUSE="examples"
distutils_enable_sphinx docs \
diff --git a/dev-python/xmlschema/xmlschema-4.1.0.ebuild b/dev-python/xmlschema/xmlschema-4.1.0.ebuild
index 1126143c10f8..0734036aafeb 100644
--- a/dev-python/xmlschema/xmlschema-4.1.0.ebuild
+++ b/dev-python/xmlschema/xmlschema-4.1.0.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 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/xmltodict/Manifest b/dev-python/xmltodict/Manifest
index 65ac8269247b..764d030c9376 100644
--- a/dev-python/xmltodict/Manifest
+++ b/dev-python/xmltodict/Manifest
@@ -1 +1,2 @@
DIST xmltodict-0.14.2.tar.gz 51942 BLAKE2B 4d51ec3e99ac166dc1fd919ff12ed0218cc78d33982c79336eeddbf66f5409ab3ed8f994f57731252799b5ff1d1bd5d3cc344621d0dfb565d105319c4a10886f SHA512 3333955156e355cd40bd947bbefe0ff2e90de900cf12aa3ad82fa28e2921d9e2ccd245116573a0711cce12ac294d5a8d18a83744b4e7fc9e2b4025e35175080b
+DIST xmltodict-0.15.0.tar.gz 60285 BLAKE2B 62cbae8054524d148cfdbf61b7a33ce6cdc4ddadc14e2898656231ce5659de96c8f65dbd3049b53e79f3d674a0d1de606ac740734472878f7e9e45bcf2fe3f00 SHA512 6f1af04125b7c8f177a3d13ee7c46c557a0c60166ba23f946bb38e1e7543ee93ae577311182e0c861b83632bd3e63c274ece1011e81163c96c875bf1e58f2fbc
diff --git a/dev-python/xmltodict/xmltodict-0.14.2.ebuild b/dev-python/xmltodict/xmltodict-0.14.2.ebuild
index 01fddc8da4b4..ea20ec513b05 100644
--- a/dev-python/xmltodict/xmltodict-0.14.2.ebuild
+++ b/dev-python/xmltodict/xmltodict-0.14.2.ebuild
@@ -16,6 +16,6 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~arm64-macos"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos"
distutils_enable_tests pytest
diff --git a/dev-python/xmltodict/xmltodict-0.15.0.ebuild b/dev-python/xmltodict/xmltodict-0.15.0.ebuild
new file mode 100644
index 000000000000..0fca89e54daa
--- /dev/null
+++ b/dev-python/xmltodict/xmltodict-0.15.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/yarl/yarl-1.20.1.ebuild b/dev-python/yarl/yarl-1.20.1.ebuild
index 91a9a5973b42..5cf6ae5c5f20 100644
--- a/dev-python/yarl/yarl-1.20.1.ebuild
+++ b/dev-python/yarl/yarl-1.20.1.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"
RDEPEND="
diff --git a/dev-python/ytmusicapi/ytmusicapi-1.11.0.ebuild b/dev-python/ytmusicapi/ytmusicapi-1.11.0.ebuild
index 04ea031c17bb..71c1c3d05cfd 100644
--- a/dev-python/ytmusicapi/ytmusicapi-1.11.0.ebuild
+++ b/dev-python/ytmusicapi/ytmusicapi-1.11.0.ebuild
@@ -14,7 +14,7 @@ HOMEPAGE="https://ytmusicapi.readthedocs.io/
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~x86"
+KEYWORDS="amd64 ~x86"
RESTRICT="test"
RDEPEND="
diff --git a/dev-python/zc-lockfile/zc-lockfile-3.0_p1-r1.ebuild b/dev-python/zc-lockfile/zc-lockfile-3.0_p1-r1.ebuild
index f61360ac4593..914a41d0aa86 100644
--- a/dev-python/zc-lockfile/zc-lockfile-3.0_p1-r1.ebuild
+++ b/dev-python/zc-lockfile/zc-lockfile-3.0_p1-r1.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="ZPL"
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"
RESTRICT="!test? ( test )"
diff --git a/dev-python/zipp/zipp-3.23.0.ebuild b/dev-python/zipp/zipp-3.23.0.ebuild
index 1daef1c185a6..eaacde2b3079 100644
--- a/dev-python/zipp/zipp-3.23.0.ebuild
+++ b/dev-python/zipp/zipp-3.23.0.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 ~amd64-linux ~x86-linux ~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 ~ppc-macos ~x64-macos ~x64-solaris"
# big_o is only used in test_complexity, that we ignore
BDEPEND="
diff --git a/dev-python/zlib-ng/zlib-ng-0.5.1.ebuild b/dev-python/zlib-ng/zlib-ng-0.5.1.ebuild
index f242c699249d..da513182ada7 100644
--- a/dev-python/zlib-ng/zlib-ng-0.5.1.ebuild
+++ b/dev-python/zlib-ng/zlib-ng-0.5.1.ebuild
@@ -26,7 +26,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="PSF-2"
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"
DEPEND="
sys-libs/zlib-ng:=
diff --git a/dev-python/zope-event/zope-event-5.1.1.ebuild b/dev-python/zope-event/zope-event-5.1.1.ebuild
index a7671bddb34e..cb0e25187c13 100644
--- a/dev-python/zope-event/zope-event-5.1.1.ebuild
+++ b/dev-python/zope-event/zope-event-5.1.1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
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"
+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"
RDEPEND="
!dev-python/namespace-zope
diff --git a/dev-python/zope-interface/zope-interface-7.2.ebuild b/dev-python/zope-interface/zope-interface-7.2.ebuild
index 0725662a55f7..00c562d6747b 100644
--- a/dev-python/zope-interface/zope-interface-7.2.ebuild
+++ b/dev-python/zope-interface/zope-interface-7.2.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
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"
+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 )"
diff --git a/dev-python/zope-testing/zope-testing-5.1.ebuild b/dev-python/zope-testing/zope-testing-5.1.ebuild
index 30422a1145f1..0cb75074b4e3 100644
--- a/dev-python/zope-testing/zope-testing-5.1.ebuild
+++ b/dev-python/zope-testing/zope-testing-5.1.ebuild
@@ -17,7 +17,7 @@ HOMEPAGE="
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"
+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"
RDEPEND="
!dev-python/namespace-zope
diff --git a/dev-python/zstandard/zstandard-0.23.0-r3.ebuild b/dev-python/zstandard/zstandard-0.23.0-r3.ebuild
index 35dca4a59560..c0dfe59f47bf 100644
--- a/dev-python/zstandard/zstandard-0.23.0-r3.ebuild
+++ b/dev-python/zstandard/zstandard-0.23.0-r3.ebuild
@@ -23,7 +23,7 @@ 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"
+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:=