summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/aiohappyeyeballs/Manifest1
-rw-r--r--dev-python/aiohappyeyeballs/aiohappyeyeballs-2.4.6.ebuild36
-rw-r--r--dev-python/aiohttp/Manifest1
-rw-r--r--dev-python/aiohttp/aiohttp-3.11.12.ebuild135
-rw-r--r--dev-python/aioresponses/Manifest1
-rw-r--r--dev-python/aioresponses/aioresponses-0.7.7.ebuild39
-rw-r--r--dev-python/aioresponses/aioresponses-0.7.8.ebuild2
-rw-r--r--dev-python/aiosqlite/Manifest1
-rw-r--r--dev-python/aiosqlite/aiosqlite-0.21.0.ebuild30
-rw-r--r--dev-python/aiounittest/Manifest1
-rw-r--r--dev-python/aiounittest/aiounittest-1.4.3.ebuild29
-rw-r--r--dev-python/alembic/Manifest1
-rw-r--r--dev-python/alembic/alembic-1.14.0.ebuild47
-rw-r--r--dev-python/alembic/alembic-1.14.1.ebuild2
-rw-r--r--dev-python/ansible-compat/Manifest1
-rw-r--r--dev-python/ansible-compat/ansible-compat-25.1.2.ebuild61
-rw-r--r--dev-python/apsw/Manifest1
-rw-r--r--dev-python/apsw/apsw-3.49.0.0.ebuild52
-rw-r--r--dev-python/asyncssh/asyncssh-2.19.0.ebuild2
-rw-r--r--dev-python/atpublic/Manifest2
-rw-r--r--dev-python/atpublic/atpublic-4.1.0.ebuild32
-rw-r--r--dev-python/atpublic/atpublic-5.0.ebuild27
-rw-r--r--dev-python/atpublic/atpublic-5.1.ebuild2
-rw-r--r--dev-python/beautifulsoup4/Manifest2
-rw-r--r--dev-python/beautifulsoup4/beautifulsoup4-4.13.1.ebuild41
-rw-r--r--dev-python/beautifulsoup4/beautifulsoup4-4.13.3.ebuild41
-rw-r--r--dev-python/bincopy/Manifest1
-rw-r--r--dev-python/bincopy/bincopy-20.0.0.ebuild27
-rw-r--r--dev-python/bincopy/bincopy-20.1.0.ebuild2
-rw-r--r--dev-python/boltons/Manifest1
-rw-r--r--dev-python/boltons/boltons-25.0.0.ebuild26
-rw-r--r--dev-python/boto3/Manifest5
-rw-r--r--dev-python/boto3/boto3-1.36.16.ebuild (renamed from dev-python/boto3/boto3-1.36.2.ebuild)2
-rw-r--r--dev-python/boto3/boto3-1.36.17.ebuild53
-rw-r--r--dev-python/boto3/boto3-1.36.18.ebuild53
-rw-r--r--dev-python/boto3/boto3-1.36.19.ebuild53
-rw-r--r--dev-python/boto3/boto3-1.36.6.ebuild2
-rw-r--r--dev-python/botocore/Manifest5
-rw-r--r--dev-python/botocore/botocore-1.36.16.ebuild (renamed from dev-python/botocore/botocore-1.36.2.ebuild)2
-rw-r--r--dev-python/botocore/botocore-1.36.17.ebuild67
-rw-r--r--dev-python/botocore/botocore-1.36.18.ebuild67
-rw-r--r--dev-python/botocore/botocore-1.36.19.ebuild67
-rw-r--r--dev-python/botocore/botocore-1.36.6.ebuild2
-rw-r--r--dev-python/cachetools/Manifest1
-rw-r--r--dev-python/cachetools/cachetools-5.5.0.ebuild21
-rw-r--r--dev-python/cachetools/cachetools-5.5.1.ebuild2
-rw-r--r--dev-python/cfn-lint/Manifest2
-rw-r--r--dev-python/cfn-lint/cfn-lint-1.22.7.ebuild2
-rw-r--r--dev-python/cfn-lint/cfn-lint-1.24.0.ebuild (renamed from dev-python/cfn-lint/cfn-lint-1.22.3.ebuild)2
-rw-r--r--dev-python/clang/Manifest4
-rw-r--r--dev-python/clang/clang-19.1.7.ebuild2
-rw-r--r--dev-python/clang/clang-20.1.0_rc2.ebuild53
-rw-r--r--dev-python/clang/clang-21.0.0_pre20250208.ebuild53
-rw-r--r--dev-python/clang/clang-21.0.0_pre20250211.ebuild53
-rw-r--r--dev-python/coverage/Manifest2
-rw-r--r--dev-python/coverage/coverage-7.6.11.ebuild111
-rw-r--r--dev-python/coverage/coverage-7.6.12.ebuild111
-rw-r--r--dev-python/cppy/Manifest1
-rw-r--r--dev-python/cppy/cppy-1.3.1.ebuild28
-rw-r--r--dev-python/cramjam/cramjam-2.9.1.ebuild2
-rw-r--r--dev-python/cryptography/Manifest7
-rw-r--r--dev-python/cryptography/cryptography-44.0.1.ebuild135
-rw-r--r--dev-python/cwcwidth/Manifest1
-rw-r--r--dev-python/cwcwidth/cwcwidth-0.1.10.ebuild35
-rw-r--r--dev-python/cypari2/Manifest1
-rw-r--r--dev-python/cypari2/cypari2-2.2.0.ebuild34
-rw-r--r--dev-python/cypari2/cypari2-2.2.1.ebuild2
-rw-r--r--dev-python/cython/Manifest1
-rw-r--r--dev-python/cython/cython-3.0.12.ebuild84
-rw-r--r--dev-python/deepdiff/Manifest1
-rw-r--r--dev-python/deepdiff/deepdiff-8.2.0.ebuild53
-rw-r--r--dev-python/dependency-groups/Manifest1
-rw-r--r--dev-python/dependency-groups/dependency-groups-1.3.0.ebuild28
-rw-r--r--dev-python/dependency-groups/metadata.xml12
-rw-r--r--dev-python/deprecated/Manifest1
-rw-r--r--dev-python/deprecated/deprecated-1.2.15.ebuild26
-rw-r--r--dev-python/deprecated/deprecated-1.2.17.ebuild2
-rw-r--r--dev-python/django-cors-headers/Manifest2
-rw-r--r--dev-python/django-cors-headers/django-cors-headers-4.7.0.ebuild (renamed from dev-python/django-cors-headers/django-cors-headers-4.5.0.ebuild)4
-rw-r--r--dev-python/django/Manifest6
-rw-r--r--dev-python/django/django-4.2.19.ebuild103
-rw-r--r--dev-python/django/django-5.0.12.ebuild105
-rw-r--r--dev-python/django/django-5.1.6.ebuild99
-rw-r--r--dev-python/elasticsearch/Manifest1
-rw-r--r--dev-python/elasticsearch/elasticsearch-8.17.0.ebuild76
-rw-r--r--dev-python/elasticsearch/elasticsearch-8.17.1.ebuild2
-rw-r--r--dev-python/ensurepip-pip/Manifest1
-rw-r--r--dev-python/ensurepip-pip/ensurepip-pip-25.0.1.ebuild20
-rw-r--r--dev-python/environs/Manifest4
-rw-r--r--dev-python/environs/environs-11.2.1.ebuild39
-rw-r--r--dev-python/environs/environs-12.0.0.ebuild39
-rw-r--r--dev-python/environs/environs-14.1.1.ebuild (renamed from dev-python/environs/environs-14.0.0.ebuild)3
-rw-r--r--dev-python/evdev/Manifest1
-rw-r--r--dev-python/evdev/evdev-1.9.0.ebuild44
-rw-r--r--dev-python/executing/executing-2.2.0.ebuild2
-rw-r--r--dev-python/faker/Manifest3
-rw-r--r--dev-python/faker/faker-35.0.0.ebuild2
-rw-r--r--dev-python/faker/faker-35.2.2.ebuild (renamed from dev-python/faker/faker-33.3.1.ebuild)2
-rw-r--r--dev-python/faker/faker-36.1.0.ebuild42
-rw-r--r--dev-python/fakeredis/Manifest1
-rw-r--r--dev-python/fakeredis/fakeredis-2.27.0.ebuild99
-rw-r--r--dev-python/fastbencode/Manifest1
-rw-r--r--dev-python/fastbencode/fastbencode-0.3.1.ebuild26
-rw-r--r--dev-python/filelock/Manifest1
-rw-r--r--dev-python/filelock/filelock-3.16.1.ebuild31
-rw-r--r--dev-python/filelock/filelock-3.17.0.ebuild2
-rw-r--r--dev-python/fixtures/Manifest1
-rw-r--r--dev-python/fixtures/fixtures-4.2.3.ebuild28
-rw-r--r--dev-python/flatbuffers/Manifest3
-rw-r--r--dev-python/flatbuffers/flatbuffers-24.12.23.ebuild46
-rw-r--r--dev-python/flatbuffers/flatbuffers-25.1.24.ebuild2
-rw-r--r--dev-python/flatbuffers/flatbuffers-25.2.10.ebuild (renamed from dev-python/flatbuffers/flatbuffers-25.1.21.ebuild)0
-rw-r--r--dev-python/fonttools/Manifest1
-rw-r--r--dev-python/fonttools/fonttools-4.55.6.ebuild2
-rw-r--r--dev-python/fonttools/fonttools-4.56.0.ebuild99
-rw-r--r--dev-python/fpylll/Manifest1
-rw-r--r--dev-python/fpylll/fpylll-0.6.2.ebuild41
-rw-r--r--dev-python/fpylll/fpylll-0.6.3.ebuild2
-rw-r--r--dev-python/gdb-pt-dump/Manifest1
-rw-r--r--dev-python/gdb-pt-dump/gdb-pt-dump-0.0.0_p20250105.ebuild31
-rw-r--r--dev-python/gdb-pt-dump/gdb-pt-dump-9999.ebuild4
-rw-r--r--dev-python/google-auth/Manifest1
-rw-r--r--dev-python/google-auth/google-auth-2.37.0.ebuild65
-rw-r--r--dev-python/google-auth/google-auth-2.38.0.ebuild2
-rw-r--r--dev-python/googleapis-common-protos/Manifest1
-rw-r--r--dev-python/googleapis-common-protos/googleapis-common-protos-1.67.0.ebuild31
-rw-r--r--dev-python/griffe/Manifest2
-rw-r--r--dev-python/griffe/griffe-1.5.7.ebuild (renamed from dev-python/griffe/griffe-1.5.5.ebuild)2
-rw-r--r--dev-python/grpcio/grpcio-1.68.1.ebuild2
-rw-r--r--dev-python/gst-python/gst-python-1.24.11.ebuild2
-rw-r--r--dev-python/hpack/Manifest1
-rw-r--r--dev-python/hpack/hpack-4.0.0-r1.ebuild35
-rw-r--r--dev-python/hpack/hpack-4.1.0.ebuild2
-rw-r--r--dev-python/hyperframe/Manifest1
-rw-r--r--dev-python/hyperframe/hyperframe-6.0.1-r1.ebuild22
-rw-r--r--dev-python/hyperframe/hyperframe-6.1.0.ebuild2
-rw-r--r--dev-python/hypothesis/Manifest5
-rw-r--r--dev-python/hypothesis/hypothesis-6.123.17.ebuild104
-rw-r--r--dev-python/hypothesis/hypothesis-6.124.3.ebuild2
-rw-r--r--dev-python/hypothesis/hypothesis-6.125.2.ebuild (renamed from dev-python/hypothesis/hypothesis-6.124.7.ebuild)0
-rw-r--r--dev-python/hypothesis/hypothesis-6.125.3.ebuild (renamed from dev-python/hypothesis/hypothesis-6.125.0.ebuild)6
-rw-r--r--dev-python/icalendar/Manifest1
-rw-r--r--dev-python/icalendar/icalendar-6.1.0.ebuild43
-rw-r--r--dev-python/icalendar/icalendar-6.1.1.ebuild2
-rw-r--r--dev-python/id/id-1.5.0.ebuild2
-rw-r--r--dev-python/identify/Manifest2
-rw-r--r--dev-python/identify/identify-2.6.6.ebuild2
-rw-r--r--dev-python/identify/identify-2.6.7.ebuild (renamed from dev-python/identify/identify-2.6.5.ebuild)2
-rw-r--r--dev-python/importlib-metadata/Manifest1
-rw-r--r--dev-python/importlib-metadata/importlib-metadata-8.5.0.ebuild51
-rw-r--r--dev-python/importlib-metadata/importlib-metadata-8.6.1.ebuild2
-rw-r--r--dev-python/inline-snapshot/Manifest1
-rw-r--r--dev-python/inline-snapshot/inline-snapshot-0.20.1.ebuild63
-rw-r--r--dev-python/ipython-pygments-lexers/Manifest1
-rw-r--r--dev-python/ipython-pygments-lexers/ipython-pygments-lexers-1.1.1.ebuild25
-rw-r--r--dev-python/ipython-pygments-lexers/metadata.xml13
-rw-r--r--dev-python/josepy/Manifest2
-rw-r--r--dev-python/josepy/josepy-1.15.0.ebuild2
-rw-r--r--dev-python/josepy/josepy-2.0.0.ebuild (renamed from dev-python/josepy/josepy-1.14.0.ebuild)5
-rw-r--r--dev-python/jsonschema-path/Manifest1
-rw-r--r--dev-python/jsonschema-path/jsonschema-path-0.3.3.ebuild47
-rw-r--r--dev-python/jsonschema-path/jsonschema-path-0.3.4.ebuild2
-rw-r--r--dev-python/jupyter-events/Manifest1
-rw-r--r--dev-python/jupyter-events/jupyter-events-0.12.0.ebuild42
-rw-r--r--dev-python/latexrestricted/latexrestricted-0.6.2.ebuild2
-rw-r--r--dev-python/legacy-cgi/legacy-cgi-2.6.2.ebuild2
-rw-r--r--dev-python/libtmux/Manifest1
-rw-r--r--dev-python/libtmux/libtmux-0.42.0.ebuild56
-rw-r--r--dev-python/libvirt-python/Manifest8
-rw-r--r--dev-python/libvirt-python/libvirt-python-10.1.0.ebuild64
-rw-r--r--dev-python/libvirt-python/libvirt-python-10.10.0.ebuild4
-rw-r--r--dev-python/libvirt-python/libvirt-python-11.0.0.ebuild (renamed from dev-python/libvirt-python/libvirt-python-9.9.0.ebuild)5
-rw-r--r--dev-python/libvirt-python/libvirt-python-9.8.0.ebuild65
-rw-r--r--dev-python/lit/Manifest4
-rw-r--r--dev-python/lit/lit-19.1.7.ebuild2
-rw-r--r--dev-python/lit/lit-20.1.0_rc2.ebuild45
-rw-r--r--dev-python/lit/lit-21.0.0_pre20250208.ebuild45
-rw-r--r--dev-python/lit/lit-21.0.0_pre20250211.ebuild45
-rw-r--r--dev-python/lxml/Manifest1
-rw-r--r--dev-python/lxml/lxml-5.3.1.ebuild119
-rw-r--r--dev-python/mako/Manifest1
-rw-r--r--dev-python/mako/mako-1.3.9.ebuild54
-rw-r--r--dev-python/markdown2/Manifest1
-rw-r--r--dev-python/markdown2/markdown2-2.5.2.ebuild31
-rw-r--r--dev-python/markdown2/markdown2-2.5.3.ebuild2
-rw-r--r--dev-python/marshmallow/Manifest1
-rw-r--r--dev-python/marshmallow/marshmallow-3.26.1.ebuild32
-rw-r--r--dev-python/matplotlib/matplotlib-3.10.0.ebuild2
-rw-r--r--dev-python/mcbootflash/Manifest2
-rw-r--r--dev-python/mcbootflash/mcbootflash-10.0.0-r1.ebuild37
-rw-r--r--dev-python/mcbootflash/mcbootflash-10.1.0.ebuild37
-rw-r--r--dev-python/mcbootflash/mcbootflash-10.1.1.ebuild2
-rw-r--r--dev-python/mkdocs-autorefs/Manifest2
-rw-r--r--dev-python/mkdocs-autorefs/mkdocs-autorefs-1.3.1.ebuild (renamed from dev-python/mkdocs-autorefs/mkdocs-autorefs-1.2.0.ebuild)4
-rw-r--r--dev-python/mkdocs-material/Manifest3
-rw-r--r--dev-python/mkdocs-material/mkdocs-material-9.6.2.ebuild67
-rw-r--r--dev-python/mkdocs-material/mkdocs-material-9.6.3.ebuild67
-rw-r--r--dev-python/mkdocs-material/mkdocs-material-9.6.4.ebuild67
-rw-r--r--dev-python/mkdocs-static-i18n/Manifest1
-rw-r--r--dev-python/mkdocs-static-i18n/mkdocs-static-i18n-1.2.3.ebuild32
-rw-r--r--dev-python/mkdocs-static-i18n/mkdocs-static-i18n-1.3.0.ebuild2
-rw-r--r--dev-python/mkdocstrings-python/Manifest5
-rw-r--r--dev-python/mkdocstrings-python/mkdocstrings-python-1.14.6.ebuild (renamed from dev-python/mkdocstrings-python/mkdocstrings-python-1.13.0.ebuild)7
-rw-r--r--dev-python/mkdocstrings-python/mkdocstrings-python-1.14.7.ebuild (renamed from dev-python/mkdocstrings-python/mkdocstrings-python-1.12.2.ebuild)20
-rw-r--r--dev-python/mkdocstrings-python/mkdocstrings-python-1.15.0.ebuild51
-rw-r--r--dev-python/mkdocstrings/Manifest1
-rw-r--r--dev-python/mkdocstrings/mkdocstrings-0.28.0.ebuild55
-rw-r--r--dev-python/moto/Manifest1
-rw-r--r--dev-python/moto/moto-5.0.26.ebuild132
-rw-r--r--dev-python/moto/moto-5.0.27.ebuild2
-rw-r--r--dev-python/mpmath/mpmath-1.4.0_alpha3.ebuild2
-rw-r--r--dev-python/mypy/Manifest1
-rw-r--r--dev-python/mypy/mypy-1.15.0.ebuild126
-rw-r--r--dev-python/myst-parser/Manifest1
-rw-r--r--dev-python/myst-parser/myst-parser-4.0.1.ebuild63
-rw-r--r--dev-python/nox/Manifest2
-rw-r--r--dev-python/nox/nox-2025.02.09.ebuild (renamed from dev-python/nox/nox-2024.04.15.ebuild)10
-rw-r--r--dev-python/nuitka/Manifest5
-rw-r--r--dev-python/nuitka/nuitka-2.6.3.ebuild (renamed from dev-python/nuitka/nuitka-2.6.1.ebuild)0
-rw-r--r--dev-python/nuitka/nuitka-2.6.4.ebuild (renamed from dev-python/nuitka/nuitka-2.6.2.ebuild)0
-rw-r--r--dev-python/nuitka/nuitka-2.6.ebuild55
-rw-r--r--dev-python/numpy/numpy-2.2.2.ebuild2
-rw-r--r--dev-python/opentelemetry-api/Manifest1
-rw-r--r--dev-python/opentelemetry-api/opentelemetry-api-1.30.0.ebuild61
-rw-r--r--dev-python/opentelemetry-sdk/Manifest1
-rw-r--r--dev-python/opentelemetry-sdk/opentelemetry-sdk-1.30.0.ebuild62
-rw-r--r--dev-python/opentelemetry-semantic-conventions/Manifest1
-rw-r--r--dev-python/opentelemetry-semantic-conventions/opentelemetry-semantic-conventions-1.30.0.ebuild52
-rw-r--r--dev-python/orderly-set/Manifest2
-rw-r--r--dev-python/orderly-set/orderly-set-5.3.0.ebuild (renamed from dev-python/orderly-set/orderly-set-5.2.2.ebuild)10
-rw-r--r--dev-python/orjson/orjson-3.10.15.ebuild2
-rw-r--r--dev-python/owslib/Manifest1
-rw-r--r--dev-python/owslib/owslib-0.32.0.ebuild51
-rw-r--r--dev-python/owslib/owslib-0.32.1.ebuild2
-rw-r--r--dev-python/paramiko/Manifest1
-rw-r--r--dev-python/paramiko/paramiko-3.5.1.ebuild72
-rw-r--r--dev-python/pbr/Manifest1
-rw-r--r--dev-python/pbr/files/pbr-6.1.1-test.patch84
-rw-r--r--dev-python/pbr/pbr-6.1.1.ebuild77
-rw-r--r--dev-python/pbs-installer/Manifest2
-rw-r--r--dev-python/pbs-installer/pbs-installer-2025.02.05.ebuild (renamed from dev-python/pbs-installer/pbs-installer-2024.12.19.ebuild)2
-rw-r--r--dev-python/peewee/Manifest1
-rw-r--r--dev-python/peewee/peewee-3.17.9.ebuild81
-rw-r--r--dev-python/pikepdf/Manifest1
-rw-r--r--dev-python/pikepdf/pikepdf-9.5.2.ebuild74
-rw-r--r--dev-python/pip/Manifest1
-rw-r--r--dev-python/pip/pip-25.0.1.ebuild170
-rw-r--r--dev-python/prettytable/Manifest1
-rw-r--r--dev-python/prettytable/prettytable-3.12.0.ebuild39
-rw-r--r--dev-python/prettytable/prettytable-3.13.0.ebuild2
-rw-r--r--dev-python/prompt-toolkit/Manifest1
-rw-r--r--dev-python/prompt-toolkit/prompt-toolkit-3.0.48.ebuild30
-rw-r--r--dev-python/prompt-toolkit/prompt-toolkit-3.0.50.ebuild2
-rw-r--r--dev-python/psycopg/psycopg-3.2.4.ebuild2
-rw-r--r--dev-python/pyarrow/Manifest2
-rw-r--r--dev-python/pyarrow/pyarrow-18.0.0.ebuild111
-rw-r--r--dev-python/pyarrow/pyarrow-18.1.0.ebuild112
-rw-r--r--dev-python/pyarrow/pyarrow-19.0.0.ebuild2
-rw-r--r--dev-python/pycpio/Manifest1
-rw-r--r--dev-python/pycpio/pycpio-1.4.1.ebuild30
-rw-r--r--dev-python/pycpio/pycpio-1.4.2.ebuild2
-rw-r--r--dev-python/pydantic-core/Manifest5
-rw-r--r--dev-python/pydantic-core/pydantic-core-2.29.0.ebuild (renamed from dev-python/pydantic-core/pydantic-core-2.28.0.ebuild)6
-rw-r--r--dev-python/pydantic/Manifest3
-rw-r--r--dev-python/pydantic/pydantic-2.10.5.ebuild65
-rw-r--r--dev-python/pydantic/pydantic-2.10.6.ebuild2
-rw-r--r--dev-python/pydantic/pydantic-2.11.0_alpha2.ebuild (renamed from dev-python/pydantic/pydantic-2.11.0_alpha1.ebuild)2
-rw-r--r--dev-python/pyfzf/pyfzf-0.3.1.ebuild2
-rw-r--r--dev-python/pyghmi/Manifest2
-rw-r--r--dev-python/pyghmi/pyghmi-1.5.75.ebuild (renamed from dev-python/pyghmi/pyghmi-1.5.71.ebuild)2
-rw-r--r--dev-python/pyglet/Manifest1
-rw-r--r--dev-python/pyglet/pyglet-2.0.21.ebuild79
-rw-r--r--dev-python/pyglet/pyglet-2.1.2.ebuild2
-rw-r--r--dev-python/pymediainfo/Manifest2
-rw-r--r--dev-python/pymediainfo/pymediainfo-7.0.0.ebuild34
-rw-r--r--dev-python/pymediainfo/pymediainfo-7.0.1.ebuild34
-rw-r--r--dev-python/pymongo/Manifest4
-rw-r--r--dev-python/pymongo/pymongo-4.10.0.ebuild228
-rw-r--r--dev-python/pymongo/pymongo-4.11.1.ebuild (renamed from dev-python/pymongo/pymongo-4.9.2.ebuild)21
-rw-r--r--dev-python/pymongo/pymongo-4.9.1.ebuild228
-rw-r--r--dev-python/pyopengl-accelerate/Manifest1
-rw-r--r--dev-python/pyopengl-accelerate/pyopengl-accelerate-3.1.8-r1.ebuild81
-rw-r--r--dev-python/pyopengl-accelerate/pyopengl-accelerate-3.1.9.ebuild2
-rw-r--r--dev-python/pyopengl/pyopengl-3.1.9.ebuild2
-rw-r--r--dev-python/pypdf/Manifest1
-rw-r--r--dev-python/pypdf/pypdf-5.3.0.ebuild56
-rw-r--r--dev-python/pyphen/Manifest1
-rw-r--r--dev-python/pyphen/pyphen-0.17.0.ebuild25
-rw-r--r--dev-python/pyphen/pyphen-0.17.2.ebuild2
-rw-r--r--dev-python/pyproject-api/Manifest1
-rw-r--r--dev-python/pyproject-api/pyproject-api-1.8.0.ebuild43
-rw-r--r--dev-python/pyproject-api/pyproject-api-1.9.0.ebuild2
-rw-r--r--dev-python/pypy-exe-bin/Manifest8
-rw-r--r--dev-python/pypy-exe-bin/pypy-exe-bin-7.3.18.ebuild82
-rw-r--r--dev-python/pypy-exe/Manifest2
-rw-r--r--dev-python/pypy-exe/pypy-exe-7.3.18.ebuild187
-rw-r--r--dev-python/pypy3/pypy3-7.3.18-r100.ebuild18
-rw-r--r--dev-python/pypy3/pypy3-7.3.18.ebuild19
-rw-r--r--dev-python/pypy3_10-exe-bin/Manifest8
-rw-r--r--dev-python/pypy3_10-exe-bin/pypy3_10-exe-bin-7.3.18-r1.ebuild86
-rw-r--r--dev-python/pypy3_10-exe/Manifest2
-rw-r--r--dev-python/pypy3_10-exe/pypy3_10-exe-7.3.18.ebuild139
-rw-r--r--dev-python/pyqt6/Manifest1
-rw-r--r--dev-python/pyqt6/metadata.xml1
-rw-r--r--dev-python/pyqt6/pyqt6-6.8.1.ebuild190
-rw-r--r--dev-python/pyside/Manifest (renamed from dev-python/pyside6/Manifest)1
-rw-r--r--dev-python/pyside/files/pyside-6.3.1-no-strip.patch (renamed from dev-python/pyside6/files/pyside6-6.3.1-no-strip.patch)0
-rw-r--r--dev-python/pyside/files/pyside-6.6.0-no-qtexampleicons.patch (renamed from dev-python/pyside6/files/pyside6-6.6.0-no-qtexampleicons.patch)0
-rw-r--r--dev-python/pyside/files/pyside-6.8.2-no-qtexampleicons.patch10
-rw-r--r--dev-python/pyside/files/pyside-6.8.2-quick-fix-build-wheel.patch17
-rw-r--r--dev-python/pyside/metadata.xml (renamed from dev-python/pyside6/metadata.xml)6
-rw-r--r--dev-python/pyside/pyside-6.8.1.1.ebuild (renamed from dev-python/pyside6/pyside6-6.8.1.1.ebuild)6
-rw-r--r--dev-python/pyside/pyside-6.8.1.ebuild (renamed from dev-python/pyside6/pyside6-6.8.1.ebuild)6
-rw-r--r--dev-python/pyside/pyside-6.8.2-r1.ebuild493
-rw-r--r--dev-python/pyside6-tools/pyside6-tools-6.8.1.1.ebuild2
-rw-r--r--dev-python/pyside6-tools/pyside6-tools-6.8.1.ebuild2
-rw-r--r--dev-python/pysol-cards/Manifest1
-rw-r--r--dev-python/pysol-cards/pysol-cards-0.18.1.ebuild25
-rw-r--r--dev-python/pytest-aiohttp/Manifest1
-rw-r--r--dev-python/pytest-aiohttp/pytest-aiohttp-1.0.5.ebuild37
-rw-r--r--dev-python/pytest-aiohttp/pytest-aiohttp-1.1.0.ebuild2
-rw-r--r--dev-python/pytest-check/Manifest2
-rw-r--r--dev-python/pytest-check/pytest-check-2.4.2.ebuild26
-rw-r--r--dev-python/pytest-check/pytest-check-2.5.0.ebuild28
-rw-r--r--dev-python/pytest-datadir/Manifest1
-rw-r--r--dev-python/pytest-datadir/pytest-datadir-1.6.1.ebuild28
-rw-r--r--dev-python/pytest-django/Manifest1
-rw-r--r--dev-python/pytest-django/pytest-django-4.10.0.ebuild51
-rw-r--r--dev-python/pytest-httpserver/Manifest1
-rw-r--r--dev-python/pytest-httpserver/pytest-httpserver-1.1.0.ebuild39
-rw-r--r--dev-python/pytest-httpserver/pytest-httpserver-1.1.1.ebuild2
-rw-r--r--dev-python/pytest-qt/pytest-qt-4.4.0.ebuild8
-rw-r--r--dev-python/python-lsp-server/Manifest2
-rw-r--r--dev-python/python-lsp-server/python-lsp-server-1.12.1.ebuild90
-rw-r--r--dev-python/python-lsp-server/python-lsp-server-1.12.2.ebuild90
-rw-r--r--dev-python/python-tests/Manifest6
-rw-r--r--dev-python/python-tests/python-tests-3.12.9.ebuild69
-rw-r--r--dev-python/python-tests/python-tests-3.13.2.ebuild69
-rw-r--r--dev-python/qiskit-aer/Manifest3
-rw-r--r--dev-python/qiskit-aer/qiskit-aer-0.15.ebuild119
-rw-r--r--dev-python/qiskit-aer/qiskit-aer-0.16.1.ebuild (renamed from dev-python/qiskit-aer/qiskit-aer-0.15.1.ebuild)2
-rw-r--r--dev-python/qtpy/Manifest1
-rw-r--r--dev-python/qtpy/metadata.xml4
-rw-r--r--dev-python/qtpy/qtpy-2.4.2-r1.ebuild29
-rw-r--r--dev-python/qtpy/qtpy-2.4.2.ebuild74
-rw-r--r--dev-python/qtpy/qtpy-2.4.3.ebuild184
-rw-r--r--dev-python/recurring-ical-events/Manifest6
-rw-r--r--dev-python/recurring-ical-events/recurring-ical-events-3.3.3.ebuild45
-rw-r--r--dev-python/recurring-ical-events/recurring-ical-events-3.3.4.ebuild45
-rw-r--r--dev-python/recurring-ical-events/recurring-ical-events-3.5.0.ebuild (renamed from dev-python/recurring-ical-events/recurring-ical-events-3.4.1.ebuild)0
-rw-r--r--dev-python/recurring-ical-events/recurring-ical-events-3.5.1.ebuild (renamed from dev-python/recurring-ical-events/recurring-ical-events-3.4.0.ebuild)15
-rw-r--r--dev-python/reportlab/Manifest2
-rw-r--r--dev-python/reportlab/reportlab-4.3.0.ebuild53
-rw-r--r--dev-python/reportlab/reportlab-4.3.1.ebuild53
-rw-r--r--dev-python/rtslib-fb/Manifest1
-rw-r--r--dev-python/rtslib-fb/rtslib-fb-2.2.2.ebuild31
-rw-r--r--dev-python/scipy/scipy-1.15.1.ebuild2
-rw-r--r--dev-python/selenium/selenium-4.28.1.ebuild2
-rw-r--r--dev-python/semver/Manifest1
-rw-r--r--dev-python/semver/semver-3.0.2.ebuild29
-rw-r--r--dev-python/semver/semver-3.0.4.ebuild2
-rw-r--r--dev-python/sphinx-autoapi/Manifest1
-rw-r--r--dev-python/sphinx-autoapi/sphinx-autoapi-3.5.0.ebuild51
-rw-r--r--dev-python/sphinx-gallery/Manifest1
-rw-r--r--dev-python/sphinx-gallery/sphinx-gallery-0.19.0.ebuild51
-rw-r--r--dev-python/sphinxcontrib-doxylink/Manifest1
-rw-r--r--dev-python/sphinxcontrib-doxylink/sphinxcontrib-doxylink-1.12.4.ebuild48
-rw-r--r--dev-python/sphinxygen/Manifest1
-rw-r--r--dev-python/sphinxygen/sphinxygen-1.0.10.ebuild2
-rw-r--r--dev-python/sphinxygen/sphinxygen-1.0.6.ebuild35
-rw-r--r--dev-python/spyder/Manifest2
-rw-r--r--dev-python/spyder/spyder-6.0.4.ebuild202
-rw-r--r--dev-python/sqlalchemy/Manifest1
-rw-r--r--dev-python/sqlalchemy/sqlalchemy-2.0.38.ebuild109
-rw-r--r--dev-python/sqlglot/Manifest2
-rw-r--r--dev-python/sqlglot/sqlglot-26.4.1.ebuild177
-rw-r--r--dev-python/sqlglot/sqlglot-26.6.0.ebuild177
-rw-r--r--dev-python/sshtunnel/sshtunnel-0.4.0.ebuild4
-rw-r--r--dev-python/starlette/Manifest1
-rw-r--r--dev-python/starlette/starlette-0.44.0.ebuild57
-rw-r--r--dev-python/starlette/starlette-0.45.3.ebuild2
-rw-r--r--dev-python/tox/Manifest1
-rw-r--r--dev-python/tox/tox-4.23.2.ebuild98
-rw-r--r--dev-python/tox/tox-4.24.1.ebuild2
-rw-r--r--dev-python/translate-toolkit/Manifest1
-rw-r--r--dev-python/translate-toolkit/translate-toolkit-3.14.8.ebuild119
-rw-r--r--dev-python/tree-sitter/Manifest1
-rw-r--r--dev-python/tree-sitter/tree-sitter-0.23.1.ebuild4
-rw-r--r--dev-python/tree-sitter/tree-sitter-0.24.0.ebuild66
-rw-r--r--dev-python/trimesh/Manifest1
-rw-r--r--dev-python/trimesh/trimesh-4.6.2.ebuild80
-rw-r--r--dev-python/truststore/Manifest1
-rw-r--r--dev-python/truststore/truststore-0.10.1.ebuild47
-rw-r--r--dev-python/twine/twine-6.1.0.ebuild2
-rw-r--r--dev-python/types-setuptools/Manifest2
-rw-r--r--dev-python/types-setuptools/types-setuptools-75.8.0.20250210.ebuild (renamed from dev-python/types-setuptools/types-setuptools-75.6.0.20241223.ebuild)2
-rw-r--r--dev-python/uv/Manifest6
-rw-r--r--dev-python/uv/uv-0.5.27.ebuild171
-rw-r--r--dev-python/uv/uv-0.5.29.ebuild170
-rw-r--r--dev-python/virtualenv/Manifest1
-rw-r--r--dev-python/virtualenv/virtualenv-20.29.2.ebuild118
-rw-r--r--dev-python/virtualenvwrapper/Manifest1
-rw-r--r--dev-python/virtualenvwrapper/virtualenvwrapper-6.1.1.ebuild98
-rw-r--r--dev-python/websockets/websockets-14.2.ebuild2
-rw-r--r--dev-python/webtest/Manifest1
-rw-r--r--dev-python/webtest/webtest-3.0.4.ebuild45
-rw-r--r--dev-python/x-wr-timezone/Manifest1
-rw-r--r--dev-python/x-wr-timezone/x-wr-timezone-2.0.1.ebuild41
-rw-r--r--dev-python/xcffib/xcffib-1.7.1.ebuild2
-rw-r--r--dev-python/xlsxwriter/Manifest1
-rw-r--r--dev-python/xlsxwriter/xlsxwriter-3.2.0.ebuild33
-rw-r--r--dev-python/xlsxwriter/xlsxwriter-3.2.1.ebuild2
-rw-r--r--dev-python/zeroconf/Manifest2
-rw-r--r--dev-python/zeroconf/zeroconf-0.143.1.ebuild60
-rw-r--r--dev-python/zeroconf/zeroconf-0.144.1.ebuild60
415 files changed, 8501 insertions, 3302 deletions
diff --git a/dev-python/aiohappyeyeballs/Manifest b/dev-python/aiohappyeyeballs/Manifest
index e5aab379b782..cc8708c2e131 100644
--- a/dev-python/aiohappyeyeballs/Manifest
+++ b/dev-python/aiohappyeyeballs/Manifest
@@ -1 +1,2 @@
DIST aiohappyeyeballs-2.4.4.gh.tar.gz 61087 BLAKE2B 7e7eeaa8f8f589e5d081dc0218ee8aff0cc7fb81cdb59d42355fb42f2586c3c1abe82ce4bb5afe40f06a5978dc1b07d3257c9cfabd2013e4f8ff63ff768326e0 SHA512 b822aab388d5b32aae58a2f5b7f8e9d0574962487e64ed0d7040767daf8684680272ba43b2c8d7feaf78649465510eb003b3e10c45d4417832123d7ee10ea5d0
+DIST aiohappyeyeballs-2.4.6.gh.tar.gz 72830 BLAKE2B aea6f5e20a2900fb5d498722edc5e1b776552ff4ca84120f2e1acea5478a571ab923d3bca4c58111f5ff0389ddb7f4976f6231b575b7b282e3c45e4adebb9707 SHA512 0098f13604c929998981deaa9ae221f0c5c4c4de46e5063b23e185e1437637b35256ebc91a3f7fdf6b5f9dee6f4be5ff3c215a8ddd34a02a0389c9b49c329c16
diff --git a/dev-python/aiohappyeyeballs/aiohappyeyeballs-2.4.6.ebuild b/dev-python/aiohappyeyeballs/aiohappyeyeballs-2.4.6.ebuild
new file mode 100644
index 000000000000..ee098302bfa5
--- /dev/null
+++ b/dev-python/aiohappyeyeballs/aiohappyeyeballs-2.4.6.ebuild
@@ -0,0 +1,36 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=poetry
+PYTHON_COMPAT=( pypy3 python3_{10..13} )
+
+inherit distutils-r1
+
+DESCRIPTION="Happy Eyeballs for pre-resolved hosts"
+HOMEPAGE="
+ https://pypi.org/project/aiohappyeyeballs/
+ https://github.com/aio-libs/aiohappyeyeballs/
+"
+SRC_URI="
+ https://github.com/aio-libs/aiohappyeyeballs/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="PSF-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+BDEPEND="
+ test? (
+ >=dev-python/pytest-asyncio-0.23.2[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -p asyncio -o addopts=
+}
diff --git a/dev-python/aiohttp/Manifest b/dev-python/aiohttp/Manifest
index 33f666162715..a7c39e12f1d3 100644
--- a/dev-python/aiohttp/Manifest
+++ b/dev-python/aiohttp/Manifest
@@ -1 +1,2 @@
DIST aiohttp-3.11.11.tar.gz 7669618 BLAKE2B 148c15503ca2b5449b8afe4d0cadb054625cd12c7e3d958547c7ba6b46ca4d4da1b4091db0f97e2003c8bc7a582c36f4c6aba062a8fe0b0894740042853b68e9 SHA512 7b5c6fdf15a3bdae49b28f6955f31f528aff29f635b8bbbe60f0677dea8fbbe5de8e09b3cbb85f8a846942470b9e44c9d287aaf9eb08f8e8d9fab3bd64079edf
+DIST aiohttp-3.11.12.tar.gz 7673175 BLAKE2B 56f511d5bf10c60823bf3fef9552add3c8cac4e68dc6848931bc875417067bf61a0437adce0ffa13a47c595546f31b497f9044b0b3f2c6d48b31bff7a7b75905 SHA512 9f770f5182394acace994d40ca3b7028698242ce5e0caecd16b2e511c9463ae43e3fac9aabfc21afcbb7e17a44e324d19d88f7e1c81d0b4646f81923f9b4f160
diff --git a/dev-python/aiohttp/aiohttp-3.11.12.ebuild b/dev-python/aiohttp/aiohttp-3.11.12.ebuild
new file mode 100644
index 000000000000..19febab42630
--- /dev/null
+++ b/dev-python/aiohttp/aiohttp-3.11.12.ebuild
@@ -0,0 +1,135 @@
+# 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_{10..13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="HTTP client/server for asyncio"
+HOMEPAGE="
+ https://github.com/aio-libs/aiohttp/
+ https://pypi.org/project/aiohttp/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="+native-extensions test-rust"
+
+RDEPEND="
+ >=dev-python/aiodns-3.2.0[${PYTHON_USEDEP}]
+ >=dev-python/aiohappyeyeballs-2.3.0[${PYTHON_USEDEP}]
+ >=dev-python/aiosignal-1.1.2[${PYTHON_USEDEP}]
+ >=dev-python/attrs-17.3.0[${PYTHON_USEDEP}]
+ dev-python/brotlicffi[${PYTHON_USEDEP}]
+ >=dev-python/frozenlist-1.1.1[${PYTHON_USEDEP}]
+ >=dev-python/multidict-4.5.0[${PYTHON_USEDEP}]
+ >=dev-python/propcache-0.2.0[${PYTHON_USEDEP}]
+ >=dev-python/yarl-1.17.0[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ <dev-python/async-timeout-6[${PYTHON_USEDEP}]
+ >=dev-python/async-timeout-4.0[${PYTHON_USEDEP}]
+ ' 3.10)
+"
+BDEPEND="
+ native-extensions? (
+ dev-python/cython[${PYTHON_USEDEP}]
+ )
+ test? (
+ dev-python/freezegun[${PYTHON_USEDEP}]
+ www-servers/gunicorn[${PYTHON_USEDEP}]
+ dev-python/pytest-mock[${PYTHON_USEDEP}]
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ dev-python/re-assert[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/time-machine[${PYTHON_USEDEP}]
+ ' 'python3*')
+ test-rust? (
+ dev-python/trustme[${PYTHON_USEDEP}]
+ )
+ )
+"
+
+DOCS=( CHANGES.rst CONTRIBUTORS.txt README.rst )
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ # increase the timeout a little
+ sed -e '/abs=/s/0.001/0.01/' -i tests/test_helpers.py || die
+ # xfail_strict fails on py3.10
+ sed -i -e '/--cov/d' -e '/pytest_cov/d' -e '/xfail_strict/d' setup.cfg || die
+ sed -i -e 's:-Werror::' Makefile || die
+
+ distutils-r1_src_prepare
+}
+
+python_configure() {
+ if [[ ! -d tools && ${EPYTHON} != pypy3 ]] && use native-extensions
+ then
+ # workaround missing files
+ mkdir tools || die
+ > requirements/cython.txt || die
+ > tools/gen.py || die
+ chmod +x tools/gen.py || die
+ # force rehashing first
+ emake requirements/.hash/cython.txt.hash
+ > .update-pip || die
+ > .install-cython || die
+ emake cythonize
+ fi
+}
+
+python_compile() {
+ # implicitly disabled for pypy3
+ if ! use native-extensions; then
+ local -x AIOHTTP_NO_EXTENSIONS=1
+ fi
+
+ distutils-r1_python_compile
+}
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ # proxy is not packaged
+ tests/test_proxy_functional.py
+ # python_on_whales is not packaged
+ tests/autobahn/test_autobahn.py
+ # benchmarks
+ tests/test_benchmarks_client.py
+ tests/test_benchmarks_client_request.py
+ tests/test_benchmarks_client_ws.py
+ tests/test_benchmarks_cookiejar.py
+ tests/test_benchmarks_http_websocket.py
+ tests/test_benchmarks_http_writer.py
+ tests/test_benchmarks_web_fileresponse.py
+ tests/test_benchmarks_web_middleware.py
+ tests/test_benchmarks_web_response.py
+ tests/test_benchmarks_web_urldispatcher.py
+ )
+
+ local EPYTEST_DESELECT=(
+ # Internet
+ tests/test_client_session.py::test_client_session_timeout_zero
+ # broken by irrelevant deprecation warnings
+ tests/test_circular_imports.py::test_no_warnings
+ )
+
+ # upstream unconditionally blocks building C extensions
+ # on PyPy3 but the test suite needs an explicit switch
+ if [[ ${EPYTHON} == pypy3 ]] || ! use native-extensions; then
+ local -x AIOHTTP_NO_EXTENSIONS=1
+ fi
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local -x PYTEST_PLUGINS=pytest_mock,xdist.plugin
+ rm -rf aiohttp || die
+ epytest -m "not internal and not dev_mode" \
+ -p rerunfailures --reruns=5
+}
diff --git a/dev-python/aioresponses/Manifest b/dev-python/aioresponses/Manifest
index 0bf3720f9c20..5b405d3b4b8c 100644
--- a/dev-python/aioresponses/Manifest
+++ b/dev-python/aioresponses/Manifest
@@ -1,2 +1 @@
-DIST aioresponses-0.7.7.tar.gz 39087 BLAKE2B 4692e088ec1c0a0f5e4f65a1269eb845ea6892ce41cc772cab9d0bb3795767b9ef776045d699e05f0816acdc795521318ce2ddd17ea8d436e89e9aae5e29436c SHA512 36fc45bc33d011d24fdbc437ea2adbba63eadec67d7198fe1e645d1dc0e7596104d5bf61ac1fe40b1d64f21cbe707e80775d26aa3762f87ad0a440ebabaa3a47
DIST aioresponses-0.7.8.tar.gz 40253 BLAKE2B 470a71e1b9e315cdce32bb35daf3c111f439dc7096a5d991b7da479c4514331debe903b8d0cd1a9503b2c264ed7bf2901399139719e631adcf2f8aa359b9d4e2 SHA512 a7368e9f344d2790df9c10c9a5e2b9124f56b12413a0b52b91dced9513338b22f75887f94fc9c0b4e2709d7ed37f2c0978ba2652745546387b5317d188190390
diff --git a/dev-python/aioresponses/aioresponses-0.7.7.ebuild b/dev-python/aioresponses/aioresponses-0.7.7.ebuild
deleted file mode 100644
index 16a414cccf52..000000000000
--- a/dev-python/aioresponses/aioresponses-0.7.7.ebuild
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Helper to mock/fake web requests in Python's aiohttp package"
-HOMEPAGE="
- https://github.com/pnuckowski/aioresponses/
- https://pypi.org/project/aioresponses/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~riscv x86"
-
-RDEPEND="
- >=dev-python/aiohttp-3.3.0[${PYTHON_USEDEP}]
-"
-BDEPEND="
- dev-python/pbr[${PYTHON_USEDEP}]
- test? (
- dev-python/ddt[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_sphinx docs
-distutils_enable_tests pytest
-
-EPYTEST_DESELECT=(
- # These tests require Internet access
- tests/test_aioresponses.py::AIOResponsesTestCase::test_address_as_instance_of_url_combined_with_pass_through
- tests/test_aioresponses.py::AIOResponsesTestCase::test_pass_through_with_origin_params
- tests/test_aioresponses.py::AIOResponseRedirectTest::test_pass_through_unmatched_requests
-)
diff --git a/dev-python/aioresponses/aioresponses-0.7.8.ebuild b/dev-python/aioresponses/aioresponses-0.7.8.ebuild
index 625145e6c611..92cd4ffc870c 100644
--- a/dev-python/aioresponses/aioresponses-0.7.8.ebuild
+++ b/dev-python/aioresponses/aioresponses-0.7.8.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 ~arm arm64 ~riscv x86"
RDEPEND="
>=dev-python/aiohttp-3.3.0[${PYTHON_USEDEP}]
diff --git a/dev-python/aiosqlite/Manifest b/dev-python/aiosqlite/Manifest
index 20158f857948..5d91d13b16f6 100644
--- a/dev-python/aiosqlite/Manifest
+++ b/dev-python/aiosqlite/Manifest
@@ -1 +1,2 @@
DIST aiosqlite-0.20.0.tar.gz 21691 BLAKE2B 2cfa096fa10e4964eb73b0fa698bad07311a78a66258d38864d3d8957df5280fd3a4bf8cb497c9b6f3e0f3bc513a439790f3df81f7736736f73717cf60df54e4 SHA512 b0421d2b8acf90a38e33f68d8af7f0d11194c59413f074dcf7d676924adf30f0ba27dcf45e061ba1aad58c2aae49c523bfb6dc3e3fd85bf6c64052151c300be5
+DIST aiosqlite-0.21.0.tar.gz 13454 BLAKE2B cd6bb6670732e05628a2724abc2675063fd2822912751077550572bfb3971c02548ee7a681c68d8e69365ad8cf534c47ca1996e2e4c204eea8bc4371180375fa SHA512 64d65c8b683687559f698b191697f765db18719318259a6c9d778f7577d23eec5e0f382f71f63f7aba9aedcb3189bc5d946cd6382ae6c2f16af7a553b8a8c9e2
diff --git a/dev-python/aiosqlite/aiosqlite-0.21.0.ebuild b/dev-python/aiosqlite/aiosqlite-0.21.0.ebuild
new file mode 100644
index 000000000000..637d690aeb18
--- /dev/null
+++ b/dev-python/aiosqlite/aiosqlite-0.21.0.ebuild
@@ -0,0 +1,30 @@
+# 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_{10..13} )
+PYTHON_REQ_USE="sqlite"
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="asyncio bridge to the standard sqlite3 module"
+HOMEPAGE="
+ https://aiosqlite.omnilib.dev
+ https://pypi.org/project/aiosqlite/
+ https://github.com/omnilib/aiosqlite
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ >=dev-python/typing-extensions-4[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests unittest
+
+# AttributeError: 'str' object has no attribute 'supported'
+#distutils_enable_sphinx docs dev-python/m2r
diff --git a/dev-python/aiounittest/Manifest b/dev-python/aiounittest/Manifest
index e88607cfad01..3490865377ba 100644
--- a/dev-python/aiounittest/Manifest
+++ b/dev-python/aiounittest/Manifest
@@ -1 +1,2 @@
DIST aiounittest-1.4.2.gh.tar.gz 15791 BLAKE2B 7784bbf94de2b8520baef66a0b4929267942d233cc782f35677ea05b02e3d48901ba90cf9630b76bd300708ebbe59dd9d78c299422182c06940749bc2b378b45 SHA512 358b7c412f90eb7afc7ed7058e8e2d4426a6c57379d341d997658859ba6054a9a1337d0b05e63a825e28023f02550bd72d65bdb3feab4503c763c98f8c0d19c6
+DIST aiounittest-1.4.3.gh.tar.gz 15828 BLAKE2B f3abd87d77f27f3a29b392e3e5518ad5062c930e1884522c40aa8b4c54d27feddd86a50df6272b5a47a4edf0b7f3bc503fd4f67aaef92d885670fc20c74f32da SHA512 398fcf071660bfc38cb68dc01bed83c6d2320a8a1b8e8ade921a7616f7fe70534203b28630532a287da98cbbefcc8b6cf8c97d5a35fe5c63e7e143f8c619c1bb
diff --git a/dev-python/aiounittest/aiounittest-1.4.3.ebuild b/dev-python/aiounittest/aiounittest-1.4.3.ebuild
new file mode 100644
index 000000000000..f2954bc5d074
--- /dev/null
+++ b/dev-python/aiounittest/aiounittest-1.4.3.ebuild
@@ -0,0 +1,29 @@
+# Copyright 2023-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( pypy3 python3_{10..13} )
+
+inherit distutils-r1
+
+DESCRIPTION="Test asyncio code more easily"
+HOMEPAGE="
+ https://github.com/kwarunek/aiounittest/
+ https://pypi.org/project/aiounittest/
+"
+SRC_URI="
+ https://github.com/kwarunek/aiounittest/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ dev-python/wrapt[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests pytest
diff --git a/dev-python/alembic/Manifest b/dev-python/alembic/Manifest
index dc40f7648ffb..ce495e1948b2 100644
--- a/dev-python/alembic/Manifest
+++ b/dev-python/alembic/Manifest
@@ -1,2 +1 @@
-DIST alembic-1.14.0.tar.gz 1916172 BLAKE2B 22c9373df866857328dbcd10e87ded6d7768bff0f5955a2ca607d9a31e722f69b3adb0560150483f59122bc676ba7d9bd4245e29f5f1a35c8f96b4741422b77a SHA512 efc6eb3527672a136a6acef8bcc1d484c4a331fbb1b825085ac337133facddd11c4cfe4f473175a748bbbec8f7d58c45cb341902cdedbbb7b00a0403e2ba53d5
DIST alembic-1.14.1.tar.gz 1918219 BLAKE2B ba86062e0662b75fdd616d27f235ff836622deceb412f760af2f75313b6b81d8b42e0fc1d49d0bb5e164cbd54d8fed5faa2f402dd51393aa9f57899a9a1e541f SHA512 ae3f31f102ff6e2903d0719051e58fb7b30c251a9ce20c22e658bb343ba252cb0d66adc429ec83fc65ce73d6a6f6ae1673c878de81f433baa16663393a14d3dd
diff --git a/dev-python/alembic/alembic-1.14.0.ebuild b/dev-python/alembic/alembic-1.14.0.ebuild
deleted file mode 100644
index 954c93539342..000000000000
--- a/dev-python/alembic/alembic-1.14.0.ebuild
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( pypy3 python3_{10..13} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Database migrations tool, written by the author of SQLAlchemy"
-HOMEPAGE="
- https://github.com/sqlalchemy/alembic/
- https://pypi.org/project/alembic/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="amd64 arm64 ~riscv x86"
-IUSE="doc"
-
-RDEPEND="
- >=dev-python/sqlalchemy-1.1.0[${PYTHON_USEDEP}]
- dev-python/mako[${PYTHON_USEDEP}]
- >=dev-python/python-editor-0.3[${PYTHON_USEDEP}]
- >=dev-python/typing-extensions-4[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- sys-libs/timezone-data
- )
-"
-
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-python_test() {
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- # setup.cfg contains -p no:warnings in addopts which triggers
- # datetime.utcfromtimestamp() deprecation warning as an error in py3.12
- epytest -o addopts=
-}
-
-python_install_all() {
- use doc && local HTML_DOCS=( docs/. )
- distutils-r1_python_install_all
-}
diff --git a/dev-python/alembic/alembic-1.14.1.ebuild b/dev-python/alembic/alembic-1.14.1.ebuild
index cc345d807b6e..350927eb9e8a 100644
--- a/dev-python/alembic/alembic-1.14.1.ebuild
+++ b/dev-python/alembic/alembic-1.14.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 arm64 ~riscv x86"
IUSE="doc"
RDEPEND="
diff --git a/dev-python/ansible-compat/Manifest b/dev-python/ansible-compat/Manifest
index 88d1b9bbe9ba..dda620cc6970 100644
--- a/dev-python/ansible-compat/Manifest
+++ b/dev-python/ansible-compat/Manifest
@@ -2,3 +2,4 @@ DIST ansible-compat-24.9.1.gh.tar.gz 76018 BLAKE2B 581199ab65ccc884a3eeef246a8db
DIST ansible_compat-24.10.0.tar.gz 81818 BLAKE2B 78afad41dbe2172cb485186d78a488343391b5feb39f233f8584dc65ece8f290b43c8a6b0112db4606329bc5f38a9e44c6e39fd48efcb5562292152d44276539 SHA512 636ccb66be3570bf7ab0a51f991fefe3b4754db3fddb4d45ebd116de2721082e8ad4049e0cdd975431f01daaa4cb9d24ca57a97913fa66ce1f1f47780734ab14
DIST ansible_compat-25.1.0.tar.gz 87512 BLAKE2B 3547a26cd24656e6b7efc1d5250c3b224d539f08bd4fe1569aa3b2a84123baa0969cf1631d004eaab853b19ecf75a525a2baa6fd179a3737c503734459e78b2d SHA512 81b610f997b5d0fcd348a701e94bf7300175851f8c020af4129d3a95996ae61614004c8286af35f0d64887cdd6ae29ecad4aa22ddca4a9802f85178ebc21830b
DIST ansible_compat-25.1.1.tar.gz 87846 BLAKE2B b38b5dc14a085470f0fccb4c6514fdeff70229606bceec6cf334947c9e4238c42de5afeb357c386df8aab6d671e14d164c38b2d1dfda5a669cb10780c5154cdf SHA512 0132d21993dac321d73148e732e3313fe1f27b30f65a011068956d788cce862344d86094ad55a79e9be10fd8127a8b729bed8a4cc67afde7f9b73dc9306161b9
+DIST ansible_compat-25.1.2.tar.gz 87902 BLAKE2B c2a96fb67c32e8a02d2e1f6c6ddbcbd966fac1e9485f00ba8293ced2fc2de986616a9987772a54d6f5ee1c88cbf9a09fb3b36eed44949b241f50b761ff52d06b SHA512 b07ae461241c3c2ab7b52b519ab773ecb878b6cd24353a81187c5aeb14c332af5f666d5034b8972e6bbedc9a0cd761c887492064a122593cc8746702ffc83adc
diff --git a/dev-python/ansible-compat/ansible-compat-25.1.2.ebuild b/dev-python/ansible-compat/ansible-compat-25.1.2.ebuild
new file mode 100644
index 000000000000..5d0bd8248da6
--- /dev/null
+++ b/dev-python/ansible-compat/ansible-compat-25.1.2.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="setuptools"
+PYTHON_COMPAT=( python3_{11..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Contains functions that facilitate working with various versions of Ansible"
+HOMEPAGE="
+ https://pypi.org/project/ansible-compat/
+ https://github.com/ansible/ansible-compat/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv"
+
+RDEPEND="
+ >=app-admin/ansible-core-2.18.1[${PYTHON_USEDEP}]
+ >=dev-python/jsonschema-4.23.0[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ >=dev-python/subprocess-tee-0.4.1[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ >=dev-python/setuptools-scm-7.0.5[${PYTHON_USEDEP}]
+ test? (
+ dev-python/pytest-mock[${PYTHON_USEDEP}]
+ dev-python/pytest-plus[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # All these tests attempt to connect to galaxy.ansible.com
+ test/test_runtime.py::test_install_collection
+ test/test_runtime.py::test_install_collection_dest
+ test/test_runtime.py::test_prepare_environment_with_collections
+ test/test_runtime.py::test_prerun_reqs_v1
+ test/test_runtime.py::test_prerun_reqs_v2
+ test/test_runtime.py::test_require_collection_no_cache_dir
+ test/test_runtime.py::test_require_collection_wrong_version
+ test/test_runtime.py::test_require_collection
+ test/test_runtime.py::test_upgrade_collection
+ test/test_runtime_example.py::test_runtime
+ 'test/test_runtime.py::test_load_plugins[modules]'
+ # pip, failing due to internets
+ test/test_runtime_scan_path.py::test_scan_sys_path
+ # internets?
+ test/test_runtime.py::test_runtime_has_playbook
+ # TODO
+ test/test_prerun.py::test_get_cache_dir_relative
+ )
+
+ epytest -o addopts=
+}
diff --git a/dev-python/apsw/Manifest b/dev-python/apsw/Manifest
index 324b8cea1b06..dbc6bab82abf 100644
--- a/dev-python/apsw/Manifest
+++ b/dev-python/apsw/Manifest
@@ -1 +1,2 @@
DIST apsw-3.47.2.0.zip 2428145 BLAKE2B 12ece7d7854a729510b2e18d3285fc49135b3cbb3480567a0c6879c98d48b2d49bc75f4cb46af738c4a565cc6c29f7cd5d35fd2c6ea5fe1814e8048030f966fb SHA512 9884f36811bfff7276642841ebaa198669c48f4d54bb764a985ea5bdd88f9f630f9fd8a13cf0a44b5675e374c2a911fcec579ca4165622e8049bff327ef66c1d
+DIST apsw-3.49.0.0.zip 2452542 BLAKE2B e4652671c7b3abdd7973765c141a781b88d328510fe2135b99eb67657485e65208e6d0c4df5fd9b513dfa119ff011562e7ed8d578ee0ebb982803da2bcbd7048 SHA512 c7c6879ce0f5c19f16b3503036c6dc37bd5a0b19ccc3ddde9d9ebd9ede9b3c3bbd275948194c8be892d32a8a472a513bfb6c43f0dfe3262744f2a114705facab
diff --git a/dev-python/apsw/apsw-3.49.0.0.ebuild b/dev-python/apsw/apsw-3.49.0.0.ebuild
new file mode 100644
index 000000000000..05b698196b43
--- /dev/null
+++ b/dev-python/apsw/apsw-3.49.0.0.ebuild
@@ -0,0 +1,52 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1
+
+DESCRIPTION="APSW - Another Python SQLite Wrapper"
+HOMEPAGE="
+ https://github.com/rogerbinns/apsw/
+ https://pypi.org/project/apsw/
+"
+SRC_URI="
+ https://github.com/rogerbinns/apsw/releases/download/${PV}/${P}.zip
+"
+
+LICENSE="ZLIB"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86"
+IUSE="doc"
+
+DEPEND="
+ >=dev-db/sqlite-${PV%.*}:3
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ app-arch/unzip
+"
+
+src_configure() {
+ cat >> setup.apsw <<-EOF || die
+ [build_ext]
+ use_system_sqlite_config=True
+ EOF
+}
+
+python_test() {
+ esetup.py build_test_extension
+ cd "${T}" || die
+ "${EPYTHON}" -m apsw.tests -v || die "Tests failed under ${EPYTHON}"
+}
+
+python_install_all() {
+ use doc && local HTML_DOCS=( doc/. )
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/asyncssh/asyncssh-2.19.0.ebuild b/dev-python/asyncssh/asyncssh-2.19.0.ebuild
index 0f18d2eba5f6..8b69409e453a 100644
--- a/dev-python/asyncssh/asyncssh-2.19.0.ebuild
+++ b/dev-python/asyncssh/asyncssh-2.19.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="|| ( EPL-2.0 GPL-2+ )"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86"
+KEYWORDS="amd64 arm arm64 ~mips ~ppc ~ppc64 ~s390 ~sparc x86"
RDEPEND="
virtual/openssh
diff --git a/dev-python/atpublic/Manifest b/dev-python/atpublic/Manifest
index bbf69249cd39..381d4e1a08d2 100644
--- a/dev-python/atpublic/Manifest
+++ b/dev-python/atpublic/Manifest
@@ -1,3 +1 @@
-DIST atpublic-4.1.0.tar.gz 14426 BLAKE2B c535d36b8c4723fa0c36ed543461f8364445c52893e8a5cd6a6bfdec0a387308a74d9f6a9d4c204ac753fcc847a105f6f4a5dc7afa5848d08f0a269af8b01397 SHA512 bd840a44f3f9d8f7099c22d67866744ef43ed4bfa00e0fd8a6a7516e8e995287b234fb97eaf30be494f06a8ff1020c0479533bfe33adc56ae62bd976bd997b4b
-DIST atpublic-5.0.tar.gz 14646 BLAKE2B 92d545d7f8d90b47348a302662473f154783d0f5e3aa6ef165f6ddecbd7024792ef5dec02edf9b513c03021c5550cc915c258b5ee600869e10ba9c6c99f1dafa SHA512 b5b3dabb4891c0aa75a6e2f0d6f19e1447ba358c139a73bc582c2ef58bec0ea44bfee44f44635de7da1e1c1e4e7edb99ea7e6a2090c1df710a200eb16440098f
DIST atpublic-5.1.tar.gz 14670 BLAKE2B 46a9b0b583504e394d9ff1bf5db63d486a600aeedd7a2a15bb0b84074aaec6087afe9346c545da233af17a895359f23396a73f563a019b1db3ec10248d481b57 SHA512 7f15a6852e7a3140376ca15500f0154cb86d7183cf0fd7e847fd7ec52c14c64854d5578b8a78b8fce808886ace54971396d882be08c6932a62acbb0e0939e306
diff --git a/dev-python/atpublic/atpublic-4.1.0.ebuild b/dev-python/atpublic/atpublic-4.1.0.ebuild
deleted file mode 100644
index 927cb9459e65..000000000000
--- a/dev-python/atpublic/atpublic-4.1.0.ebuild
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=hatchling
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="A decorator to populate __all__ and the module globals"
-HOMEPAGE="
- https://gitlab.com/warsaw/public/
- https://pypi.org/project/atpublic/
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
-
-BDEPEND="
- test? (
- dev-python/sybil[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-
-src_prepare() {
- sed -i -e '/addopts/d' pyproject.toml || die
- distutils-r1_src_prepare
-}
diff --git a/dev-python/atpublic/atpublic-5.0.ebuild b/dev-python/atpublic/atpublic-5.0.ebuild
deleted file mode 100644
index adc6829acd44..000000000000
--- a/dev-python/atpublic/atpublic-5.0.ebuild
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=hatchling
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="A decorator to populate __all__ and the module globals"
-HOMEPAGE="
- https://gitlab.com/warsaw/public/
- https://pypi.org/project/atpublic/
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~loong ppc ppc64 ~riscv sparc x86"
-
-BDEPEND="
- test? (
- dev-python/sybil[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
diff --git a/dev-python/atpublic/atpublic-5.1.ebuild b/dev-python/atpublic/atpublic-5.1.ebuild
index 69c6a0481fb9..bc8e9bde3fb7 100644
--- a/dev-python/atpublic/atpublic-5.1.ebuild
+++ b/dev-python/atpublic/atpublic-5.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 ~loong ppc ppc64 ~riscv sparc x86"
BDEPEND="
test? (
diff --git a/dev-python/beautifulsoup4/Manifest b/dev-python/beautifulsoup4/Manifest
index ac78ef0aa60f..550bf9fa9ab8 100644
--- a/dev-python/beautifulsoup4/Manifest
+++ b/dev-python/beautifulsoup4/Manifest
@@ -1 +1,3 @@
DIST beautifulsoup4-4.12.3.tar.gz 581181 BLAKE2B dac85b2d56ad1d2faf040def2141cb7a7ca68def7fc48fab18e11c23878795fcecfdd43058e70229e014e23e67f56a55160aa4ba08bab4b3d955bd10a07c8168 SHA512 b5b6cc9f64a97fa52b9a2ee1265aa215db476e705d3d79e49301de7e8d36c56c96924cb440eec0715f7ec75c5ddf4c1ade9d6cef7cdc9bf9e37125ac6eb50837
+DIST beautifulsoup4-4.13.1.tar.gz 618295 BLAKE2B 4573920d2eeb53e0b4ae2ff9f0f7152a9209fbe79c1bf5ca894289759f5802a550a965016e16f731990e0be1a0dc343593a40720f18219ca1b834a7e49ffe91c SHA512 f661966c9c4a1e0ea3141b8c926ad9ffa010fb2ae48e2715c57812fca09d8a5434128f289a5bbc7a277ffc0b7925c7bc7c6c59c52e3126a926b06e74cc091a09
+DIST beautifulsoup4-4.13.3.tar.gz 619516 BLAKE2B f7fc24efe3a107b063b985888481e851ff73e1a1b672701af7846cab6d7ba550339111c0c0b6928656f034561a33e264bf3cfa5c0f097eb6c64a9b46a795fcb6 SHA512 44cc938e5f981be0deeba864ed44460bcf37e8cdc1c1732fc948d3bc310b1b1008817a63794eb650165d7b56eda6d668ab0e16bcc5dd3ffcecbd932f743d48c1
diff --git a/dev-python/beautifulsoup4/beautifulsoup4-4.13.1.ebuild b/dev-python/beautifulsoup4/beautifulsoup4-4.13.1.ebuild
new file mode 100644
index 000000000000..dc5f09a5c8a7
--- /dev/null
+++ b/dev-python/beautifulsoup4/beautifulsoup4-4.13.1.ebuild
@@ -0,0 +1,41 @@
+# 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_{10..13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Pythonic idioms for iterating, searching, and modifying an HTML/XML parse tree"
+HOMEPAGE="
+ https://www.crummy.com/software/BeautifulSoup/bs4/
+ https://pypi.org/project/beautifulsoup4/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+
+RDEPEND="
+ dev-python/html5lib[${PYTHON_USEDEP}]
+ dev-python/lxml[${PYTHON_USEDEP}]
+ >=dev-python/soupsieve-2.6[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.0.0[${PYTHON_USEDEP}]
+"
+# bs4 prefers cchardet > chardet > charset-normalizer
+# however, charset-normalizer causes test failures, so force the other two
+# dev-python/chardet[${PYTHON_USEDEP}]
+BDEPEND="
+ test? (
+ || (
+ dev-python/faust-cchardet[${PYTHON_USEDEP}]
+ dev-python/chardet[${PYTHON_USEDEP}]
+ )
+ dev-python/packaging[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+distutils_enable_sphinx doc
diff --git a/dev-python/beautifulsoup4/beautifulsoup4-4.13.3.ebuild b/dev-python/beautifulsoup4/beautifulsoup4-4.13.3.ebuild
new file mode 100644
index 000000000000..dc5f09a5c8a7
--- /dev/null
+++ b/dev-python/beautifulsoup4/beautifulsoup4-4.13.3.ebuild
@@ -0,0 +1,41 @@
+# 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_{10..13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Pythonic idioms for iterating, searching, and modifying an HTML/XML parse tree"
+HOMEPAGE="
+ https://www.crummy.com/software/BeautifulSoup/bs4/
+ https://pypi.org/project/beautifulsoup4/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+
+RDEPEND="
+ dev-python/html5lib[${PYTHON_USEDEP}]
+ dev-python/lxml[${PYTHON_USEDEP}]
+ >=dev-python/soupsieve-2.6[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.0.0[${PYTHON_USEDEP}]
+"
+# bs4 prefers cchardet > chardet > charset-normalizer
+# however, charset-normalizer causes test failures, so force the other two
+# dev-python/chardet[${PYTHON_USEDEP}]
+BDEPEND="
+ test? (
+ || (
+ dev-python/faust-cchardet[${PYTHON_USEDEP}]
+ dev-python/chardet[${PYTHON_USEDEP}]
+ )
+ dev-python/packaging[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+distutils_enable_sphinx doc
diff --git a/dev-python/bincopy/Manifest b/dev-python/bincopy/Manifest
index 70156d83c9a8..6c904cdc3eb9 100644
--- a/dev-python/bincopy/Manifest
+++ b/dev-python/bincopy/Manifest
@@ -1,2 +1 @@
-DIST bincopy-20.0.0.tar.gz 750646 BLAKE2B 89f57cbf314aded9d9ac0d1ef51d1c7ed0f7e6aaa65236bb8daac72f98518b30974f62854f6dc64145a6615d636cddebefb8a09c42996ef33f6e64cb99fca486 SHA512 05cc54684c951ac209fa25ebdc2f60566ef93248cfa298439a2a4f6a4174e02f47476573aa580ae2d1e4b8e16e91ee8c4fee2097c375ca2c079dbbb0602b6153
DIST bincopy-20.1.0.tar.gz 750857 BLAKE2B 4d933a884e641ebac73d18e161775a54bdaff21f6a74f045f10f3de307b8ff21752750662b8197d35a996c906dd4bc73dc76c29c93ee8471b70aa85d7e3c85b8 SHA512 421a434fc806447814945941a71cddc499cd9ddbee290af0065f36ac3dc00df2aefa397023f20c0b4ecac1be781494cbf1357e42b146ce8ef6aedf829c45f075
diff --git a/dev-python/bincopy/bincopy-20.0.0.ebuild b/dev-python/bincopy/bincopy-20.0.0.ebuild
deleted file mode 100644
index 9266af351b55..000000000000
--- a/dev-python/bincopy/bincopy-20.0.0.ebuild
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Mangling of various file formats that conveys binary information"
-HOMEPAGE="
- https://pypi.org/project/bincopy/
- https://github.com/eerimoq/bincopy/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="amd64"
-
-RDEPEND="
- >=dev-python/argparse-addons-0.4.0[${PYTHON_USEDEP}]
- dev-python/humanfriendly[${PYTHON_USEDEP}]
- dev-python/pyelftools[${PYTHON_USEDEP}]
-"
-
-distutils_enable_tests pytest
diff --git a/dev-python/bincopy/bincopy-20.1.0.ebuild b/dev-python/bincopy/bincopy-20.1.0.ebuild
index 32bf3075fbc7..2bc3b92e9543 100644
--- a/dev-python/bincopy/bincopy-20.1.0.ebuild
+++ b/dev-python/bincopy/bincopy-20.1.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64"
+KEYWORDS="amd64"
RDEPEND="
>=dev-python/argparse-addons-0.4.0[${PYTHON_USEDEP}]
diff --git a/dev-python/boltons/Manifest b/dev-python/boltons/Manifest
index c5159efb0339..030e1a31f53c 100644
--- a/dev-python/boltons/Manifest
+++ b/dev-python/boltons/Manifest
@@ -1 +1,2 @@
DIST boltons-24.1.0.tar.gz 240916 BLAKE2B 65f3b3e3c495bcd168badd776e0e04da2339c52fddbaa4ba4ccce6ddc1f6143ab224fa6d89cc4f9a5632fcf91b2e7beac31f92e9587004282b24e177670e9bef SHA512 9f61fb9c9e0a56abc75c61c56bc47ac8ab219d0abd14f700ca609b61f25df392c1b5be3a2bfecd1a2b2c73a50e407c6f90f0460341dfa23d8dfdf8ad530974af
+DIST boltons-25.0.0.tar.gz 246294 BLAKE2B 10b2e19188e287d9ed8071b30300456d48883dfa39e3673c0a11381d653f222c8ae1c66f68db80017ae42df55ba9ee77678c36e6b8ab4b608071ae46b2a5aa37 SHA512 4a1c9a511d5628c21c0416f289260f0dcbf4ebc38338d8dbf2d9a7ee8031b5d69c74ca6f5bc0a97fee1773a6e86fdb470af9b643f0c0b89db23987fe842dff4f
diff --git a/dev-python/boltons/boltons-25.0.0.ebuild b/dev-python/boltons/boltons-25.0.0.ebuild
new file mode 100644
index 000000000000..6e2bdbd86293
--- /dev/null
+++ b/dev-python/boltons/boltons-25.0.0.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2021-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit
+PYTHON_COMPAT=( pypy3 python3_{10..13} )
+inherit distutils-r1 pypi
+
+DESCRIPTION="Pure-python utilities in the same spirit as the standard library"
+HOMEPAGE="https://boltons.readthedocs.io/"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+distutils_enable_tests pytest
+
+DOCS=( CHANGELOG.md README.md TODO.rst )
+
+src_test() {
+ # tests break with pytest-qt, django, and likely more
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+
+ distutils-r1_src_test
+}
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index 5ac4f8e24fac..4acbe6cf03c5 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -1,3 +1,6 @@
DIST boto3-1.36.11.gh.tar.gz 896841 BLAKE2B 092cfaeb6dc6f6d3f523fe4e0b600817e6145a224c2b43b6dd47376d6aa1a586bf3784b2960f4179b271128d20c3edd5b435cabd6e3ddc2330f0b0ad5ce306d9 SHA512 6f17d0b6f67ace0485fbc2d809f013fddd4cf1211eb6c9a1fe0ed7c0bc117aedc9e4b7db4d4570818907db6344b19331d8a7b6246928ed5c5e294b9b5a9504dc
-DIST boto3-1.36.2.gh.tar.gz 923432 BLAKE2B 91f19eb6e1451923adbf323688d89cfadd384009fbc3fdcae688b48dee54d9a3f14956cedaed07b15f2cdc3badaf0533a6ec1e1baf5cedc88e91580104834eb2 SHA512 e9e14f4aacd0814952198d5446050f0cf822baac0b3ce3604c40dbb6b122c431624b46b144ea4699be7328f6236e099981905a4be6a9de3400750800d8d40e60
+DIST boto3-1.36.16.gh.tar.gz 898785 BLAKE2B fa3de504bb8c58fa5653a3fc3414a333283c04ca800b8d37b310b291e60af96b27c994d2571e4dc0f159c98a41d014000ce7afe020f38da80a2cac49283ba2cc SHA512 6cbbe6cdb505ace41e5e20ff144d1d312d8a53e3c7c2e8d50a981c55e485cdf98ac6711c36cb3697e257aab08e240fa1e731485aec3dd8b74cd5163c489bd61f
+DIST boto3-1.36.17.gh.tar.gz 899108 BLAKE2B 3c1694499e7bc48abf3d8bd8e6c783258798d3600aedfe95299634ef6f848e531bd68010e8e6c2f0dc777dd8b379a40902272e8e623d177891da4e6f4e52156e SHA512 9574ed2b26e95a54f1300c52a9511462676dcdc06d05f216c4e722ec3b8f8d6730b3aaae218d4607fcb87d9a99a83587d76146b3188bc01a5635ac638576178a
+DIST boto3-1.36.18.gh.tar.gz 899576 BLAKE2B 03fb22fa6e34fdb09000ce93078b7d465ede8bca7933b0254544a55dfe036616091b293af71669b0f43a99a5322cf08c0bdc18050fa26ddc148b2d8b885198b1 SHA512 138d7d5c70920a890519aabc50504b9a8210c2a3140daa1b8ebbe9cfebf6699c43a9215b0915625974c66a44d63398f0190072392d98ada25178cfad56627b0f
+DIST boto3-1.36.19.gh.tar.gz 900374 BLAKE2B 4c53174c011f32f197ca0594df51968242edecbbe8411a02299816a07c9eb59b04d44da1c1ae18c255bb1959f10b2b382d1d25dfbb17b0f66470c390fa03ef9c SHA512 d604978b7444aa9fccaf939d45cb53dddd13472458ff5a2ec0d666bd593844623c4568dce223c688ebd302bdcf2ef68f8f6f508f119621ee663ef45d6b578285
DIST boto3-1.36.6.gh.tar.gz 925646 BLAKE2B 71db3ff552033c187e19b699d193e4834649b80d2c0dd2ed35496bfef798371f7794e58d445aeeafcc3e4aef50d4dc6e17347b04ae82b4f3b7778a1a5e419daf SHA512 c638903cb3afff4867dbee7295e387f5ce91d9d3d9f37b28c103ead87883377a69fbccfce34850da5c77186ced0bb56f5dc5f4549e84871d10a9134c731d4c36
diff --git a/dev-python/boto3/boto3-1.36.2.ebuild b/dev-python/boto3/boto3-1.36.16.ebuild
index 49169e33bb7b..b087a88814e8 100644
--- a/dev-python/boto3/boto3-1.36.2.ebuild
+++ b/dev-python/boto3/boto3-1.36.16.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.36.17.ebuild b/dev-python/boto3/boto3-1.36.17.ebuild
new file mode 100644
index 000000000000..b087a88814e8
--- /dev/null
+++ b/dev-python/boto3/boto3-1.36.17.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_{10..13} )
+
+inherit distutils-r1
+
+DESCRIPTION="The AWS SDK for Python"
+HOMEPAGE="
+ https://github.com/boto/boto3/
+ https://pypi.org/project/boto3/
+"
+SRC_URI="
+ https://github.com/boto/boto3/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ >=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
+ >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
+ >=dev-python/s3transfer-0.11.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # don't lock versions to narrow ranges
+ sed -e '/botocore/ d' \
+ -e '/jmespath/ d' \
+ -e '/s3transfer/ d' \
+ -i setup.py || die
+
+ # do not rely on bundled deps in botocore (sic!)
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/boto3/boto3-1.36.18.ebuild b/dev-python/boto3/boto3-1.36.18.ebuild
new file mode 100644
index 000000000000..b087a88814e8
--- /dev/null
+++ b/dev-python/boto3/boto3-1.36.18.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_{10..13} )
+
+inherit distutils-r1
+
+DESCRIPTION="The AWS SDK for Python"
+HOMEPAGE="
+ https://github.com/boto/boto3/
+ https://pypi.org/project/boto3/
+"
+SRC_URI="
+ https://github.com/boto/boto3/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ >=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
+ >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
+ >=dev-python/s3transfer-0.11.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # don't lock versions to narrow ranges
+ sed -e '/botocore/ d' \
+ -e '/jmespath/ d' \
+ -e '/s3transfer/ d' \
+ -i setup.py || die
+
+ # do not rely on bundled deps in botocore (sic!)
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/boto3/boto3-1.36.19.ebuild b/dev-python/boto3/boto3-1.36.19.ebuild
new file mode 100644
index 000000000000..b087a88814e8
--- /dev/null
+++ b/dev-python/boto3/boto3-1.36.19.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_{10..13} )
+
+inherit distutils-r1
+
+DESCRIPTION="The AWS SDK for Python"
+HOMEPAGE="
+ https://github.com/boto/boto3/
+ https://pypi.org/project/boto3/
+"
+SRC_URI="
+ https://github.com/boto/boto3/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ >=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
+ >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
+ >=dev-python/s3transfer-0.11.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # don't lock versions to narrow ranges
+ sed -e '/botocore/ d' \
+ -e '/jmespath/ d' \
+ -e '/s3transfer/ d' \
+ -i setup.py || die
+
+ # do not rely on bundled deps in botocore (sic!)
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/boto3/boto3-1.36.6.ebuild b/dev-python/boto3/boto3-1.36.6.ebuild
index b087a88814e8..49169e33bb7b 100644
--- a/dev-python/boto3/boto3-1.36.6.ebuild
+++ b/dev-python/boto3/boto3-1.36.6.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv sparc x86 ~amd64-linux ~x86-linux"
RDEPEND="
>=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
diff --git a/dev-python/botocore/Manifest b/dev-python/botocore/Manifest
index 84417918b4b4..12845ee0e0f0 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -1,3 +1,6 @@
DIST botocore-1.36.11.gh.tar.gz 14197086 BLAKE2B 471c4d4d8433c5ce577b76e3dc70e9cbc0aee52f8c06765c1d965b437e75b44b4d62ea472abf612266ebf718300aca11f39fce90abe5d5811a37bcbe686d09de SHA512 0cf405e0fd7466a631bfbf3c4d0ad46b7c6da787715d9d70362cd5ed869ecfcf26ce7465daec220c9ffb858a1171439088e42a72665726ba5b511ef551cdcf3a
-DIST botocore-1.36.2.gh.tar.gz 14197789 BLAKE2B 21441cd52052d117ce05e425c13f34941dcc1ca26a03e2e7eefb6c82584d7faffb548435ebb6b716b72db8149cfe6a3378b79f9174c676fd193c194501b0c844 SHA512 45d9515c493b238a003e5ad264b152b68a62e7ca140ea13111865a4b7c674a7b309a0f550f9782c37966b95c114136b8788f00ba0c83ed4bc61521b593376594
+DIST botocore-1.36.16.gh.tar.gz 14211411 BLAKE2B 88ea5860e628985d7643acc430b62ed1a57c0c6a05081e156630bf4090aaf00fa18efd39f3d7914d2eab97b3cb1ac5d355714ccc1a6af3f2e1bec2a6b067e608 SHA512 7c1f66b7835df3fb5fef726762d09eecfc7b1c3cad5df7f6e1d1ec90fd1d7f505243d92c6c4184b0dc15b541c9e3d14d07cc91ce317655d98ad9d74f289e72e6
+DIST botocore-1.36.17.gh.tar.gz 14211225 BLAKE2B e589bc5bdd5d8f350fb281fd4b3367a8c47beebafe3e4c087bfd8919a65e2e1adaab3cb0cb8fff877c813656835a12537e7ffdec8e9daf13841279b3ead58142 SHA512 8f30247d21a01c3cafe8f1ef938207f14a626fe17b7c29a510886014af866d985804f83563be0ac2a7894fbf8a5b6cc78554904e8f5f9f9ca69ecf615a30d613
+DIST botocore-1.36.18.gh.tar.gz 14215558 BLAKE2B b8f142da59626db83ded0c165bd05c312ba98aaebc7eab9217702057ee5876146518e9095dae8443daaae1eadad2a045405fc8a57ae5f04266ec82fe15b3308c SHA512 b3cc042e83db579da5a3d24fbacdbab6df98381d6e34ef0c19d3285669599f023ffccbb235620646ed02c3a7d6ab87cc31d732889cb1bdd797f405c8df292a8a
+DIST botocore-1.36.19.gh.tar.gz 14217764 BLAKE2B 2c7c00ab07ed3955809451a47e9b38ebe3ff8d4cf729b4c1a6ddc18f0564d79ef18b9c60c685006beedf19db224dba868116a515096332c110975b073fda0413 SHA512 c19c4bb0412addeb009d7d1d621a54efa616b3ddb219bada0abc48f4b421e705bdd14e7d71540b8021c01e04b707389f0cc38f4648f42ecc0fdcd6b21990ac4c
DIST botocore-1.36.6.gh.tar.gz 14173329 BLAKE2B 1eea293adad312439f2c60e0f73f721fa207439af2918fb5db98304a565e44d33f953f517e5526e865cbf58751892be4a6cc275545f295638109ee4051d2a276 SHA512 bcd1077bfeb5709e8c6224560f7974d70a884310539b531f520b20446aeaf3aa5d9aba6cbd19d75526d34dd7ab68be578f5ece7bddf7986997f9f5bbd5cee905
diff --git a/dev-python/botocore/botocore-1.36.2.ebuild b/dev-python/botocore/botocore-1.36.16.ebuild
index f72d8120ad60..9e1580d45581 100644
--- a/dev-python/botocore/botocore-1.36.2.ebuild
+++ b/dev-python/botocore/botocore-1.36.16.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.36.17.ebuild b/dev-python/botocore/botocore-1.36.17.ebuild
new file mode 100644
index 000000000000..9e1580d45581
--- /dev/null
+++ b/dev-python/botocore/botocore-1.36.17.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_{10..13} )
+
+inherit distutils-r1
+
+DESCRIPTION="Low-level, data-driven core of boto 3"
+HOMEPAGE="
+ https://github.com/boto/botocore/
+ https://pypi.org/project/botocore/
+"
+SRC_URI="
+ https://github.com/boto/botocore/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ <dev-python/jmespath-2[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ >=dev-python/urllib3-1.25.4[${PYTHON_USEDEP}]
+"
+# unbundled packages
+RDEPEND+="
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/six[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/jsonschema[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ # unpin deps
+ sed -i -e "s:>=.*':':" setup.py || die
+
+ # unbundle deps
+ rm -r botocore/vendored || die
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # rely on bundled six
+ tests/functional/test_six_imports.py::test_no_bare_six_imports
+ tests/functional/test_six_threading.py::test_six_thread_safety
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/botocore/botocore-1.36.18.ebuild b/dev-python/botocore/botocore-1.36.18.ebuild
new file mode 100644
index 000000000000..9e1580d45581
--- /dev/null
+++ b/dev-python/botocore/botocore-1.36.18.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_{10..13} )
+
+inherit distutils-r1
+
+DESCRIPTION="Low-level, data-driven core of boto 3"
+HOMEPAGE="
+ https://github.com/boto/botocore/
+ https://pypi.org/project/botocore/
+"
+SRC_URI="
+ https://github.com/boto/botocore/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ <dev-python/jmespath-2[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ >=dev-python/urllib3-1.25.4[${PYTHON_USEDEP}]
+"
+# unbundled packages
+RDEPEND+="
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/six[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/jsonschema[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ # unpin deps
+ sed -i -e "s:>=.*':':" setup.py || die
+
+ # unbundle deps
+ rm -r botocore/vendored || die
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # rely on bundled six
+ tests/functional/test_six_imports.py::test_no_bare_six_imports
+ tests/functional/test_six_threading.py::test_six_thread_safety
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/botocore/botocore-1.36.19.ebuild b/dev-python/botocore/botocore-1.36.19.ebuild
new file mode 100644
index 000000000000..9e1580d45581
--- /dev/null
+++ b/dev-python/botocore/botocore-1.36.19.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_{10..13} )
+
+inherit distutils-r1
+
+DESCRIPTION="Low-level, data-driven core of boto 3"
+HOMEPAGE="
+ https://github.com/boto/botocore/
+ https://pypi.org/project/botocore/
+"
+SRC_URI="
+ https://github.com/boto/botocore/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ <dev-python/jmespath-2[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ >=dev-python/urllib3-1.25.4[${PYTHON_USEDEP}]
+"
+# unbundled packages
+RDEPEND+="
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/six[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/jsonschema[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ # unpin deps
+ sed -i -e "s:>=.*':':" setup.py || die
+
+ # unbundle deps
+ rm -r botocore/vendored || die
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # rely on bundled six
+ tests/functional/test_six_imports.py::test_no_bare_six_imports
+ tests/functional/test_six_threading.py::test_six_thread_safety
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/botocore/botocore-1.36.6.ebuild b/dev-python/botocore/botocore-1.36.6.ebuild
index 9e1580d45581..f72d8120ad60 100644
--- a/dev-python/botocore/botocore-1.36.6.ebuild
+++ b/dev-python/botocore/botocore-1.36.6.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv sparc x86 ~amd64-linux ~x86-linux"
RDEPEND="
<dev-python/jmespath-2[${PYTHON_USEDEP}]
diff --git a/dev-python/cachetools/Manifest b/dev-python/cachetools/Manifest
index f52d8e0813d0..fc19365e66c7 100644
--- a/dev-python/cachetools/Manifest
+++ b/dev-python/cachetools/Manifest
@@ -1,2 +1 @@
-DIST cachetools-5.5.0.tar.gz 27661 BLAKE2B b46cdaeb2e2589eecedd2add633d92901be317120f70fbc04b6f552ce87d0cad9fe8e1e561e96a7f76d3617b02f5e02c0a1162a6a267f1ba6a8dbb283e7d8585 SHA512 fac6516880b83e0722e52037bed66c9a2b7ed683ccabca953ab82a27c47ae85a76a8abdc35e584c2c46ed194c1fbb8e3e5d6680235e0c4450d89a95c46904f51
DIST cachetools-5.5.1.tar.gz 28044 BLAKE2B a670460a89af39f636b7dd9b0e963edff930440c9104474c169504a7cb22de1757b7739e9e8d349a96657d3531c56694cfb91d8c8b33880aef17485a8098c37e SHA512 2709dfb1e937c7b1a232466856817ae74623940219e00ec6ddf2450c70f5fc0597faa0b1f0e10387b3668e939d6e3afa3b983879b51111904ff06f4fb9a693fc
diff --git a/dev-python/cachetools/cachetools-5.5.0.ebuild b/dev-python/cachetools/cachetools-5.5.0.ebuild
deleted file mode 100644
index 8e05d2b65127..000000000000
--- a/dev-python/cachetools/cachetools-5.5.0.ebuild
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..13} pypy3 )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Extensible memoizing collections and decorators"
-HOMEPAGE="
- https://github.com/tkem/cachetools/
- https://pypi.org/project/cachetools/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86"
-
-distutils_enable_tests pytest
diff --git a/dev-python/cachetools/cachetools-5.5.1.ebuild b/dev-python/cachetools/cachetools-5.5.1.ebuild
index 42c2b7871ee1..e71cce07b7fa 100644
--- a/dev-python/cachetools/cachetools-5.5.1.ebuild
+++ b/dev-python/cachetools/cachetools-5.5.1.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/cfn-lint/Manifest b/dev-python/cfn-lint/Manifest
index 4126f9e9955f..ed662bc4f70b 100644
--- a/dev-python/cfn-lint/Manifest
+++ b/dev-python/cfn-lint/Manifest
@@ -1,3 +1,3 @@
-DIST cfn_lint-1.22.3.tar.gz 2700564 BLAKE2B d1bfed3fda2d5133919396a54257ad484c3c7fd50b1a387e94eff404f9b8175135f0f39455bc45b69c8112e2f2c57eb055d7b2c879415bdc4abfdad74b7bb34f SHA512 45502d913488784ff8e355a24317cce42fc7df39b3afd80b8fc170c9c5b7e6191f3ff41a460e8bb0277d1c21483aef8addb41d60fe2e8e5d13058aa85fefcc84
DIST cfn_lint-1.22.7.tar.gz 2735518 BLAKE2B 4357981083d1a32c6be9194552ddb6d2064d8da59b869d617f0047833386232e7fbfede778ad5949a1a10708a1ea166c6bcdfecbaac0e4684e209c812fbde564 SHA512 c079f0b3f7947545ad79d8700833fca1ddc74bc9a224604ced3ab09981e6c363f73a6b214981fbdc16264611213d9a8a41e960de077943a4c407c79af458c551
DIST cfn_lint-1.23.1.tar.gz 2789263 BLAKE2B 7b437de438c7da771f43b656307f30b23ef6c3981f459cc4bdd08f558533deb64d534cd32010212d8841f187ea81cfcaaa08e86c85e21dfb4af976145c16bcc8 SHA512 dd0a6ef52f2fec5169c384c82ca6fcd3a60ebfb12331e60e6fe06e9887b99057f849921bb3d38cf10f1b2590e0362f4b94b0d873bac9a9d4f13a3d868cb2e47c
+DIST cfn_lint-1.24.0.tar.gz 2803280 BLAKE2B b859d41231c915c1a06939c75af91da619cc7c3ed7cd95196e0dc708a460e320eaa312197007e54037601db861b5332bdb27d5bae9a5d603171adf492d89968a SHA512 c9d1984671fbcadc659211d74cdc797924d7a0cffe3baaa284438831fca61b53adfcc615b93e23e946058a9ffc278cc5c088e5c24f2745035f32e9f6cdae24be
diff --git a/dev-python/cfn-lint/cfn-lint-1.22.7.ebuild b/dev-python/cfn-lint/cfn-lint-1.22.7.ebuild
index 11b35b918d51..7eae4ea2a82b 100644
--- a/dev-python/cfn-lint/cfn-lint-1.22.7.ebuild
+++ b/dev-python/cfn-lint/cfn-lint-1.22.7.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 arm64 ~riscv x86"
RDEPEND="
>=dev-python/aws-sam-translator-1.94.0[${PYTHON_USEDEP}]
diff --git a/dev-python/cfn-lint/cfn-lint-1.22.3.ebuild b/dev-python/cfn-lint/cfn-lint-1.24.0.ebuild
index 7eae4ea2a82b..11b35b918d51 100644
--- a/dev-python/cfn-lint/cfn-lint-1.22.3.ebuild
+++ b/dev-python/cfn-lint/cfn-lint-1.24.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm64 ~riscv x86"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
RDEPEND="
>=dev-python/aws-sam-translator-1.94.0[${PYTHON_USEDEP}]
diff --git a/dev-python/clang/Manifest b/dev-python/clang/Manifest
index 07b84607805e..e2345ea11956 100644
--- a/dev-python/clang/Manifest
+++ b/dev-python/clang/Manifest
@@ -13,4 +13,8 @@ DIST llvm-project-19.1.7.src.tar.xz.sig 438 BLAKE2B 4015140f4ba77de45039bdbdfbaf
DIST llvm-project-1f26ac10ca1bef40a80be8f81a6f109713bc586f.tar.gz 226424755 BLAKE2B 642befb8d6923f335d1d68129ebb7357f8ba22e110df494dd956c8097e4e5db4b2a88fcc069ab67184b03558f072c68e002bdaf90eba865e38b1473a0ef29eed SHA512 e9bb4fd31bbad5ec864c662515b5ec2e5511cce975040f9f3cd8f009c92f76077928feae0467fd9519a001a379c857f7539c506953d8d5a9209a9f358f414aac
DIST llvm-project-20.1.0-rc1.src.tar.xz 147144668 BLAKE2B ea4733962f38ea5897c73e91840818921739909c3671749bc8a0b1d2798e5a0815bbe750ade3a2a7414836ab7158754818b2f9370a4ee1bbbd52c96b1e95ef9b SHA512 c23c4b1227b6b0b7c3059358e64a00ee98893236bb1a0a41d7e821bdf2aa8353aea8f9f7b9498899c6807b9b8e2ceb06c3cd62e32fd07a786a319135055541b4
DIST llvm-project-20.1.0-rc1.src.tar.xz.sig 566 BLAKE2B 32eb278ec4ff1bb9d258b584922b0d227f4126a957ba75af44dcaa63b6a12ef73db56d6a86f24244af47803ddf6a243149d784f08137cbea60b49700be537705 SHA512 d7a334326201f8ca78284b33c325f180538667a0401bc30931e790aacc96dd78f6559c45929b6c335d40ef1dbe772738c0ce55d881ae3d7401733778b485408c
+DIST llvm-project-20.1.0-rc2.src.tar.xz 147160684 BLAKE2B 6adc1226f022272d78fb0ed361c190d369a2afc53bf868409fe8f4e092d5ffb9894c71870f072bb68162610782f48088468b4a49cdb1bc731d6689c791a5b5e3 SHA512 f303deaec8f25e1b122a7e85df192b6ea10c51472b78a3d14ad9d0b976a533cfbb9164aff0bc99e447e30938cf43363552c5493b4693e1f23291ea7a9b824bbb
+DIST llvm-project-20.1.0-rc2.src.tar.xz.sig 566 BLAKE2B aa91f7be228e51b0f2234bb5e0df173e3ddc90b6db4350a9008c2f8ba53220da6eef0c69778aecac3caecf918a0c54a0d910177ffe7643ad7fc5624a97262b7f SHA512 e5563a8a79b5e9ef26d62dc6d4385c1c86d12a652b4b1e7fc9ce45a2ea66e5118112746a61b439823bf99d65aea82285eabf5e07714eec77e6e5cd02feab82ce
+DIST llvm-project-2cd8207b26ea4269630feba661f68554d7ae3c15.tar.gz 227261597 BLAKE2B 51ce992b651fcf08b7fd520420040803b59f1260947953325400c50bec576c418b162d8ae2d2307e70b885b1185c302a97409bcfe48cdb14b8e1384f4e2dfa9e SHA512 a41749943508ea4a18b47c4e947917b5268544e64372c0c3347f9ab8172a2c229d8b1d813d1e842be1b98aedd624524857ed3bb23fe98ad5f36e7a71581abb4b
+DIST llvm-project-6f241e36831927e3aea113cfc017c34fdeda340a.tar.gz 227203285 BLAKE2B 8d5e424c1836acc82ea766cd2cef104593c44d197ebeb64f18dbe74b1b5baeb4bc84084f5b68bd87ac36f7df25689dd2522cb6674a97da4f96f4f10f7bae5b06 SHA512 2b6e4bd6445eabfa3ace9b45d20797c7afc23f4553a8938399aeba227e3b8ca6a53a7d7762925a845bfed031c37af692b9c08180fbab80db2f3166940e560077
DIST llvm-project-bfa7edcc6652bdb37d53e0cec64926aab3f280eb.tar.gz 226735989 BLAKE2B 165837dc526e618b44c49d5fa3dceda373452e010a09746bff248903fe77874637d05ab9f5d2f63de7ebce5c14e3b19a131313a4a557adfd20fe9cb93ab60476 SHA512 e9e19176fcf1302727ee34d69eaa820b94959d64ceaf754d8a93ebd5e262cec7fe35e87b08f705b09e42c3ea26b671318eecf10e9137c635b12f481f80fbac23
diff --git a/dev-python/clang/clang-19.1.7.ebuild b/dev-python/clang/clang-19.1.7.ebuild
index 07386b38357e..01ca9c735b25 100644
--- a/dev-python/clang/clang-19.1.7.ebuild
+++ b/dev-python/clang/clang-19.1.7.ebuild
@@ -11,7 +11,7 @@ HOMEPAGE="https://llvm.org/"
LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+KEYWORDS="amd64 ~arm arm64 ~x86"
IUSE="test"
RESTRICT="!test? ( test )"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
diff --git a/dev-python/clang/clang-20.1.0_rc2.ebuild b/dev-python/clang/clang-20.1.0_rc2.ebuild
new file mode 100644
index 000000000000..694150a44a53
--- /dev/null
+++ b/dev-python/clang/clang-20.1.0_rc2.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+inherit llvm.org python-r1
+
+DESCRIPTION="Python bindings for llvm-core/clang"
+HOMEPAGE="https://llvm.org/"
+
+LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
+SLOT="0"
+IUSE="test"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+# The module is opening libclang.so directly, and doing some blasphemy
+# on top of it.
+DEPEND="
+ >=llvm-core/clang-${PV}:*
+ !llvm-core/llvm:0[clang(-),python(-)]
+ !llvm-core/clang:0[python(-)]
+"
+RDEPEND="
+ ${DEPEND}
+ ${PYTHON_DEPS}
+"
+BDEPEND="
+ ${PYTHON_DEPS}
+ test? (
+ llvm-core/clang:${LLVM_MAJOR}
+ )
+"
+
+LLVM_COMPONENTS=( clang/bindings/python )
+llvm.org_set_globals
+
+python_test() {
+ # tests rely on results from a specific clang version, so override
+ # the search path
+ local -x CLANG_LIBRARY_PATH=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/$(get_libdir)
+ local -x CLANG_NO_DEFAULT_CONFIG=1
+ "${EPYTHON}" -m unittest discover -v || die "Tests fail with ${EPYTHON}"
+}
+
+src_test() {
+ python_foreach_impl python_test
+}
+
+src_install() {
+ python_foreach_impl python_domodule clang
+}
diff --git a/dev-python/clang/clang-21.0.0_pre20250208.ebuild b/dev-python/clang/clang-21.0.0_pre20250208.ebuild
new file mode 100644
index 000000000000..694150a44a53
--- /dev/null
+++ b/dev-python/clang/clang-21.0.0_pre20250208.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+inherit llvm.org python-r1
+
+DESCRIPTION="Python bindings for llvm-core/clang"
+HOMEPAGE="https://llvm.org/"
+
+LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
+SLOT="0"
+IUSE="test"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+# The module is opening libclang.so directly, and doing some blasphemy
+# on top of it.
+DEPEND="
+ >=llvm-core/clang-${PV}:*
+ !llvm-core/llvm:0[clang(-),python(-)]
+ !llvm-core/clang:0[python(-)]
+"
+RDEPEND="
+ ${DEPEND}
+ ${PYTHON_DEPS}
+"
+BDEPEND="
+ ${PYTHON_DEPS}
+ test? (
+ llvm-core/clang:${LLVM_MAJOR}
+ )
+"
+
+LLVM_COMPONENTS=( clang/bindings/python )
+llvm.org_set_globals
+
+python_test() {
+ # tests rely on results from a specific clang version, so override
+ # the search path
+ local -x CLANG_LIBRARY_PATH=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/$(get_libdir)
+ local -x CLANG_NO_DEFAULT_CONFIG=1
+ "${EPYTHON}" -m unittest discover -v || die "Tests fail with ${EPYTHON}"
+}
+
+src_test() {
+ python_foreach_impl python_test
+}
+
+src_install() {
+ python_foreach_impl python_domodule clang
+}
diff --git a/dev-python/clang/clang-21.0.0_pre20250211.ebuild b/dev-python/clang/clang-21.0.0_pre20250211.ebuild
new file mode 100644
index 000000000000..694150a44a53
--- /dev/null
+++ b/dev-python/clang/clang-21.0.0_pre20250211.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+inherit llvm.org python-r1
+
+DESCRIPTION="Python bindings for llvm-core/clang"
+HOMEPAGE="https://llvm.org/"
+
+LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
+SLOT="0"
+IUSE="test"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+# The module is opening libclang.so directly, and doing some blasphemy
+# on top of it.
+DEPEND="
+ >=llvm-core/clang-${PV}:*
+ !llvm-core/llvm:0[clang(-),python(-)]
+ !llvm-core/clang:0[python(-)]
+"
+RDEPEND="
+ ${DEPEND}
+ ${PYTHON_DEPS}
+"
+BDEPEND="
+ ${PYTHON_DEPS}
+ test? (
+ llvm-core/clang:${LLVM_MAJOR}
+ )
+"
+
+LLVM_COMPONENTS=( clang/bindings/python )
+llvm.org_set_globals
+
+python_test() {
+ # tests rely on results from a specific clang version, so override
+ # the search path
+ local -x CLANG_LIBRARY_PATH=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/$(get_libdir)
+ local -x CLANG_NO_DEFAULT_CONFIG=1
+ "${EPYTHON}" -m unittest discover -v || die "Tests fail with ${EPYTHON}"
+}
+
+src_test() {
+ python_foreach_impl python_test
+}
+
+src_install() {
+ python_foreach_impl python_domodule clang
+}
diff --git a/dev-python/coverage/Manifest b/dev-python/coverage/Manifest
index 3f0639df98dd..15127ce82e80 100644
--- a/dev-python/coverage/Manifest
+++ b/dev-python/coverage/Manifest
@@ -1,2 +1,4 @@
DIST coverage-7.6.10.tar.gz 803868 BLAKE2B 88ab379f33ca3056b03020befa56406b3e4d8ce57f9152abddefbf77186dbccd993e855078ea6f61ed2da3d198aab9b63e65fb9db3789a80bb080b1907e9de80 SHA512 3badf42f8f1f1dc19ff7dd7cca7fe57cd738364fea71b1fee52ec7774fbebd2bb241154d2ca06adb6ed87766179bcf0b6eb9a5120af5ec8f3df7b6fd0c27fa02
+DIST coverage-7.6.11.tar.gz 805460 BLAKE2B f035dfb27242926727875a806acd6725720d8828de0285cdcdc3aac406395b2648b00c75b206338ff282d0c98e70d2abf4fc13c4a1862317c7fd88c5d83de1b4 SHA512 83ce4fd99900bb4902fc25ecf386e0128f0c073f5c1ce3403149e175d8a55b177209c9413ae33b1ab3d2f6decdd4614f5a5a3c3f36d326cfc0d62c13e64d1250
+DIST coverage-7.6.12.tar.gz 805941 BLAKE2B bebcd2f29706445ac73ca1e1ba7a80b88eb7b71ee0f475ea6fe4d7e2bd535b709af6cc5e1dda9734e9487cdcf8d3b6f24c96eb2e7161a9d8356afe733b162339 SHA512 6f5f089938b0d107796ec7f5eb62047533bb45377612845cc044f44ceb10285252783d5ad1aefde698374d8330c012ff59007d21b00e4cee79c268fac70f6a71
DIST coverage-7.6.9.tar.gz 801710 BLAKE2B ac3a28d939e5ad7af341e8ef6ac2021ce9aad14117a4f6a31ae68432a0d55c2721c0f99a5e4fec40d4f2bf293e1cd549533643d3f1d6dd20997955614c7eb987 SHA512 ee2e3f93dfd723dabe3c88bac888c056f8dabc890d9078c49393d01c21522d946f7f6d50565a978dfc1d5b8009eca612d9a102a86f568689adc85df8478ecb8c
diff --git a/dev-python/coverage/coverage-7.6.11.ebuild b/dev-python/coverage/coverage-7.6.11.ebuild
new file mode 100644
index 000000000000..bba747e1e72a
--- /dev/null
+++ b/dev-python/coverage/coverage-7.6.11.ebuild
@@ -0,0 +1,111 @@
+# 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_{10..13} pypy3 )
+PYTHON_REQ_USE="threads(+),sqlite(+)"
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Code coverage measurement for Python"
+HOMEPAGE="
+ https://coverage.readthedocs.io/en/latest/
+ https://github.com/nedbat/coveragepy/
+ https://pypi.org/project/coverage/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+IUSE="native-extensions"
+
+RDEPEND="
+ $(python_gen_cond_dep '
+ dev-python/tomli[${PYTHON_USEDEP}]
+ ' 3.10)
+"
+BDEPEND="
+ test? (
+ dev-python/flaky[${PYTHON_USEDEP}]
+ dev-python/hypothesis[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ >=dev-python/unittest-mixins-1.4[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ sed -i -e '/addopts/s:-q -n auto::' pyproject.toml || die
+ distutils-r1_src_prepare
+}
+
+python_compile() {
+ if ! use native-extensions; then
+ local -x COVERAGE_DISABLE_EXTENSION=1
+ fi
+
+ distutils-r1_python_compile
+}
+
+test_tracer() {
+ local -x COVERAGE_CORE=${1}
+ einfo " Testing with the ${COVERAGE_CORE} core ..."
+ epytest -p flaky -p hypothesis -p xdist tests
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # TODO: fails because of additional "Terminated" print on SIGTERM
+ tests/test_concurrency.py::SigtermTest::test_sigterm_threading_saves_data
+ # broken because of pytest plugins explicity loaded
+ tests/test_debug.py::ShortStackTest::test_short_stack{,_skip}
+ # these expect specific availability of C extension matching
+ # COVERAGE_CORE (which breaks testing pytracer on CPython)
+ tests/test_cmdline.py::CmdLineStdoutTest::test_version
+ tests/test_debug.py::DebugTraceTest::test_debug_sys_ctracer
+ # mismatch of expected concurrency in error message
+ # TODO: report upstream?
+ tests/test_concurrency.py::ConcurrencyTest::test_greenlet
+ tests/test_concurrency.py::ConcurrencyTest::test_greenlet_simple_code
+ )
+ local EPYTEST_IGNORE=(
+ # pip these days insists on fetching build deps from Internet
+ tests/test_venv.py
+ )
+
+ "${EPYTHON}" igor.py zip_mods || die
+
+ local -x COVERAGE_TESTING=True
+ # TODO: figure out why they can't be imported inside test env
+ local -x COVERAGE_NO_CONTRACTS=1
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+
+ local prev_opt=$(shopt -p nullglob)
+ shopt -s nullglob
+ local c_ext=( "${BUILD_DIR}/install$(python_get_sitedir)"/coverage/*.so )
+ ${prev_opt}
+
+ if [[ -n ${c_ext} ]]; then
+ cp "${c_ext}" coverage/ || die
+ test_tracer ctrace
+ fi
+
+ test_tracer pytrace
+
+ case ${EPYTHON} in
+ python3.1[01]|pypy3)
+ ;;
+ *)
+ # available since Python 3.12
+ test_tracer sysmon
+ ;;
+ esac
+
+ if [[ -n ${c_ext} ]]; then
+ rm coverage/*.so || die
+ fi
+}
diff --git a/dev-python/coverage/coverage-7.6.12.ebuild b/dev-python/coverage/coverage-7.6.12.ebuild
new file mode 100644
index 000000000000..bba747e1e72a
--- /dev/null
+++ b/dev-python/coverage/coverage-7.6.12.ebuild
@@ -0,0 +1,111 @@
+# 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_{10..13} pypy3 )
+PYTHON_REQ_USE="threads(+),sqlite(+)"
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Code coverage measurement for Python"
+HOMEPAGE="
+ https://coverage.readthedocs.io/en/latest/
+ https://github.com/nedbat/coveragepy/
+ https://pypi.org/project/coverage/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+IUSE="native-extensions"
+
+RDEPEND="
+ $(python_gen_cond_dep '
+ dev-python/tomli[${PYTHON_USEDEP}]
+ ' 3.10)
+"
+BDEPEND="
+ test? (
+ dev-python/flaky[${PYTHON_USEDEP}]
+ dev-python/hypothesis[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ >=dev-python/unittest-mixins-1.4[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ sed -i -e '/addopts/s:-q -n auto::' pyproject.toml || die
+ distutils-r1_src_prepare
+}
+
+python_compile() {
+ if ! use native-extensions; then
+ local -x COVERAGE_DISABLE_EXTENSION=1
+ fi
+
+ distutils-r1_python_compile
+}
+
+test_tracer() {
+ local -x COVERAGE_CORE=${1}
+ einfo " Testing with the ${COVERAGE_CORE} core ..."
+ epytest -p flaky -p hypothesis -p xdist tests
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # TODO: fails because of additional "Terminated" print on SIGTERM
+ tests/test_concurrency.py::SigtermTest::test_sigterm_threading_saves_data
+ # broken because of pytest plugins explicity loaded
+ tests/test_debug.py::ShortStackTest::test_short_stack{,_skip}
+ # these expect specific availability of C extension matching
+ # COVERAGE_CORE (which breaks testing pytracer on CPython)
+ tests/test_cmdline.py::CmdLineStdoutTest::test_version
+ tests/test_debug.py::DebugTraceTest::test_debug_sys_ctracer
+ # mismatch of expected concurrency in error message
+ # TODO: report upstream?
+ tests/test_concurrency.py::ConcurrencyTest::test_greenlet
+ tests/test_concurrency.py::ConcurrencyTest::test_greenlet_simple_code
+ )
+ local EPYTEST_IGNORE=(
+ # pip these days insists on fetching build deps from Internet
+ tests/test_venv.py
+ )
+
+ "${EPYTHON}" igor.py zip_mods || die
+
+ local -x COVERAGE_TESTING=True
+ # TODO: figure out why they can't be imported inside test env
+ local -x COVERAGE_NO_CONTRACTS=1
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+
+ local prev_opt=$(shopt -p nullglob)
+ shopt -s nullglob
+ local c_ext=( "${BUILD_DIR}/install$(python_get_sitedir)"/coverage/*.so )
+ ${prev_opt}
+
+ if [[ -n ${c_ext} ]]; then
+ cp "${c_ext}" coverage/ || die
+ test_tracer ctrace
+ fi
+
+ test_tracer pytrace
+
+ case ${EPYTHON} in
+ python3.1[01]|pypy3)
+ ;;
+ *)
+ # available since Python 3.12
+ test_tracer sysmon
+ ;;
+ esac
+
+ if [[ -n ${c_ext} ]]; then
+ rm coverage/*.so || die
+ fi
+}
diff --git a/dev-python/cppy/Manifest b/dev-python/cppy/Manifest
index 343ea6fef076..af18fd2fcb2a 100644
--- a/dev-python/cppy/Manifest
+++ b/dev-python/cppy/Manifest
@@ -1 +1,2 @@
DIST cppy-1.3.0.tar.gz 18367 BLAKE2B 8b58058d6a2bbc4f350ef71305fb57d94eaead322be756d508aca95b525c284988ef218bf2d84b33d39656ad242d2f5142aa886bd212ef9b2817962393b1792a SHA512 e0beabb70e91af9e10be25e3bb9b1f6838a82995a3741f30b73889f449c5160543bfc4afc02743d2a62fc3483445de0a04b0ed7be51eb308f34cd4582050ad05
+DIST cppy-1.3.1.tar.gz 18699 BLAKE2B 88f0f2c92f1cfddaba816b761e9c7a7203da79f35b552284d3d3ce221bcbff9b47d5a58fcdd99f86902afcb7958ae5bd474488286232b9cb39825cfb5ea610ab SHA512 be5c9ee231958c6cd46a33868ca8aceb11df5648767e3abb7bf2ad9d37f2e7d37fc12966e1ab08bb36ce149be673c54f5bcb4ea82d0aad674b769bb29c287eab
diff --git a/dev-python/cppy/cppy-1.3.1.ebuild b/dev-python/cppy/cppy-1.3.1.ebuild
new file mode 100644
index 000000000000..c912a44178dd
--- /dev/null
+++ b/dev-python/cppy/cppy-1.3.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_{10..13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="C++ header library which makes it easier to write Python extension modules"
+HOMEPAGE="
+ https://github.com/nucleic/cppy/
+ https://pypi.org/project/cppy/
+"
+
+LICENSE="BSD"
+SLOT="0"
+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}]
+"
+BDEPEND="
+ ${RDEPEND}
+"
+
+distutils_enable_tests pytest
diff --git a/dev-python/cramjam/cramjam-2.9.1.ebuild b/dev-python/cramjam/cramjam-2.9.1.ebuild
index 78e0d6ade615..de7d6c48454b 100644
--- a/dev-python/cramjam/cramjam-2.9.1.ebuild
+++ b/dev-python/cramjam/cramjam-2.9.1.ebuild
@@ -130,7 +130,7 @@ LICENSE+="
Unicode-3.0
"
SLOT="0"
-KEYWORDS="amd64 ~arm ~arm64 ~riscv ~sparc ~x86"
+KEYWORDS="amd64 ~arm ~arm64 ~riscv ~sparc x86"
DEPEND="
app-arch/bzip2:=
diff --git a/dev-python/cryptography/Manifest b/dev-python/cryptography/Manifest
index 371f4475de6c..7464f1deb397 100644
--- a/dev-python/cryptography/Manifest
+++ b/dev-python/cryptography/Manifest
@@ -11,8 +11,10 @@ DIST cc-1.2.1.crate 92731 BLAKE2B c9cb100964834692781ecc3f47972f83adaf27e019ca21
DIST cfg-if-1.0.0.crate 7934 BLAKE2B e99a5589c11d79d77a4537b34ce0a45d37b981c123b79b807cea836c89fc3926d693458893baca2882448d3d44e3f64e06141f6d916b748daa10b8cc1ae16d1b SHA512 0fb16a8882fd30e86b62c5143b1cb18ab564e84e75bd1f28fd12f24ffdc4a42e0d2e012a99abb606c12efe3c11061ff5bf8e24ab053e550ae083f7d90f6576ff
DIST cryptography-43.0.3.tar.gz 686989 BLAKE2B 60efc12c020563aa0d229941d237a39e7d7243045433c7c4cf4c57a8f031569d32bfcd0e43316dd9eb3d6dd3b4e6ad8106b7bdca53c2e6c4ebb094391759da66 SHA512 965ecdbdac09ba4cf3d3289cb7f0997bfb9abd61aa663554f27651328e5da1c92edadba521b1bf779e245255e5db3da7ea8092496f845b73278ffcdd91076bbc
DIST cryptography-44.0.0.tar.gz 710657 BLAKE2B fa9d89d143e6dc84d9335cae1a38493616a5ca29ac71811c636fed961eec3311e9cabd08d7187ea05588cb2d0947509ceb028922ac13796e6160aaf991e41523 SHA512 d0aaa2160a31079412ddb7be07fd170c7e54736c315b6fbb6ee5264af0eb90be392ecd1c0e3bfb4ea071c0153ad8f47604bd6b28d4297cd9774dc55647b4e97e
+DIST cryptography-44.0.1.tar.gz 710819 BLAKE2B 8c6b072b4dd59d9c5698ce07da336b51759d0b98421e0767bf92c73bffc7590b1d6ce7288683305b8724755a86df115bcfde8e34dd02bedfc90730f360c01b3d SHA512 f45bebc4e92d140859f4b5c3e505c17f5b607b5fe62eed45dd4df3981d2a20a74c192d885336a47e4f3bc6e1ed785cf3a3430f81ed14fcd89a3c750d4aae10f3
DIST cryptography_vectors-43.0.3.tar.gz 35306415 BLAKE2B daf21d6bc7ba81bac2b38e0459c104117c17c3b5c6d74c3f0ba5c0da961999bc2f0fc0a088e6d3498960de70b2862867c6dd10b6e05db99352c0adc9d65104f8 SHA512 7ffbf439b84ea85a8178f6b41a349c8d3ba6586cf6513a6b13d01f55bc0fa8bb5635de2ee9afd334c5660c60cd2fc286f85b2c9c364b6e85bf4164c32fb6ca7e
DIST cryptography_vectors-44.0.0.tar.gz 35317300 BLAKE2B 3c0fc56d39447f2fbb06ffcaac82aec242e50a0341c9599c64b649ab5cf97fec740db8625269d5130a2bf20b1d34ef84b07ed451f5b221eab1acd0fee076dab1 SHA512 e6c37d7fc78c22292c04e7e6a83a5438baa13a30f724fe8bb7b72e6caf9d75a2130537e75a803c309da00f4ce30dc55a7f737415740741f384953f443c3eaf1c
+DIST cryptography_vectors-44.0.1.tar.gz 35317778 BLAKE2B e6e9b1b2db108aac983ef78fab31ed0ed12257d774d5d4e8fb742dc856543992f66db7c7ac5190f74aa176272b1337131ace70e89d0b0552f26432309c2727f1 SHA512 60d4aefc3aa7d18183993d96e203e7e94f323359a9f0824e9367548a1c33bd96982b6e619310a565290b5d1109e8310127f52c6478b392859788ba27fa6415b9
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
@@ -35,14 +37,19 @@ DIST proc-macro2-1.0.86.crate 48958 BLAKE2B 4b89e07f23af8328dbb34fe2b3f1b202f1e6
DIST proc-macro2-1.0.92.crate 52353 BLAKE2B 9aa29fa6f1c56c0392a94a81b4c61953f4d185012cdca37e356817845535da79d7094bf43472ce63109ce479a2fd0cbef4d802afd61daf92c4db303bcac60e7e SHA512 e614f08acc0a7e97ef580479cf5b682378df1ca16f09bfb2296ebb3490a435229dea9d682c621c54ce57e8e1d3b7803eb8ff83c88bd02e07228dba6d02f14aee
DIST pyo3-0.22.2.crate 538342 BLAKE2B faf347695117f9fe0ebe5cd7f6aa1b0dcfe718343875d6c06438046deccc1075f104d2a2413dcda41ae9827bc363aa147057b45968f6634f577a6a4510a4bb8e SHA512 e8bae09059f50ffe477dad44499cedeaf3a734665f0fd8e8bd4b44f48578d21e4bdb8d55ceea00c5a27da750761842ddf89cfcecdecb2e7a4a17ab192259be9c
DIST pyo3-0.23.2.crate 1073639 BLAKE2B 01ddd26a4e347f3b6d7fee215a1894e779167730710373d59712f2119332fcf287d9c0e75d3d28baff8cf5000afb9d0e577947a26bdd8828428d33aa0f8be537 SHA512 b2b40809e1f26978c140b7ca4ecebb661a47fc01cd03fcd5c486076576c9b229de04f15ed55661db4e26545cb29110f1034a185abb623e4bf7fbb69188db335c
+DIST pyo3-0.23.4.crate 1087676 BLAKE2B 2c7d3530460ff687e8f60dcff0fb01465b2a4642043ebdfc927fc3824b9fbce9c4b304250808a85405d21df12d17a1d1ada7bdf8f3563710692f22223e2732f1 SHA512 0015aa75163ad0ec026d185e15c26f59aaad0eb3cc3044b146e5d703bb375fcd838df2044febbd52e6e129dfba81c8249329fc3e4805695274dac7a69eee0651
DIST pyo3-build-config-0.22.2.crate 31225 BLAKE2B c2e6a3d3d23b7f2f51bcbf1214ab20a298a1e62f85c9af3dab1e77b09f20b657b576feefffb18eb49d438f0ffab525b6bcd1086d500601c327ffd4fd24a719ee SHA512 644c82d30bb27051557efcc9789a81380a64e29bc62abf97de88f42c3791dac74228c7a7d09e0d46d14f07c0475f0bc03fac6ed1367b9a616153e8820b94cbc8
DIST pyo3-build-config-0.23.2.crate 32197 BLAKE2B 393c76b1dcb625145673736272d4cb9d96a02df87ddcc385316652f0ff1b5595a34ebe5d789f61888c2fd82de05476c85f781d21018bd99cb630fa634afee203 SHA512 29678272073e896cb0b65efb0eaba40c82977b18efd389597aef8902e32daff51f2609c6be93ecfe0336260446c3186951f770ff449823cdde5a0518a1585c81
+DIST pyo3-build-config-0.23.4.crate 33885 BLAKE2B 7f95a8a9e08d413899ff1fa64af5a52783bad4a7b4db92835464f12bd8565f152497aaeb45d25cc91eed73950abeea30ca4c7495e3b15423ae588b97038beb18 SHA512 b11442609f43d9baab79daf083caf0366987f6ae182239814ad6df6fe4ad31b95132d74f1162fa9428d229bd8c18ef9b696a4c3329b3960fd705d1705fc5e973
DIST pyo3-ffi-0.22.2.crate 67749 BLAKE2B 0a4357d5f4fbcab9717d58b7a80b63a63bc329267d4725136c4eac7c0101095a50e5f840638dde79034e5df99c4f46664cfdc2ad437837643db5d475c5705cb3 SHA512 bf8b83b4790832d99de8c6a61a15a43fc189505dd843011933305f7f93c4f5f4849fb00cc2a6fa410b788645f8ed8c0df61799cf801966a925abb9756b1ab579
DIST pyo3-ffi-0.23.2.crate 74052 BLAKE2B 085c66bae61e6059331813be77a1e4f850c4b8b12ac60b03188f2a009c9f58e062dc3ea2b9e470a480956bb8cbef645f95e53fae2638d59ebf5039aa5d41d504 SHA512 e228e473da98ce0fe4f15cf840ba1f51f66bb6fd103a7c0bb76b3218980c93b45ecf691f712333f4a27a9efc76517a85f6e13d5e9650b774eadebf59a647e493
+DIST pyo3-ffi-0.23.4.crate 74806 BLAKE2B 650784d46347c00f09c010c39e9762f778efc510ad0b99b5ddf30cab18edaba552207339ad44ed4ae6d87ddfcc56fa540a17e3a4cb331905a0988d5ba2dc682a SHA512 c12097292b4620f4fd98d61fde4a0f0c7d423a94d518fa5b1cf759089b066fede6d83e20171acc2aa7bf268de5700c9b59da32131216734626b0fa5cd5651801
DIST pyo3-macros-0.22.2.crate 8136 BLAKE2B 9dc97d2f60581db1b8ddb562dac917069525f297fe2cbb9aff3ed34d5a08ea43c112c9c7a450539da3536d753778b5ca506dd1b18e1d6b8a3649fc098e7af439 SHA512 f4f4f6af8dc3aa4bcc1698661990ab2112391ef9502e9f71d86e35bd10dc4e1be309102ebb1b7b32751817a6033168dc0486fdb16b35c626101e69f0de807a4a
DIST pyo3-macros-0.23.2.crate 8056 BLAKE2B a87c4b8aab972eaf5e9b941db34e18be411bed8b5753d3e2d3f65e4a18723a72e70858bb34e8db949f0c6b748e122fed41e9c78f6c20150077fcc3c4eb0026ba SHA512 dba0b5bd212b6a5f38d6fc93183c8ab80bb53bfa5f03d471897014f2d3d1959804e5fdbc817845c1cef797f314b924d58eff95cfcb848eb98b283e104d24637c
+DIST pyo3-macros-0.23.4.crate 8852 BLAKE2B ba5722fd52e47aa4dc2e89bacd69326bd98943a1670ebeab08a2e9e8070a0975ebbe928a0bce8b53a700b65294fee2b00d2a1e6623a0c48ac15902cdbfcb7a97 SHA512 c36c9005db5a4b48b5fda881130f4e7da8eef46e2c363c395ccca3fe476e0204d98c2a832cd03c787fb37a2664fadd42bf8f47de71eb44d055754ab5766af934
DIST pyo3-macros-backend-0.22.2.crate 65620 BLAKE2B 37fba9ff384373418d3a7341acafb8e33308a64e30026f828693a37c32ab4a74d058f2db84d00467a20f9f267c96fe54c0f154d1ebbae92490e8dfc0d29c042f SHA512 0517080c0d5d4ed8136521fd37aa3a192c2eb8cab58545d8543ee4df9cd0dcea19fe0678d5ab90f05fe3eb0f4a86fc2f07b76f2e12ac1fcf7e7c195c2ffa4fd8
DIST pyo3-macros-backend-0.23.2.crate 70067 BLAKE2B 905c0e6e5ca0c0a91af8386a632cc81f4a9b08a51a22a260188078abf9ee70d60f77e2fc0df09483d8dc6b37cd455a23b7f70f41ee74a2ad9dd0dbef39cc22c2 SHA512 dc3f8780c09c63c0e0d4f26c29a9a4e29e4fc9f14254ac8a942235e480a3f4bfa3bf073d3011e043b6c22e1999d1f68bf7b0fdf212e9edb4bfb2396a97ab0ee1
+DIST pyo3-macros-backend-0.23.4.crate 70912 BLAKE2B a428c732f0b17d9a8f620d0e8d58469f2cba339c8a8307393ce252a7860808e5d50e6bbf711cafd0635c844f4b1d48e57db4dd99ef7b5e3d97d6f760164278e9 SHA512 2fe670fbf35724f489cc82f38d3f7c1e6aa15b087a2674b7a68b562572f9bb00cbb7746cccfcb62d0861a18f6d24c5739273c8302d1662a161142f4a6b532b6f
DIST quote-1.0.36.crate 28507 BLAKE2B b93495163ed205e33543ed45f084870240d479071d643704b6e348fb9ada6e1d8401893c13348b9964f4b6b17ddb96cb5458eec540f0d761655fcb96a4cd9129 SHA512 f1f002a912692f7ffd4912ca980ec57ff4aca3a7d9e2e42e9e3409e2105c9f59d86c05719f6af309bccaef2f8843b0848a6e3afda3356e045d8e7cc5956ae685
DIST quote-1.0.37.crate 28558 BLAKE2B a7d007a69e619f853af94333e1066bb767013312bd99f147b1b153611242bcfa9c76768b1ba47278589db309a9acd61a772c8ec3b567e48439bb9d831f9326d4 SHA512 c4ed21428c1f89cf22b85d80720a7869831a9c129d694617b0ce8c258278114ab98846f3f653abf736d1c86bc9224bbd695e9a7b06aa3adf292d02e1ef14cc05
DIST self_cell-1.0.4.crate 15220 BLAKE2B 9a617058652ab2a2e92434b6eef58a813ce0be5afed9525c4d4c819c25c7cd87aaa12d129c8c4ca9d74c3ea33d81e9dd295f121887070364185b9ab33021544c SHA512 042467e5f3ac0305e2a634df0b9a9379e92b54813e05c3a7652d5327a4a9a784f49e897c968c5c7a87017284d42a889b5420ad18e97ea84183e0283a46dc907a
diff --git a/dev-python/cryptography/cryptography-44.0.1.ebuild b/dev-python/cryptography/cryptography-44.0.1.ebuild
new file mode 100644
index 000000000000..202cbda6084a
--- /dev/null
+++ b/dev-python/cryptography/cryptography-44.0.1.ebuild
@@ -0,0 +1,135 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CARGO_OPTIONAL=yes
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=maturin
+PYTHON_COMPAT=( python3_{10..13} pypy3 )
+PYTHON_REQ_USE="threads(+)"
+
+CRATES="
+ asn1@0.20.0
+ asn1_derive@0.20.0
+ autocfg@1.4.0
+ base64@0.22.1
+ bitflags@2.6.0
+ cc@1.2.1
+ cfg-if@1.0.0
+ foreign-types-shared@0.1.1
+ foreign-types@0.3.2
+ heck@0.5.0
+ indoc@2.0.5
+ itoa@1.0.14
+ libc@0.2.166
+ memoffset@0.9.1
+ once_cell@1.20.2
+ openssl-macros@0.1.1
+ openssl-sys@0.9.104
+ openssl@0.10.68
+ pem@3.0.4
+ pkg-config@0.3.31
+ portable-atomic@1.10.0
+ proc-macro2@1.0.92
+ pyo3-build-config@0.23.4
+ pyo3-ffi@0.23.4
+ pyo3-macros-backend@0.23.4
+ pyo3-macros@0.23.4
+ pyo3@0.23.4
+ quote@1.0.37
+ self_cell@1.0.4
+ shlex@1.3.0
+ syn@2.0.89
+ target-lexicon@0.12.16
+ unicode-ident@1.0.14
+ unindent@0.2.3
+ vcpkg@0.2.15
+"
+
+inherit cargo distutils-r1 flag-o-matic multiprocessing pypi
+
+VEC_P=cryptography_vectors-$(ver_cut 1-3)
+DESCRIPTION="Library providing cryptographic recipes and primitives"
+HOMEPAGE="
+ https://github.com/pyca/cryptography/
+ https://pypi.org/project/cryptography/
+"
+SRC_URI+="
+ ${CARGO_CRATE_URIS}
+ test? (
+ $(pypi_sdist_url cryptography_vectors "$(ver_cut 1-3)")
+ )
+"
+
+LICENSE="|| ( Apache-2.0 BSD ) PSF-2"
+# Dependent crate licenses
+LICENSE+="
+ Apache-2.0 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"
+
+RDEPEND="
+ >=dev-libs/openssl-1.0.2o-r6:0=
+ $(python_gen_cond_dep '
+ >=dev-python/cffi-1.8:=[${PYTHON_USEDEP}]
+ ' 'python*')
+"
+DEPEND="
+ ${RDEPEND}
+"
+
+BDEPEND="
+ ${RUST_DEPEND}
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ test? (
+ dev-python/certifi[${PYTHON_USEDEP}]
+ >=dev-python/hypothesis-1.11.4[${PYTHON_USEDEP}]
+ dev-python/iso8601[${PYTHON_USEDEP}]
+ dev-python/pretend[${PYTHON_USEDEP}]
+ dev-python/pyasn1-modules[${PYTHON_USEDEP}]
+ dev-python/pytest-subtests[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ dev-python/pytz[${PYTHON_USEDEP}]
+ )
+"
+
+# Files built without CFLAGS/LDFLAGS, acceptable for rust
+QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/cryptography/hazmat/bindings/_rust.*.so"
+
+distutils_enable_tests pytest
+
+src_unpack() {
+ cargo_src_unpack
+}
+
+src_prepare() {
+ default
+
+ sed -i -e 's:--benchmark-disable::' pyproject.toml || die
+
+ # work around availability macros not supported in GCC (yet)
+ if [[ ${CHOST} == *-darwin* ]] ; then
+ local darwinok=0
+ if [[ ${CHOST##*-darwin} -ge 16 ]] ; then
+ darwinok=1
+ fi
+ sed -i -e 's/__builtin_available(macOS 10\.12, \*)/'"${darwinok}"'/' \
+ src/_cffi_src/openssl/src/osrandom_engine.c || die
+ fi
+}
+
+python_configure_all() {
+ filter-lto # bug #903908
+
+ export UNSAFE_PYO3_SKIP_VERSION_CHECK=1
+}
+
+python_test() {
+ local -x PYTHONPATH="${PYTHONPATH}:${WORKDIR}/cryptography_vectors-${PV}"
+ local EPYTEST_IGNORE=(
+ tests/bench
+ )
+ epytest -n "$(makeopts_jobs)"
+}
diff --git a/dev-python/cwcwidth/Manifest b/dev-python/cwcwidth/Manifest
index 5d251947cc43..6a46a5deef0b 100644
--- a/dev-python/cwcwidth/Manifest
+++ b/dev-python/cwcwidth/Manifest
@@ -1 +1,2 @@
+DIST cwcwidth-0.1.10.gh.tar.gz 14158 BLAKE2B 8e375ef486496ca5d422d833eea6fecaf881f898580d5130c485f2c3881434dc8d51aca1803fff8fd08c09a468290a0810a7c3031ca0e7648dc4970c27999e73 SHA512 eb4321ca49b997feb5c5442c98730610dcfbc8b0e8f5397f3c5b08f51b84ee6248577a0b81d79db83115d1f91751dbfb0cc35f3551099b0b02270cee1226985d
DIST cwcwidth-0.1.9.gh.tar.gz 11472 BLAKE2B 70308dcca8ea0c5cbc76726e58ef8a8b2b4bd015411753e91370a34cb600aeb15fdddc537561b0a2e5f7338e77b6a1e2a30207cbcd92d14c60a8b8bfd87ea51f SHA512 f3911fc1a32bb3739ef81d0dfb61b47de8ab62ad26f9f3c361c458b6cb0e4000a5625969972fce09e7906fd35c7ddf7bd7f6b9bcc8efd799433282bdb326969d
diff --git a/dev-python/cwcwidth/cwcwidth-0.1.10.ebuild b/dev-python/cwcwidth/cwcwidth-0.1.10.ebuild
new file mode 100644
index 000000000000..4c6e7625c942
--- /dev/null
+++ b/dev-python/cwcwidth/cwcwidth-0.1.10.ebuild
@@ -0,0 +1,35 @@
+# 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_{10..13} )
+
+inherit distutils-r1
+
+DESCRIPTION="Python bindings for wc(s)width"
+HOMEPAGE="
+ https://github.com/sebastinas/cwcwidth/
+ https://pypi.org/project/cwcwidth/
+"
+SRC_URI="
+ https://github.com/sebastinas/cwcwidth/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+
+BDEPEND="
+ >=dev-python/cython-3[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests unittest
+
+src_test() {
+ cd tests || die
+ distutils-r1_src_test
+}
diff --git a/dev-python/cypari2/Manifest b/dev-python/cypari2/Manifest
index 54b933892f6c..cf19746cdd96 100644
--- a/dev-python/cypari2/Manifest
+++ b/dev-python/cypari2/Manifest
@@ -1,2 +1 @@
-DIST cypari2-2.2.0.tar.gz 127530 BLAKE2B 0ce2e3f157d63c20a257b3b7eaf9a06bf241893193bd561c8980ecb38e698b2ca6679a74958a2398944753e6445c1ab5b063b14e408ef0395a9eaf9e0d7cc8db SHA512 5ba237feb1910bd7182a3c3e8e1409209d4f6e68c9f8966c3bd0ad2f6e66193b4dc3006f26fcb507cac7e6d1ee32ec6d5dda612290d8bd3b3350c8243dd89616
DIST cypari2-2.2.1.tar.gz 127323 BLAKE2B 8dc382c54516482516388cdb98ff026938f87fb0b93cddc32ddc0bd6feca2dfd7983cabd0a2c9730bbe5f8eb189a23f4386bbe6325916e505fedfc10052e56e1 SHA512 b5b5c32a321cc8c58f44f9aecabf0a2ece5332596903a98bc6299c3598a247d994b4368318e57ae52e6768dcb1bdb95f152d31f1df378088d3412e22e979341b
diff --git a/dev-python/cypari2/cypari2-2.2.0.ebuild b/dev-python/cypari2/cypari2-2.2.0.ebuild
deleted file mode 100644
index eacae043f849..000000000000
--- a/dev-python/cypari2/cypari2-2.2.0.ebuild
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..12} )
-DISTUTILS_USE_PEP517=standalone
-DISTUTILS_EXT=1
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Cython interface to PARI"
-HOMEPAGE="https://github.com/sagemath/cypari2"
-
-LICENSE="GPL-2+"
-SLOT="0"
-KEYWORDS="amd64 ~riscv"
-
-DEPEND="sci-mathematics/pari[gmp,doc]
- dev-python/cysignals[${PYTHON_USEDEP}]"
-RDEPEND="${DEPEND}"
-BDEPEND=">=dev-python/cython-3[${PYTHON_USEDEP}]"
-
-PATCHES=( "${FILESDIR}/${P}-regen-bindings-for-each-python.patch" )
-
-python_test(){
- cd "${S}"/tests || die
- "${EPYTHON}" rundoctest.py || die
-}
-
-python_install() {
- distutils-r1_python_install
- python_optimize
-}
diff --git a/dev-python/cypari2/cypari2-2.2.1.ebuild b/dev-python/cypari2/cypari2-2.2.1.ebuild
index 522686d8c0bb..8fc1e5e31bf0 100644
--- a/dev-python/cypari2/cypari2-2.2.1.ebuild
+++ b/dev-python/cypari2/cypari2-2.2.1.ebuild
@@ -14,7 +14,7 @@ HOMEPAGE="https://github.com/sagemath/cypari2"
LICENSE="GPL-2+"
SLOT="0"
-KEYWORDS="~amd64 ~riscv"
+KEYWORDS="amd64 ~riscv"
DEPEND=">=sci-mathematics/pari-2.17.1:=[gmp,doc]
dev-python/cysignals[${PYTHON_USEDEP}]"
diff --git a/dev-python/cython/Manifest b/dev-python/cython/Manifest
index a0bb0e03c62c..a572f678c494 100644
--- a/dev-python/cython/Manifest
+++ b/dev-python/cython/Manifest
@@ -1 +1,2 @@
DIST cython-3.0.11.gh.tar.gz 2775463 BLAKE2B f5f53c328a1b48b04548f1ee7be3988451d2a8e339b785285e2d973e63b37dabc6021f32ba1691ae8dbe9ee7706a5feda399b071b4893a3be4fe4afcd608f46b SHA512 8f7982af5be1db1072b1090257a9d487dc341d79522f442f4608303d18b388349a7d586ec74e66fbffd0ce88c00ca622202729907fe7cefef71828cfd3f68fe6
+DIST cython-3.0.12.gh.tar.gz 2777066 BLAKE2B 3e2730b7b0ef90ba6a7d4a510dbaa24b7c966d68c397196727b6d63b435c6775aa818a7d1b741819a7940ad44cadbc83be4aa48117b2dcf7bd844f4c9bc268bc SHA512 bbf2cc662b846cf5ff9b686046ec210ea9d3893482e2b5a2696d2ad44f12facd15075b168a3eb6d1f4ea799786f676868eab2593451bceb2937aec2cb1aea99e
diff --git a/dev-python/cython/cython-3.0.12.ebuild b/dev-python/cython/cython-3.0.12.ebuild
new file mode 100644
index 000000000000..95207449b493
--- /dev/null
+++ b/dev-python/cython/cython-3.0.12.ebuild
@@ -0,0 +1,84 @@
+# 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_TESTED=( python3_{10..12} )
+PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" pypy3 python3_13 )
+PYTHON_REQ_USE="threads(+)"
+
+inherit distutils-r1 multiprocessing toolchain-funcs
+
+MY_P=${P/_rc/rc}
+DESCRIPTION="A Python to C compiler"
+HOMEPAGE="
+ https://cython.org/
+ https://github.com/cython/cython/
+ https://pypi.org/project/Cython/
+"
+SRC_URI="
+ https://github.com/cython/cython/archive/${PV/_rc/rc}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+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 ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ ${RDEPEND}
+ test? (
+ $(python_gen_cond_dep '
+ <dev-python/numpy-2[${PYTHON_USEDEP}]
+ ' "${PYTHON_TESTED[@]}")
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-0.29.22-spawn-multiprocessing.patch"
+ "${FILESDIR}/${PN}-0.29.23-test_exceptions-py310.patch"
+ "${FILESDIR}/${PN}-0.29.23-pythran-parallel-install.patch"
+)
+
+distutils_enable_sphinx docs \
+ dev-python/jinja2 \
+ dev-python/sphinx-issues \
+ dev-python/sphinx-tabs
+
+python_compile() {
+ # Python gets confused when it is in sys.path before build.
+ local -x PYTHONPATH=
+
+ distutils-r1_python_compile
+}
+
+python_test() {
+ if ! has "${EPYTHON/./_}" "${PYTHON_TESTED[@]}"; then
+ einfo "Skipping tests on ${EPYTHON} (xfail)"
+ return
+ fi
+
+ # Needed to avoid confusing cache tests
+ unset CYTHON_FORCE_REGEN
+
+ tc-export CC
+ # https://github.com/cython/cython/issues/1911
+ local -x CFLAGS="${CFLAGS} -fno-strict-overflow"
+ "${PYTHON}" runtests.py \
+ -vv \
+ -j "$(makeopts_jobs)" \
+ --work-dir "${BUILD_DIR}"/tests \
+ --no-examples \
+ --no-code-style \
+ || die "Tests fail with ${EPYTHON}"
+}
+
+python_install_all() {
+ local DOCS=( CHANGES.rst README.rst ToDo.txt USAGE.txt )
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/deepdiff/Manifest b/dev-python/deepdiff/Manifest
index 2786698c40fc..ca7a803cb3d7 100644
--- a/dev-python/deepdiff/Manifest
+++ b/dev-python/deepdiff/Manifest
@@ -1,2 +1,3 @@
DIST deepdiff-8.0.1.tar.gz 427721 BLAKE2B 0725a87ef17f9e1984594ccca7d954d608cfa0a6ea2c17b03d679bf5cd67135a1c5e3f21d749c18f1f91a5537e9ddaf179fb5b0a5ea135776415f5c0d82be274 SHA512 240662fb3e2408383fae4f6d4e5707357285e0058828d754dd09a94d1ccc29b854381a542dc2042842c79a57307b02d9ad009cc3106b35b0058612fabc0bcf96
DIST deepdiff-8.1.1.tar.gz 433560 BLAKE2B 6f3e5b667c20aa0b622a199bce3fd07faf3cdd53ba6acc308c3700091bb9a5309e100517d7b508b94d01430096761f32aff7678452a665bcaea3577d734a7fea SHA512 6869e6e70ecee72073f979d84f28766c1f84b41c49057caa0facebeaf747751f4e2626c886d6f82f8d54a4a7356b0a6a07f979a87716aaccc41a40fe18d9c219
+DIST deepdiff-8.2.0.tar.gz 432573 BLAKE2B 6259761631b7706dc9143e6ff941b79ea956270e332f9c3026e35752ff921647e19ecfa50ca7f68fce40c1f6c9643b3f64f008168dbdca0ffaa322acf9a8a9d8 SHA512 ef1883b5300eba4f99f5fed84fc63c22f5473f1cbc5790cef9c0ce7b1a65c28537756f4266259133a4b808734b2cba295c542630a2f0b8a0e4d8c5b58c14028d
diff --git a/dev-python/deepdiff/deepdiff-8.2.0.ebuild b/dev-python/deepdiff/deepdiff-8.2.0.ebuild
new file mode 100644
index 000000000000..1e3794bf05c7
--- /dev/null
+++ b/dev-python/deepdiff/deepdiff-8.2.0.ebuild
@@ -0,0 +1,53 @@
+# Copyright 2023-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A library for comparing dictionaries, iterables, strings and other objects"
+HOMEPAGE="
+ https://github.com/seperman/deepdiff/
+ https://pypi.org/project/deepdiff/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+ >=dev-python/click-8.1.3[${PYTHON_USEDEP}]
+ <dev-python/orderly-set-6[${PYTHON_USEDEP}]
+ >=dev-python/orderly-set-5.3.0[${PYTHON_USEDEP}]
+ >=dev-python/pyyaml-6.0[${PYTHON_USEDEP}]
+"
+
+DEPEND="
+ test? (
+ >=dev-python/jsonpickle-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/numpy-1.23.5[${PYTHON_USEDEP}]
+ dev-python/pydantic[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ dev-python/tomli-w[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/tomli[${PYTHON_USEDEP}]
+ ' 3.10)
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # benchmarks
+ tests/test_lfucache.py::TestLFUcache::test_lfu
+ # requires polars
+ tests/test_hash.py::TestDeepHashPrep::test_polars
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest
+}
diff --git a/dev-python/dependency-groups/Manifest b/dev-python/dependency-groups/Manifest
new file mode 100644
index 000000000000..dd4c7156be77
--- /dev/null
+++ b/dev-python/dependency-groups/Manifest
@@ -0,0 +1 @@
+DIST dependency_groups-1.3.0.tar.gz 9832 BLAKE2B f13e3fe6a203d883c33a2fc030b553de7d30043eb3160ca76c86acdc4a9f458eea5407ddcad6b600e0cf49e4764b4b8f02034b001bbe42fd16ac966e24eca394 SHA512 8e9af16f869d9b068983a9f17ab8507e1e71c4f67f4f8ef8433b76983bbf22eacf5919f03a85477bcbc5e1e466029ce0942e010cab27e285f9b261a6ab277f6a
diff --git a/dev-python/dependency-groups/dependency-groups-1.3.0.ebuild b/dev-python/dependency-groups/dependency-groups-1.3.0.ebuild
new file mode 100644
index 000000000000..216a729f462b
--- /dev/null
+++ b/dev-python/dependency-groups/dependency-groups-1.3.0.ebuild
@@ -0,0 +1,28 @@
+# Copyright 2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit
+PYTHON_COMPAT=( pypy3 python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A tool for resolving PEP 735 Dependency Group data"
+HOMEPAGE="
+ https://github.com/pypa/dependency-groups/
+ https://pypi.org/project/dependency-groups/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+ dev-python/packaging[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/tomli[${PYTHON_USEDEP}]
+ ' 3.10)
+"
+
+distutils_enable_tests pytest
diff --git a/dev-python/dependency-groups/metadata.xml b/dev-python/dependency-groups/metadata.xml
new file mode 100644
index 000000000000..74c9a4f238ea
--- /dev/null
+++ b/dev-python/dependency-groups/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>python@gentoo.org</email>
+ </maintainer>
+ <stabilize-allarches/>
+ <upstream>
+ <remote-id type="github">pypa/dependency-groups</remote-id>
+ <remote-id type="pypi">dependency-groups</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/dev-python/deprecated/Manifest b/dev-python/deprecated/Manifest
index ad7219832e9f..8b8abe1f059f 100644
--- a/dev-python/deprecated/Manifest
+++ b/dev-python/deprecated/Manifest
@@ -1,3 +1,2 @@
-DIST deprecated-1.2.15.tar.gz 2977612 BLAKE2B b12747c874ac94825dd6c8e2004aa31d4b0b5a7b2f6057951963ba24a26d17fead67ce4283755b3740399e7bb7ed49a7b3ad7b081497e58af80c6454280eefd1 SHA512 03d5eaa2cb881b5b284f9112d15502522887c3beb91a0e8e2868bfd7b7d8ddf0c947937f3b19dd42c8b512ab1e37dc1012f5e0b5d3d374eb7a8718c4b5f214b8
DIST deprecated-1.2.17.tar.gz 2928237 BLAKE2B c957f7d9f033f8068ad3e5e8bd9c5af36b70ff2845636f6f4c0e53b8b3742aa20917e7e7b41ad74089c21b4db9e221b73ebd332bee9e36b4061e17fdbd3e95ff SHA512 d20cbf83622fcd661370ee9b39c3fb4d9f3f5c56a115515eddffd5687d4f304067822c55bcea775b8fa259281b99820327c8ff3fc0a5877db707b3622db64d8b
DIST deprecated-1.2.18.tar.gz 2928744 BLAKE2B e71acf4851015380abf13865096c2be935e0586c09d88d2ee34b27c98ca462619186a098c4f93cfadd65ff1321e65a76b63b820e642720e646aff10398783bbd SHA512 d19abf2ac19e92666cbcca8a20870ba3e69c6dd724c4e527b9b29cd34c4d91a4f703592f3e3d34dab2ae049d8295ad0cb0b2aa98945b1a81be0d557b4e177639
diff --git a/dev-python/deprecated/deprecated-1.2.15.ebuild b/dev-python/deprecated/deprecated-1.2.15.ebuild
deleted file mode 100644
index cec433ffb9a4..000000000000
--- a/dev-python/deprecated/deprecated-1.2.15.ebuild
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2019-2024 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_{10..13} pypy3 )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Python @deprecated decorator to deprecate old API"
-HOMEPAGE="
- https://github.com/laurent-laporte-pro//deprecated/
- https://pypi.org/project/Deprecated/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86"
-
-RDEPEND="
- dev-python/wrapt[${PYTHON_USEDEP}]
-"
-
-distutils_enable_tests pytest
diff --git a/dev-python/deprecated/deprecated-1.2.17.ebuild b/dev-python/deprecated/deprecated-1.2.17.ebuild
index 7ba5e83ec256..e2acc7f3a9f6 100644
--- a/dev-python/deprecated/deprecated-1.2.17.ebuild
+++ b/dev-python/deprecated/deprecated-1.2.17.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/django-cors-headers/Manifest b/dev-python/django-cors-headers/Manifest
index ac4d817b49ab..bf8ecf4c9274 100644
--- a/dev-python/django-cors-headers/Manifest
+++ b/dev-python/django-cors-headers/Manifest
@@ -1,2 +1,2 @@
-DIST django-cors-headers-4.5.0.gh.tar.gz 31156 BLAKE2B 5f3c16c6524bdb5832579d9313863e8df334cfca4fbb2831c9cd813759e5f6b491c3967117bd04775dc42d01ef290f0fe5c36d708ee13b4c3076d4513988e91d SHA512 084a6809bfb8b15fe23b65c1cca52453c94a7f659174bb06c36dbc6ec925638bc4f8e2303d7b3e6ef1e0953815b5caf642a5ae988f8a65b18b278f28d59cd4d0
DIST django-cors-headers-4.6.0.gh.tar.gz 29267 BLAKE2B 23bce012b43d191a6e9e2489529d39385946f4eef353e218f770bb72e65e9d89fd37b7a9b4e39fd138222c6e3145c40a7f9825fd2761d1217929cd55db659156 SHA512 c8148af4127dda25cb8a428330672427d8895ed4f51403f557f955da132012ae809f9c60b40825b0cc414fbd487218228e8f0003b5b7dba413145bcc019de67f
+DIST django-cors-headers-4.7.0.gh.tar.gz 32732 BLAKE2B 77f2052a34d2634c4b25eb5e1bf115cbd84e120f01941e6e0456c2b1ac7c5312731207b534dccb531c3f4d76e2e4a7d4ee088a2477bb185ed2f0b0e2f0302fcc SHA512 9829c36630f15b78e8a32e42a7fb27fe90bf590aca139df8192cae2ac92e68414470c9f185fda147ff15dff41bc86ea1298205d1316ea07c7e5733a70a8e0c6d
diff --git a/dev-python/django-cors-headers/django-cors-headers-4.5.0.ebuild b/dev-python/django-cors-headers/django-cors-headers-4.7.0.ebuild
index cd44aca52d1b..312c56a97674 100644
--- a/dev-python/django-cors-headers/django-cors-headers-4.5.0.ebuild
+++ b/dev-python/django-cors-headers/django-cors-headers-4.7.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
@@ -24,7 +24,7 @@ KEYWORDS="~amd64"
RDEPEND="
>=dev-python/asgiref-3.6[${PYTHON_USEDEP}]
- >=dev-python/django-3.2[${PYTHON_USEDEP}]
+ >=dev-python/django-4.2[${PYTHON_USEDEP}]
"
BDEPEND="
test? (
diff --git a/dev-python/django/Manifest b/dev-python/django/Manifest
index f62242446e1c..ea23fc6d303d 100644
--- a/dev-python/django/Manifest
+++ b/dev-python/django/Manifest
@@ -1,9 +1,15 @@
DIST Django-4.2.18.checksum.txt 2583 BLAKE2B 93f616de52243945fd8498c91dd27c92d10bab4d1782e2fe23f44f86fa9bfd72bc0fa088713948c9efad82bbfc84ee6bf2a981a4c8e8c3dfc7c9e59b9529e6a4 SHA512 a90bbf3e86c072d022cf462b15b69e60dbe2077982131451a105e4e1cac3222bbfba31c06839fdf5880698eef2a8d3a742def2a786a771f06c3a665d8631b2ad
DIST Django-4.2.18.tar.gz 10428204 BLAKE2B 45c2059e89ce988596120894e62c76ceb5054d2b7bbdc18befe7a0a54b4d19c3b5850b3d4dfed14950f2fb323a5b0196bee3a4d1520fcbfe9e734da6b9cdc2c4 SHA512 74469711d0238583c46cadd42737b9002417010796b713a0750c1f28ea17c9c6b2d33e0136fcc5556029a78e0c24b617ae366cb667051c09552298faee791609
+DIST Django-4.2.19.checksum.txt 2583 BLAKE2B 11d61858872f6dda4c15c3dacf9550703c7110e144f7d65e97d80e2fc98a8e0b6b607386ed46330cf302a69d96c629f887fea18a2a8cda0e5d2f492c6becbdfe SHA512 10ce3dde081db5e56b8570a1030553eaf6da7f3eeb54897713d11aebdad5e802ae40175222b5c8e322ced3bfb27cb7e0abf17d6f8363b4e62f273d6c4c962a63
+DIST Django-4.2.19.tar.gz 10426865 BLAKE2B 3bfe496d3b446f51eb99dfc62845785ff51e94c5b8b064e8a126e106fdc7589c5532b16b526bceb2377955cbcfb5b67233c76263588220d171797a9762f86333 SHA512 4bc7a12d502809f9b65f26d2b0f7f5fab76f37bf5d15f6887ee160e0cf8bb29089f478d280f31bf889e4204f103602069103ab74f058e8721bffb121a7fa27ad
DIST Django-5.0.11.checksum.txt 2583 BLAKE2B e7cc6ed8c4f3d9398eb892cfb6e4d6b983485128180099ad069e0594f8a398ce8127cf934bd738df826d61ffd66d2c0cb27f4ac27630a3f3d2f20edf30e44f00 SHA512 16bdb35fa566db8995233841e53cc793a4656604f351913ad97b470b4044d9476a9bda094493d170d63d637d4f2cc1a22b3b372005f05ed043b1d1b56c6137f2
DIST Django-5.0.11.tar.gz 10635979 BLAKE2B b55d539d541c661ebe0e4e3db21b89de3fb4a32dc1d07d6bae1be6cd22b82bf4c5692eb23ddb2d4425140ecdcab272d6fb5629c1b525b7fdad1469eb40376a8e SHA512 a43b3245a8e4f1b315ac75128f0d24cf4202471a9dce6791e1fffc88580427c7823c4abfeab6bfee821ff44407728089f563180525eb6bc172bf52858dce867e
+DIST Django-5.0.12.checksum.txt 2583 BLAKE2B ac931c1dd0c6be628a8dabb591708e48f3746016e2a77f86e069920445c2ae385c3cdd3fe143773c3d4767f857d24e8526eb29c4da0f2fcf39370067673273e0 SHA512 3faff6cf0ed08ecfe022ebc2de7ffef1dbf7bc73d97410ebba209e620cf0ecb715b1940907dd12179c048f1fee070ededc2584e6b958878bd570961277b8d582
+DIST Django-5.0.12.tar.gz 10636389 BLAKE2B d314e2f990023edc9de9f66ec970f16c0749c3a9f16450a7c4f3cf4cdea6a8e978ff62b9214c8876193a44f213d0e8084095c7218650724d9091cce91e0b5f02 SHA512 f7772660d609b8b44244719e7a4e678698d0153a65193ccfee49b323eb428c69c0f77d193b560be0df42025aa770987986a82b0f5ed9659c90e07617271c49d5
DIST Django-5.1.5.checksum.txt 2573 BLAKE2B af41ffe32d60f10c99b558d32dbcf8658fe6ccadf21168afa6812ec9f40d6a0d2024cde733a26d515d90a025e8814c10ab745679133ed1f13a0ffbed8ce59319 SHA512 70c4af1a339a0b195b3788c10425ef83480274ba3efe5344bfa43d8245d681ed2622f48d62c284ad4bbeb77fb5132308197dfe1d308d027ea650c452e6454d90
DIST Django-5.1.5.tar.gz 10700031 BLAKE2B 8de45f7574e2f74a06916018a12cf6df9c263cf754ff575d12735fb6921729c7d2937235fee57abb95e9f20e6de0282ec3e737a0a2ee9d9e38e70a1ee90fa6e9 SHA512 cc28eb7166d9babdb3f3d61cc87eb9ed038d7115bd7de7da5b9cff33da114c334fd51140d32c597229cd07e400520bc92ebf69611c6a455ac926f3e9eaa5ee88
+DIST Django-5.1.6.checksum.txt 2573 BLAKE2B b35b22fee8d313510463e77c4b3a6d9154847554f5a33c48e656f7d88e1c71067b8493817e43cc168e9df2fdcab42ce4c35a5c61ff2c45d141025e79c807ce93 SHA512 e1df89d9dc9ad131d8caf12cb84065e55e78249e292aace955e1c6195f46b4ab94ac80d0a3ec23e9f62c7568439ba062f75fb1bbdb7b3fc555238ae512de991d
+DIST Django-5.1.6.tar.gz 10700620 BLAKE2B 8d362c686c68cb34eb356b237205b8b18e5bb75ebe7080a4be2f665dcff9fcd8f25775ba16ef70cd755a5a100c16751f35374eb76c39562ea098f5424223188f SHA512 a76a8e523aa90d62ed0fa003bc9117900644d93c62e78bd879b709c107bb18d3e9a5b4fbd475a213398d99f9b9052a31a54cef9c5861a923b66d639c037cc177
DIST Django-5.2a1.checksum.txt 2410 BLAKE2B 34659b6ff74e39fd13e8b1392dcb0411ae88cb88dc0271f3e7f84ad829e2525f1db11c3951b1b1def4ea95a432135996656fd2e894f3afc3c1913913d1033cb6 SHA512 b1e70a6978707b1d90d8810dc349796e969d63299ec8496b5ec1d45d0881ddfa524e2b78fdd07d1e212d74497de011b7d5377dc31e19e74fb532f2cc26f94212
DIST Django-5.2a1.tar.gz 10814424 BLAKE2B fffa0f9f31fdd03b1dbf826ec1484d22fbfdeb13724254034726699d303a66d397e847954d15ab2b2975600bcbe4113051a6d9b7c14f2aeeca862ffd06c21d13 SHA512 5513cf718a30bd1bca5973c4fa679ec9af7b7a69cdfd554a5d5ab6706fdab18d5d9de8e1162968fc0d6c3254823577e43d1704482321178edbce434a8b4b8dd9
DIST django-4.2.17-pypy3.patch.xz 5900 BLAKE2B 2a564fc31d8e2f3def5a532d3bca1a4426a496c659192f602d659e0c1a5f5882978baedb384cc3b67fda8c836513ce43aece80db1528c8e8b6e9ca420f7572ce SHA512 9c9d935aff6db7230a26931b5e7f5f94f3b5ff4fc8f7d4201178571de9d9c7929a0e1e558cc2d9b54b8ee91f85819a5680d24fad6251620515a4a020e3b2d66d
diff --git a/dev-python/django/django-4.2.19.ebuild b/dev-python/django/django-4.2.19.ebuild
new file mode 100644
index 000000000000..132ee16f15d3
--- /dev/null
+++ b/dev-python/django/django-4.2.19.ebuild
@@ -0,0 +1,103 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( pypy3 python3_{10..12} )
+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
+ https://dev.gentoo.org/~mgorny/dist/python/django-4.2.17-pypy3.patch.xz
+ verify-sig? ( https://media.djangoproject.com/pgp/${P^}.checksum.txt )
+"
+S="${WORKDIR}/${P^}"
+
+LICENSE="BSD"
+# admin fonts: Roboto (media-fonts/roboto)
+LICENSE+=" Apache-2.0"
+# admin icons, jquery, xregexp.js
+LICENSE+=" MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~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.6.0[${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[${PYTHON_USEDEP}]
+ dev-python/jinja2[${PYTHON_USEDEP}]
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/pillow[webp,${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ dev-python/selenium[${PYTHON_USEDEP}]
+ dev-python/tblib[${PYTHON_USEDEP}]
+ sys-devel/gettext
+ )
+ verify-sig? ( >=sec-keys/openpgp-keys-django-20240807 )
+"
+
+PATCHES=(
+ "${FILESDIR}"/django-4.0-bashcomp.patch
+ "${WORKDIR}"/django-4.2.17-pypy3.patch
+ # https://code.djangoproject.com/ticket/35661
+ "${FILESDIR}"/django-5.1-more-pypy3.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.0.12.ebuild b/dev-python/django/django-5.0.12.ebuild
new file mode 100644
index 000000000000..2a1838f4d431
--- /dev/null
+++ b/dev-python/django/django-5.0.12.ebuild
@@ -0,0 +1,105 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( pypy3 python3_{10..13} )
+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
+ https://dev.gentoo.org/~mgorny/dist/python/django-5.0-pypy3.patch.xz
+ verify-sig? ( https://media.djangoproject.com/pgp/${P^}.checksum.txt )
+"
+S="${WORKDIR}/${P^}"
+
+LICENSE="BSD"
+# admin fonts: Roboto (media-fonts/roboto)
+LICENSE+=" Apache-2.0"
+# admin icons, jquery, xregexp.js
+LICENSE+=" MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~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.7.0[${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
+ "${WORKDIR}"/django-5.0-pypy3.patch
+ # https://github.com/django/django/commit/3426a5c33c36266af42128ee9eca4921e68ea876
+ "${FILESDIR}"/django-5.0.6-py313.patch
+ # https://code.djangoproject.com/ticket/35661
+ "${FILESDIR}"/django-5.1-more-pypy3.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.1.6.ebuild b/dev-python/django/django-5.1.6.ebuild
new file mode 100644
index 000000000000..9ac09beed28d
--- /dev/null
+++ b/dev-python/django/django-5.1.6.ebuild
@@ -0,0 +1,99 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( pypy3 python3_{10..13} )
+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 )
+"
+S="${WORKDIR}/${P^}"
+
+LICENSE="BSD"
+# admin fonts: Roboto (media-fonts/roboto)
+LICENSE+=" Apache-2.0"
+# admin icons, jquery, xregexp.js
+LICENSE+=" MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~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
+)
+
+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/elasticsearch/Manifest b/dev-python/elasticsearch/Manifest
index d35204e9ae68..11d20655cd83 100644
--- a/dev-python/elasticsearch/Manifest
+++ b/dev-python/elasticsearch/Manifest
@@ -1,2 +1 @@
-DIST elasticsearch-py-8.17.0.gh.tar.gz 1604639 BLAKE2B 94363d23606ec820fbc4608ad8319a2753f04f6a250204ec91662772712079ac56d63ef630780fc19f20e9b0527ceea4db2c3d7c4db98c7e4410d5ce67751a6f SHA512 2239fe52a49387988903d574e33d2f5aedf077beb9c00c46a725af942289f0b0522aef462fb8ee43b078594e4af65b3b14b2fdaefea076ddd1dad8ca0a306843
DIST elasticsearch-py-8.17.1.gh.tar.gz 1690228 BLAKE2B da442d4a9a469ed5fc5f9035652746a0d5b28e90644d9fd8afb5127bfc00ed15bbe5fde27efff0506d07dc48fdce72cd326eed36d86ba8a596e180e07c2e6b0d SHA512 45312d4ebe90c84c06a8e19d66618f668ad6b8a81b16a89ebf68136a925733a0373321df0726a967d7ede9f30c0e5be6fed1c69056e9ec1156e7cd784341c621
diff --git a/dev-python/elasticsearch/elasticsearch-8.17.0.ebuild b/dev-python/elasticsearch/elasticsearch-8.17.0.ebuild
deleted file mode 100644
index 25736b843e08..000000000000
--- a/dev-python/elasticsearch/elasticsearch-8.17.0.ebuild
+++ /dev/null
@@ -1,76 +0,0 @@
-# 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..12} )
-
-inherit distutils-r1
-
-MY_P="elasticsearch-py-${PV}"
-DESCRIPTION="Official Elasticsearch client library for Python"
-HOMEPAGE="
- https://ela.st/es-python
- https://github.com/elastic/elasticsearch-py/
- https://pypi.org/project/elasticsearch/
-"
-SRC_URI="
- https://github.com/elastic/elasticsearch-py/archive/v${PV}.tar.gz
- -> ${MY_P}.gh.tar.gz
-"
-S=${WORKDIR}/${MY_P}
-
-LICENSE="Apache-2.0"
-SLOT="0/$(ver_cut 1)"
-KEYWORDS="amd64 arm64 ~x86"
-
-RDEPEND="
- <dev-python/aiohttp-4[${PYTHON_USEDEP}]
- >=dev-python/aiohttp-3[${PYTHON_USEDEP}]
- <dev-python/elastic-transport-9[${PYTHON_USEDEP}]
- >=dev-python/elastic-transport-8.15.1[${PYTHON_USEDEP}]
- >=dev-python/orjson-3[${PYTHON_USEDEP}]
- <dev-python/requests-3[${PYTHON_USEDEP}]
- >=dev-python/requests-2.4[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- ${RDEPEND}
- dev-python/mapbox-vector-tile[${PYTHON_USEDEP}]
- dev-python/numpy[${PYTHON_USEDEP}]
- dev-python/opentelemetry-api[${PYTHON_USEDEP}]
- dev-python/opentelemetry-sdk[${PYTHON_USEDEP}]
- dev-python/pandas[${PYTHON_USEDEP}]
- dev-python/pyarrow[${PYTHON_USEDEP}]
- dev-python/pytest-asyncio[${PYTHON_USEDEP}]
- dev-python/python-dateutil[${PYTHON_USEDEP}]
- >=dev-python/pyyaml-5.4[${PYTHON_USEDEP}]
- dev-python/unasync[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_sphinx docs/sphinx \
- dev-python/sphinx-autodoc-typehints \
- dev-python/sphinx-rtd-theme
-distutils_enable_tests pytest
-
-python_test() {
- local EPYTEST_IGNORE=(
- # REST api tests are a black hole for effort. It downloads the tests
- # so its an ever moving target. It also requires effort to blacklist
- # tests for apis which are license restricted.
- "test_elasticsearch/test_server/test_rest_api_spec.py"
- # Counting deprecation warnings from python is bound to fail even
- # if all are fixed in this package. Not worth it.
- "test_elasticsearch/test_client/test_deprecated_options.py"
- # Running daemon for tests is finicky and upstream CI fails at it
- # as well.
- "test_elasticsearch/test_server/"
- "test_elasticsearch/test_async/test_server/"
- )
-
- local -x TEST_WITH_OTEL=1
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- epytest -o addopts= -p asyncio
-}
diff --git a/dev-python/elasticsearch/elasticsearch-8.17.1.ebuild b/dev-python/elasticsearch/elasticsearch-8.17.1.ebuild
index 3be4ed08b0cb..25736b843e08 100644
--- a/dev-python/elasticsearch/elasticsearch-8.17.1.ebuild
+++ b/dev-python/elasticsearch/elasticsearch-8.17.1.ebuild
@@ -23,7 +23,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="Apache-2.0"
SLOT="0/$(ver_cut 1)"
-KEYWORDS="~amd64 ~arm64 ~x86"
+KEYWORDS="amd64 arm64 ~x86"
RDEPEND="
<dev-python/aiohttp-4[${PYTHON_USEDEP}]
diff --git a/dev-python/ensurepip-pip/Manifest b/dev-python/ensurepip-pip/Manifest
index c0fac60cda56..e2d4f1d8b9bb 100644
--- a/dev-python/ensurepip-pip/Manifest
+++ b/dev-python/ensurepip-pip/Manifest
@@ -1,3 +1,4 @@
DIST pip-24.1-py3-none-any.whl 1823006 BLAKE2B ca5282b1100243cc4e391ce30d5ae7d4978987e46323b7e151c87457c4ab762f909c88ae3cb72015d09bf7c1243ddb6ad791e991093713431961962fc6fdde83 SHA512 84e8318896294e5750f30a3fa55833e5e5c802066091802e05ff94fe139c825f3fe0fb5014b899f0afd844ad1129e8d04b9fedd74a7f46a1c248dac546ab16f8
DIST pip-24.3.1-py3-none-any.whl 1822182 BLAKE2B 8ec4f45dcc84094426db053dea43d86d14d24f6f23ca8b1b094a989f08b5653a2290df24e907c3ed283a668fa6da305620b4f74a3054d67f6e048327c5f06c66 SHA512 21cb4a844b7c9216a4878639a876acdce17ffda9e7228e85e344169d548a3f4316e5ec5183a950848c7391e2a650152e4a1e1f0f020de57f895c458de5ee7b82
DIST pip-25.0-py3-none-any.whl 1841506 BLAKE2B 35c1ca34f202f397785b3a229379e0c58c4c9733280d2283ce9c6cfd4e3190283b708f99096015b0f556e98885622cb443976763af3c077ef4bdd73403959ca4 SHA512 e6037f24540ee96016fbd59a9250692407123db0966478b5d8e50e37de157cecfedc177002e4e98e1cbcbe9fb35561d72b5d20166c2919968794033c8b688cbf
+DIST pip-25.0.1-py3-none-any.whl 1841526 BLAKE2B 928210cf0586b2e17cf96c341babbbf612eb08775af716588fad8840d04153d264b64098f97c8d2d7b219389d571cee8e4190195f8c5cc9f602749aad92df437 SHA512 48315489f2c0a76b49386228f9a2f675e71f20ff2f4aaaf65b2634ba5cac7c98facfbdebeb4651c65efdd2ade053a140d7a2a6b44587549d6663bc8bb5ef2220
diff --git a/dev-python/ensurepip-pip/ensurepip-pip-25.0.1.ebuild b/dev-python/ensurepip-pip/ensurepip-pip-25.0.1.ebuild
new file mode 100644
index 000000000000..dcf21d3e394a
--- /dev/null
+++ b/dev-python/ensurepip-pip/ensurepip-pip-25.0.1.ebuild
@@ -0,0 +1,20 @@
+# Copyright 2022-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit pypi
+
+DESCRIPTION="Shared pip wheel for ensurepip Python module"
+HOMEPAGE="https://pypi.org/project/pip/"
+SRC_URI="$(pypi_wheel_url "${PN#ensurepip-}")"
+S=${DISTDIR}
+
+LICENSE="Apache-2.0 BSD BSD-2 ISC LGPL-2.1+ MIT MPL-2.0 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"
+
+src_install() {
+ insinto /usr/lib/python/ensurepip
+ doins "${A}"
+}
diff --git a/dev-python/environs/Manifest b/dev-python/environs/Manifest
index 3d0f15ec8fe9..ec64fdadabf3 100644
--- a/dev-python/environs/Manifest
+++ b/dev-python/environs/Manifest
@@ -1,4 +1,2 @@
-DIST environs-11.2.1.gh.tar.gz 25595 BLAKE2B 478818c964625965200b154ef9412a1d94ac9f78d507be0ebd378117613e7c7f8163c9db58225220ef9cde68367f973999a9914f13db6bdee02c83e9ee924518 SHA512 cd859e86b4308047ad661f3fa12788a117f70686e3f5dc7f55e876c9de38c6d2b75f208b488b99f3c9189080e8ebb45385fea45421d55e9b2f9a22ba4a3fbd86
-DIST environs-12.0.0.gh.tar.gz 26281 BLAKE2B d663ede5220bc3d1b6f3a1da5b2b8500bfc98d134bf9ec00a81796fb1619c98e96b2336e474dee2d17e6b541fd97bcd916dcdb5d19509a76f6af28e2bf26b691 SHA512 30622788d787516408cb9a6548124475a752fb37284f880c534763007c736daf0c666c8e8c773cbb078da7ac3ba5b271aaf28d3d7842afb6da630bddf5233623
-DIST environs-14.0.0.gh.tar.gz 28247 BLAKE2B fe1fcc78940840f67c8cb38d9f7c10d03e1c91b5f94943eaee1a603bfbb8bccbc46bed003913fb64a62b49ab40bfbe806ea0c21dc74926d48b2d58a8e96886fa SHA512 5caddf4ee09cc2e6acbad93d7f40b7d6fe9f241454a96ae33da2467858b7a53bc03132e702d87c6f9731f2b600a559135da6ac033de7ccd1b0623402ccdfbc4c
DIST environs-14.1.0.gh.tar.gz 28783 BLAKE2B b93711edaa4b9d2a3353e3a06e9baf545716dd96da6f3288825fef15306d793c4b18d0401698c86cddd2813d723e188a7be6570940eec49171f81d1f6dea071f SHA512 26cc7a920b4d9a6d7d7c7f1c729e688767a03de8e439483c99020a0a838d9c52dc3f5d0e78db6b910cc087580efb42ce3cd8e3be32e69a889abd40d0fb1a9fd9
+DIST environs-14.1.1.gh.tar.gz 44987 BLAKE2B d409fdb38faa65b45e4ec147acfc6050eb9a9993cf93bc90939ffdc33421b44aa522cd397767d0d41370b994f914741e9ee6af24095c72321e7875f5c88440c1 SHA512 fdbbd25304200db383705fc7940a9ec6e9ed851c7fbb57a3af08ebec8d825a6d2e3c5ecaa13adcdfe5405e49da67104f600003c05b75e9758a7a15cca14e4d5d
diff --git a/dev-python/environs/environs-11.2.1.ebuild b/dev-python/environs/environs-11.2.1.ebuild
deleted file mode 100644
index 28662b82e90f..000000000000
--- a/dev-python/environs/environs-11.2.1.ebuild
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2021-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=flit
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit distutils-r1
-
-DESCRIPTION="Python library for simplified environment variable parsing"
-HOMEPAGE="
- https://github.com/sloria/environs/
- https://pypi.org/project/environs/
-"
-SRC_URI="
- https://github.com/sloria/environs/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64 ~arm64"
-
-RDEPEND="
- dev-python/python-dotenv[${PYTHON_USEDEP}]
- >=dev-python/marshmallow-3.13.0[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/django-cache-url[${PYTHON_USEDEP}]
- dev-python/dj-database-url[${PYTHON_USEDEP}]
- dev-python/dj-email-url[${PYTHON_USEDEP}]
- )
-"
-
-DOCS=( CHANGELOG.md CONTRIBUTING.md README.md )
-
-distutils_enable_tests pytest
diff --git a/dev-python/environs/environs-12.0.0.ebuild b/dev-python/environs/environs-12.0.0.ebuild
deleted file mode 100644
index e3b002adda80..000000000000
--- a/dev-python/environs/environs-12.0.0.ebuild
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2021-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=flit
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit distutils-r1
-
-DESCRIPTION="Python library for simplified environment variable parsing"
-HOMEPAGE="
- https://github.com/sloria/environs/
- https://pypi.org/project/environs/
-"
-SRC_URI="
- https://github.com/sloria/environs/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64 ~arm64"
-
-RDEPEND="
- dev-python/python-dotenv[${PYTHON_USEDEP}]
- >=dev-python/marshmallow-3.13.0[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/django-cache-url[${PYTHON_USEDEP}]
- dev-python/dj-database-url[${PYTHON_USEDEP}]
- dev-python/dj-email-url[${PYTHON_USEDEP}]
- )
-"
-
-DOCS=( CHANGELOG.md CONTRIBUTING.md README.md )
-
-distutils_enable_tests pytest
diff --git a/dev-python/environs/environs-14.0.0.ebuild b/dev-python/environs/environs-14.1.1.ebuild
index d45b0ac5d9c6..b72b45079c97 100644
--- a/dev-python/environs/environs-14.0.0.ebuild
+++ b/dev-python/environs/environs-14.1.1.ebuild
@@ -31,6 +31,9 @@ RDEPEND="
"
BDEPEND="
test? (
+ $(python_gen_cond_dep '
+ dev-python/backports-strenum[${PYTHON_USEDEP}]
+ ' 3.10)
dev-python/django-cache-url[${PYTHON_USEDEP}]
dev-python/dj-database-url[${PYTHON_USEDEP}]
dev-python/dj-email-url[${PYTHON_USEDEP}]
diff --git a/dev-python/evdev/Manifest b/dev-python/evdev/Manifest
index 4b41bdfdf032..61a5ba9ea67a 100644
--- a/dev-python/evdev/Manifest
+++ b/dev-python/evdev/Manifest
@@ -1,2 +1,3 @@
DIST python-evdev-1.7.1.gh.tar.gz 88275 BLAKE2B 334f70785411bd0e8d348ddeb0a6a728dbfd5c3604a19e7153c47d6868f76b0d3c10317230b0d6874cc14b3765d0e520d932c551842bd0d758b7a735b30ba7cb SHA512 802ba7c252a8817c60480db90b28e89b8356580d7b7f6a35725c70fcacbcabb3d3216330f6639ece940d901434cf1617d7682d344b7428fd5c5b6ab940700ff8
DIST python-evdev-1.8.0.gh.tar.gz 47568 BLAKE2B 489ebf6eecf2a7212b67f1393e105bbb801236f039bcc2adb805049a4941fc4d064a22b0928c69fa907197c444b49e7446b7641c4b19c1ff10b1fc4ad1a0d1ab SHA512 86b2c08068863473e89f1455ff29f049786c292eaf1bdd44ad584054280aa2d40182640d67301653251ed13b2e7414bc81b7afc6b978a392d95fdce786f23e36
+DIST python-evdev-1.9.0.gh.tar.gz 47965 BLAKE2B 0e3f48f6e2e5896647eda50b05f87b3342706ef7d9d962dd01d48f5c03b3ed4f1a26c47a8390cc903ced1be38d0401844a270a8b91348513f2fffc3d57656147 SHA512 dfe9d457f768814ec2f8e610a21503ba3c218f1518cad6ab5ee369b7d5c604e4ffdf3304461b3004d2bf582412d9d6d1d2b3f86ed28bb03e6e663f3de1ff3a25
diff --git a/dev-python/evdev/evdev-1.9.0.ebuild b/dev-python/evdev/evdev-1.9.0.ebuild
new file mode 100644
index 000000000000..38d528c26c4a
--- /dev/null
+++ b/dev-python/evdev/evdev-1.9.0.ebuild
@@ -0,0 +1,44 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..13} pypy3 )
+
+inherit distutils-r1
+
+MY_P=python-evdev-${PV}
+DESCRIPTION="Python library for evdev bindings"
+HOMEPAGE="
+ https://python-evdev.readthedocs.io/
+ https://github.com/gvalkov/python-evdev/
+ https://pypi.org/project/evdev/
+"
+SRC_URI="
+ https://github.com/gvalkov/python-evdev/archive/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ tests/test_uinput.py
+)
+
+python_configure_all() {
+ esetup.py build_ecodes \
+ --evdev-headers \
+ "${ESYSROOT}/usr/include/linux/input.h:${ESYSROOT}/usr/include/linux/input-event-codes.h"
+}
+
+src_test() {
+ cd tests || die
+ distutils-r1_src_test
+}
diff --git a/dev-python/executing/executing-2.2.0.ebuild b/dev-python/executing/executing-2.2.0.ebuild
index f8645c8002ae..635b40e71da5 100644
--- a/dev-python/executing/executing-2.2.0.ebuild
+++ b/dev-python/executing/executing-2.2.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 ~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/faker/Manifest b/dev-python/faker/Manifest
index a4ad1405f18a..d6007448ef4e 100644
--- a/dev-python/faker/Manifest
+++ b/dev-python/faker/Manifest
@@ -1,3 +1,4 @@
-DIST faker-33.3.1.tar.gz 1854895 BLAKE2B 15862330622cd257b0d663a67df4141b3673d077858a655def54152878ba290cb0c3480b0dfb40b2c69ac7481b827ac62827545bddd1edc97a1c5e55af35aad4 SHA512 48e1be12bdbcf12b4da44ede6bb0cd3a8937308f50e4145bbaf1fc80a3fb51dc430e03b5c4bf9a99fce66ea5cac9c5a8e806d036e4052588971ed264c8c472aa
DIST faker-35.0.0.tar.gz 1855098 BLAKE2B 38429e14ccca4e315b562903e218ceb3942818da34229da59adca51afeec837a8877ed902de7624bbf057c2cf7a838edfec78b45cd7157855ab05b5fca868c84 SHA512 8f9744f1e935218ce7a25b93288357fd4767c3079ed2a44e9613a666984e737e1f8ee615680cc9722ba83e448843a581adc0d84cf41085a195c2eefac9eda9c9
DIST faker-35.2.0.tar.gz 1874908 BLAKE2B ded1ef4e9afec3395e78ebcf28c7c5f428a46873f9fc4b75681eb045315c35fcd682c83cf04fa09ad91feacb828e6cea429de51ae53264fb8ec4b9e4ef36b922 SHA512 70e5f8165c740596952245b2635c9c88efef894f4e86fa352f7bee08eeaf44c6f0050c9ccd435cdde76f9e24b84957db9d4a1601cc12f1d3f30519c7391975df
+DIST faker-35.2.2.tar.gz 1874955 BLAKE2B 4ff2e056cd1fbdd7c70af2efbd0757005fbe7aa1f73233bcb2f41fcae6ad5b85ab6732602afe0bf671799d48ae97069a462e3d3a174d17497155c2d5c29b8a57 SHA512 91f5dc3e7930b1192fed2d13f98e36eac8698411dda2ff5dc471c273aa415d41959f5d18826b888296ef87d6ca07513ec68b4bee7828e2934ab2ff349055063b
+DIST faker-36.1.0.tar.gz 1874804 BLAKE2B ea004f4d3a03c430f16ce53aeb3124838240f86a99576fb2dec8e4746e01d03f22b0e0b4c50eb9f7664dca0ab7fd3495d500f5e77dcdec06c02b01e5a2806fee SHA512 c2dea115c589171bb727405dbba6a19631f3751557445172a51d0e62f2b417f4800b367fe6538d73fa04503b28df2a7721d47074d6910c9e7e9b9f74d5bc9b21
diff --git a/dev-python/faker/faker-35.0.0.ebuild b/dev-python/faker/faker-35.0.0.ebuild
index b0c932d87fbe..557c7f9c7ff1 100644
--- a/dev-python/faker/faker-35.0.0.ebuild
+++ b/dev-python/faker/faker-35.0.0.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/python-dateutil-2.4.2[${PYTHON_USEDEP}]
diff --git a/dev-python/faker/faker-33.3.1.ebuild b/dev-python/faker/faker-35.2.2.ebuild
index 557c7f9c7ff1..b0c932d87fbe 100644
--- a/dev-python/faker/faker-33.3.1.ebuild
+++ b/dev-python/faker/faker-35.2.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/python-dateutil-2.4.2[${PYTHON_USEDEP}]
diff --git a/dev-python/faker/faker-36.1.0.ebuild b/dev-python/faker/faker-36.1.0.ebuild
new file mode 100644
index 000000000000..b5ada5bebc9a
--- /dev/null
+++ b/dev-python/faker/faker-36.1.0.ebuild
@@ -0,0 +1,42 @@
+# Copyright 2022-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_PN=${PN^}
+PYTHON_COMPAT=( pypy3 python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A Python package that generates fake data for you"
+HOMEPAGE="
+ https://github.com/joke2k/faker/
+ https://pypi.org/project/Faker/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ dev-python/tzdata[${PYTHON_USEDEP}]
+ !dev-ruby/faker
+"
+BDEPEND="
+ test? (
+ dev-python/freezegun[${PYTHON_USEDEP}]
+ dev-python/pillow[${PYTHON_USEDEP},tiff]
+ dev-python/validators[${PYTHON_USEDEP}]
+ )
+"
+
+# note: tests are flaky with xdist
+distutils_enable_tests pytest
+
+python_test() {
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local -x PYTEST_PLUGINS=faker.contrib.pytest.plugin
+ epytest
+ epytest --exclusive-faker-session tests/pytest/session_overrides
+}
diff --git a/dev-python/fakeredis/Manifest b/dev-python/fakeredis/Manifest
index f1d2ea83abab..274fb49dc226 100644
--- a/dev-python/fakeredis/Manifest
+++ b/dev-python/fakeredis/Manifest
@@ -1 +1,2 @@
DIST fakeredis-2.26.2.tar.gz 150563 BLAKE2B 3def1db25e1bfe2bcc23dd0788963f57245c01d0e1810d6c36dac5186fc8024956cbb6be09667792ce5c55f015cce1f7fd12a2fe5c32a0eb8e305519bfa301fe SHA512 2316cdf555367103a83b36b52ebc1295918fe43ab158c0d9fa28fe8d159fe7d79f3b575c754ca4efde57007e88e1bd39b1dd4a8a8f6ef80ca034c615ce5031c0
+DIST fakeredis-2.27.0.tar.gz 157510 BLAKE2B aa427ce2bc0880aeea6fcb063cb98ff60caf600cae8b21c902a1d9193dd14d7a5f0daa7a3114c92d8eedeef84c936dba326c68e054a6c1dd775209d9055a88f3 SHA512 2fd33ca8e0a95e381cef5794beb009a20c9cf21c03954e86c56e634f00ea959615dc6021265f76c14236f219ee1bf606fbd43d46ab1db5dc3426b1c610020728
diff --git a/dev-python/fakeredis/fakeredis-2.27.0.ebuild b/dev-python/fakeredis/fakeredis-2.27.0.ebuild
new file mode 100644
index 000000000000..9508f6092275
--- /dev/null
+++ b/dev-python/fakeredis/fakeredis-2.27.0.ebuild
@@ -0,0 +1,99 @@
+# Copyright 2020-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=poetry
+PYTHON_COMPAT=( pypy3 python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Fake implementation of redis API for testing purposes"
+HOMEPAGE="
+ https://github.com/cunla/fakeredis-py/
+ https://pypi.org/project/fakeredis/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+RDEPEND="
+ dev-python/packaging[${PYTHON_USEDEP}]
+ >=dev-python/redis-4.3[${PYTHON_USEDEP}]
+ <dev-python/sortedcontainers-3[${PYTHON_USEDEP}]
+ >=dev-python/sortedcontainers-2[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+ ' 3.10)
+"
+BDEPEND="
+ test? (
+ dev-db/redis
+ dev-python/pytest-asyncio[${PYTHON_USEDEP}]
+ dev-python/pytest-mock[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # https://github.com/cunla/fakeredis-py/issues/320
+ sed -i -e '/LICENSE/d' pyproject.toml || die
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # also lupa
+ test/test_aioredis2.py::test_failed_script_error
+ # TODO
+ "test/test_fakeredis.py::test_set_get_nx[StrictRedis]"
+ "test/test_fakeredis.py::test_lpop_count[StrictRedis]"
+ "test/test_fakeredis.py::test_rpop_count[StrictRedis]"
+ "test/test_fakeredis.py::test_zadd_minus_zero[StrictRedis]"
+ "test/test_mixins/test_pubsub_commands.py::test_pubsub_channels[StrictRedis]"
+ test/test_mixins/test_set_commands.py::test_smismember_wrong_type
+ # new redis-server?
+ "test/test_mixins/test_pubsub_commands.py::test_pubsub_shardnumsub[StrictRedis]"
+ # json ext
+ test/test_json/test_json.py
+ test/test_json/test_json_arr_commands.py
+ # tdigest ext?
+ 'test/test_mixins/test_server_commands.py::test_command[FakeStrictRedis]'
+ # hexpire ext?
+ 'test/test_mixins/test_acl_commands.py::test_acl_cat[StrictRedis]'
+ )
+ local EPYTEST_IGNORE=(
+ # these tests fail a lot...
+ test/test_hypothesis.py
+ )
+ local args=(
+ # tests requiring lupa (lua support)
+ -k 'not test_eval and not test_lua and not test_script'
+ )
+ # Note: this package is not xdist-friendly
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -p asyncio -p pytest_mock "${args[@]}"
+}
+
+src_test() {
+ local redis_pid="${T}"/redis.pid
+ local redis_port=6390
+
+ einfo "Spawning Redis"
+ einfo "NOTE: Port ${redis_port} must be free"
+ "${EPREFIX}"/usr/sbin/redis-server - <<- EOF || die "Unable to start redis server"
+ daemonize yes
+ pidfile ${redis_pid}
+ port ${redis_port}
+ bind 127.0.0.1
+ EOF
+
+ # Run the tests
+ distutils-r1_src_test
+
+ # Clean up afterwards
+ kill "$(<"${redis_pid}")" || die
+}
diff --git a/dev-python/fastbencode/Manifest b/dev-python/fastbencode/Manifest
index b0c883f2d5e8..2f185790e38c 100644
--- a/dev-python/fastbencode/Manifest
+++ b/dev-python/fastbencode/Manifest
@@ -1 +1,2 @@
DIST fastbencode-0.2.tar.gz 22580 BLAKE2B 87e14260cf7174ee1b40372879efed7b8fef3302ec0783cf9ebd103e9730c0f415ccd96c2ada944849b7cf63bf2998d2ddc644307619449b29177c680730233b SHA512 4cc62d8ed54fcf1d989e026ad2b4d0c1f4a2fa762d9c2f7da182501af7454f802202c47763b714072009357858a3f93ea6ad9b3e9f80742b749f5014f84e1598
+DIST fastbencode-0.3.1.tar.gz 20881 BLAKE2B e962e07ebc75402d63c9b4bbae303bafc1cf4a66f76884b756c9604b5fad5dc0165c1500fad4226785e030571bff1a2f26b5e5185880b076ebdb54cac4474da1 SHA512 153501ecbfcff76a55faec4c65924a4e4b171a91e05092ecaba61a8561f84d2abce0ac7b7d51aee44b39e6b706c38b5ea7a23f92a4650545b4526a0ae1ac086d
diff --git a/dev-python/fastbencode/fastbencode-0.3.1.ebuild b/dev-python/fastbencode/fastbencode-0.3.1.ebuild
new file mode 100644
index 000000000000..050e3c30fde5
--- /dev/null
+++ b/dev-python/fastbencode/fastbencode-0.3.1.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2023-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Implementation of bencode with optional fast C extensions"
+HOMEPAGE="
+ https://github.com/breezy-team/fastbencode/
+ https://pypi.org/project/fastbencode/
+"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+BDEPEND="
+ dev-python/cython[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests unittest
diff --git a/dev-python/filelock/Manifest b/dev-python/filelock/Manifest
index 96622779779b..ec782eb01af5 100644
--- a/dev-python/filelock/Manifest
+++ b/dev-python/filelock/Manifest
@@ -1,2 +1 @@
-DIST filelock-3.16.1.tar.gz 18037 BLAKE2B 29340ea0b5ade185a0d402a5cae304a2b3588d03ae543be26ed70b79bd1d0af67a30368ba43d87e16ac42d01b83ed1852316aaff87c11fe115ac35393a258231 SHA512 d935a01de58d219968795fa97a3ed9330285786fced2fde4474b3426cfc3da97c5b7a44a21c1f41185c1ce6a2a71514d259e990dce255be6b53e644449d575eb
DIST filelock-3.17.0.tar.gz 18027 BLAKE2B 21c1d03acaca1acbb3fbf4a7d6db2f4d0bda48c29f32f69a170ba9fc121f2555eb5c4e92135a83aa15de6c2d2973ce32392420bf933f7e242406d0524544c128 SHA512 f225742392ffa2fe4dff3014865e5b3080ea827f3ba0997099bd0a73f42259e59d065d821fc86ff46f3eb8cbd445de770e6e437c0de2885f1935c84f5d96fbf0
diff --git a/dev-python/filelock/filelock-3.16.1.ebuild b/dev-python/filelock/filelock-3.16.1.ebuild
deleted file mode 100644
index 852a5b7e0632..000000000000
--- a/dev-python/filelock/filelock-3.16.1.ebuild
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright 2018-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=hatchling
-PYTHON_COMPAT=( python3_{10..13} pypy3 )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="A platform independent file lock for Python"
-HOMEPAGE="
- https://github.com/tox-dev/filelock/
- https://pypi.org/project/filelock/
-"
-
-LICENSE="Unlicense"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos"
-
-BDEPEND="
- dev-python/hatch-vcs[${PYTHON_USEDEP}]
- test? (
- dev-python/pytest-asyncio[${PYTHON_USEDEP}]
- dev-python/pytest-mock[${PYTHON_USEDEP}]
- dev-python/pytest-timeout[${PYTHON_USEDEP}]
- dev-python/virtualenv[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
diff --git a/dev-python/filelock/filelock-3.17.0.ebuild b/dev-python/filelock/filelock-3.17.0.ebuild
index 182f659aac71..710a897a654d 100644
--- a/dev-python/filelock/filelock-3.17.0.ebuild
+++ b/dev-python/filelock/filelock-3.17.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/fixtures/Manifest b/dev-python/fixtures/Manifest
index d64080dcd534..eee140ba5603 100644
--- a/dev-python/fixtures/Manifest
+++ b/dev-python/fixtures/Manifest
@@ -1 +1,2 @@
DIST fixtures-4.2.2.tar.gz 59199 BLAKE2B 4e390e767e180009533dda5d68e4f4bbbe903acb75d3227a3a447c2b17a3d0497131271888a8ccb5385db447f1f892300811a8a7224ae95fedbeeb37cd31cda6 SHA512 fabb1092bee985d446e7f6eccb7f61d7e89a50b6fb98455d3ea6a45670568a4200fd57409ab78edf288c4103c45f5bf0bd62fc9886a6f9101c1d626078b1fb38
+DIST fixtures-4.2.3.tar.gz 73164 BLAKE2B b4c271c3662ab7dc6948f4e30fb160b04c17a67f03bc95da549ed879ebc5d514456175a468a3e64c4c93dd38106c4224eac0a5525b8863e2fae6f32d88067e5a SHA512 4adb655535897c66966828c406b694a3a211ca84072c5d3efe11d2e09bb40eaa5c0d3b4d17f4604da6ed938d0b1387f1fd96278495dcf206c094f02166f2e65f
diff --git a/dev-python/fixtures/fixtures-4.2.3.ebuild b/dev-python/fixtures/fixtures-4.2.3.ebuild
new file mode 100644
index 000000000000..6a39aec9b17a
--- /dev/null
+++ b/dev-python/fixtures/fixtures-4.2.3.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=hatchling
+PYTHON_COMPAT=( python3_{10..13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Fixtures, reusable state for writing clean tests and more"
+HOMEPAGE="
+ https://github.com/testing-cabal/fixtures/
+ https://pypi.org/project/fixtures/
+"
+
+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"
+
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ >=dev-python/testtools-2.5.0[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests unittest
diff --git a/dev-python/flatbuffers/Manifest b/dev-python/flatbuffers/Manifest
index a946a5128816..31b9338fc945 100644
--- a/dev-python/flatbuffers/Manifest
+++ b/dev-python/flatbuffers/Manifest
@@ -1,3 +1,2 @@
-DIST flatbuffers-24.12.23.gh.tar.gz 2326944 BLAKE2B d32d8f861cfb2eff23cdedda01d4e0bd2f203c4d4bf1d0ade1a06ce9caf9fcf3b43c58f2e5bf9014892c184f819ab8005b322d6e96b9f3c9b9c5624eef12642f SHA512 f97762ba41b9cfef648e93932fd789324c6bb6ebc5b7aeca8185c9ef602294b67d73aea7ae371035579a1419cbfbeba7c3e88b31b5a5848db98f5e8a03b982b1
-DIST flatbuffers-25.1.21.gh.tar.gz 2432983 BLAKE2B 5c869588cd0de48c31d37564050f6b254a5cb310ff5a46c5afd5fc05829b3ca686ff404749de8f3d33921bc1551a34d5da01bb2fdff0c4aa5c5ec97e43924487 SHA512 809366e176f4459ee3010b7c3e2c7e6f800fdf0c5cc2d39846885e793fd933602176aeecbfbdc92aec7dadbcd54fc8ba0d57741c034251078136262bdac10ce8
DIST flatbuffers-25.1.24.gh.tar.gz 2430616 BLAKE2B 36e74e8ed537e363edc74cdf7b58a9ae39f0f2d587ee2ac14f4bf14b22bb77b8f63b1c682d44c20be895cbf399f41fb194796c3598d0550c7bfe0f4b9ff90c43 SHA512 48694fa20e41ffefd2ee264f570e96516853da0bce66c3e29b40e66baa62fdc4e38642de395307e4503743e7e2034654211d3866406be2d44dc582b61dfc25f7
+DIST flatbuffers-25.2.10.gh.tar.gz 2299918 BLAKE2B f12b32fca1a15349aaba142907d2d66caa55bb73862b969b226d0356f7f68fbba74c9c3f643a944813c370cacf81735b6c80d054a70b8b442519f9c485bbd10d SHA512 7e6ae36b37c9fd322456312504156c8241852e07a2a23de6805eb2328b61b9f42b839d04b839f9d97623195721308437a1163a25071ca2af0d00a6417da74822
diff --git a/dev-python/flatbuffers/flatbuffers-24.12.23.ebuild b/dev-python/flatbuffers/flatbuffers-24.12.23.ebuild
deleted file mode 100644
index 554aca6bd6be..000000000000
--- a/dev-python/flatbuffers/flatbuffers-24.12.23.ebuild
+++ /dev/null
@@ -1,46 +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_{10..13} )
-
-inherit distutils-r1
-
-DESCRIPTION="RFC 7049 - Concise Binary Object Representation"
-HOMEPAGE="
- https://github.com/google/flatbuffers/
- https://pypi.org/project/flatbuffers/
-"
-SRC_URI="
- https://github.com/google/${PN}/archive/v${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-S=${WORKDIR}/${P}/python
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="amd64 arm arm64 ~riscv ~sparc x86"
-IUSE="test"
-RESTRICT="!test? ( test )"
-
-BDEPEND="
- test? (
- dev-python/numpy[${PYTHON_USEDEP}]
- )
-"
-
-src_prepare() {
- cd "${WORKDIR}/${P}" || die
- eapply "${FILESDIR}/${PN}-24.3.25-numpy-2.patch"
- cd "${S}" || die
- distutils-r1_src_prepare
-}
-
-python_test() {
- cd "${WORKDIR}/${P}/tests" || die
- # zeroes means without benchmarks
- "${EPYTHON}" py_test.py 0 0 0 0 false || die
- "${EPYTHON}" py_flexbuffers_test.py -v || die
-}
diff --git a/dev-python/flatbuffers/flatbuffers-25.1.24.ebuild b/dev-python/flatbuffers/flatbuffers-25.1.24.ebuild
index 32ce725a5a38..554aca6bd6be 100644
--- a/dev-python/flatbuffers/flatbuffers-25.1.24.ebuild
+++ b/dev-python/flatbuffers/flatbuffers-25.1.24.ebuild
@@ -21,7 +21,7 @@ S=${WORKDIR}/${P}/python
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~sparc ~x86"
+KEYWORDS="amd64 arm arm64 ~riscv ~sparc x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/flatbuffers/flatbuffers-25.1.21.ebuild b/dev-python/flatbuffers/flatbuffers-25.2.10.ebuild
index 32ce725a5a38..32ce725a5a38 100644
--- a/dev-python/flatbuffers/flatbuffers-25.1.21.ebuild
+++ b/dev-python/flatbuffers/flatbuffers-25.2.10.ebuild
diff --git a/dev-python/fonttools/Manifest b/dev-python/fonttools/Manifest
index eee1e6b9509c..04a84241d14f 100644
--- a/dev-python/fonttools/Manifest
+++ b/dev-python/fonttools/Manifest
@@ -5,3 +5,4 @@ DIST fonttools-4.55.5.gh.tar.gz 3897134 BLAKE2B 7e7cd6f172e34488a095ff55341a9f6a
DIST fonttools-4.55.6.gh.tar.gz 3897113 BLAKE2B f2ea39291ed57add406df285be0e3590b8a9d404049f38ad79869a7ea2d3f0e97135e5e4d93835a91825b126cb81383fa1dce9fc75db98be33704c3d36ea4530 SHA512 b14d12b21988bfbcda8b2532c9fd0072344452ebbd9ced2197fef8b0c8037fad6acb8d969473443e2d9c02df0f68eed45326179d6d0385d4921c8b95a1f7a42a
DIST fonttools-4.55.7.gh.tar.gz 3897996 BLAKE2B a34b1144133b69cbc057f3aea8f4a99290a8b5c33490008d29ee3546da975e690b959042f44117bd4496f5e523bb24b0671a415a59e741207efd19c25fd46ef9 SHA512 2c60bed9173b656e7b9f2cf3c0604b334b3e07b4d5e1f7d2bc2ec8a8e764095877e225b8801649df3551a1db3c7c9f4f65df1b5bbfdb4bf1221af122e04fe195
DIST fonttools-4.55.8.gh.tar.gz 3897975 BLAKE2B fd97aa3e4a02fd2cf5eaf85f0a741f7fb4dc253a41de21088b1a918132377f1c23d8a4b373c7ad04d8f22f023d1e34abcbe585f62d8b5cad9b42cebf711c478b SHA512 15a608362b0fec9811bd7079568ed0f3f398cfaee6917988ff1391659a0544114debf190e02df5326ffa305adc4f1ff297ccbb81918850934d1617ac23dbebf4
+DIST fonttools-4.56.0.gh.tar.gz 3900744 BLAKE2B f75ad562092cadbf2a844fedf47e1b054769227d1fd3e553f62f3f664f07a57df2dda410850b00e1a1aa7d322fb14401255f11570a3f0456b443ae96e484f2d6 SHA512 e1d668b299dcf26d578d1fd7b6830ab6a97f97545024060eda1acb625910a3a430e34ce04c6739db724e974422043d59629ab7380812a72b4a219ab0dbec35a3
diff --git a/dev-python/fonttools/fonttools-4.55.6.ebuild b/dev-python/fonttools/fonttools-4.55.6.ebuild
index 0adf50c35de4..75f8b22c745b 100644
--- a/dev-python/fonttools/fonttools-4.55.6.ebuild
+++ b/dev-python/fonttools/fonttools-4.55.6.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/fonttools/fonttools-4.56.0.ebuild b/dev-python/fonttools/fonttools-4.56.0.ebuild
new file mode 100644
index 000000000000..0adf50c35de4
--- /dev/null
+++ b/dev-python/fonttools/fonttools-4.56.0.ebuild
@@ -0,0 +1,99 @@
+# 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=( pypy3 python3_{10..13} )
+PYTHON_REQ_USE="xml(+)"
+
+inherit distutils-r1 virtualx
+
+DESCRIPTION="Library for manipulating TrueType, OpenType, AFM and Type1 fonts"
+HOMEPAGE="
+ https://github.com/fonttools/fonttools/
+ https://pypi.org/project/fonttools/
+"
+SRC_URI="
+ https://github.com/fonttools/fonttools/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="+native-extensions"
+
+RDEPEND="
+ >=dev-python/fs-2.4.9[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ native-extensions? (
+ $(python_gen_cond_dep '
+ dev-python/cython[${PYTHON_USEDEP}]
+ ' 'python*')
+ )
+ test? (
+ dev-python/brotlicffi[${PYTHON_USEDEP}]
+ dev-python/munkres[${PYTHON_USEDEP}]
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+ app-arch/zopfli
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # When dev-python/pytest-shutil is installed, we get weird import errors.
+ # This is due to incomplete nesting in the Tests/ tree:
+ #
+ # Tests/feaLib/__init__.py
+ # Tests/ufoLib/__init__.py
+ # Tests/svgLib/path/__init__.py
+ # Tests/otlLib/__init__.py
+ # Tests/varLib/__init__.py
+ #
+ # This tree requires an __init__.py in Tests/svgLib/ too, bug #701148.
+ touch Tests/svgLib/__init__.py || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_compile() {
+ local -x FONTTOOLS_WITH_CYTHON=$(usex native-extensions)
+ [[ ${EPYTHON} == pypy3 ]] && FONTTOOLS_WITH_CYTHON=0
+ distutils-r1_python_compile
+}
+
+src_test() {
+ # virtualx used when matplotlib is installed causing plot module tests to run
+ virtx distutils-r1_src_test
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # flaky test
+ Tests/ttLib/woff2_test.py::WOFF2ReaderTest::test_get_normal_tables
+ )
+
+ if [[ ${EPYTHON} == pypy3 ]] &&
+ has_version "dev-python/pyxattr[${PYTHON_USEDEP}]" &&
+ {
+ has_version "<dev-python/pypy3_10-exe-7.3.13_p2" ||
+ has_version "<dev-python/pypy3_10-exe-bin-7.3.13_p2"
+ }
+ then
+ EPYTEST_DESELECT+=(
+ # affected by a bug in PyPy/pyxattr
+ # https://github.com/iustin/pyxattr/issues/41
+ Tests/t1Lib/t1Lib_test.py::ReadWriteTest::test_read_with_path
+ )
+ fi
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ nonfatal epytest \
+ -p rerunfailures --reruns=5 \
+ Tests fontTools || die -n "Tests failed with ${EPYTHON}"
+}
diff --git a/dev-python/fpylll/Manifest b/dev-python/fpylll/Manifest
index c67752daec88..52513e54985d 100644
--- a/dev-python/fpylll/Manifest
+++ b/dev-python/fpylll/Manifest
@@ -1,2 +1 @@
-DIST fpylll-0.6.2.tar.gz 123743 BLAKE2B 755e322c1e88f0257531b356363447f05bb5c90bed1318796be5558ec96349b31e2a57420a502646f84e3d3eef2dd10ff648acbc140a0cc51cc9eb789660d499 SHA512 b5cff20f5bfb7398a76f772f72130b6c84af6a4cca10790a0b4e3df0bb6fdf3eaa6ceb351cd87422ad710081290c5a45dd0c3ccf71ad56cfc38dc16714a25242
DIST fpylll-0.6.3.tar.gz 123868 BLAKE2B aa9e0ed169a39e1b17fb559c8d840fb6132b8d54b139ecfe1a154e5b2a6265d9e7ebfaa97b9a84278952a4c1629ad37ec9a12e3c0a3ff77f7be14c78e071f819 SHA512 c5a857e81347c53ad9b4ee93078dc384274737c72049ee7745245a7c0861ec7670ec338e4e7dc7d2fc72a9d7e59e6d918715224b2d0286a7b3f53993bdb47409
diff --git a/dev-python/fpylll/fpylll-0.6.2.ebuild b/dev-python/fpylll/fpylll-0.6.2.ebuild
deleted file mode 100644
index 127d0aaea884..000000000000
--- a/dev-python/fpylll/fpylll-0.6.2.ebuild
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..13} )
-DISTUTILS_USE_PEP517=setuptools
-DISTUTILS_EXT=1
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Python bindings for sci-libs/fplll"
-HOMEPAGE="
- https://github.com/fplll/fpylll/
- https://pypi.org/project/fpylll/
-"
-
-# setup.py says "or later"
-LICENSE="GPL-2+"
-SLOT="0"
-KEYWORDS="amd64 ~riscv"
-IUSE="test"
-
-DEPEND="
- dev-python/cysignals[${PYTHON_USEDEP}]
- dev-python/numpy[${PYTHON_USEDEP}]
- >=sci-libs/fplll-5.5.0
-"
-RDEPEND="
- ${DEPEND}
-"
-BDEPEND="
- >=dev-python/cython-3[${PYTHON_USEDEP}]
-"
-
-distutils_enable_tests pytest
-
-python_test(){
- local -x PY_IGNORE_IMPORTMISMATCH=1
- epytest
-}
diff --git a/dev-python/fpylll/fpylll-0.6.3.ebuild b/dev-python/fpylll/fpylll-0.6.3.ebuild
index 367951ad2a48..127d0aaea884 100644
--- a/dev-python/fpylll/fpylll-0.6.3.ebuild
+++ b/dev-python/fpylll/fpylll-0.6.3.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
# setup.py says "or later"
LICENSE="GPL-2+"
SLOT="0"
-KEYWORDS="~amd64 ~riscv"
+KEYWORDS="amd64 ~riscv"
IUSE="test"
DEPEND="
diff --git a/dev-python/gdb-pt-dump/Manifest b/dev-python/gdb-pt-dump/Manifest
index 429ef6b178d7..26a5eb6cf9a3 100644
--- a/dev-python/gdb-pt-dump/Manifest
+++ b/dev-python/gdb-pt-dump/Manifest
@@ -1,2 +1,3 @@
DIST gdb-pt-dump-0.0.0_p20231111.gh.tar.gz 386894 BLAKE2B 31c15a7574ac37e859831e6b17d27ce47bc6aed4d3bb81a01c8492b803cd71ba28379777bd9c221c9f81585811bba4952fb8e5349104ff36e88efe3996715937 SHA512 c94cce47754b634a2fda267f715cdd7957ec0714c4ac96d6b9e20fa4cfdf6c026a3e0b351bf0e041ea0c2dbf253f547ede3d2b13b83c6316ef6222bac0e4b61b
DIST gdb-pt-dump-0.0.0_p20240401.gh.tar.gz 406426 BLAKE2B 9b50d600df72eec81b2d146dc972a2096ce6d8a085b79360dfefc3d45a733e29008ca3986496811532e541deec46d71410191869cd9643c603a3955d683e6ff7 SHA512 bb521868ccfbae8a411bc57e067cdda227b113cb20bc97eefad77a693f66d00d20debbce51f69c8daf86128bbf938cd3304ea97992aa817a608ce65f80173e10
+DIST gdb-pt-dump-0.0.0_p20250105.gh.tar.gz 407989 BLAKE2B a9f1a95894e8ac3db754fbc91dc4454ae475001f0a0e867e788b1958ed5734571456d720567b4ac12101d1b6e303376b42e88fa86dc265661b3be8554bc55ab7 SHA512 b054fde9e75fa5e7fe417c13ff7bb25ced7b1838ba0592cbedf1c086fc9fe461afea3df0643a164bf488bc4871d78517ef94def389efcdf291b452ce758b7397
diff --git a/dev-python/gdb-pt-dump/gdb-pt-dump-0.0.0_p20250105.ebuild b/dev-python/gdb-pt-dump/gdb-pt-dump-0.0.0_p20250105.ebuild
new file mode 100644
index 000000000000..0b067e6d51ae
--- /dev/null
+++ b/dev-python/gdb-pt-dump/gdb-pt-dump-0.0.0_p20250105.ebuild
@@ -0,0 +1,31 @@
+# Copyright 2023-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=poetry
+DISTUTILS_SINGLE_IMPL=1
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1
+
+DESCRIPTION="Examine the address space of a QEMU-based virtual machine"
+HOMEPAGE="https://github.com/martinradev/gdb-pt-dump"
+
+GDB_PT_DUMP_COMMIT="7ccdd8bb35762d24386990ba91e43da234fe7437"
+
+if [[ ${PV} == 9999 ]] ; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/martinradev/gdb-pt-dump.git"
+else
+ SRC_URI="https://github.com/martinradev/gdb-pt-dump/archive/${GDB_PT_DUMP_COMMIT}.tar.gz -> ${P}.gh.tar.gz"
+ KEYWORDS="~amd64 ~arm64 ~x86"
+ S="${WORKDIR}/${PN}-${GDB_PT_DUMP_COMMIT}"
+fi
+
+LICENSE="MIT"
+SLOT="0"
+
+RDEPEND="
+ dev-debug/gdb[python,${PYTHON_SINGLE_USEDEP}]
+"
diff --git a/dev-python/gdb-pt-dump/gdb-pt-dump-9999.ebuild b/dev-python/gdb-pt-dump/gdb-pt-dump-9999.ebuild
index 7cd8fe076032..0b067e6d51ae 100644
--- a/dev-python/gdb-pt-dump/gdb-pt-dump-9999.ebuild
+++ b/dev-python/gdb-pt-dump/gdb-pt-dump-9999.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2023-2024 Gentoo Authors
+# Copyright 2023-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -12,7 +12,7 @@ inherit distutils-r1
DESCRIPTION="Examine the address space of a QEMU-based virtual machine"
HOMEPAGE="https://github.com/martinradev/gdb-pt-dump"
-GDB_PT_DUMP_COMMIT="89ea252f6efc5d75eacca16fc17ff8966a389690"
+GDB_PT_DUMP_COMMIT="7ccdd8bb35762d24386990ba91e43da234fe7437"
if [[ ${PV} == 9999 ]] ; then
inherit git-r3
diff --git a/dev-python/google-auth/Manifest b/dev-python/google-auth/Manifest
index 9d5d85a0c604..c8ad77bd81a1 100644
--- a/dev-python/google-auth/Manifest
+++ b/dev-python/google-auth/Manifest
@@ -1,2 +1 @@
-DIST google_auth-2.37.0.tar.gz 268878 BLAKE2B da39fd1909ce93a212a71624e925df2dee753765718c5a7bb4a5ca5115dfc15c0790eeaf77d52ead7bff795f2bf9d2cfa12a6cd8cdd964d63f0dbf7d47e27b82 SHA512 08f194c99077a230845857e98ac8c4eab3ca086a288be9ce1031c9d3f6a5b40cb4fe3305be6b822b27561e4e7b0c0a144e9888be5a95ebe06de42d74fc911756
DIST google_auth-2.38.0.tar.gz 270866 BLAKE2B fe21c52c00a9a515d250644ffcff593c4dae55f326eae917f9fac1864b5f595a60da753e9c96e2c2fc15dfa1623f97b4ba5ebc069b3e0f8e2f7963db2e35909c SHA512 fdc771a6b3ff2912ec5c7b6efeb84b4faf9f429caea4ecc76473515a74a73c0a3e2d78bacb96725f6e2c8170292208ae8b4fb4f790e874cf3e2a3f5b221451bf
diff --git a/dev-python/google-auth/google-auth-2.37.0.ebuild b/dev-python/google-auth/google-auth-2.37.0.ebuild
deleted file mode 100644
index 14d4582fa1b1..000000000000
--- a/dev-python/google-auth/google-auth-2.37.0.ebuild
+++ /dev/null
@@ -1,65 +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_{10..13} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Google Authentication Library"
-HOMEPAGE="
- https://github.com/googleapis/google-auth-library-python/
- https://pypi.org/project/google-auth/
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="amd64 arm64 x86"
-
-RDEPEND="
- <dev-python/cachetools-6.0.0[${PYTHON_USEDEP}]
- >=dev-python/pyasn1-0.1.7[${PYTHON_USEDEP}]
- >=dev-python/pyasn1-modules-0.2.1[${PYTHON_USEDEP}]
- >=dev-python/rsa-3.1.4[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/aioresponses[${PYTHON_USEDEP}]
- >=dev-python/cryptography-38.0.3[${PYTHON_USEDEP}]
- dev-python/flask[${PYTHON_USEDEP}]
- dev-python/freezegun[${PYTHON_USEDEP}]
- dev-python/mock[${PYTHON_USEDEP}]
- dev-python/moto[${PYTHON_USEDEP}]
- >=dev-python/pyjwt-2.0[${PYTHON_USEDEP}]
- dev-python/pyopenssl[${PYTHON_USEDEP}]
- dev-python/pytest-asyncio[${PYTHON_USEDEP}]
- dev-python/pytest-localserver[${PYTHON_USEDEP}]
- dev-python/pyu2f[${PYTHON_USEDEP}]
- dev-python/requests[${PYTHON_USEDEP}]
- dev-python/responses[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-
-python_test() {
- local EPYTEST_DESELECT=(
- # tests are broken with up-to-date pyopenssl
- tests/transport/test__mtls_helper.py::TestDecryptPrivateKey::test_success
- )
- local EPYTEST_IGNORE=(
- # these are compatibility tests with oauth2client
- # disable them to unblock removal of that package
- tests/test__oauth2client.py
- )
-
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- epytest -p asyncio
-}
-
-python_compile() {
- distutils-r1_python_compile
- find "${BUILD_DIR}" -name '*.pth' -delete || die
-}
diff --git a/dev-python/google-auth/google-auth-2.38.0.ebuild b/dev-python/google-auth/google-auth-2.38.0.ebuild
index 3cb34c4daa6a..14d4582fa1b1 100644
--- a/dev-python/google-auth/google-auth-2.38.0.ebuild
+++ b/dev-python/google-auth/google-auth-2.38.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
+KEYWORDS="amd64 arm64 x86"
RDEPEND="
<dev-python/cachetools-6.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/googleapis-common-protos/Manifest b/dev-python/googleapis-common-protos/Manifest
index e89895e60b38..101358d5177a 100644
--- a/dev-python/googleapis-common-protos/Manifest
+++ b/dev-python/googleapis-common-protos/Manifest
@@ -1 +1,2 @@
DIST googleapis_common_protos-1.66.0.tar.gz 114376 BLAKE2B b25f0d4204a1ba04d8a0ea0315b67d0a0fec0b7c46c1fb7e7deef2ad5ffc31e217f0303ff146a1b490163e76445d212a219f190eddf1c82e207e8bb980e85917 SHA512 c6a0c371bf7bedbb862696562e35567ec1eee3560e5c1fcd61ef20a5bceb99b53cc9f609eb405c724abbf2361e8c58cf8c44ccb8aba3161e892938d8bef60e02
+DIST googleapis_common_protos-1.67.0.tar.gz 57344 BLAKE2B eb3d4f373321e3ff09e0220ba0619e3d8fc2bfe0d3da65fe1b575ad8e2fd69b4c781da2f336a7a9060e64eb55405af16f982dad0661cbb12d53a4e4996e69c02 SHA512 268b73eab64214c1293acd7ff5980bd88c1871b3ed2b45ac418f84ef7ad933030c6387ad0b72b9aef4ba17827f5c787dfdbb22eb65ead5ef4fecfaa86e78b377
diff --git a/dev-python/googleapis-common-protos/googleapis-common-protos-1.67.0.ebuild b/dev-python/googleapis-common-protos/googleapis-common-protos-1.67.0.ebuild
new file mode 100644
index 000000000000..75a10e75be4d
--- /dev/null
+++ b/dev-python/googleapis-common-protos/googleapis-common-protos-1.67.0.ebuild
@@ -0,0 +1,31 @@
+# Copyright 2020-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python classes generated from the common protos in the googleapis repository"
+HOMEPAGE="
+ https://github.com/googleapis/python-api-common-protos/
+ https://pypi.org/project/googleapis-common-protos/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+
+RDEPEND="
+ <dev-python/protobuf-6[${PYTHON_USEDEP}]
+ >=dev-python/protobuf-3.15.0[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests pytest
+
+python_compile() {
+ distutils-r1_python_compile
+ find "${BUILD_DIR}" -name '*.pth' -delete || die
+}
diff --git a/dev-python/griffe/Manifest b/dev-python/griffe/Manifest
index 223876f5975d..e02e8ea12c51 100644
--- a/dev-python/griffe/Manifest
+++ b/dev-python/griffe/Manifest
@@ -1,2 +1,2 @@
-DIST griffe-1.5.5.gh.tar.gz 393243 BLAKE2B a365cd210d3c11ea3e327bd38298a81b4849f0f902db949c84a4e745766753191df461cf6309abd0c3f3bc340f9cc5303484549acd7c3666595bfec600835f9d SHA512 49757656dd7ddbcb648329fb92d21742c69d13ebe49e725d70c945726833236f128851434a0095d725e4e74624473bc86948094d2d86bc898296bd860569b6cc
DIST griffe-1.5.6.gh.tar.gz 393058 BLAKE2B f1c425e2f256e14e19e1b9c0e93e46d3fdcc79c82285c2163cacafc2dc0ff326805222f7097f28d7690ffbbd248733603387b3db16c068d581979bc18447fa11 SHA512 a65ed6569503e4b2b57bd7779e3f8b3d46266cf4c0dceeddf6b60db6479d417bb9527a99968e2913b153e45ed9f060d47c2497863daac6b413c10baf95756590
+DIST griffe-1.5.7.gh.tar.gz 393455 BLAKE2B d294a62e131ce5276c52e3f11adef5081c10131156cdb3c112761569d3776091e1c1dfea445252cc3595572baf1caab416ff510d89f84a4511d147f1aa36b762 SHA512 cfea773780a645f92f8ad32b0f2e682561f63cf3082f2e24bd1f944f1a907b35db15883cb7df726d34e03373e73fe5e855f3d00a455cc01cac265bced822b4ed
diff --git a/dev-python/griffe/griffe-1.5.5.ebuild b/dev-python/griffe/griffe-1.5.7.ebuild
index b90f3d687486..9b75031cdcd0 100644
--- a/dev-python/griffe/griffe-1.5.5.ebuild
+++ b/dev-python/griffe/griffe-1.5.7.ebuild
@@ -33,7 +33,7 @@ RDEPEND="
BDEPEND="
test? (
>=dev-python/jsonschema-4.17[${PYTHON_USEDEP}]
- dev-python/mkdocstrings[${PYTHON_USEDEP}]
+ >=dev-python/mkdocstrings-0.28.0[${PYTHON_USEDEP}]
>=dev-python/pytest-xdist-2.4[${PYTHON_USEDEP}]
)
"
diff --git a/dev-python/grpcio/grpcio-1.68.1.ebuild b/dev-python/grpcio/grpcio-1.68.1.ebuild
index 9913dd0fb8c4..565c3231eb5f 100644
--- a/dev-python/grpcio/grpcio-1.68.1.ebuild
+++ b/dev-python/grpcio/grpcio-1.68.1.ebuild
@@ -28,7 +28,7 @@ SRC_URI+="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="amd64 ~arm64 ~x86"
+KEYWORDS="amd64 ~arm64 x86"
DEPEND="
dev-libs/openssl:=
diff --git a/dev-python/gst-python/gst-python-1.24.11.ebuild b/dev-python/gst-python/gst-python-1.24.11.ebuild
index b0dadf336030..2f5920def90b 100644
--- a/dev-python/gst-python/gst-python-1.24.11.ebuild
+++ b/dev-python/gst-python/gst-python-1.24.11.ebuild
@@ -13,7 +13,7 @@ SRC_URI="https://gstreamer.freedesktop.org/src/${PN}/${P}.tar.xz"
LICENSE="LGPL-2+"
SLOT="1.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"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
RDEPEND="${PYTHON_DEPS}
diff --git a/dev-python/hpack/Manifest b/dev-python/hpack/Manifest
index e2ba26734491..85bfda865403 100644
--- a/dev-python/hpack/Manifest
+++ b/dev-python/hpack/Manifest
@@ -1,2 +1 @@
-DIST hpack-4.0.0.gh.tar.gz 5301419 BLAKE2B 0164f6aafc0d1f17f6c397efe710503a22501faae3c7dbba4e57ca2dc76e4d373bc5e65bf55acda8bc61975d12f8a2084de0e0c4587539e5a3102e3cf66d562b SHA512 f482d086d7a82649393e3cfea55c98966ce57055cb1826bc4dec1ea334661c02708e7903f2e8e588ee1c30df41373e1de9fb960c2e7bbc18d0ace0b8f97b195b
DIST hpack-4.1.0.gh.tar.gz 5303243 BLAKE2B 3394c4142f5fdb32fb466e96ee96be7a41fc867a5731b73338262498538d6f7d47c2864c4b8391b599001e996fc1218dec1e4c1dbda325e90248a265161ec463 SHA512 10018fefae7e09078c0133a3519f18f72bd39f31d652f224d2ca2a780e2f18c51c7fc4589ae540e3130909a6b3878e0ac2ce8a5dadc98ce93bcf8af201989544
diff --git a/dev-python/hpack/hpack-4.0.0-r1.ebuild b/dev-python/hpack/hpack-4.0.0-r1.ebuild
deleted file mode 100644
index 25ba1335b9c0..000000000000
--- a/dev-python/hpack/hpack-4.0.0-r1.ebuild
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..13} pypy3 )
-
-inherit distutils-r1
-
-DESCRIPTION="Pure-Python HPACK header compression"
-HOMEPAGE="
- https://python-hyper.org/projects/hpack/en/latest/
- https://github.com/python-hyper/hpack/
- https://pypi.org/project/hpack/
-"
-# PyPI sdist is missing test fixtures, as of 4.0.0
-SRC_URI="
- https://github.com/python-hyper/hpack/archive/v${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
-
-# dev-python/pytest-relaxed causes tests to fail
-BDEPEND="
- test? (
- >=dev-python/hypothesis-3.4.2[${PYTHON_USEDEP}]
- !!dev-python/pytest-relaxed[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
diff --git a/dev-python/hpack/hpack-4.1.0.ebuild b/dev-python/hpack/hpack-4.1.0.ebuild
index a7a8da6f2650..8a3ce480b13b 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/hyperframe/Manifest b/dev-python/hyperframe/Manifest
index fe13b1d02f15..55542f388936 100644
--- a/dev-python/hyperframe/Manifest
+++ b/dev-python/hyperframe/Manifest
@@ -1,2 +1 @@
-DIST hyperframe-6.0.1.tar.gz 25008 BLAKE2B c5cea5b54fd9ecfc0d619c07c484cdd1e2813c656120faadf3f1b61739c608b43d19bd7527b221ad25ea824da05b5747d38f3a6e27d058c1030cce2c4069f10e SHA512 2a5101b2e91e047fe39b32f81a1a8b2240c371fed28a5e1581e743371418388a7dfb55bc819c46a45804e7f00a5231ca54c92aa1b5b41ffeb714b8cb3ac485ca
DIST hyperframe-6.1.0.tar.gz 26566 BLAKE2B d6f53a872ec5ebfae5b1f16984db06386e3f6fa32ab3b9b590592490d7666ce4601c05a4c4f7279aa09656e85f7ff5cb182b256cd7e9b0982cb0992c3a2f70ef SHA512 83a986f0cf3e2a84fe7a2c907758e75be744aba7dfe03173ee6bcbe4c5e5a92a2b5e90d66c76c14a05ad4b342d02719a998600670befe7549a0a1edf0c7dd024
diff --git a/dev-python/hyperframe/hyperframe-6.0.1-r1.ebuild b/dev-python/hyperframe/hyperframe-6.0.1-r1.ebuild
deleted file mode 100644
index 1a948dc0436b..000000000000
--- a/dev-python/hyperframe/hyperframe-6.0.1-r1.ebuild
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..13} pypy3 )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="HTTP/2 framing layer for Python"
-HOMEPAGE="
- https://python-hyper.org/projects/hyperframe/en/latest/
- https://pypi.org/project/hyperframe/
- https://github.com/python-hyper/hyperframe/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
-
-distutils_enable_tests pytest
diff --git a/dev-python/hyperframe/hyperframe-6.1.0.ebuild b/dev-python/hyperframe/hyperframe-6.1.0.ebuild
index fcfb48dd9886..1a1bd2d5dd15 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/hypothesis/Manifest b/dev-python/hypothesis/Manifest
index ac5c79e2d348..3c1af4c6cc09 100644
--- a/dev-python/hypothesis/Manifest
+++ b/dev-python/hypothesis/Manifest
@@ -1,5 +1,4 @@
-DIST hypothesis-6.123.17.gh.tar.gz 9508250 BLAKE2B 494c41299a646856050889e2093dae477386c76ac3e57576698178a65cfe4b3bb7a2cfe19204904ae0ca8d25cf8d347389c7eb76b7d8ac046067fc4b11bd509f SHA512 73f2c2cd1bb9063d74448cfba0f85308398b52fcb0cd948a64b6396f698b914154a93b7afdf2b3c32a902f21f6a84996218572af700c35c518d9a41bbe6cae8f
DIST hypothesis-6.124.3.gh.tar.gz 9510786 BLAKE2B d4104ce7cbe009ce1e0d2d6fa04db8d5dda2db08f8dcdaea90d4a111cbcf71db53214a5b06a69ca40715a0999970e45293aad754dcfbd06c1a6e4e04700aee83 SHA512 898567b6e32b619892292c07e95ca57f671e9fcc6925dd560285147491fba72df5fe5c41a3642d3910961ef569cbce8790ea1100359e674f08f5b24522073184
-DIST hypothesis-6.124.7.gh.tar.gz 9507487 BLAKE2B d0160dedfd78443724a7388020fa093ba95e8621403f4fa69f04c324a5be8d49b51c3cae4cca488a86046818b6762a3f9703b1963186ae82daed2c8cdf0f8f70 SHA512 c9c699d830082ccfb056c42817592ad3736b3e1c2294bed889d9e581dc8d4b093a86a949b24e3fa842941daf18933c55c6a479cd6768c30cde0cecb94777a620
DIST hypothesis-6.124.9.gh.tar.gz 9507981 BLAKE2B 469448e2c97b0a798293d53d2ae1ea328c61c94245245b989a33a3520a903dbb6a4a468192dc7837dfe75bde5d9a010ffb7d4b8f16c7c8462bab8da4f183f310 SHA512 0c0f48a88a748d4bf1fc0763b4e464166536d4d16461f06a2090a2f5f54464730fff8eb7892ff60584c2135853aab7a56253db83dfd90a8e679fa3f37d4fb6a9
-DIST hypothesis-6.125.0.gh.tar.gz 9508026 BLAKE2B 1c1816de7cc2be2ac541671ce8a8172b9c75e2fcd79eb219888f5815ff84b2438088c7f63921fffb58a3c0c7db8b1f31437a0de7b4c12ef6947787608cde4ff0 SHA512 8eb92e945772b48d9ae2ed67d4a1f17b63222e2aa7755e0e3e2f9a93d5610ade79e5f13b1e9a50d72f21f3f1142ee2f05eb1fa13b9dfd94c51211a9c90308433
+DIST hypothesis-6.125.2.gh.tar.gz 9508767 BLAKE2B 2f356f9678c1c8a56dcc66c5f96fee3426860e541e30c52b9108769fbb4112f9f4d8c77a9b9acef045a52749dd9325155fa8790c023f05dbf58608531ec0f89e SHA512 c953eef644a3c3239c2d0ace3eb6c02c7c48bb37d8fba6c6429720c7ab4b42fd76f6e42ee94f543db8d224bfb6912ed5e64feb181c24207a403e307364618843
+DIST hypothesis-6.125.3.gh.tar.gz 9508904 BLAKE2B ce056b2b8d0532ae77ec3e7de68fbe472a86c676250577a9e73c20231d4db781935daacd4c7fbc0b426affc7db74eb92e530b61094d4c3520a14e5823ce5fd9f SHA512 9bef825197660a2d27654c4e0f8923bdaff30ad0a9e2c436bdc5e6e55e2df283c9497c2611e4e3e27b86b6ecccf232eb17f8cbde49e6fb28c4c64368009e6ae2
diff --git a/dev-python/hypothesis/hypothesis-6.123.17.ebuild b/dev-python/hypothesis/hypothesis-6.123.17.ebuild
deleted file mode 100644
index 3b81c426627d..000000000000
--- a/dev-python/hypothesis/hypothesis-6.123.17.ebuild
+++ /dev/null
@@ -1,104 +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=( pypy3 python3_{10..13} )
-PYTHON_COMPAT=( "${CLI_COMPAT[@]}" )
-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}]
- $(python_gen_cond_dep '
- >=dev-python/exceptiongroup-1.0.0_rc8[${PYTHON_USEDEP}]
- ' 3.9 3.10)
- cli? (
- $(python_gen_cond_dep '
- dev-python/black[${PYTHON_USEDEP}]
- dev-python/click[${PYTHON_USEDEP}]
- ' "${CLI_COMPAT[@]}")
- )
-"
-BDEPEND="
- test? (
- dev-python/pexpect[${PYTHON_USEDEP}]
- >=dev-python/pytest-8[${PYTHON_USEDEP}]
- dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
- dev-python/pytest-xdist[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-python_test() {
- # subtests are broken by warnings from random plugins
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- local -x PYTEST_PLUGINS=xdist.plugin,_hypothesis_pytestplugin
- local -x HYPOTHESIS_NO_PLUGINS=1
-
- # NB: paths need to be relative to pytest.ini,
- # i.e. start with hypothesis-python/
- local EPYTEST_DESELECT=()
- case ${EPYTHON} in
- pypy3)
- EPYTEST_DESELECT+=(
- # failing due to warnings from numpy/cython
- hypothesis-python/tests/pytest/test_fixtures.py::test_given_plus_overridden_fixture
- )
- ;;
- esac
-
- epytest -o filterwarnings= -p rerunfailures --reruns=5 \
- tests/cover tests/pytest tests/quality
-}
-
-src_install() {
- local HAD_CLI=
-
- distutils-r1_src_install
-
- if [[ ! ${HAD_CLI} ]]; then
- rm -r "${ED}/usr/bin" || die
- fi
-}
-
-python_install() {
- distutils-r1_python_install
- if use cli && has "${EPYTHON}" "${CLI_COMPAT[@]/_/.}"; then
- HAD_CLI=1
- else
- rm -r "${D}$(python_get_scriptdir)" || die
- fi
-}
-
-pkg_postinst() {
- optfeature "datetime support" dev-python/pytz
- optfeature "dateutil support" dev-python/python-dateutil
- optfeature "numpy support" dev-python/numpy
- optfeature "django support" dev-python/django dev-python/pytz
- optfeature "pandas support" dev-python/pandas
- optfeature "pytest support" dev-python/pytest
-}
diff --git a/dev-python/hypothesis/hypothesis-6.124.3.ebuild b/dev-python/hypothesis/hypothesis-6.124.3.ebuild
index 4486f30faf3d..3b81c426627d 100644
--- a/dev-python/hypothesis/hypothesis-6.124.3.ebuild
+++ b/dev-python/hypothesis/hypothesis-6.124.3.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.124.7.ebuild b/dev-python/hypothesis/hypothesis-6.125.2.ebuild
index 4486f30faf3d..4486f30faf3d 100644
--- a/dev-python/hypothesis/hypothesis-6.124.7.ebuild
+++ b/dev-python/hypothesis/hypothesis-6.125.2.ebuild
diff --git a/dev-python/hypothesis/hypothesis-6.125.0.ebuild b/dev-python/hypothesis/hypothesis-6.125.3.ebuild
index 4486f30faf3d..3ab9d7ec9403 100644
--- a/dev-python/hypothesis/hypothesis-6.125.0.ebuild
+++ b/dev-python/hypothesis/hypothesis-6.125.3.ebuild
@@ -69,6 +69,12 @@ python_test() {
hypothesis-python/tests/pytest/test_fixtures.py::test_given_plus_overridden_fixture
)
;;
+ python3.13)
+ EPYTEST_DESELECT+=(
+ # TODO
+ 'hypothesis-python/tests/cover/test_reflection.py::test_clean_source[case-5]'
+ )
+ ;;
esac
epytest -o filterwarnings= -p rerunfailures --reruns=5 \
diff --git a/dev-python/icalendar/Manifest b/dev-python/icalendar/Manifest
index f1b9e31dd638..ebd4c8facb8f 100644
--- a/dev-python/icalendar/Manifest
+++ b/dev-python/icalendar/Manifest
@@ -1,2 +1 @@
-DIST icalendar-6.1.0.tar.gz 142307 BLAKE2B fb5b6e6c337aaf4f18b1d2237d3523cbd4502e61255ee3d3de0f335ca90da384119c1cda5843b455f3eb93540c17d9448a3745e6a09e27b35158b26ab6f7e01f SHA512 dbab2542371d038060be9e9d2ecccdf6db7d51c4ca80515e02798db1a0f96fc9b4a7eb8e098831d7da97c2c8ba715da2836badf872a0d5c206299fb78923b864
DIST icalendar-6.1.1.tar.gz 145256 BLAKE2B cf3cf5a79f25f6c2820e4a04fc02a1546949e99c4e3fa9e6a204b0e4eb13e475b0c5a1f3179009b77437a33ab360b561cdff59453bcd77b771fc223ad14a2494 SHA512 3afb10dcfd07d0348bb404e2bfef3b790e312764bed1147999a3322255d7c881a1513077b49b3ed6cfc03a22afa81a3211823d94a2414b00bc2c4503bed73264
diff --git a/dev-python/icalendar/icalendar-6.1.0.ebuild b/dev-python/icalendar/icalendar-6.1.0.ebuild
deleted file mode 100644
index 677a6c7878a1..000000000000
--- a/dev-python/icalendar/icalendar-6.1.0.ebuild
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=hatchling
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Package used for parsing and generating iCalendar files (RFC 2445)"
-HOMEPAGE="
- https://github.com/collective/icalendar/
- https://pypi.org/project/icalendar/
-"
-
-LICENSE="BSD-2"
-SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~riscv x86"
-
-RDEPEND="
- dev-python/python-dateutil[${PYTHON_USEDEP}]
- dev-python/tzdata[${PYTHON_USEDEP}]
-"
-BDEPEND="
- dev-python/hatch-vcs[${PYTHON_USEDEP}]
- test? (
- dev-python/hypothesis[${PYTHON_USEDEP}]
- dev-python/pytz[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_sphinx docs \
- dev-python/sphinx-copybutton \
- dev-python/sphinx-rtd-theme
-distutils_enable_tests pytest
-
-python_prepare_all() {
- # reset conf.py to not read version from an installed instance
- sed -e "s:pkg_resources.get_distribution('icalendar').version:'${PV}':" \
- -i docs/conf.py || die
- distutils-r1_python_prepare_all
-}
diff --git a/dev-python/icalendar/icalendar-6.1.1.ebuild b/dev-python/icalendar/icalendar-6.1.1.ebuild
index bb9bf58e9f10..c60e1f7b1dcd 100644
--- a/dev-python/icalendar/icalendar-6.1.1.ebuild
+++ b/dev-python/icalendar/icalendar-6.1.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD-2"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 ~arm arm64 ~riscv x86"
RDEPEND="
dev-python/python-dateutil[${PYTHON_USEDEP}]
diff --git a/dev-python/id/id-1.5.0.ebuild b/dev-python/id/id-1.5.0.ebuild
index 1ee2b777ab56..d8f9afc32498 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 ~ppc64 ~riscv ~sparc ~x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc64 ~riscv ~sparc x86"
RDEPEND="
dev-python/requests[${PYTHON_USEDEP}]
diff --git a/dev-python/identify/Manifest b/dev-python/identify/Manifest
index 7667308b00ab..db1a0037824e 100644
--- a/dev-python/identify/Manifest
+++ b/dev-python/identify/Manifest
@@ -1,2 +1,2 @@
-DIST identify-2.6.5.gh.tar.gz 101871 BLAKE2B 32beb0e5185f39df6f3f45969eb2a4e11e711f36bd1c728322307ffa02aa60c3d7f20c5cf3f93afc88a3304ad98f36d426cca32108d9b2e79663250acaaddd57 SHA512 933e269c1f68a7ba4e97f2b20297b665e9ba955e3d26b3a9f535e84d8d8e929f844a4e5d8f6c053d819318368ae89c87058ca81f8d24e92c60a5f053db3056ba
DIST identify-2.6.6.gh.tar.gz 101889 BLAKE2B e6246bceed1aaf806e4d7984581214c9272508782cd35429b8d58779a0546b5dc1536d970d6a71bd7135afb73216896ffaee0ec627261f25907034081580018f SHA512 0312654b6cf20e59248656fe09d54292fafa4f1c41b85def6f828f986b4ef5fe9d275a9d90537f3129060a572106b79aad338ac52f9d0d4287a8a6db805fb18f
+DIST identify-2.6.7.gh.tar.gz 101902 BLAKE2B 078426177c20ba9b6d8ce3771c982304af2935329ef4c0c09fa8cd0f8309987fe85f31f5c4bf05e231bab43065320f92797cbb19441e839b37729e95d81681da SHA512 9f43ce68e3767bfc45fc56509b9c7604c7a1947688f8305019bd551205820fb4f095ad48d7cc0d05caf90dd8ca43b2d3ef4bb1808938e04b7a44b3658734bdc4
diff --git a/dev-python/identify/identify-2.6.6.ebuild b/dev-python/identify/identify-2.6.6.ebuild
index c40a9ab3694b..007edcf9a3ef 100644
--- a/dev-python/identify/identify-2.6.6.ebuild
+++ b/dev-python/identify/identify-2.6.6.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~x86"
+KEYWORDS="amd64 arm64 ~hppa ~ppc ~ppc64 ~riscv x86"
RDEPEND="
dev-python/ukkonen[${PYTHON_USEDEP}]
diff --git a/dev-python/identify/identify-2.6.5.ebuild b/dev-python/identify/identify-2.6.7.ebuild
index 007edcf9a3ef..c40a9ab3694b 100644
--- a/dev-python/identify/identify-2.6.5.ebuild
+++ b/dev-python/identify/identify-2.6.7.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm64 ~hppa ~ppc ~ppc64 ~riscv x86"
+KEYWORDS="~amd64 ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~x86"
RDEPEND="
dev-python/ukkonen[${PYTHON_USEDEP}]
diff --git a/dev-python/importlib-metadata/Manifest b/dev-python/importlib-metadata/Manifest
index f2a4751402a3..d2738cbd6a45 100644
--- a/dev-python/importlib-metadata/Manifest
+++ b/dev-python/importlib-metadata/Manifest
@@ -1,2 +1 @@
-DIST importlib_metadata-8.5.0.tar.gz 55304 BLAKE2B 801d7edaed5a42ef5c871830286e698620cd06cde43178c1ab65a5d35f6055fdd2a02b0f14bada94704a13a6708ea3091e634548e534df2df92d942c83192c3b SHA512 86ceb3ff408705565628b71a740a9e9123eee4b49e2ad029b9ee204548a78257dfefe9756194ce660939806f75983dd4b858dacd642b40fddc4188e699ef4e19
DIST importlib_metadata-8.6.1.tar.gz 55767 BLAKE2B 206263c5d6c9e0d02bb7acd063f8ef3392ae183a39808949ba6780816fd01cd7787797c378bceb377b85384739184a01cee6ee5c8a3f241b63d0be760455be32 SHA512 4e7ecb05c6c6102f24fe896772942137edfc57257f2f12e3add3ee771ff4146e0ee6a23fd6e3e9ab7e4547d2ab573ad8d21bdd0746b7039d2421f3ba6968eede
diff --git a/dev-python/importlib-metadata/importlib-metadata-8.5.0.ebuild b/dev-python/importlib-metadata/importlib-metadata-8.5.0.ebuild
deleted file mode 100644
index d5b6fdec96ce..000000000000
--- a/dev-python/importlib-metadata/importlib-metadata-8.5.0.ebuild
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-# please keep this ebuild at EAPI 8 -- sys-apps/portage dep
-EAPI=8
-
-DISTUTILS_USE_PEP517=flit
-# NB: this package extends beyond built-in importlib stuff in py3.8+
-# new entry_point API not yet included in cpython release
-PYTHON_COMPAT=( pypy3 python3_{10..13} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Read metadata from Python packages"
-HOMEPAGE="
- https://github.com/python/importlib_metadata/
- https://pypi.org/project/importlib-metadata/
-"
-
-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"
-
-RDEPEND="
- >=dev-python/zipp-3.20[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- >=dev-python/jaraco-test-5.4[${PYTHON_USEDEP}]
- dev-python/packaging[${PYTHON_USEDEP}]
- dev-python/pyfakefs[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests unittest
-
-src_configure() {
- grep -q 'build-backend = "setuptools' pyproject.toml ||
- die "Upstream changed build-backend, recheck"
- # write a custom pyproject.toml to ease setuptools bootstrap
- cat > pyproject.toml <<-EOF || die
- [build-system]
- requires = ["flit_core >=3.2,<4"]
- build-backend = "flit_core.buildapi"
-
- [project]
- name = "importlib_metadata"
- version = "${PV}"
- description = "Read metadata from Python packages"
- EOF
-}
diff --git a/dev-python/importlib-metadata/importlib-metadata-8.6.1.ebuild b/dev-python/importlib-metadata/importlib-metadata-8.6.1.ebuild
index d31c671730ff..0bf8748f05f7 100644
--- a/dev-python/importlib-metadata/importlib-metadata-8.6.1.ebuild
+++ b/dev-python/importlib-metadata/importlib-metadata-8.6.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 ~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/inline-snapshot/Manifest b/dev-python/inline-snapshot/Manifest
index 7f1a2dc6b522..bf5688b45ce5 100644
--- a/dev-python/inline-snapshot/Manifest
+++ b/dev-python/inline-snapshot/Manifest
@@ -1,2 +1,3 @@
DIST inline_snapshot-0.19.3.tar.gz 88636 BLAKE2B 537e68eec4f7db9ddeb8cea1e93f872160129d8b7b51b3d693c0cebb94c2cf5652d57989ccb44b7a3f3157ffbe6322c032fce42594d94f8daf454f922accad0b SHA512 b1f3a0123a1f17ffb85cb296861e3558057d45a8a576d72b2dca1ad1ce3151d4354b6bf86f9e0fb21d941d7ee708fd33c3961fdd1c0bad4c7368b720388fcf85
DIST inline_snapshot-0.20.0.tar.gz 89597 BLAKE2B 264020c3e3413e6e687d0ffb8c1659778782e065ef1fe7b4dc058fc547ddbba29302b653005543b6200a0bea948ae9d3eec5a981899aba65c1cba083fc41eea3 SHA512 d06243899c4a391bc27965d30db307fb14249797e83710773c392514fe82c8d199cd09a75d0b86374b59def2b9000bf636e27a15b76df0355fd464498f08f9ef
+DIST inline_snapshot-0.20.1.tar.gz 89634 BLAKE2B 2fc5633bee452f6eb69ad604a5dc4ada30916d698eeb44e4928490d6f56346c8cb6f43341ddb425cdc725216ba949610e133d977e32b3ac82a5a289b851826b3 SHA512 41df474a0f4a0e93d20a6729e5c8a93bd36b796f42a10c087144f816641df3680c905ca5b72aac923a7db782730e111a85b0594987b00470dc5cf33cfd8305fe
diff --git a/dev-python/inline-snapshot/inline-snapshot-0.20.1.ebuild b/dev-python/inline-snapshot/inline-snapshot-0.20.1.ebuild
new file mode 100644
index 000000000000..114c3b78ab60
--- /dev/null
+++ b/dev-python/inline-snapshot/inline-snapshot-0.20.1.ebuild
@@ -0,0 +1,63 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( pypy3 python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Create and update inline snapshots in your Python tests"
+HOMEPAGE="
+ https://15r10nk.github.io/inline-snapshot/
+ https://github.com/15r10nk/inline-snapshot/
+ https://pypi.org/project/inline-snapshot/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/asttokens-2.0.5[${PYTHON_USEDEP}]
+ >=dev-python/executing-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/rich-13.7.1[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/tomli-2.0.0[${PYTHON_USEDEP}]
+ ' 3.10)
+"
+BDEPEND="
+ test? (
+ dev-python/attrs[${PYTHON_USEDEP}]
+ >=dev-python/black-23.3.0[${PYTHON_USEDEP}]
+ >=dev-python/click-8.1.4[${PYTHON_USEDEP}]
+ >=dev-python/dirty-equals-0.7.0[${PYTHON_USEDEP}]
+ >=dev-python/hypothesis-6.75.5[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/mypy[${PYTHON_USEDEP}]
+ ' 'python*')
+ >=dev-python/pydantic-2[${PYTHON_USEDEP}]
+ >=dev-python/pytest-freezer-0.4.8[${PYTHON_USEDEP}]
+ >=dev-python/pytest-mock-3.14.0[${PYTHON_USEDEP}]
+ >=dev-python/pytest-subtests-0.11.0[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # requires pyright
+ 'tests/test_typing.py::test_typing[pyright]'
+ # TODO
+ tests/test_formating.py::test_format_command_fail
+ )
+
+ local -x COLUMNS=80
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local -x PYTEST_PLUGINS=inline_snapshot.pytest_plugin,pytest_freezer,pytest_subtests.plugin,xdist.plugin
+ local -x PYTHONPATH=${S}/src
+ epytest -p pytest_mock
+}
diff --git a/dev-python/ipython-pygments-lexers/Manifest b/dev-python/ipython-pygments-lexers/Manifest
new file mode 100644
index 000000000000..d36834886eb1
--- /dev/null
+++ b/dev-python/ipython-pygments-lexers/Manifest
@@ -0,0 +1 @@
+DIST ipython_pygments_lexers-1.1.1.tar.gz 8393 BLAKE2B f6b1af086aa5d2e8bb5d645550bca33931cb8b8bdc20f2f395de3705af77eed78d5c7b307f273e7d01bf6dea566d68924ca10c25f92ac610210ff79cc6514136 SHA512 603e3d9d3d22895415d2db7824648f289cea4d87692a5df2264fbbfcce2b50bf8e39a2915d5e11b37077f890d2983d125c5e4a3c97b92f9be9e5945b6a940f73
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
new file mode 100644
index 000000000000..d8a2af76294c
--- /dev/null
+++ b/dev-python/ipython-pygments-lexers/ipython-pygments-lexers-1.1.1.ebuild
@@ -0,0 +1,25 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit
+PYTHON_COMPAT=( pypy3 python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Pygments lexers for syntax-highlighting IPython code and sessions"
+HOMEPAGE="
+ https://github.com/ipython/ipython-pygments-lexers
+ https://pypi.org/project/ipython-pygments-lexers/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+ dev-python/pygments[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests pytest
diff --git a/dev-python/ipython-pygments-lexers/metadata.xml b/dev-python/ipython-pygments-lexers/metadata.xml
new file mode 100644
index 000000000000..009a6934cc91
--- /dev/null
+++ b/dev-python/ipython-pygments-lexers/metadata.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>python@gentoo.org</email>
+ <name>Python</name>
+ </maintainer>
+ <stabilize-allarches/>
+ <upstream>
+ <remote-id type="pypi">ipython-pygments-lexers</remote-id>
+ <remote-id type="github">ipython/ipython-pygments-lexers</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/dev-python/josepy/Manifest b/dev-python/josepy/Manifest
index 36413953f4dd..31513746c3b9 100644
--- a/dev-python/josepy/Manifest
+++ b/dev-python/josepy/Manifest
@@ -1,2 +1,2 @@
-DIST josepy-1.14.0.tar.gz 58794 BLAKE2B f7f6568dd3ffceda2a15297c26cee84efc88cfb666a6edacb6528fe77404a21fc5a77e691eb4260bd9c52125092d3cef3cbf76195f9a9f9800804020d18eea55 SHA512 e003916fb6c8d0907c5b63a20a37f167ca720d377f4fbb434884cc0d50c63aa100ff62ca753615b810b9874f4f95249f9c7c7fa03fa25b1449d2e5a9d4f7f167
DIST josepy-1.15.0.tar.gz 59310 BLAKE2B e47d6cc49d482a60d3856cbe81ca44770019f91e8de416f63162600e0024e635fa3a3b2f1bbb3b16d0273ab4673d89d4c186ed67bac2017bf0b43992613a3802 SHA512 92799e9230f64e7ef37c749cb68c293d1b97e2e14c94e045564e45402ff3363af4cca95a7bbf599821cf7ad9317ca31add6868d3bdb3699ee9c171b415a02e48
+DIST josepy-2.0.0.tar.gz 55767 BLAKE2B 7e8692f209a3fc8eebdbf9e8a92b7065d9ff08121490abe5e61a85efeef3cc5a55ae547d28bbbfcd31faa81293e1abbaa90dfadfb3d3c08b82ba9958c4556df7 SHA512 fa1e255cd5f75b352faa0e25e530a5620af09c518cd1570f9bdc7cb5520fea119279577e95f7fe72bc2bc6f0b543411d2fffb0d639c961094fe311c0bbca1fef
diff --git a/dev-python/josepy/josepy-1.15.0.ebuild b/dev-python/josepy/josepy-1.15.0.ebuild
index 985429c545d7..7c037fb7b34f 100644
--- a/dev-python/josepy/josepy-1.15.0.ebuild
+++ b/dev-python/josepy/josepy-1.15.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+KEYWORDS="amd64 arm arm64 ~ppc64 ~riscv x86"
RDEPEND="
>=dev-python/cryptography-1.5[${PYTHON_USEDEP}]
diff --git a/dev-python/josepy/josepy-1.14.0.ebuild b/dev-python/josepy/josepy-2.0.0.ebuild
index 561a5ed665fa..33d53ff6e135 100644
--- a/dev-python/josepy/josepy-1.14.0.ebuild
+++ b/dev-python/josepy/josepy-2.0.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,11 +16,10 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~ppc64 ~riscv x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
RDEPEND="
>=dev-python/cryptography-1.5[${PYTHON_USEDEP}]
- >=dev-python/pyopenssl-0.13[${PYTHON_USEDEP}]
"
distutils_enable_tests pytest
diff --git a/dev-python/jsonschema-path/Manifest b/dev-python/jsonschema-path/Manifest
index 917b86506545..23f472ac7946 100644
--- a/dev-python/jsonschema-path/Manifest
+++ b/dev-python/jsonschema-path/Manifest
@@ -1,2 +1 @@
-DIST jsonschema-path-0.3.3.gh.tar.gz 40104 BLAKE2B 00f3551f807a76ca59d7dca55d28dc86f36f94ad03be52376a67f29936a1215e50dc5d4af33aabe29026913737e9f453d466450122411297f714e3557fe06d2e SHA512 846d476285b4c89d0241d18be09eb7c12df855f7b28f0d3ea9942a9d23977f3c051b93a1281f6f5323c2c4bc9c86fe82b5eae1bce647f58d9d2acce65d4f54a8
DIST jsonschema-path-0.3.4.gh.tar.gz 40126 BLAKE2B cc7884ab41a0cdcfbd292831f9ed2a03f82af30f4482499c7940633741560228df59c4157457e8c44c57fb73f0f6142f10ad23d36f444fea71a84cf6309d953d SHA512 85b791a374d61bedf66a0ca44b6906ec74f02ffe991c1cb220267c85c0e7b493375d712d7ca0828681c9c15f170bc29d4b808b00778895fb13f1f7ff3cdf2a9c
diff --git a/dev-python/jsonschema-path/jsonschema-path-0.3.3.ebuild b/dev-python/jsonschema-path/jsonschema-path-0.3.3.ebuild
deleted file mode 100644
index 5ebaaaf5149e..000000000000
--- a/dev-python/jsonschema-path/jsonschema-path-0.3.3.ebuild
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 2023-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=poetry
-PYTHON_COMPAT=( pypy3 python3_{10..13} )
-
-inherit distutils-r1
-
-DESCRIPTION="JSONSchema Spec with object-oriented paths"
-HOMEPAGE="
- https://pypi.org/project/jsonschema-path/
- https://github.com/p1c2u/jsonschema-path/
-"
-SRC_URI="
- https://github.com/p1c2u/jsonschema-path/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc64 ~riscv x86"
-
-# requests seem "optional" but they failed at properly making it
-# optional in poetry, sigh
-RDEPEND="
- >=dev-python/pathable-0.4.1[${PYTHON_USEDEP}]
- >=dev-python/pyyaml-5.1[${PYTHON_USEDEP}]
- >=dev-python/referencing-0.28.1[${PYTHON_USEDEP}]
- >=dev-python/requests-2.31.0[${PYTHON_USEDEP}]
-"
-
-BDEPEND="
- test? (
- dev-python/responses[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-
-src_prepare() {
- sed -i -e '/--cov/d' pyproject.toml || die
- # remove random pins due to caret operator
- sed -i -e 's:\^:>=:' -e 's:,<[0-9.]*::' pyproject.toml || die
- distutils-r1_src_prepare
-}
diff --git a/dev-python/jsonschema-path/jsonschema-path-0.3.4.ebuild b/dev-python/jsonschema-path/jsonschema-path-0.3.4.ebuild
index 044b279d3ad3..a4fadca0170d 100644
--- a/dev-python/jsonschema-path/jsonschema-path-0.3.4.ebuild
+++ b/dev-python/jsonschema-path/jsonschema-path-0.3.4.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc64 ~riscv x86"
# requests seem "optional" but they failed at properly making it
# optional in poetry, sigh
diff --git a/dev-python/jupyter-events/Manifest b/dev-python/jupyter-events/Manifest
index 8b75a25da0e7..724862a36baa 100644
--- a/dev-python/jupyter-events/Manifest
+++ b/dev-python/jupyter-events/Manifest
@@ -1 +1,2 @@
DIST jupyter_events-0.11.0.tar.gz 62039 BLAKE2B 0a6d4598c763c59595d66e8ea30c0c056e48600a024e138258a6d0b306a002b10bf2eabaad78bb7ca1280b214660cd682737518c503437ba4921451473cb0d92 SHA512 a19458ca9e2b9c44af1a7b4b80259aa4f67b318a5bf6ca7a9b4e24c6e6923b64947b6de8f9476e354b090542bfd9af5b7db2479df0e08ff3617d7c0f32cc267e
+DIST jupyter_events-0.12.0.tar.gz 62196 BLAKE2B 8c9c46a0c7a932a27b176abb0805b5e7aeff256ec6e3e1b76e8608fb8bd0eda6729608be2d9a28e76c37c6c8f62ecdcb1be497ccf57c5b93679d900b298fb9ea SHA512 8f105e4bc8aae65170127bc2d9a0f49ace7bff23e93e99219a41444d83501e32a0dc9b637de5b7a7d085f192f775d4197ec0d1e3bf0a0fc9c15787c82978f42c
diff --git a/dev-python/jupyter-events/jupyter-events-0.12.0.ebuild b/dev-python/jupyter-events/jupyter-events-0.12.0.ebuild
new file mode 100644
index 000000000000..af0b30b608d0
--- /dev/null
+++ b/dev-python/jupyter-events/jupyter-events-0.12.0.ebuild
@@ -0,0 +1,42 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( pypy3 python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Jupyter Event System library"
+HOMEPAGE="
+ https://jupyter.org/
+ https://github.com/jupyter/jupyter_events/
+ https://pypi.org/project/jupyter-events/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+# jsonschema[format-nongpl] deps are always on in our ebuild
+RDEPEND="
+ >=dev-python/jsonschema-4.18.0[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ >=dev-python/python-json-logger-2.0.4[${PYTHON_USEDEP}]
+ >=dev-python/pyyaml-5.3[${PYTHON_USEDEP}]
+ dev-python/referencing[${PYTHON_USEDEP}]
+ >=dev-python/traitlets-5.3[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/click[${PYTHON_USEDEP}]
+ dev-python/pytest-asyncio[${PYTHON_USEDEP}]
+ dev-python/pytest-console-scripts[${PYTHON_USEDEP}]
+ dev-python/rich[${PYTHON_USEDEP}]
+ )
+"
+
+# TODO: package jupyterlite-sphinx
+# distutils_enable_sphinx docs
+distutils_enable_tests pytest
diff --git a/dev-python/latexrestricted/latexrestricted-0.6.2.ebuild b/dev-python/latexrestricted/latexrestricted-0.6.2.ebuild
index 767633c60d59..c236090e640d 100644
--- a/dev-python/latexrestricted/latexrestricted-0.6.2.ebuild
+++ b/dev-python/latexrestricted/latexrestricted-0.6.2.ebuild
@@ -20,4 +20,4 @@ SRC_URI="
LICENSE="LPPL-1.3c"
SLOT="0"
-KEYWORDS="amd64"
+KEYWORDS="amd64 ~ppc ~ppc64 ~x86"
diff --git a/dev-python/legacy-cgi/legacy-cgi-2.6.2.ebuild b/dev-python/legacy-cgi/legacy-cgi-2.6.2.ebuild
index 849a9e167fec..0f75aad66012 100644
--- a/dev-python/legacy-cgi/legacy-cgi-2.6.2.ebuild
+++ b/dev-python/legacy-cgi/legacy-cgi-2.6.2.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/libtmux/Manifest b/dev-python/libtmux/Manifest
index 7d6c8f9b0b01..f4cca2e0fe6b 100644
--- a/dev-python/libtmux/Manifest
+++ b/dev-python/libtmux/Manifest
@@ -4,3 +4,4 @@ DIST libtmux-0.38.1.gh.tar.gz 304345 BLAKE2B f4380c813b57045cc8dcf4ad18124bcd2aa
DIST libtmux-0.39.0.gh.tar.gz 314113 BLAKE2B cfba4cf12fd2418bb917ade6f927eb905dcc767bc7554ae08f86958c0f0ca25548f0b9d90375ab80de726436bfa5032a5df2da763cc5114849f38cbbe9331565 SHA512 7e180a63e195698e540a581fa8f7dc292e8e4db830a87bbdc859d910313d1d3351886759d3198f088f047d51e993fe6ce4c8f16304edc68681c2fa6a9348bba6
DIST libtmux-0.40.0.gh.tar.gz 317064 BLAKE2B e3658560a789aa823faf2ff29cca3a0604ebe20b64ce0432359852738ae87280a87e7411ec73283e389a23b31da9da1f435b930bcf0cd250d3b455031669a535 SHA512 15187225ab8a31a04f7d6a3d036c5df133779fc73891782abce694c8a364babc0d19af1290a06dfa6939b61028a2620499551a0b2a9fccf0f7c3067868eb98c1
DIST libtmux-0.40.1.gh.tar.gz 318542 BLAKE2B 5b9e383a3c07bab3af7c25adcf5db1c6acf1c108a2508aa2de5f6c2db64f1e365829c69299568c39a19a7c18aa773b14033aa0c48087d0d1bcf180377df558f6 SHA512 6e4f0d13b375ca1b2c2f6e7c6aaad6d420927c8d55a2f27e7912738a58a7e9f0db67c84936ccff32c9557ebe1f3ac335e779b293466eaab9333a0e3fb4a4b10e
+DIST libtmux-0.42.0.gh.tar.gz 318655 BLAKE2B 5d462bd78e81bd38cfb0c42a2100287fc79b9fe31aaeccbac5c9fd124afc2df9da4ceb5cd469de1919df2995c27d4c0628629004938795b6f8731e84c23ed2bc SHA512 38e7c21bd99859add1737a1028c18852a564a2d32c27b72ea37d623bcbc0646b095ad4dd520385c11d6df4c779429ac452f6ae592a6d0ffcb4fe64bf2a4388b3
diff --git a/dev-python/libtmux/libtmux-0.42.0.ebuild b/dev-python/libtmux/libtmux-0.42.0.ebuild
new file mode 100644
index 000000000000..28f00ece7486
--- /dev/null
+++ b/dev-python/libtmux/libtmux-0.42.0.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{10..13} pypy3 )
+
+inherit distutils-r1
+
+DESCRIPTION="Typed library that provides an ORM wrapper for tmux, a terminal multiplexer"
+HOMEPAGE="
+ https://libtmux.git-pull.com/
+ https://github.com/tmux-python/libtmux/
+ https://pypi.org/project/libtmux/
+"
+SRC_URI="
+ https://github.com/tmux-python/libtmux/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86"
+
+RDEPEND="
+ >=app-misc/tmux-3.0a
+"
+BDEPEND="
+ test? (
+ dev-python/pytest-mock[${PYTHON_USEDEP}]
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ local issues="https://github.com/tmux-python/libtmux/issues/"
+ sed -r -i "s|:issue:\`([[:digit:]]+)\`|\`issue \1 ${issues}\1\`|" CHANGES || die
+
+ # increase timeouts for tests
+ sed -e 's/0.01/0.1/' -i tests/test_test.py || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ # tests/test_window.py::test_fresh_window_data fails if TMUX_PANE is set
+ # https://bugs.gentoo.org/927158
+ local -x TMUX_PANE=
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local -x PYTEST_PLUGINS=libtmux.pytest_plugin
+
+ epytest -o addopts= -p pytest_mock -p rerunfailures --reruns=5 tests
+}
diff --git a/dev-python/libvirt-python/Manifest b/dev-python/libvirt-python/Manifest
index 25444c932f1f..8dbf49e58e74 100644
--- a/dev-python/libvirt-python/Manifest
+++ b/dev-python/libvirt-python/Manifest
@@ -1,5 +1,3 @@
-DIST libvirt-python-10.1.0.tar.gz 246933 BLAKE2B f95757c6e88271874f2e6c5efd52f4b075dee96902287b66f535f3d154eea58f7fa5156c7303c108eed34552917227cd0e1abbf4ce78d619dd113d24763780bb SHA512 b1a316703f577ebeafc6f96b5988f3716c24acfea674834c9034d488c456ca1d0386d602942ff4e0d2e947252a2d7049af4c6531407f9ff9a3b981c7c6c3fd37
-DIST libvirt-python-10.1.0.tar.gz.asc 833 BLAKE2B ae970da8b897efa3c8abf596fa653e2fed23e11dc1e1531093ce7fb1c3f9c76659fb71aab828a02c141bd59695eb6989a39f2c99fdd8494e40a8ded43c727fb8 SHA512 deb6af1a7d59bae6498175c842be7995262d0503a0614267b4fa8a157d5d094d8aacd34184b4149a0821750d57ba3ad36af1fec1f7e9532625bb620229bf404d
DIST libvirt-python-10.10.0.tar.gz 241054 BLAKE2B 9eb9a6caa4dfaffb136912ab4c98b87277b57757d86537c0b2e05cc0fbdffb48a4e09bb7fbdf92b31eb2397fffdc94f42e036110fc8146a218d165134f276b94 SHA512 7724a9ce89b39a62746c0524643e89850a6fcc796d2c6481f6000b047637216391742921d9dae84b97de0fd8707d906cba4955567416cf5cd93aed6f689a6cb4
DIST libvirt-python-10.10.0.tar.gz.asc 833 BLAKE2B 31567fae7df4072217bdb3c0a85f597c8dea625d2ddc20de1424268379bf6adcd2e459a73902797d24ad53a7d155711744d5b82799f630854cd29cedb1479188 SHA512 81fcfffadace42f6c49d2802250793e14e0db8eebb136c6054e1f29c52f97246ab4eba630c5723eddc031e9fff9fe1bf7312a399494764c6043aa9f2c41e8495
DIST libvirt-python-10.3.0.tar.gz 238840 BLAKE2B 35f4b15609550f9f255ee046fda4df22099926779ded4e7a75c02cdfef9156a366f3aa62a92d75bb7bfaa4c5220679ac3231844dc35c0f7db6dd362c81b9ed77 SHA512 5c5b4b6e52887a5fe0436581ef6233e78abbf702db87936743329e62a1e3c66c124ed6e2c2b92d6215027e6cbe459c536a8436ac3cea63269bff78ec3c9efc98
@@ -10,7 +8,5 @@ DIST libvirt-python-10.6.0.tar.gz 240216 BLAKE2B e1300bdf124132bbb2c17649974633f
DIST libvirt-python-10.6.0.tar.gz.asc 833 BLAKE2B 58d263a211c68e2a3c811ac9952977fd05a42f9f8b910746fae35c69925a8a5783a9c0796390875a8b8036c315404a08ae826fe2306c8d63a8479f883f96760a SHA512 b9d42be07925345e9183180301013f43169b0d00c1e97f78742b23fd7d97977e0437471b122518702e8fa59fd30674f6b8d5bf03cda6de746018afa5c1ef75cd
DIST libvirt-python-10.8.0.tar.gz 240883 BLAKE2B 2871e690ee27a93139febde94a2e6cb8880be364606eed21a8cc9048486d3b411334d92026f8fe7dc320c6a3b539ff827a2eb5ccfe395079af36c4cac28310b6 SHA512 58501c708eccae134da2ea5c7ee0fd8940ee3b9fc9265ee351c42889c2d29fdbe96643fc130ca551c922765a96aa18c27c38c2d842d505b0da2571f4e8dc3c08
DIST libvirt-python-10.8.0.tar.gz.asc 833 BLAKE2B c58fb89e2dc640edaac23b5e0c270a1974e6428b806197a6097d78c39888fa40f56294e6e2b7870791aa0320faf98e2ff99229e96476694742e14ec91daa4e1d SHA512 930c8ddb0140d889da4a3d152f538beb5b36fc31dbe4b591ceaf53b070fb171be87a9081bd7ca1158f02ecc90124597887b3a09c39f8543da97b6c2996aaa233
-DIST libvirt-python-9.8.0.tar.gz 246277 BLAKE2B c333909d1f4fd32f9e05d42e468b3808971360bb8aaf35934ec25f8155f0231b2ff3bfd90944a50cf13e09cec3cf35fdf41fb5869b1683c1cd36b4767f2b3dd1 SHA512 c9871ca2fa9d18ae42c4aa76e9a7ba9f0a026061b058072c862c8fe402c2d2325189687e1490718360a9b8f6c13d8ae2adfbe54f79a367fb6be9fbde381f4901
-DIST libvirt-python-9.8.0.tar.gz.asc 833 BLAKE2B 78e6556031c325674d26322d0a6a4dfc391dd050223bd6d939d30328fc7bb1a2f8671aae95eb3a37b916311e6f4c44a4c1929093844347e06dffa23480793e34 SHA512 b999d442f8e22d91ccf9988f53603159406b3aacd3469fd613ed24afd67722206eb2b319a1518bc7aa8cc12684f84685de885bd40c9ba7d9a94ef16cf03f6065
-DIST libvirt-python-9.9.0.tar.gz 246357 BLAKE2B d2e6bc9f8ae3c722ffa18772e40965e7ef1acfb36a863d764ac39c694f687a078b6433cb780a27696f63c698c3e63d203ae1609b48ee31ea5cd95a21a3947666 SHA512 5a09b23b843080f2e55a7b00dc225e0bf23c9c23cac42ce4ffaff725020303745185482c2cc781d519020f50a335d4fa72a7a618bb2c1d0eb0845781d1b22ab7
-DIST libvirt-python-9.9.0.tar.gz.asc 833 BLAKE2B bf7c3861f4a9d47478e7e9afcb21b8b8537f0baf525af462aebd849fc24510bcc575d851e06d8903d7480163b42520a4e4c88b7e01af90e7b759ea028839440f SHA512 bc509c67cd9d019f40994b415d7648d4e408a47758bf12a42653f315fd6e16d89568d59698922f73fbb11a858674d370222e41c7d1bba04e38a5665ddb1da853
+DIST libvirt-python-11.0.0.tar.gz 241103 BLAKE2B aa4ece183a98b25981fac6454725d7416990593cf7b71133f44f721a7e457e0c8469429049393ee0dba0d21718c69faebc503cfba63bdf71a5761d73724e941c SHA512 58b30e5c40a911b91e71b3ac9298b2d54fd8dba7105a13257d0677c919a6adea01cd7c0115fa6c2e70f4dba539a587bb74634ae75f969156dff97ff97b34e66a
+DIST libvirt-python-11.0.0.tar.gz.asc 833 BLAKE2B 8d8e415cc0bca4bfcccc608f27d016002cb1ce05c37c9a6d96d475c61d8fea60d31010d8baac55ce6f96b50141ea2843e212e6bf54fb9d1b527e510a4f7132fd SHA512 2242071b14d0a0ba34e2e04f4553484dec9a1662cca379b1cf49ab9ca2f40d89f78ac2912ee9c6b1fabbc9aede53f4232e20003f6f1330e368ac6671cc9643be
diff --git a/dev-python/libvirt-python/libvirt-python-10.1.0.ebuild b/dev-python/libvirt-python/libvirt-python-10.1.0.ebuild
deleted file mode 100644
index 860fdfe659af..000000000000
--- a/dev-python/libvirt-python/libvirt-python-10.1.0.ebuild
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-# Packages which get releases together:
-# app-emacs/nxml-libvirt-schemas
-# dev-python/libvirt-python
-# dev-perl/Sys-Virt
-# app-emulation/libvirt
-# Please bump them together!
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..12} )
-inherit distutils-r1 verify-sig
-
-if [[ ${PV} == *9999* ]]; then
- inherit git-r3
- EGIT_REPO_URI="https://gitlab.com/libvirt/libvirt-python.git"
- RDEPEND="app-emulation/libvirt:="
-else
- MY_P="${P/_rc/-rc}"
- SRC_URI="https://download.libvirt.org/python/${MY_P}.tar.gz
- verify-sig? ( https://download.libvirt.org/python/${MY_P}.tar.gz.asc )"
- KEYWORDS="amd64 ~arm arm64 ppc64 x86"
- RDEPEND="app-emulation/libvirt:0/${PV}"
-fi
-
-DESCRIPTION="libvirt Python bindings"
-HOMEPAGE="https://www.libvirt.org"
-
-S="${WORKDIR}/${P%_rc*}"
-
-LICENSE="LGPL-2"
-SLOT="0"
-IUSE="examples test"
-RESTRICT="!test? ( test )"
-
-BDEPEND="
- virtual/pkgconfig
- test? (
- dev-python/lxml[${PYTHON_USEDEP}]
- )
- verify-sig? ( sec-keys/openpgp-keys-libvirt )
-"
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/libvirt.org.asc
-
-distutils_enable_tests pytest
-
-python_compile() {
- # setuptools is broken for C extensions, bug #907718
- distutils-r1_python_compile -j1
-}
-
-python_install_all() {
- if use examples; then
- dodoc -r examples
- docompress -x /usr/share/doc/${PF}/examples
- fi
-
- distutils-r1_python_install_all
-}
diff --git a/dev-python/libvirt-python/libvirt-python-10.10.0.ebuild b/dev-python/libvirt-python/libvirt-python-10.10.0.ebuild
index 8380241f9a98..38b6d8c940b1 100644
--- a/dev-python/libvirt-python/libvirt-python-10.10.0.ebuild
+++ b/dev-python/libvirt-python/libvirt-python-10.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
@@ -23,7 +23,7 @@ else
MY_P="${P/_rc/-rc}"
SRC_URI="https://download.libvirt.org/python/${MY_P}.tar.gz
verify-sig? ( https://download.libvirt.org/python/${MY_P}.tar.gz.asc )"
- KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86"
+ KEYWORDS="amd64 ~arm arm64 ppc64 x86"
RDEPEND="app-emulation/libvirt:0/${PV}"
fi
diff --git a/dev-python/libvirt-python/libvirt-python-9.9.0.ebuild b/dev-python/libvirt-python/libvirt-python-11.0.0.ebuild
index 0a5d0e1f2324..95dc7d2980ca 100644
--- a/dev-python/libvirt-python/libvirt-python-9.9.0.ebuild
+++ b/dev-python/libvirt-python/libvirt-python-11.0.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
@@ -12,7 +12,7 @@ EAPI=8
DISTUTILS_EXT=1
DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..12} )
+PYTHON_COMPAT=( python3_{10..13} )
inherit distutils-r1 verify-sig
if [[ ${PV} == *9999* ]]; then
@@ -61,5 +61,4 @@ python_install_all() {
fi
distutils-r1_python_install_all
-
}
diff --git a/dev-python/libvirt-python/libvirt-python-9.8.0.ebuild b/dev-python/libvirt-python/libvirt-python-9.8.0.ebuild
deleted file mode 100644
index 3080ec59a5e9..000000000000
--- a/dev-python/libvirt-python/libvirt-python-9.8.0.ebuild
+++ /dev/null
@@ -1,65 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-# Packages which get releases together:
-# app-emacs/nxml-libvirt-schemas
-# dev-python/libvirt-python
-# dev-perl/Sys-Virt
-# app-emulation/libvirt
-# Please bump them together!
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..12} )
-inherit distutils-r1 verify-sig
-
-if [[ ${PV} == *9999* ]]; then
- inherit git-r3
- EGIT_REPO_URI="https://gitlab.com/libvirt/libvirt-python.git"
- RDEPEND="app-emulation/libvirt:="
-else
- MY_P="${P/_rc/-rc}"
- SRC_URI="https://download.libvirt.org/python/${MY_P}.tar.gz
- verify-sig? ( https://download.libvirt.org/python/${MY_P}.tar.gz.asc )"
- KEYWORDS="amd64 ~arm arm64 ppc64 x86"
- RDEPEND="app-emulation/libvirt:0/${PV}"
-fi
-
-DESCRIPTION="libvirt Python bindings"
-HOMEPAGE="https://www.libvirt.org"
-
-S="${WORKDIR}/${P%_rc*}"
-
-LICENSE="LGPL-2"
-SLOT="0"
-IUSE="examples test"
-RESTRICT="!test? ( test )"
-
-BDEPEND="
- virtual/pkgconfig
- test? (
- dev-python/lxml[${PYTHON_USEDEP}]
- )
- verify-sig? ( sec-keys/openpgp-keys-libvirt )
-"
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/libvirt.org.asc
-
-distutils_enable_tests pytest
-
-python_compile() {
- # setuptools is broken for C extensions, bug #907718
- distutils-r1_python_compile -j1
-}
-
-python_install_all() {
- if use examples; then
- dodoc -r examples
- docompress -x /usr/share/doc/${PF}/examples
- fi
-
- distutils-r1_python_install_all
-
-}
diff --git a/dev-python/lit/Manifest b/dev-python/lit/Manifest
index 07b84607805e..e2345ea11956 100644
--- a/dev-python/lit/Manifest
+++ b/dev-python/lit/Manifest
@@ -13,4 +13,8 @@ DIST llvm-project-19.1.7.src.tar.xz.sig 438 BLAKE2B 4015140f4ba77de45039bdbdfbaf
DIST llvm-project-1f26ac10ca1bef40a80be8f81a6f109713bc586f.tar.gz 226424755 BLAKE2B 642befb8d6923f335d1d68129ebb7357f8ba22e110df494dd956c8097e4e5db4b2a88fcc069ab67184b03558f072c68e002bdaf90eba865e38b1473a0ef29eed SHA512 e9bb4fd31bbad5ec864c662515b5ec2e5511cce975040f9f3cd8f009c92f76077928feae0467fd9519a001a379c857f7539c506953d8d5a9209a9f358f414aac
DIST llvm-project-20.1.0-rc1.src.tar.xz 147144668 BLAKE2B ea4733962f38ea5897c73e91840818921739909c3671749bc8a0b1d2798e5a0815bbe750ade3a2a7414836ab7158754818b2f9370a4ee1bbbd52c96b1e95ef9b SHA512 c23c4b1227b6b0b7c3059358e64a00ee98893236bb1a0a41d7e821bdf2aa8353aea8f9f7b9498899c6807b9b8e2ceb06c3cd62e32fd07a786a319135055541b4
DIST llvm-project-20.1.0-rc1.src.tar.xz.sig 566 BLAKE2B 32eb278ec4ff1bb9d258b584922b0d227f4126a957ba75af44dcaa63b6a12ef73db56d6a86f24244af47803ddf6a243149d784f08137cbea60b49700be537705 SHA512 d7a334326201f8ca78284b33c325f180538667a0401bc30931e790aacc96dd78f6559c45929b6c335d40ef1dbe772738c0ce55d881ae3d7401733778b485408c
+DIST llvm-project-20.1.0-rc2.src.tar.xz 147160684 BLAKE2B 6adc1226f022272d78fb0ed361c190d369a2afc53bf868409fe8f4e092d5ffb9894c71870f072bb68162610782f48088468b4a49cdb1bc731d6689c791a5b5e3 SHA512 f303deaec8f25e1b122a7e85df192b6ea10c51472b78a3d14ad9d0b976a533cfbb9164aff0bc99e447e30938cf43363552c5493b4693e1f23291ea7a9b824bbb
+DIST llvm-project-20.1.0-rc2.src.tar.xz.sig 566 BLAKE2B aa91f7be228e51b0f2234bb5e0df173e3ddc90b6db4350a9008c2f8ba53220da6eef0c69778aecac3caecf918a0c54a0d910177ffe7643ad7fc5624a97262b7f SHA512 e5563a8a79b5e9ef26d62dc6d4385c1c86d12a652b4b1e7fc9ce45a2ea66e5118112746a61b439823bf99d65aea82285eabf5e07714eec77e6e5cd02feab82ce
+DIST llvm-project-2cd8207b26ea4269630feba661f68554d7ae3c15.tar.gz 227261597 BLAKE2B 51ce992b651fcf08b7fd520420040803b59f1260947953325400c50bec576c418b162d8ae2d2307e70b885b1185c302a97409bcfe48cdb14b8e1384f4e2dfa9e SHA512 a41749943508ea4a18b47c4e947917b5268544e64372c0c3347f9ab8172a2c229d8b1d813d1e842be1b98aedd624524857ed3bb23fe98ad5f36e7a71581abb4b
+DIST llvm-project-6f241e36831927e3aea113cfc017c34fdeda340a.tar.gz 227203285 BLAKE2B 8d5e424c1836acc82ea766cd2cef104593c44d197ebeb64f18dbe74b1b5baeb4bc84084f5b68bd87ac36f7df25689dd2522cb6674a97da4f96f4f10f7bae5b06 SHA512 2b6e4bd6445eabfa3ace9b45d20797c7afc23f4553a8938399aeba227e3b8ca6a53a7d7762925a845bfed031c37af692b9c08180fbab80db2f3166940e560077
DIST llvm-project-bfa7edcc6652bdb37d53e0cec64926aab3f280eb.tar.gz 226735989 BLAKE2B 165837dc526e618b44c49d5fa3dceda373452e010a09746bff248903fe77874637d05ab9f5d2f63de7ebce5c14e3b19a131313a4a557adfd20fe9cb93ab60476 SHA512 e9e19176fcf1302727ee34d69eaa820b94959d64ceaf754d8a93ebd5e262cec7fe35e87b08f705b09e42c3ea26b671318eecf10e9137c635b12f481f80fbac23
diff --git a/dev-python/lit/lit-19.1.7.ebuild b/dev-python/lit/lit-19.1.7.ebuild
index f1a116c6f5a6..29ece76336cb 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.0_rc2.ebuild b/dev-python/lit/lit-20.1.0_rc2.ebuild
new file mode 100644
index 000000000000..3dfabbc0d46e
--- /dev/null
+++ b/dev-python/lit/lit-20.1.0_rc2.ebuild
@@ -0,0 +1,45 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1 llvm.org
+
+DESCRIPTION="A stand-alone install of the LLVM suite testing tool"
+HOMEPAGE="https://llvm.org/"
+
+LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
+SLOT="0"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+# Tests require 'FileCheck' and 'not' utilities (from llvm)
+BDEPEND="
+ test? (
+ dev-python/psutil[${PYTHON_USEDEP}]
+ llvm-core/llvm
+ )
+"
+
+LLVM_COMPONENTS=( llvm/utils/lit )
+llvm.org_set_globals
+
+# TODO: move the manpage generation here (from llvm-core/llvm)
+
+src_prepare() {
+ # flaky test
+ # https://github.com/llvm/llvm-project/issues/72022
+ rm tests/progress-bar.py || die
+
+ cd "${WORKDIR}" || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local -x LIT_PRESERVES_TMP=1
+ local litflags=$(get_lit_flags)
+ ./lit.py ${litflags//;/ } tests || die
+}
diff --git a/dev-python/lit/lit-21.0.0_pre20250208.ebuild b/dev-python/lit/lit-21.0.0_pre20250208.ebuild
new file mode 100644
index 000000000000..3dfabbc0d46e
--- /dev/null
+++ b/dev-python/lit/lit-21.0.0_pre20250208.ebuild
@@ -0,0 +1,45 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1 llvm.org
+
+DESCRIPTION="A stand-alone install of the LLVM suite testing tool"
+HOMEPAGE="https://llvm.org/"
+
+LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
+SLOT="0"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+# Tests require 'FileCheck' and 'not' utilities (from llvm)
+BDEPEND="
+ test? (
+ dev-python/psutil[${PYTHON_USEDEP}]
+ llvm-core/llvm
+ )
+"
+
+LLVM_COMPONENTS=( llvm/utils/lit )
+llvm.org_set_globals
+
+# TODO: move the manpage generation here (from llvm-core/llvm)
+
+src_prepare() {
+ # flaky test
+ # https://github.com/llvm/llvm-project/issues/72022
+ rm tests/progress-bar.py || die
+
+ cd "${WORKDIR}" || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local -x LIT_PRESERVES_TMP=1
+ local litflags=$(get_lit_flags)
+ ./lit.py ${litflags//;/ } tests || die
+}
diff --git a/dev-python/lit/lit-21.0.0_pre20250211.ebuild b/dev-python/lit/lit-21.0.0_pre20250211.ebuild
new file mode 100644
index 000000000000..3dfabbc0d46e
--- /dev/null
+++ b/dev-python/lit/lit-21.0.0_pre20250211.ebuild
@@ -0,0 +1,45 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1 llvm.org
+
+DESCRIPTION="A stand-alone install of the LLVM suite testing tool"
+HOMEPAGE="https://llvm.org/"
+
+LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
+SLOT="0"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+# Tests require 'FileCheck' and 'not' utilities (from llvm)
+BDEPEND="
+ test? (
+ dev-python/psutil[${PYTHON_USEDEP}]
+ llvm-core/llvm
+ )
+"
+
+LLVM_COMPONENTS=( llvm/utils/lit )
+llvm.org_set_globals
+
+# TODO: move the manpage generation here (from llvm-core/llvm)
+
+src_prepare() {
+ # flaky test
+ # https://github.com/llvm/llvm-project/issues/72022
+ rm tests/progress-bar.py || die
+
+ cd "${WORKDIR}" || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local -x LIT_PRESERVES_TMP=1
+ local litflags=$(get_lit_flags)
+ ./lit.py ${litflags//;/ } tests || die
+}
diff --git a/dev-python/lxml/Manifest b/dev-python/lxml/Manifest
index a9206fd64600..535698fe27ce 100644
--- a/dev-python/lxml/Manifest
+++ b/dev-python/lxml/Manifest
@@ -1,2 +1,3 @@
DIST lxml-5.2.2.gh.tar.gz 950650 BLAKE2B d9e3bd96f386a808eca58ffa9a6b5a79e43102b7161fac9b97905de2bd22d21feaddb093e27463f597ef5378d754011c2999a38953e6288595b8dd171976688b SHA512 20b87a2d6e7ac82b6979d6fd18ecd5c224fec6eeee6b69d47a5bf2947ce53e6a517d1b86ab68836a5974f78ce86551ddc2317c1a7255932b418b98dc64d59376
DIST lxml-5.3.0.gh.tar.gz 951199 BLAKE2B 8317179c524856593b323f665c288ddddd8af7e716e1ddf1222a857c8466cfc62a6c20b21744ca418f809a3c8492216c5c9c38cfa62f2e7d51daea7343b6810b SHA512 514477bf4c865541233d73f20de816b51d265dbd75c56a0d13779e14527c73e85ca890718d06c08728da228d410459016e9cb8abdad4d03b44a81a04a198fb54
+DIST lxml-5.3.1.gh.tar.gz 951340 BLAKE2B e73cc8513cfe42d163b8475788472f00f2f3492deb7536b6556ed4f14924ffe57497947e660a161ec5a0821135b3d103799c0da0b9c647ccdcbfa9b0c5d6a1d9 SHA512 e89ada765791b67e4e83a9151c500f2e8d924c05d421a46bece1183666fc566d545d2e6b62987075e82cbafb8cd4b1f48f6f94e9ebcc0bbd7227d687b2282794
diff --git a/dev-python/lxml/lxml-5.3.1.ebuild b/dev-python/lxml/lxml-5.3.1.ebuild
new file mode 100644
index 000000000000..12a832f993ca
--- /dev/null
+++ b/dev-python/lxml/lxml-5.3.1.ebuild
@@ -0,0 +1,119 @@
+# 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_{10..13} pypy3 )
+
+inherit distutils-r1 optfeature toolchain-funcs
+
+DESCRIPTION="A Pythonic binding for the libxml2 and libxslt libraries"
+HOMEPAGE="
+ https://lxml.de/
+ https://pypi.org/project/lxml/
+ https://github.com/lxml/lxml/
+"
+SRC_URI="
+ https://github.com/lxml/lxml/archive/${P}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+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"
+IUSE="doc examples +threads test"
+RESTRICT="!test? ( test )"
+
+# Note: lib{xml2,xslt} are used as C libraries, not Python modules.
+DEPEND="
+ >=dev-libs/libxml2-2.10.3
+ >=dev-libs/libxslt-1.1.38
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ virtual/pkgconfig
+ >=dev-python/cython-3.0.10[${PYTHON_USEDEP}]
+ doc? (
+ $(python_gen_any_dep '
+ dev-python/docutils[${PYTHON_USEDEP}]
+ dev-python/pygments[${PYTHON_USEDEP}]
+ dev-python/sphinx[${PYTHON_USEDEP}]
+ dev-python/sphinx-rtd-theme[${PYTHON_USEDEP}]
+ ')
+ )
+ test? (
+ dev-python/cssselect[${PYTHON_USEDEP}]
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-5.3.0-pypy.patch"
+)
+
+python_check_deps() {
+ use doc || return 0
+ python_has_version -b "dev-python/docutils[${PYTHON_USEDEP}]" &&
+ python_has_version -b "dev-python/pygments[${PYTHON_USEDEP}]" &&
+ python_has_version -b "dev-python/sphinx[${PYTHON_USEDEP}]" &&
+ python_has_version -b "dev-python/sphinx-rtd-theme[${PYTHON_USEDEP}]"
+}
+
+python_prepare_all() {
+ # don't use some random SDK on Darwin
+ sed -i -e '/_ldflags =/s/=.*isysroot.*darwin.*None/= None/' \
+ setupinfo.py || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_compile() {
+ local DISTUTILS_ARGS=(
+ # by default it adds -w to CFLAGS
+ --warnings
+ )
+ tc-export PKG_CONFIG
+ distutils-r1_python_compile
+}
+
+python_compile_all() {
+ use doc && emake html
+}
+
+python_test() {
+ local dir=${BUILD_DIR}/test$(python_get_sitedir)/lxml
+ local -x PATH=${BUILD_DIR}/test/usr/bin:${PATH}
+
+ cp -al "${BUILD_DIR}"/{install,test} || die
+ cp -al src/lxml/tests "${dir}/" || die
+ cp -al src/lxml/html/tests "${dir}/html/" || die
+ mkdir "${dir}"/../../doc || die
+ # this one needs to be copied, because upstream uses doc/../../../doc
+ cp -r "${S}"/doc "${dir}"/../../ || die
+ ln -s "${S}"/doc "${dir}"/../../../../ || die
+
+ "${EPYTHON}" test.py --no-src -vv --all-levels -p ||
+ die "Tests fail on ${EPYTHON}"
+}
+
+python_install_all() {
+ if use doc; then
+ local DOCS=( README.rst *.txt doc/*.txt )
+ local HTML_DOCS=( doc/html/. )
+ fi
+ if use examples; then
+ dodoc -r samples
+ fi
+
+ distutils-r1_python_install_all
+}
+
+pkg_postinst() {
+ optfeature "Support for BeautifulSoup as a parser backend" dev-python/beautifulsoup4
+ optfeature "Translates CSS selectors to XPath 1.0 expressions" dev-python/cssselect
+ optfeature "Support for lxml.html.clean sanitizer" dev-python/lxml-html-clean
+}
diff --git a/dev-python/mako/Manifest b/dev-python/mako/Manifest
index bdc9dd306656..da25474e8d86 100644
--- a/dev-python/mako/Manifest
+++ b/dev-python/mako/Manifest
@@ -1 +1,2 @@
DIST mako-1.3.8.tar.gz 392069 BLAKE2B aa0815aecb41435498adc1c62e30d91762bd778ec62c3ff9650f1c4ca43445c5a5381555f0b0af071ffe7bd1ceb9273de1b763303c297383668b98fdb8512734 SHA512 e7fc401526b2b1d69f94be68511aac7e99a0692b1fa8fe8e46894fd6c331bd9e19656715ed6523b04c0bf0e1c78268bb6b54d53f6c7402119ba057c119eccf0b
+DIST mako-1.3.9.tar.gz 392195 BLAKE2B ce697b26e66ba7d352d4888d13e042e3aa5195f6b1000b95b3a5d619eb9cc7fa492ef94c15a9032939fd46bc550d32f8633ea07dc5f785d5ab3943fe129322c8 SHA512 a560587c425dc6905f528a6040e3389e8a1ba148c334f8c229925742b0e5af7db74894d2db9e2d5c7ba4a1f0708e6d28273f0142d63b193f793dafa104d7f79b
diff --git a/dev-python/mako/mako-1.3.9.ebuild b/dev-python/mako/mako-1.3.9.ebuild
new file mode 100644
index 000000000000..10fd43f951dc
--- /dev/null
+++ b/dev-python/mako/mako-1.3.9.ebuild
@@ -0,0 +1,54 @@
+# 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=( pypy3 python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A Python templating language"
+HOMEPAGE="
+ https://www.makotemplates.org/
+ https://github.com/sqlalchemy/mako/
+ https://pypi.org/project/Mako/
+"
+
+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"
+IUSE="doc"
+
+RDEPEND="
+ >=dev-python/markupsafe-0.9.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/babel[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=()
+ case ${EPYTHON} in
+ pypy3)
+ EPYTEST_DESELECT+=(
+ test/test_exceptions.py::ExceptionsTest::test_alternating_file_names
+ )
+ ;;
+ esac
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest
+}
+
+python_install_all() {
+ rm -r doc/build || die
+
+ use doc && local HTML_DOCS=( doc/. )
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/markdown2/Manifest b/dev-python/markdown2/Manifest
index 614f06419afb..4640539e4970 100644
--- a/dev-python/markdown2/Manifest
+++ b/dev-python/markdown2/Manifest
@@ -1,2 +1 @@
-DIST markdown2-2.5.2.tar.gz 141583 BLAKE2B ec817df668eafcf53da9e56ebcf89391156d4bf603c1bf2e915707cce56eebee90769df83b6fd7b8f77bfbcab9efb26136e7300da4818caf335f316554f5c19f SHA512 776e8ec20a5d9489c59d4ebe5193f3544342fe1c630a3605708b674db3aa3f9ab6ecfa2a918785c29efe3fe97cf83303bb2dd810b447f4b8d46ee81b2a12766f
DIST markdown2-2.5.3.tar.gz 141676 BLAKE2B 11f8d9012a33b89d1c46a5072ed0c8c37553b38f40f38894e68d2a68450da9afbf4e5d6ae40253e9b2703494621c48b895f376501af28567310e2bad34e64805 SHA512 9d21cd4d39dc51554069845fa368e5a2e374b781fc5cf7fdf84f198971da6fa89ec6259b2541ca90ff6431a9727b5801c6ecca89ca63cf7b002975a573de5c47
diff --git a/dev-python/markdown2/markdown2-2.5.2.ebuild b/dev-python/markdown2/markdown2-2.5.2.ebuild
deleted file mode 100644
index 132d6d6e712f..000000000000
--- a/dev-python/markdown2/markdown2-2.5.2.ebuild
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( pypy3 python3_{10..13} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Python Markdown language reimplementation"
-HOMEPAGE="
- https://github.com/trentm/python-markdown2/
- https://pypi.org/project/markdown2/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~ppc ~ppc64 ~riscv sparc x86 ~amd64-linux ~x86-linux"
-
-RDEPEND="
- >=dev-python/pygments-2.7.3[${PYTHON_USEDEP}]
-"
-
-distutils_enable_tests unittest
-
-python_test() {
- cd test || die
- "${EPYTHON}" -m unittest test_markdown2.py -v ||
- die "Tests fail with ${EPYTHON}"
-}
diff --git a/dev-python/markdown2/markdown2-2.5.3.ebuild b/dev-python/markdown2/markdown2-2.5.3.ebuild
index db226cd03f2f..4c8f4699fdf5 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/marshmallow/Manifest b/dev-python/marshmallow/Manifest
index fb056b7c0119..d04f46870f67 100644
--- a/dev-python/marshmallow/Manifest
+++ b/dev-python/marshmallow/Manifest
@@ -1,2 +1,3 @@
DIST marshmallow-3.25.1.tar.gz 217295 BLAKE2B 73f6b1e7430f44bc3ea70c35ae5f5a3d219d6a89b53785ab7c32ec223714cd085822f3f41fef10e5af602ae64fab26d67ba49c2f7ef1f3ac24e8c406e3e18ff1 SHA512 7f67ec90ce4b8933d8e6b3aaac66de314d249b314cde85c2489644271426624136334daaea4aabfda638cb156bcbaf685c9a10e5fd7ecd7f008a0d4bd5a6a72d
DIST marshmallow-3.26.0.tar.gz 221490 BLAKE2B 72421900002e9c2793c3f27aacbad514d75247e6af6429deec5f9eb7a9ea46c1d2c4d393b43d4ec129b7dfdd60dcde1deeed63ca6851a909f511eb60863f94cd SHA512 6419da36379a5f62978bb66b2b0f12d22dac5b6898ef04c062f529b4327bea9de8ad004325a33a3af035d066e34a6c4ba0f5621388420450023b69cc0a8f9b41
+DIST marshmallow-3.26.1.tar.gz 221825 BLAKE2B 37ac0cb401efd046070a406cfbbfb130020dcd0f60e8244f8734b28b9c1a3c151d8550016fb54d83861dd61f7d60c6157469fa575e2df1474f45e70bed7b8cd4 SHA512 b0146313010d03d7c5e4808bfb274e2923df455c34e5d31931a35b76c713dd1e403fdb0da95ba4f0eba3bdb747a57c4f85f296aad870170380e4d54fc6824d1e
diff --git a/dev-python/marshmallow/marshmallow-3.26.1.ebuild b/dev-python/marshmallow/marshmallow-3.26.1.ebuild
new file mode 100644
index 000000000000..00c37a86fba2
--- /dev/null
+++ b/dev-python/marshmallow/marshmallow-3.26.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_USE_PEP517=flit
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A library for converting to and from native Python datatypes"
+HOMEPAGE="
+ https://github.com/marshmallow-code/marshmallow/
+ https://pypi.org/project/marshmallow/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+
+RDEPEND="
+ >=dev-python/packaging-17.0[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/pytz[${PYTHON_USEDEP}]
+ dev-python/simplejson[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
diff --git a/dev-python/matplotlib/matplotlib-3.10.0.ebuild b/dev-python/matplotlib/matplotlib-3.10.0.ebuild
index 389bbe80a27d..5bcc2d1df943 100644
--- a/dev-python/matplotlib/matplotlib-3.10.0.ebuild
+++ b/dev-python/matplotlib/matplotlib-3.10.0.ebuild
@@ -78,7 +78,7 @@ RDEPEND="
$(python_gen_cond_dep '
|| (
dev-python/pyqt6[gui,widgets,${PYTHON_USEDEP}]
- dev-python/pyside6[gui,widgets,${PYTHON_USEDEP}]
+ dev-python/pyside:6[gui,widgets,${PYTHON_USEDEP}]
)
' 'python3*')
)
diff --git a/dev-python/mcbootflash/Manifest b/dev-python/mcbootflash/Manifest
index 1e3fdb0c0bfd..1ac588016329 100644
--- a/dev-python/mcbootflash/Manifest
+++ b/dev-python/mcbootflash/Manifest
@@ -1,3 +1 @@
-DIST mcbootflash-10.0.0.tar.gz 43202 BLAKE2B 78ddf1a0711a5147ecc55abbbeb2a220d41981ef547e609b0360ac2966f21826d7e0a11d324f82476af97501412dcfd7a72f4c593810f94c83d43d993588dc89 SHA512 5dd765af0dfb106e009f06d677cc892a53cd66611194cf4a990358d7060f3e13919132fdba8d91c5ed7523b0e25eb62553576e875e8976fc0890a148a7abe9b7
-DIST mcbootflash-10.1.0.tar.gz 44252 BLAKE2B d6fe39af1dfc253a376f7ea9dd5948af9fc3eb16b43da517377ee395b34b33de1a27c044a6e406d39ec1109158e0e436b29d67b05bae150b14856f93c24ff70e SHA512 256464c27a8173d2aa42e120354e51bf992dd7c6905ff45ded61952edb6057b795b8c0dcb0cfb954b8b1fd9fd9a5a9449390671487d6b225eead842538b956a7
DIST mcbootflash-10.1.1.tar.gz 44977 BLAKE2B 144c4d8b7db6e35e09c6c023b7f956a6f5ec2e7cc2bf6eca2a136470268c74d6e146b5b260b3318c427b194ec99020c17128ea0ad6a72e181d81e4f4f1c1c813 SHA512 6784901e57444f61afcc0fe0e67f8171be676da68c5d188aeb132ea82bbdd936badbfcd31bf126e8cd275762aa7899447600620c08c9b6a81a91c88e679e0926
diff --git a/dev-python/mcbootflash/mcbootflash-10.0.0-r1.ebuild b/dev-python/mcbootflash/mcbootflash-10.0.0-r1.ebuild
deleted file mode 100644
index 6db6251695a2..000000000000
--- a/dev-python/mcbootflash/mcbootflash-10.0.0-r1.ebuild
+++ /dev/null
@@ -1,37 +0,0 @@
-# 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_{10..13} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Flash firmware to devices running Microchip's 16-bit bootloader"
-HOMEPAGE="
- https://pypi.org/project/mcbootflash/
- https://github.com/bessman/mcbootflash/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="amd64"
-
-RDEPEND="
- >=dev-python/bincopy-20.0.0[${PYTHON_USEDEP}]
- dev-python/datastructclass[${PYTHON_USEDEP}]
- dev-python/pyserial[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/pytest-reserial[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-
-python_test() {
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- epytest -p reserial --replay
-}
diff --git a/dev-python/mcbootflash/mcbootflash-10.1.0.ebuild b/dev-python/mcbootflash/mcbootflash-10.1.0.ebuild
deleted file mode 100644
index a8038a51f99f..000000000000
--- a/dev-python/mcbootflash/mcbootflash-10.1.0.ebuild
+++ /dev/null
@@ -1,37 +0,0 @@
-# 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_{10..13} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Flash firmware to devices running Microchip's 16-bit bootloader"
-HOMEPAGE="
- https://pypi.org/project/mcbootflash/
- https://github.com/bessman/mcbootflash/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64"
-
-RDEPEND="
- >=dev-python/bincopy-20.0.0[${PYTHON_USEDEP}]
- dev-python/datastructclass[${PYTHON_USEDEP}]
- dev-python/pyserial[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/pytest-reserial[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-
-python_test() {
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- epytest -p reserial --replay
-}
diff --git a/dev-python/mcbootflash/mcbootflash-10.1.1.ebuild b/dev-python/mcbootflash/mcbootflash-10.1.1.ebuild
index a8038a51f99f..6db6251695a2 100644
--- a/dev-python/mcbootflash/mcbootflash-10.1.1.ebuild
+++ b/dev-python/mcbootflash/mcbootflash-10.1.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64"
+KEYWORDS="amd64"
RDEPEND="
>=dev-python/bincopy-20.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/mkdocs-autorefs/Manifest b/dev-python/mkdocs-autorefs/Manifest
index cc74ba41d66c..e2f995e24b6b 100644
--- a/dev-python/mkdocs-autorefs/Manifest
+++ b/dev-python/mkdocs-autorefs/Manifest
@@ -1,2 +1,2 @@
-DIST mkdocs_autorefs-1.2.0.tar.gz 40262 BLAKE2B 5f066c3a3b917eeba7c45c013ecf3067f4b669fd1a74b4471dfb1df20c2eab67909e99470822a986b0632b97ab81d9cb8db67e32816721beafbc7d2f02a3b881 SHA512 f0be27246af229a3d0b5daf33083dba0ddb604ded1624fb28fe1f5f2d120669975948e620ee4f3dcde48af83199fe1cfb96e37db74ff60825bc018206fb1ce17
DIST mkdocs_autorefs-1.3.0.tar.gz 42597 BLAKE2B a07555f714578b2a88d98ed4201542a23fd0ed4f5b686cefe9571cf876e02c5f949fb92d2f02ac6e13d4d234afcc648bc52078b4ad18c2f372b1a5f9d719cf68 SHA512 a140f4ce6fa2e2b5a6174b7ad808ee300819d5edf4e8b421faa09de8bfaaaa450d04aa9c9bc3d1aeea4cf27fccdfdb04a504f4101e7e1200c6a62111e036912d
+DIST mkdocs_autorefs-1.3.1.tar.gz 2056416 BLAKE2B d66e83103b7380c5f3d3496e418b8f42c85c1f4d02f65f0c2bb0a8808cdf3ead3470fa627175c82fb097de3cd059c27be082e5fe9ae7e808843c1622d0f894e5 SHA512 a21b98d8ce4b5e5157bf8cd5416ac19ebcca5234342b3d0b9d3983a95de3e14c347670654cccc81d8971d06bdebafb3536aeef1ea156d3c73235dc917d841b20
diff --git a/dev-python/mkdocs-autorefs/mkdocs-autorefs-1.2.0.ebuild b/dev-python/mkdocs-autorefs/mkdocs-autorefs-1.3.1.ebuild
index 97383ef46311..6f7d287cbe34 100644
--- a/dev-python/mkdocs-autorefs/mkdocs-autorefs-1.2.0.ebuild
+++ b/dev-python/mkdocs-autorefs/mkdocs-autorefs-1.3.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
@@ -27,7 +27,7 @@ RDEPEND="
BDEPEND="
test? (
>=dev-python/pygments-2.16[${PYTHON_USEDEP}]
- >=dev-python/pymdown-extensions-10.0[${PYTHON_USEDEP}]
+ >=dev-python/pymdown-extensions-10.14[${PYTHON_USEDEP}]
)
"
diff --git a/dev-python/mkdocs-material/Manifest b/dev-python/mkdocs-material/Manifest
index 7d1a0454cbe3..b5731b8cd74c 100644
--- a/dev-python/mkdocs-material/Manifest
+++ b/dev-python/mkdocs-material/Manifest
@@ -1,2 +1,5 @@
DIST mkdocs-material-9.5.50.gh.tar.gz 14753521 BLAKE2B 3d4b98bdd89d3e106f5cbd78b4deb639164991da1adb5b0dc141c7feb1b07a08466daba7793e3cc46b7db5c26bb6c46ebe3635dfc4e9f943318eff829eced6e8 SHA512 1a24b97deb43e92de7ffac52f7b3a1139f26ae112e6a9218d1a31ac8f07e250bfd0905b95d3d01f3ad5daf12246b4aa98d852fac3cecc7e5dc60b1337b820ec7
DIST mkdocs-material-9.6.1.gh.tar.gz 14796273 BLAKE2B 3dd42a064c50149a5ec0b45594f7136825145c6f279373856fd3cb426eaf71a867c1e63ad30b108145e76cf90ad04f4b0663094adfec46abb345014b39289ebd SHA512 ac2a6815b1d934ef47d292acefabaf7d63424033800325b8fbbe8bd6812a167777e810dd6a9b6431614434b0fcba8f316f96b876f12796ec6688c3078bd3eaa7
+DIST mkdocs-material-9.6.2.gh.tar.gz 14915916 BLAKE2B fd849ff8c14c8bd865c04d205af221cf294499e65359558a7d227258dfd2fa4b5b4978eb54f4f31310473b25e9ebf2cad9cc9e9ba6695712c651ac14064822cf SHA512 7de7a8ef0b1904598071996e5e858849a37fb48e1d1339560e59ab4ff09146ae4001ae7357c1974aa3d9eb103394a6cd27e177b028753224564a80e277733e9f
+DIST mkdocs-material-9.6.3.gh.tar.gz 14915630 BLAKE2B 9945f9991cdad74f3ca92217b32ef649b27504f6efe7aa1fc530505d60e41b13aa617468adf8beff9350f2d84f0a7801fd4d157209aa1e8e018a919454e3ef05 SHA512 1208f45a664701b27b1092dd2491a5172112bf603c24fab1afc3bfef790d286f60a6ce20c0762af851b348201b2d51e26f62940a2ded827d02c17aa10d1ba96f
+DIST mkdocs-material-9.6.4.gh.tar.gz 14916428 BLAKE2B 9cbf971ec00af1b3ab8d9786dcd4bfe44536a4ae20d2d82fcdebbd8abe0810e527589958bffec6bf8180369f174b70e4a36ce57a69aec49ac182836cf7c8eec6 SHA512 327ea81256e90a3f9ba473f93c4e1a23a31844620e03c5f9da2833655a4cd98803a06e46e0c22469e577bcea30d316bf8ad2d855b4f5bcaddfe58d73e6d4d1f5
diff --git a/dev-python/mkdocs-material/mkdocs-material-9.6.2.ebuild b/dev-python/mkdocs-material/mkdocs-material-9.6.2.ebuild
new file mode 100644
index 000000000000..8b4499b238b5
--- /dev/null
+++ b/dev-python/mkdocs-material/mkdocs-material-9.6.2.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=hatchling
+PYTHON_COMPAT=( python3_{10..13} )
+
+DOCS_BUILDER="mkdocs"
+DOCS_DEPEND="
+ dev-python/mkdocs-material-extensions
+ dev-python/mkdocs-minify-plugin
+ dev-python/mkdocs-redirects
+"
+
+inherit distutils-r1 docs
+
+DESCRIPTION="A Material Design theme for MkDocs"
+HOMEPAGE="
+ https://github.com/squidfunk/mkdocs-material/
+ https://pypi.org/project/mkdocs-material/
+"
+SRC_URI="
+ https://github.com/squidfunk/${PN}/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
+IUSE="social"
+
+RDEPEND="
+ >=dev-python/babel-2.10.3[${PYTHON_USEDEP}]
+ >=dev-python/colorama-0.4[${PYTHON_USEDEP}]
+ >=dev-python/jinja2-3.0.2[${PYTHON_USEDEP}]
+ >=dev-python/lxml-4.6[${PYTHON_USEDEP}]
+ >=dev-python/markdown-3.2[${PYTHON_USEDEP}]
+ >=dev-python/mkdocs-1.5.3[${PYTHON_USEDEP}]
+ >=dev-python/paginate-0.5.6[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.16[${PYTHON_USEDEP}]
+ >=dev-python/pymdown-extensions-10.2[${PYTHON_USEDEP}]
+ >=dev-python/readtime-2.0[${PYTHON_USEDEP}]
+ >=dev-python/regex-2022.4.24[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.26[${PYTHON_USEDEP}]
+ social? (
+ >=dev-python/pillow-10.2[${PYTHON_USEDEP}]
+ >=media-gfx/cairosvg-2.5[${PYTHON_USEDEP}]
+ )
+"
+BDEPEND="
+ >=dev-python/trove-classifiers-2023.10.18[${PYTHON_USEDEP}]
+"
+# mkdocs-material-extensions depends on mkdocs-material creating a circular dep
+PDEPEND="
+ >=dev-python/mkdocs-material-extensions-1.2[${PYTHON_USEDEP}]
+"
+
+PATCHES=(
+ # simplify pyproject to remove extra deps for metadata
+ "${FILESDIR}/${PN}-8.5.7-simplify-build.patch"
+)
+
+src_prepare() {
+ echo "__version__ = '${PV}'" > gentoo_version.py || die
+ distutils-r1_src_prepare
+}
diff --git a/dev-python/mkdocs-material/mkdocs-material-9.6.3.ebuild b/dev-python/mkdocs-material/mkdocs-material-9.6.3.ebuild
new file mode 100644
index 000000000000..8b4499b238b5
--- /dev/null
+++ b/dev-python/mkdocs-material/mkdocs-material-9.6.3.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=hatchling
+PYTHON_COMPAT=( python3_{10..13} )
+
+DOCS_BUILDER="mkdocs"
+DOCS_DEPEND="
+ dev-python/mkdocs-material-extensions
+ dev-python/mkdocs-minify-plugin
+ dev-python/mkdocs-redirects
+"
+
+inherit distutils-r1 docs
+
+DESCRIPTION="A Material Design theme for MkDocs"
+HOMEPAGE="
+ https://github.com/squidfunk/mkdocs-material/
+ https://pypi.org/project/mkdocs-material/
+"
+SRC_URI="
+ https://github.com/squidfunk/${PN}/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
+IUSE="social"
+
+RDEPEND="
+ >=dev-python/babel-2.10.3[${PYTHON_USEDEP}]
+ >=dev-python/colorama-0.4[${PYTHON_USEDEP}]
+ >=dev-python/jinja2-3.0.2[${PYTHON_USEDEP}]
+ >=dev-python/lxml-4.6[${PYTHON_USEDEP}]
+ >=dev-python/markdown-3.2[${PYTHON_USEDEP}]
+ >=dev-python/mkdocs-1.5.3[${PYTHON_USEDEP}]
+ >=dev-python/paginate-0.5.6[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.16[${PYTHON_USEDEP}]
+ >=dev-python/pymdown-extensions-10.2[${PYTHON_USEDEP}]
+ >=dev-python/readtime-2.0[${PYTHON_USEDEP}]
+ >=dev-python/regex-2022.4.24[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.26[${PYTHON_USEDEP}]
+ social? (
+ >=dev-python/pillow-10.2[${PYTHON_USEDEP}]
+ >=media-gfx/cairosvg-2.5[${PYTHON_USEDEP}]
+ )
+"
+BDEPEND="
+ >=dev-python/trove-classifiers-2023.10.18[${PYTHON_USEDEP}]
+"
+# mkdocs-material-extensions depends on mkdocs-material creating a circular dep
+PDEPEND="
+ >=dev-python/mkdocs-material-extensions-1.2[${PYTHON_USEDEP}]
+"
+
+PATCHES=(
+ # simplify pyproject to remove extra deps for metadata
+ "${FILESDIR}/${PN}-8.5.7-simplify-build.patch"
+)
+
+src_prepare() {
+ echo "__version__ = '${PV}'" > gentoo_version.py || die
+ distutils-r1_src_prepare
+}
diff --git a/dev-python/mkdocs-material/mkdocs-material-9.6.4.ebuild b/dev-python/mkdocs-material/mkdocs-material-9.6.4.ebuild
new file mode 100644
index 000000000000..8b4499b238b5
--- /dev/null
+++ b/dev-python/mkdocs-material/mkdocs-material-9.6.4.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=hatchling
+PYTHON_COMPAT=( python3_{10..13} )
+
+DOCS_BUILDER="mkdocs"
+DOCS_DEPEND="
+ dev-python/mkdocs-material-extensions
+ dev-python/mkdocs-minify-plugin
+ dev-python/mkdocs-redirects
+"
+
+inherit distutils-r1 docs
+
+DESCRIPTION="A Material Design theme for MkDocs"
+HOMEPAGE="
+ https://github.com/squidfunk/mkdocs-material/
+ https://pypi.org/project/mkdocs-material/
+"
+SRC_URI="
+ https://github.com/squidfunk/${PN}/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
+IUSE="social"
+
+RDEPEND="
+ >=dev-python/babel-2.10.3[${PYTHON_USEDEP}]
+ >=dev-python/colorama-0.4[${PYTHON_USEDEP}]
+ >=dev-python/jinja2-3.0.2[${PYTHON_USEDEP}]
+ >=dev-python/lxml-4.6[${PYTHON_USEDEP}]
+ >=dev-python/markdown-3.2[${PYTHON_USEDEP}]
+ >=dev-python/mkdocs-1.5.3[${PYTHON_USEDEP}]
+ >=dev-python/paginate-0.5.6[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.16[${PYTHON_USEDEP}]
+ >=dev-python/pymdown-extensions-10.2[${PYTHON_USEDEP}]
+ >=dev-python/readtime-2.0[${PYTHON_USEDEP}]
+ >=dev-python/regex-2022.4.24[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.26[${PYTHON_USEDEP}]
+ social? (
+ >=dev-python/pillow-10.2[${PYTHON_USEDEP}]
+ >=media-gfx/cairosvg-2.5[${PYTHON_USEDEP}]
+ )
+"
+BDEPEND="
+ >=dev-python/trove-classifiers-2023.10.18[${PYTHON_USEDEP}]
+"
+# mkdocs-material-extensions depends on mkdocs-material creating a circular dep
+PDEPEND="
+ >=dev-python/mkdocs-material-extensions-1.2[${PYTHON_USEDEP}]
+"
+
+PATCHES=(
+ # simplify pyproject to remove extra deps for metadata
+ "${FILESDIR}/${PN}-8.5.7-simplify-build.patch"
+)
+
+src_prepare() {
+ echo "__version__ = '${PV}'" > gentoo_version.py || die
+ distutils-r1_src_prepare
+}
diff --git a/dev-python/mkdocs-static-i18n/Manifest b/dev-python/mkdocs-static-i18n/Manifest
index 3e33c5540cfd..b925f5cc47b1 100644
--- a/dev-python/mkdocs-static-i18n/Manifest
+++ b/dev-python/mkdocs-static-i18n/Manifest
@@ -1,2 +1 @@
-DIST mkdocs_static_i18n-1.2.3.tar.gz 1370068 BLAKE2B 500046d2a84ec8654a8d51f7a57bc2da04cb0f65a2103b05305494db5ac1217b5e0834b3363683513a33bd87cecfad2eb1ff4b8928a81293b756e268d45e674a SHA512 1728846c7be845abd498cca523087e37049ed2fc3b32235188e633365cb28eab13d4da28921e8406f2bbfce296de48d9280ac562dbe825b4de486d0a8cde92a3
DIST mkdocs_static_i18n-1.3.0.tar.gz 1370450 BLAKE2B 9773d0916e0e423a52bf11cc75226a023a293a4b864ecaf42e6bbba4fd97a1181197a7e76969af825114631a761e2b4392b584a67cddd868c3ca02b0a8af1837 SHA512 acce96a18078ec4a2984c65a077ffa020edf9707352f5b9f76a63cd89293baa33dffdc032bbdee4aa9ad7d4128b98f2ae881cb86f3f80a4652d052b3314143d5
diff --git a/dev-python/mkdocs-static-i18n/mkdocs-static-i18n-1.2.3.ebuild b/dev-python/mkdocs-static-i18n/mkdocs-static-i18n-1.2.3.ebuild
deleted file mode 100644
index 1868e6989342..000000000000
--- a/dev-python/mkdocs-static-i18n/mkdocs-static-i18n-1.2.3.ebuild
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517="hatchling"
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="MkDocs i18n plugin using static translation markdown files"
-HOMEPAGE="
- https://github.com/ultrabug/mkdocs-static-i18n
- https://pypi.org/project/mkdocs-static-i18n/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~ppc ~ppc64 ~riscv x86"
-
-RDEPEND="
- >=dev-python/mkdocs-1.5.2[${PYTHON_USEDEP}]
-"
-
-BDEPEND="
- test? (
- dev-python/mkdocs-material[${PYTHON_USEDEP}]
- !!dev-python/mkdocs-i18n
- )
-"
-
-distutils_enable_tests pytest
diff --git a/dev-python/mkdocs-static-i18n/mkdocs-static-i18n-1.3.0.ebuild b/dev-python/mkdocs-static-i18n/mkdocs-static-i18n-1.3.0.ebuild
index 97832d7fd036..b48b4faa76d5 100644
--- a/dev-python/mkdocs-static-i18n/mkdocs-static-i18n-1.3.0.ebuild
+++ b/dev-python/mkdocs-static-i18n/mkdocs-static-i18n-1.3.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
+KEYWORDS="amd64 ~arm arm64 ~ppc ~ppc64 ~riscv x86"
RDEPEND="
>=dev-python/mkdocs-1.5.2[${PYTHON_USEDEP}]
diff --git a/dev-python/mkdocstrings-python/Manifest b/dev-python/mkdocstrings-python/Manifest
index ec1378ccf7f8..70bf43ef9e01 100644
--- a/dev-python/mkdocstrings-python/Manifest
+++ b/dev-python/mkdocstrings-python/Manifest
@@ -1,2 +1,3 @@
-DIST mkdocstrings_python-1.12.2.tar.gz 168207 BLAKE2B 4173a83b118f02f6d1c930aab1ef7d59f6108e73db6e5ac8f541f4d45203b0ffac7896ee4c97cca677f910dad5cf9de65bf755263fd82aadff83f75ebb05396e SHA512 19d7bcf21ab9e92be69dbb410d544c46f14bab6b2f02ad26c31a77c2aa2929c5e0044406c1a90a2bab2f27effc4bec84b4871ce9c8c3c4503773b11db1c856af
-DIST mkdocstrings_python-1.13.0.tar.gz 185697 BLAKE2B e3ab2da319147a9c28bb8df7074ab6fa61616fd950bc522b9711e23ab3f0d5f6c50ee82ce193e8b4051fdfe7ce1ae110617acc89a045acf73b49c4afe0fd05a3 SHA512 0414a09000a09515e5da1d8ea5a9cd59fa405de0de15a5c225ab57cc2280f47e7bf11196d6f41bb9626c5dd632cf37000f59cc4e156c7c061c8b46fca1563d05
+DIST mkdocstrings_python-1.14.6.tar.gz 422060 BLAKE2B d5bfae63338b282ec88c70abce944ab6a866ac0fbf444de741f2dd84be6b6c5f37c22cca6fcf187dba773378f6fd518150c0e56a1dfcf0b6852706c7a9729323 SHA512 cfd8612827c7fd1329d7692c666f1e9925e71e2be0ab221b2c5f5f92bc7e4e3f1e2c0dc244a9162df36b8bdd9f8e8d0ddd0bb70fa53bf0c3f294e72a18faec26
+DIST mkdocstrings_python-1.14.7.tar.gz 422162 BLAKE2B 7e1468baf7e53a71da406a62c3903dc937c3036321ec27448219ce6f338bf5a164c273694da229282d1c32655b3ac35b679f7c9bc3d168f97859f1bbeffa986c SHA512 e5e8db2c7c155a005e34732aa42574b5c62b229077193e6d02106c81d672398f8e3cd1cdb80532f545bec23db0390e8c920a1b2dcd2dec404deea35853d54829
+DIST mkdocstrings_python-1.15.0.tar.gz 422613 BLAKE2B f1b73e627f9bc4b49635d8681046b6b2ec43fd8b3213ec42f9d88a90a4c49cfe414bb44352dfe2f8fc7b77a0189dfe3f0b6120730d31d42c5d5d1a3813fff61d SHA512 0b007404d6d9e2d81946908e3e91451c1fa51e73ce5eb056ffb8d61e9163cbf9fb23bc16e45f409d9a16053ebc76a9403f46feb8ea5f068740bd7fa239bc8607
diff --git a/dev-python/mkdocstrings-python/mkdocstrings-python-1.13.0.ebuild b/dev-python/mkdocstrings-python/mkdocstrings-python-1.14.6.ebuild
index c1516c6a8bfa..ac1edc64eb1e 100644
--- a/dev-python/mkdocstrings-python/mkdocstrings-python-1.13.0.ebuild
+++ b/dev-python/mkdocstrings-python/mkdocstrings-python-1.14.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
@@ -21,8 +21,11 @@ KEYWORDS="~amd64 ~arm64 ~riscv"
RDEPEND="
>=dev-python/griffe-0.49[${PYTHON_USEDEP}]
- >=dev-python/mkdocstrings-0.26.0[${PYTHON_USEDEP}]
+ >=dev-python/mkdocstrings-0.28[${PYTHON_USEDEP}]
>=dev-python/mkdocs-autorefs-1.2[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/typing-extensions-4.0[${PYTHON_USEDEP}]
+ ' 3.10)
"
BDEPEND="
test? (
diff --git a/dev-python/mkdocstrings-python/mkdocstrings-python-1.12.2.ebuild b/dev-python/mkdocstrings-python/mkdocstrings-python-1.14.7.ebuild
index 840fb3d9e876..ac1edc64eb1e 100644
--- a/dev-python/mkdocstrings-python/mkdocstrings-python-1.12.2.ebuild
+++ b/dev-python/mkdocstrings-python/mkdocstrings-python-1.14.7.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,11 +21,16 @@ KEYWORDS="~amd64 ~arm64 ~riscv"
RDEPEND="
>=dev-python/griffe-0.49[${PYTHON_USEDEP}]
- >=dev-python/mkdocstrings-0.26.0[${PYTHON_USEDEP}]
+ >=dev-python/mkdocstrings-0.28[${PYTHON_USEDEP}]
>=dev-python/mkdocs-autorefs-1.2[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/typing-extensions-4.0[${PYTHON_USEDEP}]
+ ' 3.10)
"
BDEPEND="
test? (
+ >=dev-python/beautifulsoup4-4.12.3[${PYTHON_USEDEP}]
+ >=dev-python/inline-snapshot-0.18[${PYTHON_USEDEP}]
dev-python/mkdocs-material[${PYTHON_USEDEP}]
)
"
@@ -33,3 +38,14 @@ BDEPEND="
distutils_enable_tests pytest
export PDM_BUILD_SCM_VERSION=${PV}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # "None" meaning particular formatter not installed
+ "tests/test_rendering.py::test_format_code[None-print('Hello')]"
+ "tests/test_rendering.py::test_format_code[None-aaaaa(bbbbb, ccccc=1) + ddddd.eeeee[ffff] or {ggggg: hhhhh, iiiii: jjjjj}]"
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -p inline_snapshot
+}
diff --git a/dev-python/mkdocstrings-python/mkdocstrings-python-1.15.0.ebuild b/dev-python/mkdocstrings-python/mkdocstrings-python-1.15.0.ebuild
new file mode 100644
index 000000000000..ac1edc64eb1e
--- /dev/null
+++ b/dev-python/mkdocstrings-python/mkdocstrings-python-1.15.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=pdm-backend
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python handler for dev-python/mkdocstrings"
+HOMEPAGE="
+ https://mkdocstrings.github.io/python/
+ https://github.com/mkdocstrings/python/
+ https://pypi.org/project/mkdocstrings-python/
+"
+
+LICENSE="ISC"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv"
+
+RDEPEND="
+ >=dev-python/griffe-0.49[${PYTHON_USEDEP}]
+ >=dev-python/mkdocstrings-0.28[${PYTHON_USEDEP}]
+ >=dev-python/mkdocs-autorefs-1.2[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/typing-extensions-4.0[${PYTHON_USEDEP}]
+ ' 3.10)
+"
+BDEPEND="
+ test? (
+ >=dev-python/beautifulsoup4-4.12.3[${PYTHON_USEDEP}]
+ >=dev-python/inline-snapshot-0.18[${PYTHON_USEDEP}]
+ dev-python/mkdocs-material[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+export PDM_BUILD_SCM_VERSION=${PV}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # "None" meaning particular formatter not installed
+ "tests/test_rendering.py::test_format_code[None-print('Hello')]"
+ "tests/test_rendering.py::test_format_code[None-aaaaa(bbbbb, ccccc=1) + ddddd.eeeee[ffff] or {ggggg: hhhhh, iiiii: jjjjj}]"
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -p inline_snapshot
+}
diff --git a/dev-python/mkdocstrings/Manifest b/dev-python/mkdocstrings/Manifest
index 0333ab0c01a4..ec1b45b9b3fb 100644
--- a/dev-python/mkdocstrings/Manifest
+++ b/dev-python/mkdocstrings/Manifest
@@ -1 +1,2 @@
DIST mkdocstrings-0.26.2.tar.gz 92512 BLAKE2B e2ca2ba4d5a8916cdb77efb0db6c0fdc5f8969b27f4b0b5b199873a62c85150b5a0dde45797b48d297e08f9e082c9c5329084feb15379ae0a16821ac11aa3fed SHA512 7ea34df4204ae82faa19ddaf81a073152c57d9ef7f55f8935c1eb1b244ebc6ed749d853c72fd28e69ee5e1aa12ae7a2e4b6fff4f9965856a837d15dd0e2cc11e
+DIST mkdocstrings-0.28.0.tar.gz 3392797 BLAKE2B 9484110f80fa85602f64acd04941db1cebf2ff39d4385559f340d3837347fb51f596b7444e1d5efa26018cf8cfba200892b938c298d76ac169beb67c520b66a4 SHA512 a1dece5b99b4f82faa8b1c02a764252df7102c4e72489cff009388cb90833339c9170517373df7e449df311a5ab7dc4d19821e15a99f295065222db0809379ce
diff --git a/dev-python/mkdocstrings/mkdocstrings-0.28.0.ebuild b/dev-python/mkdocstrings/mkdocstrings-0.28.0.ebuild
new file mode 100644
index 000000000000..5c838ad52d22
--- /dev/null
+++ b/dev-python/mkdocstrings/mkdocstrings-0.28.0.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=pdm-backend
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Automatic documentation from sources, for MkDocs"
+HOMEPAGE="
+ https://mkdocstrings.github.io/
+ https://github.com/mkdocstrings/mkdocstrings/
+ https://pypi.org/project/mkdocstrings/
+"
+
+LICENSE="ISC"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv"
+
+RDEPEND="
+ >=dev-python/jinja2-2.11.1[${PYTHON_USEDEP}]
+ >=dev-python/markdown-3.6[${PYTHON_USEDEP}]
+ >=dev-python/markupsafe-1.1[${PYTHON_USEDEP}]
+ >=dev-python/mkdocs-1.5[${PYTHON_USEDEP}]
+ >=dev-python/mkdocs-autorefs-1.3[${PYTHON_USEDEP}]
+ >=dev-python/mkdocs-get-deps-0.2[${PYTHON_USEDEP}]
+ >=dev-python/pymdown-extensions-6.3[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/markdown-exec[${PYTHON_USEDEP}]
+ dev-python/mkdocs-material[${PYTHON_USEDEP}]
+ dev-python/mkdocstrings-python[${PYTHON_USEDEP}]
+ dev-python/sphinx[${PYTHON_USEDEP}]
+ )
+"
+
+# mkdocstrings documentation generation requires several currently
+# unpackaged mkdocs extensions and plug-ins, and this test
+# makes use of mkdocs configuration
+EPYTEST_DESELECT=(
+ tests/test_plugin.py::test_disabling_plugin
+ # WTF, it tries to unlink installed files from installed package?!
+ tests/test_handlers.py::test_extended_templates
+ # Needs unpackaged mkdocs-callouts, mkdocs-literate-nav, and possibly more
+ tests/test_inventory.py::test_sphinx_load_mkdocstrings_inventory_file
+ # Internet
+ tests/test_inventory.py::test_load_inventory
+)
+
+distutils_enable_tests pytest
+
+export PDM_BUILD_SCM_VERSION=${PV}
diff --git a/dev-python/moto/Manifest b/dev-python/moto/Manifest
index 7dc166e2b677..6048d6cb7c90 100644
--- a/dev-python/moto/Manifest
+++ b/dev-python/moto/Manifest
@@ -1,4 +1,3 @@
DIST moto-4.2.14.tar.gz 4933741 BLAKE2B 4c50a808dc8f27cfbcd0ba234d268084ee9a32f36cb5d6af61aacc4ee79f7bf5cf1045147c4642472129eee37bef8bc2c1953d140260d39d7f333ae0f5e5cf95 SHA512 d4079118ed1d2eef9134575e33dc0ed749bff0293d753baa63a630dbb987914b9933445027abdc344bb93fa1d6e483baf8a337a444c9dd055dda50b095ff9937
-DIST moto-5.0.26.tar.gz 6442983 BLAKE2B 90fd0db1c2a5824d9aa65ff383812d98eb36452883472dafd679755cb506f1267f8f702222a6eb50e6ab02ee8bfe5e7b9439636c8da8943579ceb4c980b2c6f6 SHA512 04372b8bc958be915231906dadd891758ea7aca80246bd7724f2163e7f8bab406933d639f7d5819a2002e138d1b107add3b2fd8fc0d1dcf74c18ac76cd8b3600
DIST moto-5.0.27.tar.gz 6461751 BLAKE2B 92d0f884527c3ccee044120c4e4ec7b9d927b86a41bef505290d21c858b7be1f25ce0daea54fb4a5bc16e0c39a22c8c21372cc3280ca94e65402715df310226e SHA512 e8b45c2b0a02e381a45184fdead89086961c7fb029d71b828340aad5b1713f66d8421b836b6bf943833a331d13f81b976444e2875ae781951f6295aa4544e440
DIST moto-5.0.28.tar.gz 6537950 BLAKE2B c9f81297d3336b28923f831afacf0b9be1b3e1f409384e049be710ead8e5d6354a4823089dcd4c2a7f0e453a14c6b3287b89b4a2597abb8984968423a6d53c62 SHA512 1c66279543324a726544e583d5091da7d47aec7dbbb4a2d565b6017e370cfd8c51d613fb56cb6d4279d4101426d88231fd6c70c59082e7b20acf4311278b41d2
diff --git a/dev-python/moto/moto-5.0.26.ebuild b/dev-python/moto/moto-5.0.26.ebuild
deleted file mode 100644
index 3eeb7a2602d8..000000000000
--- a/dev-python/moto/moto-5.0.26.ebuild
+++ /dev/null
@@ -1,132 +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_{10..13} )
-
-inherit distutils-r1 pypi toolchain-funcs
-
-DESCRIPTION="Mock library for boto"
-HOMEPAGE="
- https://github.com/getmoto/moto/
- https://pypi.org/project/moto/
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="amd64 arm64 ~riscv x86"
-
-RDEPEND="
- >=dev-python/aws-xray-sdk-0.93[${PYTHON_USEDEP}]
- dev-python/boto3[${PYTHON_USEDEP}]
- >=dev-python/botocore-1.14.0[${PYTHON_USEDEP}]
- >=dev-python/cfn-lint-0.40.0[${PYTHON_USEDEP}]
- >=dev-python/cryptography-35.0.0[${PYTHON_USEDEP}]
- dev-python/cookies[${PYTHON_USEDEP}]
- >=dev-python/docker-3.0.0[${PYTHON_USEDEP}]
- dev-python/flask[${PYTHON_USEDEP}]
- dev-python/flask-cors[${PYTHON_USEDEP}]
- >=dev-python/idna-2.5[${PYTHON_USEDEP}]
- >=dev-python/jinja2-2.10.1[${PYTHON_USEDEP}]
- dev-python/jsonpath-ng[${PYTHON_USEDEP}]
- dev-python/jsonschema[${PYTHON_USEDEP}]
- dev-python/more-itertools[${PYTHON_USEDEP}]
- >=dev-python/pyparsing-3.0.7[${PYTHON_USEDEP}]
- >=dev-python/openapi-spec-validator-0.5.0[${PYTHON_USEDEP}]
- dev-python/pyaml[${PYTHON_USEDEP}]
- >=dev-python/pyyaml-5.1[${PYTHON_USEDEP}]
- >=dev-python/python-dateutil-2.1[${PYTHON_USEDEP}]
- dev-python/python-dateutil[${PYTHON_USEDEP}]
- dev-python/python-jose[${PYTHON_USEDEP}]
- >=dev-python/responses-0.15.0[${PYTHON_USEDEP}]
- >=dev-python/requests-2.5[${PYTHON_USEDEP}]
- dev-python/sshpubkeys[${PYTHON_USEDEP}]
- dev-python/typing-extensions[${PYTHON_USEDEP}]
- dev-python/xmltodict[${PYTHON_USEDEP}]
- dev-python/werkzeug[${PYTHON_USEDEP}]
- dev-python/zipp[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/antlr4-python3-runtime[${PYTHON_USEDEP}]
- dev-python/freezegun[${PYTHON_USEDEP}]
- dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
- )
-"
-
-: "${EPYTEST_TIMEOUT:=180}"
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-python_test() {
- local EPYTEST_DESELECT=(
- # Needs network (or docker?) but not marked as such, bug #807031
- # TODO: report upstream
- tests/test_core/test_request_passthrough.py
- tests/test_core/test_responses_module.py::TestResponsesMockWithPassThru::test_aws_and_http_requests
- tests/test_core/test_responses_module.py::TestResponsesMockWithPassThru::test_http_requests
- # broken code? (local variable used referenced before definition)
- tests/test_appsync/test_appsync_schema.py
- # require py_partiql_parser
- tests/test_s3/test_s3_select.py
- tests/test_dynamodb/test_dynamodb_statements.py
- # require joserfc
- tests/test_apigateway/test_apigateway.py::test_update_authorizer_configuration
- tests/test_apigateway/test_apigateway.py::test_create_authorizer
- tests/test_apigateway/test_apigateway.py::test_delete_authorizer
- tests/test_cognitoidp/test_cognitoidp_exceptions.py::TestCognitoUserDeleter::test_authenticate_with_signed_out_user
- tests/test_cognitoidp/test_cognitoidp_exceptions.py::TestCognitoUserPoolDuplidateEmails::test_use_existing_email__when_email_is_
- tests/test_cognitoidp/test_cognitoidp_exceptions.py::TestCognitoUserPoolDuplidateEmails::test_use_existing_email__when_username_
- tests/test_cognitoidp/test_cognitoidp_replay.py::TestCreateUserPoolWithPredeterminedID::test_different_seed
- tests/test_cognitoidp/test_cognitoidp_replay.py::TestCreateUserPoolWithPredeterminedID::test_same_seed
- tests/test_cognitoidp/test_server.py::test_sign_up_user_without_authentication
- tests/test_cognitoidp/test_server.py::test_admin_create_user_without_authentication
- tests/test_cognitoidp/test_server.py::test_associate_software_token
- # TODO
- tests/test_dynamodb/test_dynamodb_import_table.py
- tests/test_firehose/test_firehose_put.py::test_put_record_http_destination
- tests/test_firehose/test_firehose_put.py::test_put_record_batch_http_destination
- tests/test_stepfunctions/parser/test_stepfunctions_dynamodb_integration.py::test_zero_retry
- # random crashes
- tests/test_stepfunctions/parser/test_stepfunctions_sns_integration.py
- tests/test_stepfunctions/parser/test_stepfunctions_sqs_integration.py
- tests/test_stepfunctions/test_stepfunctions.py
- )
- local EPYTEST_IGNORE=(
- # require joserfc
- tests/test_cognitoidp/test_cognitoidp.py
- )
-
- case ${EPYTHON} in
- python3.13)
- EPYTEST_DESELECT+=(
- # suddenly started crashing, *shrug*
- tests/test_xray/test_xray_client.py::test_xray_context_patched
- tests/test_xray/test_xray_client.py::test_xray_dynamo_request_id
- tests/test_xray/test_xray_client.py::test_xray_dynamo_request_id_with_context_mgr
- tests/test_xray/test_xray_client.py::test_xray_udp_emitter_patched
- )
- ;;
- esac
-
- if ! tc-has-64bit-time_t; then
- einfo "time_t is smaller than 64 bits, will skip broken tests"
- EPYTEST_DESELECT+=(
- tests/test_acm/test_acm.py::test_request_certificate_with_optional_arguments
- tests/test_s3/test_multiple_accounts_server.py::TestAccountIdResolution::test_with_custom_request_header
- tests/test_s3/test_server.py::test_s3_server_post_cors_multiple_origins
- )
- EPYTEST_IGNORE+=(
- tests/test_route53domains/test_route53domains_domain.py
- )
- fi
-
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- local -x TZ=UTC
-
- rm -rf moto || die
- epytest -m 'not network and not requires_docker' \
- -p rerunfailures --reruns=5
-}
diff --git a/dev-python/moto/moto-5.0.27.ebuild b/dev-python/moto/moto-5.0.27.ebuild
index d3f815a7dd7c..5247c0d1549d 100644
--- a/dev-python/moto/moto-5.0.27.ebuild
+++ b/dev-python/moto/moto-5.0.27.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 arm64 ~riscv x86"
RDEPEND="
>=dev-python/aws-xray-sdk-0.93[${PYTHON_USEDEP}]
diff --git a/dev-python/mpmath/mpmath-1.4.0_alpha3.ebuild b/dev-python/mpmath/mpmath-1.4.0_alpha3.ebuild
index e1954b4926fc..b79e495398eb 100644
--- a/dev-python/mpmath/mpmath-1.4.0_alpha3.ebuild
+++ b/dev-python/mpmath/mpmath-1.4.0_alpha3.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"
BDEPEND="
dev-python/setuptools-scm[${PYTHON_USEDEP}]
diff --git a/dev-python/mypy/Manifest b/dev-python/mypy/Manifest
index ae84a77ce953..0ceec5138002 100644
--- a/dev-python/mypy/Manifest
+++ b/dev-python/mypy/Manifest
@@ -1,3 +1,4 @@
DIST mypy-1.13.0.gh.tar.gz 3165219 BLAKE2B 67e05628fb79666a84a7c284c8437222ce159260ef490c8c91a3f92fd21985032043821823dcbd0fb8775956ca4660b3468c6955fef5d13a104b3339b1e6a0b5 SHA512 a351a30bfc7ac687d4802c6459296a4a46356fc153258c686051fa3cb149ab3e8690357cad21cd6ab07b4fb6e91dd3610b57f7b38078da7e563c114cd3ed562a
DIST mypy-1.14.0.gh.tar.gz 3227612 BLAKE2B 370ad0a515f75c13c97844d40a20645d641a56ae052684bc789c716a42feead4e22ac79460fd91f81c4fb67cd316b657795ff700f537970a145c04438eb2e2b0 SHA512 409bd40ca552b3d34b74b0f236c3db29b180cefe863d658c22378c5ef251e033fdc093fe2f47440d888f5c0a7afcceeb9357be35c9bf368b37cdca615a614bbd
DIST mypy-1.14.1.gh.tar.gz 3231068 BLAKE2B b88ea11fd88acaa59001ec1c1665d6beccaecf834cf0064d0e3a94d93c0a7cc1269c24f1f8a6950d114606f292c934cddc3c708e0dbdb25b6f632c5e3e64a8d4 SHA512 ddbd1445fe680c3326a09aead85cf8c810cb71c42faf723910f31a7938f20b1ae55b6bd5a0e966b93a54ba14773cffcf0b85b65421442f11f3571ea1f6d4f709
+DIST mypy-1.15.0.gh.tar.gz 3256122 BLAKE2B e2e5a047246a9898f3a7f406fa06bcd106fa0cfa776c3d2f785c7eec059f67405eaaee97ed40ecc161bb897e6baad1b5f2700cce07eaaadfd1330409b0e58185 SHA512 dac0c91749215f0ed2a29794665b26b047f9ab918ec387632c2e509308e2051aada6856dbdc7b001a4f3090c0e1b2b4f129f780b64c378997df4d78233065efa
diff --git a/dev-python/mypy/mypy-1.15.0.ebuild b/dev-python/mypy/mypy-1.15.0.ebuild
new file mode 100644
index 000000000000..54fe2aa427d8
--- /dev/null
+++ b/dev-python/mypy/mypy-1.15.0.ebuild
@@ -0,0 +1,126 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1
+
+DESCRIPTION="Optional static typing for Python"
+HOMEPAGE="
+ https://www.mypy-lang.org/
+ https://github.com/python/mypy/
+ https://pypi.org/project/mypy/
+"
+SRC_URI="
+ https://github.com/python/mypy/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="+native-extensions"
+
+# stubgen collides with this package: https://bugs.gentoo.org/585594
+RDEPEND="
+ !dev-util/stubgen
+ >=dev-python/psutil-4[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.6.0[${PYTHON_USEDEP}]
+ >=dev-python/mypy-extensions-1.0.0[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/tomli[${PYTHON_USEDEP}]
+ ' 3.10)
+"
+BDEPEND="
+ native-extensions? (
+ ${RDEPEND}
+ dev-python/types-psutil[${PYTHON_USEDEP}]
+ dev-python/types-setuptools[${PYTHON_USEDEP}]
+ )
+ test? (
+ >=dev-python/attrs-18.0[${PYTHON_USEDEP}]
+ >=dev-python/filelock-3.3.0[${PYTHON_USEDEP}]
+ >=dev-python/lxml-4.9.1[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+# frustratingly, mypyc produces non-deterministic output. If ccache is enabled it will be a waste of time,
+# but simultaneously it might trash your system and fill up the cache with a giant wave of non-reproducible
+# test files (https://github.com/mypyc/mypyc/issues/1014)
+export CCACHE_DISABLE=1
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.14.0-no-werror.patch
+)
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # don't force pytest-xdist, in case user asked for EPYTEST_JOBS=1
+ sed -i -e '/addopts/s:-nauto::' pyproject.toml || die
+}
+
+python_compile() {
+ local -x MYPY_USE_MYPYC=$(usex native-extensions 1 0)
+ distutils-r1_python_compile
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # the majority of them require Internet (via pip)
+ mypy/test/testpep561.py
+ # known broken with assertions enabled
+ # https://github.com/python/mypy/issues/16043
+ mypyc/test/test_external.py::TestExternal::test_c_unit_test
+ mypyc/test/test_run.py::TestRun::run-i64.test::testI64GlueMethodsAndInheritance
+ mypyc/test/test_run.py::TestRun::run-floats.test::testFloatOps
+ mypyc/test/test_run.py::TestRunStrictDunderTyping::run-floats.test::testFloatOps_dunder_typing
+ # these assume that types-docutils are not installed
+ mypy/test/testpythoneval.py::PythonEvaluationSuite::pythoneval.test::testIgnoreImportIfNoPython3StubAvailable
+ mypy/test/testpythoneval.py::PythonEvaluationSuite::pythoneval.test::testNoPython3StubAvailable
+ # TODO
+ mypy/test/meta/test_parse_data.py
+ mypy/test/meta/test_update_data.py
+ )
+ case ${EPYTHON} in
+ python3.13)
+ ;&
+ python3.12)
+ EPYTEST_DESELECT+=(
+ # more assertions, sigh
+ mypyc/test/test_run.py::TestRun::run-bools.test::testBoolOps
+ mypyc/test/test_run.py::TestRun::run-i64.test::testI64BasicOps
+ mypyc/test/test_run.py::TestRun::run-i64.test::testI64DefaultArgValues
+ mypyc/test/test_run.py::TestRun::run-i64.test::testI64ErrorValuesAndUndefined
+ )
+ ;;
+ esac
+
+ # Some mypy/test/testcmdline.py::PythonCmdlineSuite tests
+ # fail with high COLUMNS values
+ local -x COLUMNS=80
+
+ # The tests depend on having in-source compiled extensions if you want to
+ # test those compiled extensions. Various crucial test dependencies aren't
+ # installed. Even pyproject.toml is needed because that's where pytest args
+ # are in. Hack them into the build directory and delete them afterwards.
+ # See: https://github.com/python/mypy/issues/16143
+ local -x MYPY_TEST_PREFIX="${S}"
+ cd "${BUILD_DIR}/install$(python_get_sitedir)" || die
+ cp -r "${S}"/{conftest.py,pyproject.toml} . || die
+
+ local failed=
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ nonfatal epytest || failed=1
+
+ rm conftest.py pyproject.toml || die
+
+ [[ ${failed} ]] && die "epytest failed with ${EPYTHON}"
+}
diff --git a/dev-python/myst-parser/Manifest b/dev-python/myst-parser/Manifest
index e57c40a17a4d..5b1ae099600c 100644
--- a/dev-python/myst-parser/Manifest
+++ b/dev-python/myst-parser/Manifest
@@ -1 +1,2 @@
DIST MyST-Parser-4.0.0.gh.tar.gz 825843 BLAKE2B 60361e72014fc4428e026f6b93f91878824a0cd46bbe128b04c0ab9e9578c252fea6ece23dfbee0b1652d5529e411669d7cdab3ffebe8128e791ebdd26b950cd SHA512 82a8c642d839133413577fd85b5668a6b4d3869f60b7c7c64f98ec6cf52f33b28abd33ee7ddbbf8e286a3f233a152878802e6a8091c88f63844ac774c88ebd62
+DIST MyST-Parser-4.0.1.gh.tar.gz 825970 BLAKE2B 04e8da0947d0acd8fb9dd73b3f133ee14e119868bb119882bfab972ca7a402d0afd9b8fec1f3f26500ae2a6581fcae4f782e577411ef78f3b4b893e1c50c9426 SHA512 40bdad9abb84cda3c77303dd7ad766c77df43bca11c787812007f2399525fe955201b09495079a88973ada3e87102c95eeec2cba6d2be89f6b61d3c9df57bfae
diff --git a/dev-python/myst-parser/myst-parser-4.0.1.ebuild b/dev-python/myst-parser/myst-parser-4.0.1.ebuild
new file mode 100644
index 000000000000..6c96a49d1d98
--- /dev/null
+++ b/dev-python/myst-parser/myst-parser-4.0.1.ebuild
@@ -0,0 +1,63 @@
+# Copyright 2022-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit
+PYTHON_COMPAT=( python3_{10..13} pypy3 )
+
+inherit distutils-r1
+
+MY_P=MyST-Parser-${PV}
+DESCRIPTION="Extended commonmark compliant parser, with bridges to Sphinx"
+HOMEPAGE="
+ https://github.com/executablebooks/MyST-Parser/
+ https://pypi.org/project/myst-parser/
+"
+SRC_URI="
+ https://github.com/executablebooks/MyST-Parser/archive/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/docutils-0.18[${PYTHON_USEDEP}]
+ dev-python/jinja2[${PYTHON_USEDEP}]
+ <dev-python/markdown-it-py-4[${PYTHON_USEDEP}]
+ >=dev-python/markdown-it-py-3.0[${PYTHON_USEDEP}]
+ <dev-python/mdit-py-plugins-0.5[${PYTHON_USEDEP}]
+ >=dev-python/mdit-py-plugins-0.4.1[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ <dev-python/sphinx-9[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-6[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/beautifulsoup4[${PYTHON_USEDEP}]
+ dev-python/defusedxml[${PYTHON_USEDEP}]
+ <dev-python/linkify-it-py-3[${PYTHON_USEDEP}]
+ >=dev-python/linkify-it-py-2.0.0[${PYTHON_USEDEP}]
+ dev-python/pytest-regressions[${PYTHON_USEDEP}]
+ dev-python/pytest-param-files[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-7.3[${PYTHON_USEDEP}]
+ dev-python/sphinx-pytest[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # minor pygments mismatch
+ tests/test_sphinx/test_sphinx_builds.py::test_includes
+)
+
+src_prepare() {
+ default
+
+ # unpin docutils
+ sed -i -e '/docutils/s:,<[0-9.]*::' pyproject.toml || die
+}
diff --git a/dev-python/nox/Manifest b/dev-python/nox/Manifest
index 6591608fdfe5..9aaca4fd24d5 100644
--- a/dev-python/nox/Manifest
+++ b/dev-python/nox/Manifest
@@ -1,2 +1,2 @@
-DIST nox-2024.04.15.gh.tar.gz 4001096 BLAKE2B 22a332afe499811be23876760e33be60dac200b686aa19fb7fe7b92315e2681f874a4c175419e3b4dc9eb709bb98821a99d3a7bf2d7dfa756894e5d1265e46e7 SHA512 99143b4c372e40c5b436ef786e72582eae3182513e9763cb76eb123dcb4d16de8b0585a21119c3513fe9aae4bb6d9d19b16f3129a42f3addf2878e6e7f044ebb
DIST nox-2024.10.09.gh.tar.gz 4003528 BLAKE2B 51bf42870eac462fdb87e897c225c8262703ccc222d5c463e45d91acf08e4211153f60f72450e3fb964d4ca386501bfa88559e8cff38d55aa2f22310a17d7911 SHA512 51d1f70ba94d01abd10ba3a12896facd13a7a2881496221b6fa9d0a43ff947303b0cc975a29169a3d9e0174277e23e0bc4b1137b2774c1abffa23a48c9d69a11
+DIST nox-2025.02.09.gh.tar.gz 4021040 BLAKE2B d0185d6ad2dc7ef881f6f6dd7a38d0e8cb7398d7cb6b59bd6b27593e8e13011ef96673c14f75402804af104066b160e765726ed0bd7a647584e785a861f5a685 SHA512 431e9aed5e596d74298f4d7c1d41bded2edf271824cd69be09dbb434d38de07809c15a59707a9925f048d33f51fa6369340bb2d5c726cfb2c4afdf3f9303aed2
diff --git a/dev-python/nox/nox-2024.04.15.ebuild b/dev-python/nox/nox-2025.02.09.ebuild
index 160adc8eb3e0..9827de8314c3 100644
--- a/dev-python/nox/nox-2024.04.15.ebuild
+++ b/dev-python/nox/nox-2025.02.09.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2023-2024 Gentoo Authors
+# Copyright 2023-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -20,11 +20,13 @@ SRC_URI="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm64"
+KEYWORDS="~amd64"
RDEPEND="
>=dev-python/argcomplete-1.9.4[${PYTHON_USEDEP}]
+ >=dev-python/attrs-23.1[${PYTHON_USEDEP}]
>=dev-python/colorlog-2.6.1[${PYTHON_USEDEP}]
+ >=dev-python/dependency-groups-1.1[${PYTHON_USEDEP}]
>=dev-python/packaging-20.9[${PYTHON_USEDEP}]
>=dev-python/virtualenv-20.14.1[${PYTHON_USEDEP}]
$(python_gen_cond_dep '
@@ -49,12 +51,16 @@ python_test() {
local EPYTEST_DESELECT=(
# TODO: conda?
'tests/test_sessions.py::TestSessionRunner::test__create_venv_options[nox.virtualenv.CondaEnv.create-conda-CondaEnv]'
+ # Internet
+ tests/test_virtualenv.py::test_uv_install
+ tests/test_main.py::test_noxfile_script_mode
)
case ${EPYTHON} in
pypy3)
EPYTEST_DESELECT+=(
# hardcoded CPython assumption
+ tests/test_tox_to_nox.py::test_commands_with_requirements
tests/test_tox_to_nox.py::test_skipinstall
tests/test_tox_to_nox.py::test_trivial
tests/test_tox_to_nox.py::test_usedevelop
diff --git a/dev-python/nuitka/Manifest b/dev-python/nuitka/Manifest
index 560ed38e8cf6..aaad4bb26f47 100644
--- a/dev-python/nuitka/Manifest
+++ b/dev-python/nuitka/Manifest
@@ -1,3 +1,2 @@
-DIST Nuitka-2.6.1.tar.gz 3862941 BLAKE2B aab569ff14d69e48120957b822380a228d0109066fbef41e791c1f13181eba4fc4bfd2b0707888edd55a55cc700fc6eabc79ff8acaf7538a120f70318006fb2d SHA512 73143cdcba2474a0bdbd818726a6529216214efd02bb04876de06b2b30a1ffe380c080da1a9c573556443a6488fd1955e1c52fe3566c87ff4764f64af98fe852
-DIST Nuitka-2.6.2.tar.gz 3865407 BLAKE2B 6cc4d00e19e8fd59f01f33f145077bfe302552a8f1d922b05c99ee28073a4cf92134ecdfd481b1fedf7cf24f28cf3416495b19d2c242a35983bf96266f62b2cf SHA512 84629c9f611a9d731231c1572ea4c91068067d1935ac2dbbfaa871c6c289bfd32aaa194e46dd461f1a3c4803eb13ca6dbaf610e3aab0bc83a9d1222c28a61509
-DIST Nuitka-2.6.tar.gz 3858229 BLAKE2B 810f99da2560a302366cd2f9729fcbd1e4a0b4429cba3d4b4b43e70c91619afa8f3f4f73bf19282e246c2ec4ffbf468df8206ed3acbac09148f5302c5b67a3d9 SHA512 5194614cc8de3d3fa0f8be3769f0fb6e10b6c6f1bd45e5be0b09e96774a6a0cbe6938f6c66f903b23ad4cb480d7557aa69d14a4b8a659d12e33859f215e9a1f7
+DIST Nuitka-2.6.3.tar.gz 3867473 BLAKE2B 77d6d173c130166b26a8cce7ce9b21658f832d86f99022bb43057d8e535d085fabecc0f4541d60eb3fc7b3c6c7785b87d7af789e2d05692408a2e6d9e0550859 SHA512 5e31812dc5351afeb8a172bb3a3b46133d34e8a569940182abe439adb929f6eb810ffdef6b50312e7a5645b97c3b7ec71f5c180ddfc4981b9f4445dc329812e7
+DIST Nuitka-2.6.4.tar.gz 3867647 BLAKE2B 2cac28a64ce52bf9d8f2d60b9cd1741f82a4bda7d34852867683e9d398a1b472b0af00ab67ec8424963318714ccfb07662627ce592999da769bf9836c6da7402 SHA512 a59c966c4f3925c6d2b8914e19c1125fb5efd1e05c32f3a6dbe2600157927e59485216fe990338911c9b1d4dd9e99823a700db5c08f33a836b295c81eb2f719e
diff --git a/dev-python/nuitka/nuitka-2.6.1.ebuild b/dev-python/nuitka/nuitka-2.6.3.ebuild
index a5b9f247836d..a5b9f247836d 100644
--- a/dev-python/nuitka/nuitka-2.6.1.ebuild
+++ b/dev-python/nuitka/nuitka-2.6.3.ebuild
diff --git a/dev-python/nuitka/nuitka-2.6.2.ebuild b/dev-python/nuitka/nuitka-2.6.4.ebuild
index a5b9f247836d..a5b9f247836d 100644
--- a/dev-python/nuitka/nuitka-2.6.2.ebuild
+++ b/dev-python/nuitka/nuitka-2.6.4.ebuild
diff --git a/dev-python/nuitka/nuitka-2.6.ebuild b/dev-python/nuitka/nuitka-2.6.ebuild
deleted file mode 100644
index a5b9f247836d..000000000000
--- a/dev-python/nuitka/nuitka-2.6.ebuild
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYPI_NO_NORMALIZE=1
-PYPI_PN=${PN^}
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit distutils-r1 flag-o-matic optfeature pypi
-
-DESCRIPTION="Python to native compiler"
-HOMEPAGE="
- https://nuitka.net/
- https://github.com/Nuitka/Nuitka/
- https://pypi.org/project/Nuitka/
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64 ~loong ~x86"
-IUSE="test"
-RESTRICT="!test? ( test )"
-
-RDEPEND="
- dev-build/scons[${PYTHON_USEDEP}]
- >=dev-python/ordered-set-4.1.0[${PYTHON_USEDEP}]
- >=dev-python/zstandard-0.15[${PYTHON_USEDEP}]
-"
-BDEPEND="
- ${RDEPEND}
- test? ( dev-util/ccache )
-"
-
-distutils-r1_src_prepare() {
- # remove vendored version of SCons that is Python2 only
- # this should be removed when upstream removes support for Python2
- rm -vR "nuitka/build/inline_copy/lib/scons-2.3.2/SCons" || die
- eapply_user
-}
-
-python_install() {
- distutils-r1_python_install
- doman doc/nuitka.1 doc/nuitka-run.1
-}
-
-python_test() {
- append-ldflags -Wl,--no-warn-search-mismatch
- ./tests/basics/run_all.py search || die
-}
-
-pkg_postinst() {
- optfeature "support for stand-alone executables" dev-util/patchelf
-}
diff --git a/dev-python/numpy/numpy-2.2.2.ebuild b/dev-python/numpy/numpy-2.2.2.ebuild
index 84c10bd2db9d..acf6950f909a 100644
--- a/dev-python/numpy/numpy-2.2.2.ebuild
+++ b/dev-python/numpy/numpy-2.2.2.ebuild
@@ -20,7 +20,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0/2"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~loong ~m68k ~mips ~ppc ppc64 ~riscv ~s390 ~sparc x86"
# +lapack because the internal fallbacks are pretty slow. Building without blas
# is barely supported anyway, see bug #914358.
IUSE="big-endian +lapack"
diff --git a/dev-python/opentelemetry-api/Manifest b/dev-python/opentelemetry-api/Manifest
index 68742ea9263e..cf4696cb6b02 100644
--- a/dev-python/opentelemetry-api/Manifest
+++ b/dev-python/opentelemetry-api/Manifest
@@ -1 +1,2 @@
DIST opentelemetry-python-1.29.0.gh.tar.gz 1178849 BLAKE2B f26914c14025e77486df0c587318f96c4b27bd2caeacc877091300fc054f4670a642ca6fcafa909b986a97168ab004d4a969a05571ee38ab7797b3b38f4cc91f SHA512 92c90e6a684d8cfab3bba4d72612ccf53ae54cdd9784e3434b25adc3730fe114f21fd7aa21da80edf6e0e7c80b39c64ee31fb16f68b04809289bbf5d49d4ca2e
+DIST opentelemetry-python-1.30.0.gh.tar.gz 1189401 BLAKE2B 10a52a24625ee80f0b68e7fad05f770098be75c21ccf0230a786a1ffc4b3fb23daf251dc129bab840d22ff2ac9a6bab1c84e55c644abcd1b475dc7a5872447a5 SHA512 cd74100aa60639b3722f2747bd19dae42bffbfca4007837a6cf8db61a408c59601064c9718782b9f6ebeee7a30a454e03a09950b2b00845d642f6452a894674b
diff --git a/dev-python/opentelemetry-api/opentelemetry-api-1.30.0.ebuild b/dev-python/opentelemetry-api/opentelemetry-api-1.30.0.ebuild
new file mode 100644
index 000000000000..ccacff2cff89
--- /dev/null
+++ b/dev-python/opentelemetry-api/opentelemetry-api-1.30.0.ebuild
@@ -0,0 +1,61 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{11..13} )
+
+inherit distutils-r1
+
+MY_P="opentelemetry-python-${PV}"
+DESCRIPTION="OpenTelemetry Python API"
+HOMEPAGE="
+ https://opentelemetry.io/
+ https://pypi.org/project/opentelemetry-api/
+ https://github.com/open-telemetry/opentelemetry-python/
+"
+SRC_URI="
+ https://github.com/open-telemetry/opentelemetry-python/archive/refs/tags/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S="${WORKDIR}/${MY_P}/${PN}"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ >=dev-python/deprecated-1.2.6[${PYTHON_USEDEP}]
+ dev-python/importlib-metadata[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ default
+
+ # Unnecessary restriction
+ sed -i -e '/importlib-metadata/s:, <= [0-9.]*::' pyproject.toml || die
+}
+
+python_test() {
+ cp -a "${BUILD_DIR}"/{install,test} || die
+ local -x PATH=${BUILD_DIR}/test/usr/bin:${PATH}
+
+ for dep in opentelemetry-semantic-conventions opentelemetry-sdk \
+ tests/opentelemetry-test-utils
+ do
+ pushd "${WORKDIR}/${MY_P}/${dep}" >/dev/null || die
+ distutils_pep517_install "${BUILD_DIR}"/test
+ popd >/dev/null || die
+ done
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest
+}
diff --git a/dev-python/opentelemetry-sdk/Manifest b/dev-python/opentelemetry-sdk/Manifest
index 68742ea9263e..cf4696cb6b02 100644
--- a/dev-python/opentelemetry-sdk/Manifest
+++ b/dev-python/opentelemetry-sdk/Manifest
@@ -1 +1,2 @@
DIST opentelemetry-python-1.29.0.gh.tar.gz 1178849 BLAKE2B f26914c14025e77486df0c587318f96c4b27bd2caeacc877091300fc054f4670a642ca6fcafa909b986a97168ab004d4a969a05571ee38ab7797b3b38f4cc91f SHA512 92c90e6a684d8cfab3bba4d72612ccf53ae54cdd9784e3434b25adc3730fe114f21fd7aa21da80edf6e0e7c80b39c64ee31fb16f68b04809289bbf5d49d4ca2e
+DIST opentelemetry-python-1.30.0.gh.tar.gz 1189401 BLAKE2B 10a52a24625ee80f0b68e7fad05f770098be75c21ccf0230a786a1ffc4b3fb23daf251dc129bab840d22ff2ac9a6bab1c84e55c644abcd1b475dc7a5872447a5 SHA512 cd74100aa60639b3722f2747bd19dae42bffbfca4007837a6cf8db61a408c59601064c9718782b9f6ebeee7a30a454e03a09950b2b00845d642f6452a894674b
diff --git a/dev-python/opentelemetry-sdk/opentelemetry-sdk-1.30.0.ebuild b/dev-python/opentelemetry-sdk/opentelemetry-sdk-1.30.0.ebuild
new file mode 100644
index 000000000000..9379c86dfac0
--- /dev/null
+++ b/dev-python/opentelemetry-sdk/opentelemetry-sdk-1.30.0.ebuild
@@ -0,0 +1,62 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{11..13} )
+
+inherit distutils-r1
+
+MY_P="opentelemetry-python-${PV}"
+DESCRIPTION="OpenTelemetry Python SDK"
+HOMEPAGE="
+ https://opentelemetry.io/
+ https://pypi.org/project/opentelemetry-sdk/
+ https://github.com/open-telemetry/opentelemetry-python/
+"
+SRC_URI="
+ https://github.com/open-telemetry/opentelemetry-python/archive/refs/tags/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+
+S="${WORKDIR}/${MY_P}/${PN}"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ ~dev-python/opentelemetry-api-${PV}[${PYTHON_USEDEP}]
+ ~dev-python/opentelemetry-semantic-conventions-${PV}[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-3.7.4[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/flaky[${PYTHON_USEDEP}]
+ )
+"
+
+# Tests cannot handle xdist with high makeopts
+# https://bugs.gentoo.org/928132
+distutils_enable_tests pytest
+
+python_test() {
+ cp -a "${BUILD_DIR}"/{install,test} || die
+ local -x PATH=${BUILD_DIR}/test/usr/bin:${PATH}
+
+ for dep in tests/opentelemetry-test-utils; do
+ pushd "${WORKDIR}/${MY_P}/${dep}" >/dev/null || die
+ distutils_pep517_install "${BUILD_DIR}"/test
+ popd >/dev/null || die
+ done
+
+ local EPYTEST_DESELECT=(
+ # TODO
+ "${PN}"/tests/resources/test_resources.py::TestOTELResourceDetector::test_process_detector
+ "${PN}"/tests/metrics/integration_test/test_console_exporter.py::TestConsoleExporter::test_console_exporter_with_exemplars
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest tests
+}
diff --git a/dev-python/opentelemetry-semantic-conventions/Manifest b/dev-python/opentelemetry-semantic-conventions/Manifest
index 68742ea9263e..cf4696cb6b02 100644
--- a/dev-python/opentelemetry-semantic-conventions/Manifest
+++ b/dev-python/opentelemetry-semantic-conventions/Manifest
@@ -1 +1,2 @@
DIST opentelemetry-python-1.29.0.gh.tar.gz 1178849 BLAKE2B f26914c14025e77486df0c587318f96c4b27bd2caeacc877091300fc054f4670a642ca6fcafa909b986a97168ab004d4a969a05571ee38ab7797b3b38f4cc91f SHA512 92c90e6a684d8cfab3bba4d72612ccf53ae54cdd9784e3434b25adc3730fe114f21fd7aa21da80edf6e0e7c80b39c64ee31fb16f68b04809289bbf5d49d4ca2e
+DIST opentelemetry-python-1.30.0.gh.tar.gz 1189401 BLAKE2B 10a52a24625ee80f0b68e7fad05f770098be75c21ccf0230a786a1ffc4b3fb23daf251dc129bab840d22ff2ac9a6bab1c84e55c644abcd1b475dc7a5872447a5 SHA512 cd74100aa60639b3722f2747bd19dae42bffbfca4007837a6cf8db61a408c59601064c9718782b9f6ebeee7a30a454e03a09950b2b00845d642f6452a894674b
diff --git a/dev-python/opentelemetry-semantic-conventions/opentelemetry-semantic-conventions-1.30.0.ebuild b/dev-python/opentelemetry-semantic-conventions/opentelemetry-semantic-conventions-1.30.0.ebuild
new file mode 100644
index 000000000000..39e93caf1b2f
--- /dev/null
+++ b/dev-python/opentelemetry-semantic-conventions/opentelemetry-semantic-conventions-1.30.0.ebuild
@@ -0,0 +1,52 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{11..13} )
+
+inherit distutils-r1 pypi
+
+MY_P="opentelemetry-python-${PV}"
+DESCRIPTION="OpenTelemetry Semantic Conventions"
+HOMEPAGE="
+ https://opentelemetry.io/
+ https://pypi.org/project/opentelemetry-sdk/
+ https://github.com/open-telemetry/opentelemetry-python/
+"
+SRC_URI="
+ https://github.com/open-telemetry/opentelemetry-python/archive/refs/tags/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S="${WORKDIR}/${MY_P}/${PN}"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ >=dev-python/deprecated-1.2.6[${PYTHON_USEDEP}]
+ ~dev-python/opentelemetry-api-${PV}[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ cp -a "${BUILD_DIR}"/{install,test} || die
+ local -x PATH=${BUILD_DIR}/test/usr/bin:${PATH}
+
+ for dep in opentelemetry-sdk tests/opentelemetry-test-utils; do
+ pushd "${WORKDIR}/${MY_P}/${dep}" >/dev/null || die
+ distutils_pep517_install "${BUILD_DIR}"/test
+ popd >/dev/null || die
+ done
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest
+}
diff --git a/dev-python/orderly-set/Manifest b/dev-python/orderly-set/Manifest
index 66df53048a91..bb75d3fee115 100644
--- a/dev-python/orderly-set/Manifest
+++ b/dev-python/orderly-set/Manifest
@@ -1,2 +1,2 @@
-DIST orderly-set-5.2.2.gh.tar.gz 21460 BLAKE2B 5660d7550d5c79351fcc66e611ba776d6340d0fc1f3a5344f308cbc00a7b2c47045a1cfe8c6ac76c7976a65b17953362e91d60d87a7fbb02f36a5d67f074dfe9 SHA512 d480677c04f32e69cc9361dff383765fe2c9df971ad77cdcbab3b650a0bad27b9bd99144cd406d5185440d674bc838acb1c2ba3a4b115fcff2eba34c19589637
DIST orderly_set-5.2.3.tar.gz 19698 BLAKE2B 32366c106f0cd71e80f4c4d2278f6590f497ad70962eec96bb67f1cceefed5bb401408093416c8a7adc97eed333cdc657e542608581e11064581cb3d6fe613c7 SHA512 6c64086de55c6152056d8f92e35273865bc94616b90e1c56f4c88e94d6e9d39759f76d4ff57000d87abccb4ddc8faf441a71253d2b94bb9718d35b7a95342ddb
+DIST orderly_set-5.3.0.tar.gz 20026 BLAKE2B fa5f2e190d9f2ed079e16c45cf60044ba57ddaca875ae70f71a98055bf36053410985db762fbdafb94d7d9faeff906a3e240462267363f15f2f334d96ff852a8 SHA512 b7520653bf23c99ab124bde8b9e34f0c9eb14192eb09b2bfc9736b281f1c5d511964849496fe74c8f35d1000ba5857578906dbf47b581007bdfb81c9bd88c81a
diff --git a/dev-python/orderly-set/orderly-set-5.2.2.ebuild b/dev-python/orderly-set/orderly-set-5.3.0.ebuild
index 8b0953ce7def..e9796b5e8bab 100644
--- a/dev-python/orderly-set/orderly-set-5.2.2.ebuild
+++ b/dev-python/orderly-set/orderly-set-5.3.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2024 Gentoo Authors
+# Copyright 2024-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -6,19 +6,13 @@ EAPI=8
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( pypy3 python3_{10..13} )
-inherit distutils-r1
+inherit distutils-r1 pypi
DESCRIPTION="A package containing multiple implementations of Ordered Set"
HOMEPAGE="
https://github.com/seperman/orderly-set/
https://pypi.org/project/orderly-set/
"
-# incomplete test directory
-# https://github.com/seperman/orderly-set/pull/3
-SRC_URI="
- https://github.com/seperman/orderly-set/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
LICENSE="MIT"
SLOT="0"
diff --git a/dev-python/orjson/orjson-3.10.15.ebuild b/dev-python/orjson/orjson-3.10.15.ebuild
index 93308955056e..98c4ae6e8926 100644
--- a/dev-python/orjson/orjson-3.10.15.ebuild
+++ b/dev-python/orjson/orjson-3.10.15.ebuild
@@ -65,7 +65,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/owslib/Manifest b/dev-python/owslib/Manifest
index 6aeef05d8bd2..5a8d28e56fc3 100644
--- a/dev-python/owslib/Manifest
+++ b/dev-python/owslib/Manifest
@@ -1,2 +1 @@
-DIST OWSLib-0.32.0.gh.tar.gz 1057997 BLAKE2B e4327b016529682125d6326839a47c93ea8446e209d2867cb2259f900d0049754c51240ca36b98e661abd40e6997fbc25a16d902ec7a34a453d5760c2faf1dd1 SHA512 16dd829db011609008e886def65fb31156f8f261a997a4a9a9db590456af24f3d7b2da87dff26a64d3f9ce64be5e269c792673997ca1f07b376941cd6243d4f7
DIST OWSLib-0.32.1.gh.tar.gz 1060242 BLAKE2B 03f32ca140b1b337af0eff9676c61c075e27b97d582e46fefddd0563bfa7b71c152a94055df1808294860395271031adb045df1ba3b1ba103f2d423d2eab4eab SHA512 1d8ff92295a26395459b2a8caa92120c2bb813d33eaaba95476af09c32eb92cd2d52f9b29422d93837c8456cbf63535b5b60a196c212a1d349c803db9349543e
diff --git a/dev-python/owslib/owslib-0.32.0.ebuild b/dev-python/owslib/owslib-0.32.0.ebuild
deleted file mode 100644
index 0cd13b45c323..000000000000
--- a/dev-python/owslib/owslib-0.32.0.ebuild
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit distutils-r1
-
-MY_P=OWSLib-${PV}
-DESCRIPTION="Library for client programming with Open Geospatial Consortium web service"
-HOMEPAGE="
- https://geopython.github.io/OWSLib/
- https://github.com/geopython/owslib/
- https://pypi.org/project/OWSLib/
-"
-SRC_URI="
- https://github.com/geopython/${PN}/archive/${PV}.tar.gz
- -> ${MY_P}.gh.tar.gz
-"
-S=${WORKDIR}/${MY_P}
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="amd64 ~x86"
-
-RDEPEND="
- dev-python/lxml[${PYTHON_USEDEP}]
- dev-python/python-dateutil[${PYTHON_USEDEP}]
- dev-python/pyyaml[${PYTHON_USEDEP}]
- dev-python/requests[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/pillow[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-
-python_test() {
- local EPYTEST_IGNORE=(
- # Internet
- # https://github.com/geopython/OWSLib/issues/951
- tests/test_ogcapi_connectedsystems_osh.py
- )
-
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- epytest -o addopts= -m "not online"
-}
diff --git a/dev-python/owslib/owslib-0.32.1.ebuild b/dev-python/owslib/owslib-0.32.1.ebuild
index 40a0559ba634..e24c3a1b19f5 100644
--- a/dev-python/owslib/owslib-0.32.1.ebuild
+++ b/dev-python/owslib/owslib-0.32.1.ebuild
@@ -23,7 +23,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~x86"
+KEYWORDS="amd64 ~x86"
RDEPEND="
dev-python/lxml[${PYTHON_USEDEP}]
diff --git a/dev-python/paramiko/Manifest b/dev-python/paramiko/Manifest
index 15f6586be32e..e8b782900112 100644
--- a/dev-python/paramiko/Manifest
+++ b/dev-python/paramiko/Manifest
@@ -1 +1,2 @@
DIST paramiko-3.5.0.gh.tar.gz 376242 BLAKE2B 3080669e8b0d60e5b2e5aea390dc4f5f8d19ff32441d13b4e319892d1566f3fc76df714c0a063932e5077de08cd66ccf1140ac96bcb6e1c8e801c1377923aece SHA512 933a63c511fcd0a5a159faf2a9dfddbb44368ba923ea892aa1bf8dbe296777f3caedff27560113cfb15576812b994a59007caac8f297b24e70c79505f88c7d9f
+DIST paramiko-3.5.1.gh.tar.gz 376472 BLAKE2B e00c0e1ab62eb443b3dfb5b1ebfacb9ac2f0f7e4946dcb986f8a211c22e645acd6d96ceaf709a954bf1f1554e8ce57ea1c6269984184025de39d9d9c4ff909d9 SHA512 a1198f7f21cfbdbb843acb59cc431f9af0a47d687a7e9702244f36b555bb37b75149c0e22302040400f20df50dee1d83154e5acd582982ca44f6cf68ff592675
diff --git a/dev-python/paramiko/paramiko-3.5.1.ebuild b/dev-python/paramiko/paramiko-3.5.1.ebuild
new file mode 100644
index 000000000000..2d56304768fc
--- /dev/null
+++ b/dev-python/paramiko/paramiko-3.5.1.ebuild
@@ -0,0 +1,72 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( pypy3 python3_{10..13} )
+PYTHON_REQ_USE="threads(+)"
+
+inherit distutils-r1
+
+DESCRIPTION="SSH2 protocol library"
+HOMEPAGE="
+ https://www.paramiko.org/
+ https://github.com/paramiko/paramiko/
+ https://pypi.org/project/paramiko/
+"
+SRC_URI="
+ https://github.com/paramiko/paramiko/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+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"
+IUSE="examples server"
+
+RDEPEND="
+ >=dev-python/bcrypt-3.1.3[${PYTHON_USEDEP}]
+ >=dev-python/cryptography-2.5[${PYTHON_USEDEP}]
+ >=dev-python/pynacl-1.0.1[${PYTHON_USEDEP}]
+ >=dev-python/pyasn1-0.1.7[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # upstream doesn't really maintain the gssapi support
+ tests/test_gssapi.py
+ tests/test_kex_gss.py
+ tests/test_ssh_gss.py
+)
+
+src_prepare() {
+ local PATCHES=(
+ "${FILESDIR}/${PN}-3.2.0-nih-test-deps.patch"
+ )
+
+ if ! use server; then
+ PATCHES+=( "${FILESDIR}/${PN}-3.2.0-disable-server.patch" )
+ fi
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -p rerunfailures --reruns=5
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+
+ if use examples; then
+ docinto examples
+ dodoc -r demos/*
+ fi
+}
diff --git a/dev-python/pbr/Manifest b/dev-python/pbr/Manifest
index df559d0a3d8a..f9c4f2cb1b7f 100644
--- a/dev-python/pbr/Manifest
+++ b/dev-python/pbr/Manifest
@@ -1 +1,2 @@
DIST pbr-6.1.0.tar.gz 124032 BLAKE2B 640c39d75329e4a1c28623439fd1466de3e491bb043abc1c62c68a9e19c6bc5523fca8ad18c4d6246fe2973af5ee6076c1e74e0967b9adb096ec31970fcf8491 SHA512 30478fa3146abdbc1da35ba950dcc3ead04e26060e0926a7a28390cc33cfae5acbb9a2385535bac43cb40830ef7cfa83be8bf963a6ee135a54d696c27b20a962
+DIST pbr-6.1.1.tar.gz 125702 BLAKE2B ee675c029f1ccf66ffb3b92fec67802f1a3d49735e08ec72658e7b3b528014109ec2a4ee0672b7c320d70a3b56b9a0a7929a7ae85915d941ce0e170e0cdc92a7 SHA512 db898469dad4d0ccfa90ee9a8faee83db0897e7451c30561d7e1f92163c82c81586853b8aaabcf80569d1cbdf5177da927ed79b0c393f6c5b2a910de0354a471
diff --git a/dev-python/pbr/files/pbr-6.1.1-test.patch b/dev-python/pbr/files/pbr-6.1.1-test.patch
new file mode 100644
index 000000000000..5a3667af25f6
--- /dev/null
+++ b/dev-python/pbr/files/pbr-6.1.1-test.patch
@@ -0,0 +1,84 @@
+From 55015f69726f8916b9c50d70c856345929dc8cd7 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
+Date: Wed, 5 Feb 2025 12:36:08 +0100
+Subject: [PATCH 1/2] Use sysconfig for sitedir path in test_wsgi
+
+Use `sysconfig.get_path()` to obtain the correct site-packages directory
+path in `test_wsgi`, instead of attempting to guess it based on Python
+version. This fixes the test on PyPy3.10, and seems to be correct
+down to Python 2.7 (though tox does not seem to let me test on Python 2
+anymore).
+
+Partial-Bug: 2097427
+Change-Id: I5c152a98fd371dfb195643f0f5640cf1ffe0ba31
+---
+ pbr/tests/test_wsgi.py | 14 ++------------
+ 1 file changed, 2 insertions(+), 12 deletions(-)
+
+diff --git a/pbr/tests/test_wsgi.py b/pbr/tests/test_wsgi.py
+index a42fe78..fd11ab4 100644
+--- a/pbr/tests/test_wsgi.py
++++ b/pbr/tests/test_wsgi.py
+@@ -16,6 +16,7 @@ import os
+ import re
+ import subprocess
+ import sys
++import sysconfig
+ try:
+ # python 2
+ from urllib2 import urlopen
+@@ -31,18 +32,7 @@ class TestWsgiScripts(base.BaseTestCase):
+ cmd_names = ('pbr_test_wsgi', 'pbr_test_wsgi_with_class')
+
+ def _get_path(self):
+- if os.path.isdir("%s/lib64" % self.temp_dir):
+- path = "%s/lib64" % self.temp_dir
+- elif os.path.isdir("%s/lib" % self.temp_dir):
+- path = "%s/lib" % self.temp_dir
+- elif os.path.isdir("%s/site-packages" % self.temp_dir):
+- return ".:%s/site-packages" % self.temp_dir
+- else:
+- raise Exception("Could not determine path for test")
+- return ".:%s/python%s.%s/site-packages" % (
+- path,
+- sys.version_info[0],
+- sys.version_info[1])
++ return sysconfig.get_path("purelib", vars={"base": self.temp_dir})
+
+ def test_wsgi_script_install(self):
+ """Test that we install a non-pkg-resources wsgi script."""
+From 4bcc6bcb46644492ec07094411d58817cfe08d7c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
+Date: Wed, 5 Feb 2025 11:26:55 +0100
+Subject: [PATCH 2/2] Modernize tests to use EXT_SUFFIX, fix PyPy
+
+Modernize `test_generates_c_extensions` to use
+`sysconfig.get_config_var("EXT_SUFFIX")` whenever available,
+to obtain the correct extension file suffix, instead of attempting
+to recontruct it from `SOABI`. This fixes test failures on modern
+PyPy3.10 versions, and should also be more future-proof for other Python
+implementations.
+
+Partial-Bug: 2097427
+Change-Id: I5fbeb0ae1193ed68be0beab2857860a525731688
+---
+ pbr/tests/test_packaging.py | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/pbr/tests/test_packaging.py b/pbr/tests/test_packaging.py
+index 0ababba..f6e2b31 100644
+--- a/pbr/tests/test_packaging.py
++++ b/pbr/tests/test_packaging.py
+@@ -413,9 +413,9 @@ class TestPackagingWheels(base.BaseTestCase):
+ built_package_dir = os.path.join(
+ self.extracted_wheel_dir, 'pbr_testpackage')
+ static_object_filename = 'testext.so'
+- soabi = get_soabi()
+- if soabi:
+- static_object_filename = 'testext.{0}.so'.format(soabi)
++ ext_suffix = sysconfig.get_config_var('EXT_SUFFIX')
++ if ext_suffix is not None:
++ static_object_filename = 'testext' + ext_suffix
+ static_object_path = os.path.join(
+ built_package_dir, static_object_filename)
+
diff --git a/dev-python/pbr/pbr-6.1.1.ebuild b/dev-python/pbr/pbr-6.1.1.ebuild
new file mode 100644
index 000000000000..00ac9a27ad7c
--- /dev/null
+++ b/dev-python/pbr/pbr-6.1.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=standalone
+PYTHON_TESTED=( pypy3 python3_{10..13} )
+PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" )
+PYTHON_REQ_USE="threads(+)"
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Inject some useful and sensible default behaviors into setuptools"
+HOMEPAGE="
+ https://opendev.org/openstack/pbr/
+ https://github.com/openstack/pbr/
+ https://pypi.org/project/pbr/
+"
+
+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"
+
+RDEPEND="
+ >=dev-python/setuptools-64.0.0[${PYTHON_USEDEP}]
+"
+
+# git is needed for tests, see https://bugs.launchpad.net/pbr/+bug/1326682 and
+# https://bugs.gentoo.org/show_bug.cgi?id=561038 docutils is needed for sphinx
+# exceptions... https://bugs.gentoo.org/show_bug.cgi?id=603848 stestr is run as
+# external tool.
+BDEPEND="
+ ${RDEPEND}
+ test? (
+ $(python_gen_cond_dep '
+ >=dev-python/wheel-0.32.0[${PYTHON_USEDEP}]
+ >=dev-python/fixtures-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/testresources-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/testscenarios-0.4[${PYTHON_USEDEP}]
+ >=dev-python/testtools-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/virtualenv-20.0.3[${PYTHON_USEDEP}]
+ dev-vcs/git
+ ' "${PYTHON_TESTED[@]}")
+ )
+"
+
+distutils_enable_tests unittest
+
+python_prepare_all() {
+ local PATCHES=(
+ # https://review.opendev.org/c/openstack/pbr/+/940773
+ # https://review.opendev.org/c/openstack/pbr/+/940778
+ "${FILESDIR}/${P}-test.patch"
+ )
+
+ # TODO: investigate
+ sed -e 's:test_console_script_develop:_&:' \
+ -e 's:test_console_script_install:_&:' \
+ -e 's:test_setup_py_keywords:_&:' \
+ -i pbr/tests/test_core.py || die
+ # installs random packages via pip from the Internet
+ sed -e 's:test_requirement_parsing:_&:' \
+ -e 's:test_pep_517_support:_&:' \
+ -i pbr/tests/test_packaging.py || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ if ! has "${EPYTHON}" "${PYTHON_TESTED[@]/_/.}"; then
+ einfo "Testing on ${EPYTHON} is not supported at the moment"
+ return
+ fi
+
+ cd "${BUILD_DIR}/install$(python_get_sitedir)" || die
+ eunittest -b
+}
diff --git a/dev-python/pbs-installer/Manifest b/dev-python/pbs-installer/Manifest
index d1d143c86821..0fec45d3af8b 100644
--- a/dev-python/pbs-installer/Manifest
+++ b/dev-python/pbs-installer/Manifest
@@ -1,2 +1,2 @@
-DIST pbs-installer-2024.12.19.gh.tar.gz 82721 BLAKE2B b6a6ed17b4d1e55d9160361f45d4f15b3f8f12a6fa97208a2428c0c9b7f3b3f46e846f01d03539df86f5a4b109623a12133169880445aa386623b3f9e74935c3 SHA512 481ce48d4ba823d13e6c488aa146725e7406baf7f1d42a8561273d69311174e032930fa5d4d9c4f6edd3ce9ea866320e0266763a2b8b8456ed2f052149eb892a
DIST pbs-installer-2025.01.06.gh.tar.gz 82694 BLAKE2B 171754b6b2d8ce99618e0f241188a8565332fcbd0bdf29ea2b52ec874780adce0c563ae464a2c7a4f74c1fe06d9d334e61b91fa4e50380160403a228ebc55d56 SHA512 f3b150acbfcf64dc6ad1ec1915744b9e1663ef4e13b78e65d6d259e6bf6d844e93a0c432109c6eb5919a26a17ff923699227738fdf9e8d4244810fb63258f2a2
+DIST pbs-installer-2025.02.05.gh.tar.gz 84182 BLAKE2B 1202e066d50228ea32b307449c9bcfabb0d174cc655b831cec9443a94aebbac9123dabb58b02f49a9cd4f813b634ecebd7bcadae2f7967bedae9b152911e3713 SHA512 7075c2083832d294150ff6b5448e5ad4a90da678ab301192d672ef02e5bff872d327e63603aa6d8e283b065b9190d1f46cc73705c71079cab5fa7c80aefc3657
diff --git a/dev-python/pbs-installer/pbs-installer-2024.12.19.ebuild b/dev-python/pbs-installer/pbs-installer-2025.02.05.ebuild
index c2bbf1f95bc4..9eda0a2dfbf3 100644
--- a/dev-python/pbs-installer/pbs-installer-2024.12.19.ebuild
+++ b/dev-python/pbs-installer/pbs-installer-2025.02.05.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2024 Gentoo Authors
+# Copyright 2024-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/peewee/Manifest b/dev-python/peewee/Manifest
index e912c10adf4d..f1c1b305077c 100644
--- a/dev-python/peewee/Manifest
+++ b/dev-python/peewee/Manifest
@@ -1 +1,2 @@
DIST peewee-3.17.8.gh.tar.gz 930646 BLAKE2B d0822ad93dbee6c2566d0d4a9bad7c39ba30e1205192449f0483725277325c295c869edca70301dd8a15115a1153ccef08360c6600ec064caf0b386aaf05c8e6 SHA512 47101679b3624c167c82240b2d9fcd60db362e6960cc1852bc5042022fb1250cf4e58050b39ca309cd0a66019cbcf1c8a8e8b8619e0958f8ec37d7222bfe243f
+DIST peewee-3.17.9.gh.tar.gz 930724 BLAKE2B 6ce8156b48876db93344b7eaac14122d9d11812cdacb80dc4f3db0e7aa05a97b279f27e5b8d17016cb43d68f5e9ecd4e591cd58e2520677dfba7544395447911 SHA512 7082b0abcdaf47ee7b50066773c8491bebc94502b875a0f2a01f6d8d251fd147c738362021ab1d45dbc8ddc73fd7a37c0bc2732623d0f4b3e5d314caea7da510
diff --git a/dev-python/peewee/peewee-3.17.9.ebuild b/dev-python/peewee/peewee-3.17.9.ebuild
new file mode 100644
index 000000000000..e1296aa9a27d
--- /dev/null
+++ b/dev-python/peewee/peewee-3.17.9.ebuild
@@ -0,0 +1,81 @@
+# 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_{10..13} )
+PYTHON_REQ_USE="sqlite"
+
+inherit distutils-r1
+
+DESCRIPTION="Small Python ORM"
+HOMEPAGE="
+ https://github.com/coleifer/peewee/
+ https://pypi.org/project/peewee/
+"
+SRC_URI="
+ https://github.com/coleifer/peewee/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~riscv ~x86"
+IUSE="examples +native-extensions test"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+ native-extensions? ( dev-db/sqlite:3= )
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ dev-python/cython[${PYTHON_USEDEP}]
+ test? (
+ dev-db/postgresql
+ dev-python/psycopg:0[${PYTHON_USEDEP}]
+ sys-libs/timezone-data
+ )
+"
+
+distutils_enable_sphinx docs \
+ dev-python/sphinx-rtd-theme
+
+src_prepare() {
+ # disable test failing on postgres 16
+ sed -e 's/test_timeout/_&/' -i tests/sqliteq.py || die
+
+ default
+}
+
+src_compile() {
+ if ! use native-extensions; then
+ local -x NO_SQLITE=1
+ fi
+
+ distutils-r1_src_compile
+}
+
+src_test() {
+ initdb -D "${T}"/pgsql || die
+ pg_ctl -w -D "${T}"/pgsql start -o "-h '' -k '${T}'" || die
+ createdb -h "${T}" peewee_test || die
+ psql -h "${T}" peewee_test -c 'create extension hstore;' || die
+
+ local -x PEEWEE_PSQL_HOST="${T}"
+ distutils-r1_src_test
+
+ pg_ctl -w -D "${T}"/pgsql stop || die
+}
+
+python_test() {
+ "${EPYTHON}" runtests.py -v 2 || die "tests failed under ${EPYTHON}"
+}
+
+python_install_all() {
+ use examples && DOCS=( examples/ )
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/pikepdf/Manifest b/dev-python/pikepdf/Manifest
index 16eeafacc2fb..ca78d08adf8d 100644
--- a/dev-python/pikepdf/Manifest
+++ b/dev-python/pikepdf/Manifest
@@ -2,3 +2,4 @@ DIST pikepdf-9.1.1.tar.gz 2869514 BLAKE2B b196a61d599db1355695d40ac69e09ea7a020c
DIST pikepdf-9.4.2.tar.gz 2914992 BLAKE2B daed44bd1106dbeadef449160e2ba5b389a1eeb7b23a32124a59b7861c1584d49feca01d6f54a18dc53eaace7823b23f62c1240c58445eb382ee25133b2d463b SHA512 2dc84672941a283da5486b2664252b6cd0612d7d2f9e8d10e3ae41f494be89821431568872b6b60045ffb2f1f687cea055093229ee443997997a8fae56e43e0b
DIST pikepdf-9.5.0.tar.gz 2916148 BLAKE2B ad6d15fe9a6b9e44a4e1f6486a2e060311155292413453d99c52cf2d98f0fe7fdec823cc472282be5efaed7ccd3ad674cb5a5da8caab622d0f740e93b8ea5cc0 SHA512 6b73343fc6f93168059c106aa344b73f483802a2d222fbd5d16daffebe87c887ad2d757874856f4c6f776c39f78b3fe33e985abba80f0318cc65e69aaa369143
DIST pikepdf-9.5.1.tar.gz 2916260 BLAKE2B ad665a237cc107895cdbca51f13fa4fdee2552449ccbed45dd478e0d1c291e9500f6d3a7138caad6aab4cb68b3f92cda042151f7ccfce9cb455b0eb9724e1ea0 SHA512 73e7f150439a64791b5ab3ca3f831c9cdef356343fa6985016690b3bff54b2cef169a7d223e66dc5e012467dbc969295e5355a01311de0aaf09a0c625c963246
+DIST pikepdf-9.5.2.tar.gz 2916549 BLAKE2B 821fe21cb2ef471ab7313e2dab371f0a5290659225647ca4059995af9112e4f5425e0a9e11f9691dc2da9786beeffb2abc33ec374bb97b3fe1f25bd6feba042a SHA512 ac7c33c7cd23e34eb1bd518aae7167285cca6cc710e37f05cac03512666777848a2ad3d17a72654832564a8521e69ea0d124c70c61aca0bed7123475bf03a359
diff --git a/dev-python/pikepdf/pikepdf-9.5.2.ebuild b/dev-python/pikepdf/pikepdf-9.5.2.ebuild
new file mode 100644
index 000000000000..3bd9cbda965f
--- /dev/null
+++ b/dev-python/pikepdf/pikepdf-9.5.2.ebuild
@@ -0,0 +1,74 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python library to work with pdf files based on qpdf"
+HOMEPAGE="
+ https://github.com/pikepdf/pikepdf/
+ https://pypi.org/project/pikepdf/
+"
+
+LICENSE="MPL-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="big-endian"
+
+# Check QPDF_MIN_VERSION in pyproject.toml on bumps, as well as
+# https://qpdf.readthedocs.io/en/stable/release-notes.html.
+DEPEND="
+ >=app-text/qpdf-11.5.0:0=
+"
+RDEPEND="
+ ${DEPEND}
+ dev-python/deprecated[${PYTHON_USEDEP}]
+ >=dev-python/lxml-4.0[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ >=dev-python/pillow-10.0.1[lcms,${PYTHON_USEDEP}]
+"
+BDEPEND="
+ >=dev-python/pybind11-2.12.0[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-scm-7.0.5[${PYTHON_USEDEP}]
+ test? (
+ >=dev-python/attrs-20.2.0[${PYTHON_USEDEP}]
+ >=dev-python/hypothesis-6.36[${PYTHON_USEDEP}]
+ >=dev-python/numpy-1.21.0[${PYTHON_USEDEP}]
+ >=dev-python/pillow-5.0.0[${PYTHON_USEDEP},jpeg,lcms,tiff]
+ >=dev-python/psutil-5.9[${PYTHON_USEDEP}]
+ >=dev-python/pytest-timeout-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/python-dateutil-2.8.1[${PYTHON_USEDEP}]
+ !big-endian? (
+ >=dev-python/python-xmp-toolkit-2.0.1[${PYTHON_USEDEP}]
+ )
+ $(python_gen_cond_dep '
+ dev-python/tomli[${PYTHON_USEDEP}]
+ ' 3.10)
+ media-libs/tiff[zlib]
+ )
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ sed -e '/-n auto/d' -i pyproject.toml || die
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # fragile to system load
+ tests/test_image_access.py::test_random_image
+ tests/test_image_access.py::test_image_save_compare
+ tests/test_image_access.py::test_palette_nonrgb
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -p timeout
+}
diff --git a/dev-python/pip/Manifest b/dev-python/pip/Manifest
index 57b17017b20a..d0ec7085b28d 100644
--- a/dev-python/pip/Manifest
+++ b/dev-python/pip/Manifest
@@ -1,3 +1,4 @@
DIST pip-24.1.gh.tar.gz 9188658 BLAKE2B 4a43ff0199d811dd30461e376f655a447f3f706a48dd97fe1d0ccf630f558e72209ccd06d98949a1541cd6b2942a816db23ce8aaa7fbbf9aef429502fb91ab92 SHA512 c60ab329fe91202ff64b5f0f90209085fbf8db0f0a05f0703f952ad69e39e2e3edb5dadc006a3f317cdd4ba4fb5abe56dfbd22792249a2d139702eec272186d1
DIST pip-24.3.1.gh.tar.gz 9198711 BLAKE2B c70524bfedf46776d5ab8da24754e8177caac6d87cc90aa86b144c0fe9718860fe3d08823f655495c059dbece6e0ecbb2ac8e655cff3124693f64a35deac512e SHA512 9cf5f18eefd559cf27bc026e5206b0028ea77fd904a61fea9a6682b519305c962dd19170b841581bd05ff72192a9c458ec0eba173fa66db0438b046111ff5856
+DIST pip-25.0.1.gh.tar.gz 9224526 BLAKE2B db729b8c75d8e15c6fed1dbc9e08adc4e82114f2bbd953859ec03c7948e521629afd8cea6adb08110b987d6adf48fd600a59a3bcc27774db61ea92675ad90d42 SHA512 a6850c8567082bbf98483a45e523c4de12132136d2b0aa388ac619c02ffd0c8f6aea7d727f7d84167dadec5f1e56dd478b2233b0caa5d9b3e5cadc9e1f3dc12c
DIST pip-25.0.gh.tar.gz 9224545 BLAKE2B 9606eea2b08d5220f9ed7528c14251ef20499693bdb817a2280124672860cb24111999bdb67af1107006ae4dd02c52d395fddea7e6b09dbc820a41ee8618fd50 SHA512 023db908a1da1cbbd2134bb83cc69a7a35e6d010b3f846bb8abcab14ca79a8cee4d02ead9346220e05fe137039377074c732b4bf2a9e6eee5c0d9161f1754f95
diff --git a/dev-python/pip/pip-25.0.1.ebuild b/dev-python/pip/pip-25.0.1.ebuild
new file mode 100644
index 000000000000..8ab316566c04
--- /dev/null
+++ b/dev-python/pip/pip-25.0.1.ebuild
@@ -0,0 +1,170 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# please bump dev-python/ensurepip-pip along with this package!
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_TESTED=( pypy3 python3_{10..13} )
+PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" )
+PYTHON_REQ_USE="ssl(+),threads(+)"
+
+inherit bash-completion-r1 distutils-r1
+
+DESCRIPTION="The PyPA recommended tool for installing Python packages"
+HOMEPAGE="
+ https://pip.pypa.io/en/stable/
+ https://pypi.org/project/pip/
+ https://github.com/pypa/pip/
+"
+SRC_URI="
+ https://github.com/pypa/pip/archive/${PV}.tar.gz -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="test-rust"
+
+# see src/pip/_vendor/vendor.txt
+RDEPEND="
+ >=dev-python/cachecontrol-0.14.1[${PYTHON_USEDEP}]
+ >=dev-python/distlib-0.3.9[${PYTHON_USEDEP}]
+ >=dev-python/distro-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/msgpack-1.1.0[${PYTHON_USEDEP}]
+ >=dev-python/packaging-24.2[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-4.3.6[${PYTHON_USEDEP}]
+ >=dev-python/pyproject-hooks-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.32.0[${PYTHON_USEDEP}]
+ >=dev-python/rich-13.9.4[${PYTHON_USEDEP}]
+ >=dev-python/resolvelib-1.0.1[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-69.5.1[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/tomli-2.2.1[${PYTHON_USEDEP}]
+ ' 3.10)
+ >=dev-python/truststore-0.10.0[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.12.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ ${RDEPEND}
+ test? (
+ $(python_gen_cond_dep '
+ dev-python/ensurepip-setuptools
+ dev-python/ensurepip-wheel
+ dev-python/freezegun[${PYTHON_USEDEP}]
+ dev-python/pretend[${PYTHON_USEDEP}]
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ dev-python/scripttest[${PYTHON_USEDEP}]
+ dev-python/tomli-w[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ dev-python/werkzeug[${PYTHON_USEDEP}]
+ dev-python/wheel[${PYTHON_USEDEP}]
+ test-rust? (
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ )
+ dev-vcs/git
+ ' "${PYTHON_TESTED[@]}")
+ )
+"
+
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ local PATCHES=(
+ "${FILESDIR}/pip-23.1-no-coverage.patch"
+ # prepare to unbundle dependencies
+ "${FILESDIR}/pip-24.1-unbundle.patch"
+ )
+
+ distutils-r1_python_prepare_all
+
+ # unbundle dependencies
+ rm -r src/pip/_vendor || die
+ find -name '*.py' -exec sed -i \
+ -e 's:from pip\._vendor import:import:g' \
+ -e 's:from pip\._vendor\.:from :g' \
+ {} + || die
+
+ if use test; then
+ local wheels=(
+ "${BROOT}"/usr/lib/python/ensurepip/{setuptools,wheel}-*.whl
+ )
+ mkdir tests/data/common_wheels/ || die
+ cp "${wheels[@]}" tests/data/common_wheels/ || die
+ fi
+}
+
+python_compile_all() {
+ # 'pip completion' command embeds full $0 into completion script, which confuses
+ # 'complete' and causes QA warning when running as "${PYTHON} -m pip".
+ # This trick sets correct $0 while still calling just installed pip.
+ local pipcmd='import sys; sys.argv[0] = "pip"; __file__ = ""; from pip._internal.cli.main import main; sys.exit(main())'
+ "${EPYTHON}" -c "${pipcmd}" completion --bash > completion.bash || die
+ "${EPYTHON}" -c "${pipcmd}" completion --zsh > completion.zsh || die
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ tests/functional/test_inspect.py::test_inspect_basic
+ # Internet
+ tests/functional/test_config_settings.py::test_backend_sees_config_via_sdist
+ tests/functional/test_install.py::test_double_install_fail
+ tests/functional/test_install.py::test_install_sdist_links
+ tests/functional/test_install_config.py::test_prompt_for_keyring_if_needed
+ # broken by system site-packages use
+ tests/functional/test_freeze.py::test_freeze_with_setuptools
+ tests/functional/test_pip_runner_script.py::test_runner_work_in_environments_with_no_pip
+ tests/functional/test_uninstall.py::test_basic_uninstall_distutils
+ tests/unit/test_base_command.py::test_base_command_global_tempdir_cleanup
+ tests/unit/test_base_command.py::test_base_command_local_tempdir_cleanup
+ tests/unit/test_base_command.py::test_base_command_provides_tempdir_helpers
+ # broken by unbundling
+ "tests/functional/test_debug.py::test_debug[vendored library versions:]"
+ tests/functional/test_debug.py::test_debug__library_versions
+ tests/functional/test_python_option.py::test_python_interpreter
+ tests/functional/test_uninstall.py::test_uninstall_non_local_distutils
+ )
+ local EPYTEST_IGNORE=(
+ # requires proxy.py
+ tests/functional/test_proxy.py
+ )
+
+ case ${EPYTHON} in
+ pypy3)
+ EPYTEST_DESELECT+=(
+ # unexpected tempfiles?
+ tests/functional/test_install_config.py::test_do_not_prompt_for_authentication
+ tests/functional/test_install_config.py::test_prompt_for_authentication
+ )
+ ;;
+ esac
+
+ if ! has_version "dev-python/cryptography[${PYTHON_USEDEP}]"; then
+ EPYTEST_DESELECT+=(
+ tests/functional/test_install.py::test_install_sends_client_cert
+ tests/functional/test_install_config.py::test_do_not_prompt_for_authentication
+ tests/functional/test_install_config.py::test_prompt_for_authentication
+ tests/functional/test_install_config.py::test_prompt_for_keyring_if_needed
+ )
+ fi
+
+ local -x PIP_DISABLE_PIP_VERSION_CHECK=1
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local EPYTEST_XDIST=1
+ # rerunfailures because test suite breaks if packages are installed
+ # in parallel
+ epytest -m "not network" -o tmp_path_retention_policy=all \
+ -p rerunfailures --reruns=5 --use-venv
+}
+
+python_install_all() {
+ local DOCS=( AUTHORS.txt docs/html/**/*.rst )
+ distutils-r1_python_install_all
+
+ newbashcomp completion.bash pip
+
+ insinto /usr/share/zsh/site-functions
+ newins completion.zsh _pip
+}
diff --git a/dev-python/prettytable/Manifest b/dev-python/prettytable/Manifest
index 68753213b6f4..92d6b2cdc2ed 100644
--- a/dev-python/prettytable/Manifest
+++ b/dev-python/prettytable/Manifest
@@ -1,3 +1,2 @@
-DIST prettytable-3.12.0.tar.gz 59539 BLAKE2B f484f90515af5306ed56fda516ac5fa6ea2b6acf5fdde9b3e6f40bd147cc19b4934819d169b1de96d6feaf1170a57556f43308f4bb82af680a7acbd2b6913642 SHA512 ccbbf2467725d1ea75b1d90468da2369f41de7cc0c15c67e27efbfee8d35bfeeba4c959752980561978d37fb603e1b7b17400b9e983876daa19456c790b492ec
DIST prettytable-3.13.0.tar.gz 61087 BLAKE2B 6f6a64c06dd44090824cdb849c0e20bbd2a3d2ca80f243aabd732b63798a6370e64afe6ff66f4c936461ebef2329efdca9bdd6e028186856baf60e2f050e27d5 SHA512 97aa5b33491c244aa61f1042ad298e4df1effe004a6fa349d1ae1da27c4b89f7095377d214a789ba803c765ba16104acd5a6e80754a089dc5f8dc8c4d17b67fb
DIST prettytable-3.14.0.tar.gz 61747 BLAKE2B 94bb7faa84f174c57b9bb6ddbed2438d00544ed3dabda5a88bf52205e37b646489a425e4b30cf254bd454b94a2ce6906d332ab6a9ea6d4f3c2960f46e9fd214f SHA512 9e3b5cc819b25e3731ad4b8a0809c631879c903733906177fe5b1668ea85ed025192ae0f1e0c8616a7eec51dfd9e15732a7e83c80e30549aad6a3fe768feae19
diff --git a/dev-python/prettytable/prettytable-3.12.0.ebuild b/dev-python/prettytable/prettytable-3.12.0.ebuild
deleted file mode 100644
index 025c47785772..000000000000
--- a/dev-python/prettytable/prettytable-3.12.0.ebuild
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=hatchling
-PYTHON_COMPAT=( python3_{10..13} pypy3 )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Easily displaying tabular data in a visually appealing ASCII table format"
-HOMEPAGE="
- https://github.com/prettytable/prettytable/
- https://pypi.org/project/prettytable/
-"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~mips ppc64 ~riscv ~s390 sparc x86"
-
-RDEPEND="
- dev-python/wcwidth[${PYTHON_USEDEP}]
-"
-BDEPEND="
- dev-python/hatch-vcs[${PYTHON_USEDEP}]
- test? (
- $(python_gen_impl_dep sqlite)
- dev-python/pytest-lazy-fixtures[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-
-src_prepare() {
- distutils-r1_src_prepare
-
- # remove the implicit dep on coverage
- sed -i -e '/coverage/d' pyproject.toml || die
-}
diff --git a/dev-python/prettytable/prettytable-3.13.0.ebuild b/dev-python/prettytable/prettytable-3.13.0.ebuild
index 5e1bdad68b08..c5fa971afa84 100644
--- a/dev-python/prettytable/prettytable-3.13.0.ebuild
+++ b/dev-python/prettytable/prettytable-3.13.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/prompt-toolkit/Manifest b/dev-python/prompt-toolkit/Manifest
index 0980b9fc6b1c..664d7e9475d0 100644
--- a/dev-python/prompt-toolkit/Manifest
+++ b/dev-python/prompt-toolkit/Manifest
@@ -1,2 +1 @@
-DIST prompt_toolkit-3.0.48.tar.gz 424684 BLAKE2B 2b22cebfaf66c07bf9e2ba2677be4c36436c0b5679e01cf39b7335f1898e33f7bb5b4f3a147a39feca37bd3921b8cbe8db98c948d2819c0e7269cca5e2b71d26 SHA512 f999c0d6df94a1a640d735e4b6f4bebd496693b8ae7267c4a8561c726a8148f937781b07f8e76a045ac0b90fa1d98fb767c153c3a96e25bc5e610c873f8e76c3
DIST prompt_toolkit-3.0.50.tar.gz 429087 BLAKE2B 534c86bc82c34c26df4cbce37ebfdffa720dc0eedde7d1b8ef434474facdbbe327c5634fa949166d72d763198a89890fea95f5d5e86ff8444c44b2f203aaccb3 SHA512 1ee5d91257607da100ac99aa4220067fd85a785495d03e6f617508bed750df7f6fd3857205e55126cf7059074433d4a59d4525c023c8f4401a0efa33495833ed
diff --git a/dev-python/prompt-toolkit/prompt-toolkit-3.0.48.ebuild b/dev-python/prompt-toolkit/prompt-toolkit-3.0.48.ebuild
deleted file mode 100644
index 2d6742a2563e..000000000000
--- a/dev-python/prompt-toolkit/prompt-toolkit-3.0.48.ebuild
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( pypy3 python3_{10..13} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Building powerful interactive command lines in Python"
-HOMEPAGE="
- https://pypi.org/project/prompt-toolkit/
- https://github.com/prompt-toolkit/python-prompt-toolkit/
-"
-
-LICENSE="BSD"
-SLOT="0"
-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}]
-"
-
-distutils_enable_tests pytest
-
-EPYTEST_IGNORE=(
- # requires tree-sitter-languages
- src/prompt_toolkit/lexers/tree_sitter_test.py
-)
diff --git a/dev-python/prompt-toolkit/prompt-toolkit-3.0.50.ebuild b/dev-python/prompt-toolkit/prompt-toolkit-3.0.50.ebuild
index 32d796821fce..6ac3f7a95218 100644
--- a/dev-python/prompt-toolkit/prompt-toolkit-3.0.50.ebuild
+++ b/dev-python/prompt-toolkit/prompt-toolkit-3.0.50.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/psycopg/psycopg-3.2.4.ebuild b/dev-python/psycopg/psycopg-3.2.4.ebuild
index ed3c15fd25e7..e0ea2b00c03b 100644
--- a/dev-python/psycopg/psycopg-3.2.4.ebuild
+++ b/dev-python/psycopg/psycopg-3.2.4.ebuild
@@ -22,7 +22,7 @@ SRC_URI="
LICENSE="LGPL-3+"
SLOT="0"
-KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~ppc ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
IUSE="+native-extensions"
DEPEND="
diff --git a/dev-python/pyarrow/Manifest b/dev-python/pyarrow/Manifest
index 01b8a0bee628..acae3ea3888f 100644
--- a/dev-python/pyarrow/Manifest
+++ b/dev-python/pyarrow/Manifest
@@ -1,5 +1,3 @@
-DIST apache-arrow-18.0.0.tar.gz 19113236 BLAKE2B c358f8e61155432540a4002c6dfba7a3763d934a43eddae0a9a6f98bb26879df51e3cdcc64db6dd684ffde2ef8ef6dcff8906355b5769f71afae907aa1e920c5 SHA512 4df30ab5561da695eaa864422626b9898555d86ca56835c3b8a8ca93a1dbaf081582bb36e2440d1daf7e1dd48c76941f1152a4f25ce0dbcc1c2abe244a00c05e
-DIST apache-arrow-18.1.0.tar.gz 19132388 BLAKE2B 4a8c60d8a5dcf2b8ac4e2ae3a7f555dd0604d5ccc4b72ba317f18e16e75725b24553050fe88a02f382b0581310f20d0b795133b243f2851fa0e8d3801a839358 SHA512 7249c03a6097bc64fb0092143e4d4aaef3227565147e6254f026ddd504177c8dd565a184a0df39743dc989070dc3785e5b66f738c8e310ed9c982b61c2ec4914
DIST apache-arrow-19.0.0.tar.gz 17830405 BLAKE2B cf611106b0ee5f92a4cbf341e9f5b6771f377710bb11c6eab555706a52b5c72fcf4590ba55c36100a97c6219ec421813f51ef6337530d84eb8394735ef2787b5 SHA512 6820de33a5d5b0922ea64dd8ff55d186ef02596ad0415578067aaf3e5cf7d3eead473bc3a5f92d6d3f19b97d153fe1c901359008d922d1ffb0fc2a65dc860c79
DIST arrow-testing-4d209492d514c2d3cb2d392681b9aa00e6d8da1c.tar.gz 3572558 BLAKE2B fe5b6a46babbde8e2becefea09fecf090201a49faa7d4ee2f44b0bb4da42c344b37564999d32fdbd54a81a56c33fbde9b2d9d2fa664bf127cb5661e845fb6229 SHA512 6758ad936e1eeb2c5dd2b4b40fe90822a48a4ce67ee4d36657c168e1db5d9a17c092f4cf571b13d56b568a773515385441874d1ea36a1f6e5b15a99f67176fa3
DIST parquet-testing-cb7a9674142c137367bf75a01b79c6e214a73199.tar.gz 1068025 BLAKE2B 0fdd12d04108b27b17564c60ca36e751453f5d74cfbbe3a076e8befa1696aa0f093e2d1a5eacb99e69a98deda502930ba79b8329403af1e8b9d696e6617c6075 SHA512 dd221d9d59442cebb7158d7cf769d6e5323416bfcde2852eee37a26ff089bc04ea10b9ae7158a37d8694c10469d77c7d251d0dd2549596a7b3899d9c39b45997
diff --git a/dev-python/pyarrow/pyarrow-18.0.0.ebuild b/dev-python/pyarrow/pyarrow-18.0.0.ebuild
deleted file mode 100644
index c3a6c3921c11..000000000000
--- a/dev-python/pyarrow/pyarrow-18.0.0.ebuild
+++ /dev/null
@@ -1,111 +0,0 @@
-# Copyright 2023-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit distutils-r1 multiprocessing
-
-# arrow.git: testing
-ARROW_DATA_GIT_HASH=4d209492d514c2d3cb2d392681b9aa00e6d8da1c
-# arrow.git: cpp/submodules/parquet-testing
-PARQUET_DATA_GIT_HASH=cb7a9674142c137367bf75a01b79c6e214a73199
-
-DESCRIPTION="Python library for Apache Arrow"
-HOMEPAGE="
- https://arrow.apache.org/
- https://github.com/apache/arrow/
- https://pypi.org/project/pyarrow/
-"
-SRC_URI="
- mirror://apache/arrow/arrow-${PV}/apache-arrow-${PV}.tar.gz
- test? (
- https://github.com/apache/parquet-testing/archive/${PARQUET_DATA_GIT_HASH}.tar.gz
- -> parquet-testing-${PARQUET_DATA_GIT_HASH}.tar.gz
- https://github.com/apache/arrow-testing/archive/${ARROW_DATA_GIT_HASH}.tar.gz
- -> arrow-testing-${ARROW_DATA_GIT_HASH}.tar.gz
- )
-"
-S="${WORKDIR}/apache-arrow-${PV}/python"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="amd64 arm64 ~riscv x86"
-IUSE="+parquet +snappy ssl"
-
-RDEPEND="
- ~dev-libs/apache-arrow-${PV}[compute,dataset,json,parquet?,re2,snappy?,ssl?]
- >=dev-python/numpy-1.16.6:=[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/cffi[${PYTHON_USEDEP}]
- dev-python/hypothesis[${PYTHON_USEDEP}]
- dev-python/pandas[${PYTHON_USEDEP}]
- dev-python/pytz[${PYTHON_USEDEP}]
- dev-libs/apache-arrow[lz4,zlib]
- )
-"
-
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-src_prepare() {
- distutils-r1_src_prepare
-
- # cython's -Werror
- sed -i -e '/--warning-errors/d' CMakeLists.txt || die
-}
-
-src_compile() {
- export PYARROW_PARALLEL="$(makeopts_jobs)"
- export PYARROW_BUILD_VERBOSE=1
- export PYARROW_CXXFLAGS="${CXXFLAGS}"
- export PYARROW_BUNDLE_ARROW_CPP_HEADERS=0
- export PYARROW_CMAKE_GENERATOR=Ninja
- export PYARROW_WITH_HDFS=1
- if use parquet; then
- export PYARROW_WITH_DATASET=1
- export PYARROW_WITH_PARQUET=1
- use ssl && export PYARROW_WITH_PARQUET_ENCRYPTION=1
- fi
- if use snappy; then
- export PYARROW_WITH_SNAPPY=1
- fi
-
- distutils-r1_src_compile
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # wtf?
- tests/test_fs.py::test_localfs_errors
- # these require apache-arrow with jemalloc that doesn't seem
- # to be supported by the Gentoo package
- tests/test_memory.py::test_env_var
- tests/test_memory.py::test_specific_memory_pools
- tests/test_memory.py::test_supported_memory_backends
- # hypothesis health check failures
- # https://github.com/apache/arrow/issues/41318
- tests/interchange/test_interchange_spec.py::test_dtypes
- tests/test_convert_builtin.py::test_array_to_pylist_roundtrip
- tests/test_feather.py::test_roundtrip
- tests/test_pandas.py::test_array_to_pandas_roundtrip
- tests/test_strategies.py::test_types
- tests/test_types.py::test_hashing
- # fragile memory tests
- tests/test_csv.py::TestSerialStreamingCSVRead::test_batch_lifetime
- tests/test_csv.py::TestThreadedStreamingCSVRead::test_batch_lifetime
- # takes forever, and manages to generate timedeltas over 64 bits
- tests/test_strategies.py
- )
-
- cd "${T}" || die
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- local -x PARQUET_TEST_DATA="${WORKDIR}/parquet-testing-${PARQUET_DATA_GIT_HASH}/data"
- local -x ARROW_TEST_DATA="${WORKDIR}/arrow-testing-${ARROW_DATA_GIT_HASH}/data"
- epytest --pyargs pyarrow
-}
diff --git a/dev-python/pyarrow/pyarrow-18.1.0.ebuild b/dev-python/pyarrow/pyarrow-18.1.0.ebuild
deleted file mode 100644
index 55b9c333c4c9..000000000000
--- a/dev-python/pyarrow/pyarrow-18.1.0.ebuild
+++ /dev/null
@@ -1,112 +0,0 @@
-# Copyright 2023-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit distutils-r1 multiprocessing
-
-# arrow.git: testing
-ARROW_DATA_GIT_HASH=4d209492d514c2d3cb2d392681b9aa00e6d8da1c
-# arrow.git: cpp/submodules/parquet-testing
-PARQUET_DATA_GIT_HASH=cb7a9674142c137367bf75a01b79c6e214a73199
-
-DESCRIPTION="Python library for Apache Arrow"
-HOMEPAGE="
- https://arrow.apache.org/
- https://github.com/apache/arrow/
- https://pypi.org/project/pyarrow/
-"
-SRC_URI="
- mirror://apache/arrow/arrow-${PV}/apache-arrow-${PV}.tar.gz
- test? (
- https://github.com/apache/parquet-testing/archive/${PARQUET_DATA_GIT_HASH}.tar.gz
- -> parquet-testing-${PARQUET_DATA_GIT_HASH}.tar.gz
- https://github.com/apache/arrow-testing/archive/${ARROW_DATA_GIT_HASH}.tar.gz
- -> arrow-testing-${ARROW_DATA_GIT_HASH}.tar.gz
- )
-"
-S="${WORKDIR}/apache-arrow-${PV}/python"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64 arm64 ~riscv ~x86"
-IUSE="+parquet +snappy ssl"
-
-RDEPEND="
- ~dev-libs/apache-arrow-${PV}[compute,dataset,json,parquet?,re2,snappy?,ssl?]
- >=dev-python/numpy-1.16.6:=[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/cffi[${PYTHON_USEDEP}]
- dev-python/hypothesis[${PYTHON_USEDEP}]
- dev-python/pandas[${PYTHON_USEDEP}]
- dev-python/pytz[${PYTHON_USEDEP}]
- dev-libs/apache-arrow[lz4,zlib]
- )
-"
-
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-src_prepare() {
- distutils-r1_src_prepare
-
- # cython's -Werror
- sed -i -e '/--warning-errors/d' CMakeLists.txt || die
-}
-
-src_compile() {
- export PYARROW_PARALLEL="$(makeopts_jobs)"
- export PYARROW_BUILD_VERBOSE=1
- export PYARROW_CXXFLAGS="${CXXFLAGS}"
- export PYARROW_BUNDLE_ARROW_CPP_HEADERS=0
- export PYARROW_CMAKE_GENERATOR=Ninja
- export PYARROW_WITH_HDFS=1
- if use parquet; then
- export PYARROW_WITH_DATASET=1
- export PYARROW_WITH_PARQUET=1
- use ssl && export PYARROW_WITH_PARQUET_ENCRYPTION=1
- fi
- if use snappy; then
- export PYARROW_WITH_SNAPPY=1
- fi
-
- distutils-r1_src_compile
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # wtf?
- tests/test_fs.py::test_localfs_errors
- # these require apache-arrow with jemalloc that doesn't seem
- # to be supported by the Gentoo package
- tests/test_memory.py::test_env_var
- tests/test_memory.py::test_specific_memory_pools
- tests/test_memory.py::test_supported_memory_backends
- # hypothesis health check failures
- # https://github.com/apache/arrow/issues/41318
- tests/interchange/test_interchange_spec.py::test_dtypes
- tests/test_convert_builtin.py::test_array_to_pylist_roundtrip
- tests/test_feather.py::test_roundtrip
- tests/test_pandas.py::test_array_to_pandas_roundtrip
- tests/test_strategies.py::test_types
- tests/test_types.py::test_hashing
- # fragile memory tests
- tests/test_csv.py::TestSerialStreamingCSVRead::test_batch_lifetime
- tests/test_csv.py::TestThreadedStreamingCSVRead::test_batch_lifetime
- # takes forever, and manages to generate timedeltas over 64 bits
- tests/test_strategies.py
- "tests/test_array.py::test_pickling[builtin_pickle]"
- )
-
- cd "${T}" || die
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- local -x PARQUET_TEST_DATA="${WORKDIR}/parquet-testing-${PARQUET_DATA_GIT_HASH}/data"
- local -x ARROW_TEST_DATA="${WORKDIR}/arrow-testing-${ARROW_DATA_GIT_HASH}/data"
- epytest --pyargs pyarrow
-}
diff --git a/dev-python/pyarrow/pyarrow-19.0.0.ebuild b/dev-python/pyarrow/pyarrow-19.0.0.ebuild
index 3d92143f67e9..e48a185ba49d 100644
--- a/dev-python/pyarrow/pyarrow-19.0.0.ebuild
+++ b/dev-python/pyarrow/pyarrow-19.0.0.ebuild
@@ -33,7 +33,7 @@ S="${WORKDIR}/apache-arrow-${PV}/python"
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 arm64 ~riscv x86"
IUSE="+parquet +snappy ssl"
RDEPEND="
diff --git a/dev-python/pycpio/Manifest b/dev-python/pycpio/Manifest
index ca5b94017516..a5c19d91d60b 100644
--- a/dev-python/pycpio/Manifest
+++ b/dev-python/pycpio/Manifest
@@ -1,2 +1 @@
-DIST pycpio-1.4.1.gh.tar.gz 22532 BLAKE2B 590f2df7f2d8b93d7d16b8ff11ae6ecc947ab9032a6f0db2acdd8e72aeddc74aba93d511b14306df7eb6716861f64d0b4bce70dfc174658679cf9421ca3f6932 SHA512 a7ac927b555d8f9e8ed41f676aba802faa31780252a991eff21bc90d00daee510c335d9d65822333681cc505de5bdc4ff395cabb0b0b9748621ad000fa02cf61
DIST pycpio-1.4.2.gh.tar.gz 22690 BLAKE2B 244145dabdee1fa50e54f98327608b96afef354d53e1405e2e54c47d9cc8a71c80e4adfe8f1c7a079a9acdd30751f125e7b5db61cd34baf375433248c7370757 SHA512 7fe6b7e6597a8733d740348888b5c41aa37f08e2ecd5843ab32751e8a5cd6ce9390201ba5a47c3febd2f61562db4ce6724404f9359238de91f94f4bc12b9c41b
diff --git a/dev-python/pycpio/pycpio-1.4.1.ebuild b/dev-python/pycpio/pycpio-1.4.1.ebuild
deleted file mode 100644
index 256e6bca82f6..000000000000
--- a/dev-python/pycpio/pycpio-1.4.1.ebuild
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2023-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{11..13} )
-
-inherit distutils-r1
-
-DESCRIPTION="Python CPIO library"
-HOMEPAGE="https://github.com/desultory/pycpio/"
-SRC_URI="
- https://github.com/desultory/pycpio/archive/refs/tags/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="amd64 arm64"
-
-RDEPEND="
- >=dev-python/zenlib-2.3.2[${PYTHON_USEDEP}]
-"
-
-distutils_enable_tests unittest
-
-python_test() {
- eunittest tests
-}
diff --git a/dev-python/pycpio/pycpio-1.4.2.ebuild b/dev-python/pycpio/pycpio-1.4.2.ebuild
index d0d268ab93e6..a8f6af77a6b2 100644
--- a/dev-python/pycpio/pycpio-1.4.2.ebuild
+++ b/dev-python/pycpio/pycpio-1.4.2.ebuild
@@ -17,7 +17,7 @@ SRC_URI="
LICENSE="GPL-2"
SLOT="0"
-KEYWORDS="~amd64 ~arm64"
+KEYWORDS="amd64 arm64"
RDEPEND="
>=dev-python/zenlib-3.0.2[${PYTHON_USEDEP}]
diff --git a/dev-python/pydantic-core/Manifest b/dev-python/pydantic-core/Manifest
index 74ba8c7ac08c..94a7c719881e 100644
--- a/dev-python/pydantic-core/Manifest
+++ b/dev-python/pydantic-core/Manifest
@@ -50,7 +50,7 @@ DIST portable-atomic-1.6.0.crate 140689 BLAKE2B c91d06e04a87c9a207233d8a850859aa
DIST proc-macro2-1.0.86.crate 48958 BLAKE2B 4b89e07f23af8328dbb34fe2b3f1b202f1e6a3885a6269740a23359b41bb4099ac2484565d3b2b0936261689ca525785ac620c766997234fd8d0f409e80e5ea3 SHA512 1cdb7e22a35ae231d880c9420784c9acf97bda2db258b3d34aae5061dc1858449defe19a49e12c6a4173906aa72a4115059ac2db0fc760205fd2ab8b5b414434
DIST pydantic_core-2.23.4.tar.gz 402156 BLAKE2B af899e149693907542296b5b4fa5f982d2dca5c090331703212aabbbce0a8e0badca3947affa9e42998949ebd18b1ffc2ad9904b47e130bbe7e90150c32bc527 SHA512 c7c9a303ff3c751108622f804f812f3793ad93a95e560b0d6b0a866c3bd41ed7bfdbcd87483f37ad3849969c72adde24083d1a9015ebd610847a7fa6d4068e24
DIST pydantic_core-2.27.2.tar.gz 413443 BLAKE2B 2755ba694b17894ff89704203c275315dc6a600e5e89965f24800ff032802168a9fa5bbb26e9714dae42f645e34e0ac32191415fae04bd53a8d04c41f1d3e2c4 SHA512 4e0bc0137463d3a76bb584da76751916ddaa18383efbe15a303880649df67de22c67a8a6e5f889c76292c4557914811d942fd3373dad65b63d9fb1f84f34ce3e
-DIST pydantic_core-2.28.0.tar.gz 414268 BLAKE2B 2ab1ae77ca8e602b2aca847c6869c0b3d7031d98673e088309432295b6b4bcfa03325593d9ebd5ea7acd2aa407cfd356261b2940112f0bdc5265e854c0aaf18f SHA512 5bd10741110d50039377b0a66e0487a148f447303c446691187b7f4b3026c8646f333137f089aee76f492b73f571f5c96135a58bbb3b64aa7c8ab3022521b796
+DIST pydantic_core-2.29.0.tar.gz 417255 BLAKE2B 0803d8fa6bc731b8c58184228abf015ab6608ffdf351cd6bb8bf78ed2da0b2af14899a2c4ed4a29132a1ba2c2a67bdb3519e13ea857ef6a8a1576d7661c8f03a SHA512 a41ada88f70b04362edc3e95fe34c71814291f5eec4260193fa6be69f219ae52cd60ffc55dae9c7b43c75afc107a114e400c4a3fc697520e57ed39c0b8794560
DIST pyo3-0.22.2.crate 538342 BLAKE2B faf347695117f9fe0ebe5cd7f6aa1b0dcfe718343875d6c06438046deccc1075f104d2a2413dcda41ae9827bc363aa147057b45968f6634f577a6a4510a4bb8e SHA512 e8bae09059f50ffe477dad44499cedeaf3a734665f0fd8e8bd4b44f48578d21e4bdb8d55ceea00c5a27da750761842ddf89cfcecdecb2e7a4a17ab192259be9c
DIST pyo3-0.22.6.crate 546746 BLAKE2B 2a6f8c5ce2ee96e1812177a11c5fad7e15f3a73d9e30850edf0855b13db6cc95427e186883b4aae25a2d2466d3fe82f56180a39f3e6e0a54bb0a3ef78d495400 SHA512 d746007eae22f5b7bbf173759c61cbd2aa893898d88b8be5680a0237deec4d113246edf5f62fbbec3579ad4bd7307499b94b887ec306112ffe3df5190fe70e44
DIST pyo3-0.23.4.crate 1087676 BLAKE2B 2c7d3530460ff687e8f60dcff0fb01465b2a4642043ebdfc927fc3824b9fbce9c4b304250808a85405d21df12d17a1d1ada7bdf8f3563710692f22223e2732f1 SHA512 0015aa75163ad0ec026d185e15c26f59aaad0eb3cc3044b146e5d703bb375fcd838df2044febbd52e6e129dfba81c8249329fc3e4805695274dac7a69eee0651
@@ -86,7 +86,7 @@ DIST serde_derive-1.0.214.crate 56630 BLAKE2B c284561109e5d60e103f1bb421e4da48f3
DIST serde_derive-1.0.217.crate 57749 BLAKE2B 63b4930122d80d64492ba2718630513012202e42bbaa74510729ee66a0e72b8a1ad123784b479697ba562db43868f4bddfdf5e94bb3d744cd68a547471ba40aa SHA512 31020f4533d04b31ae125580a3c5093fad36438d324e2d9b063923aa8c125c654102ae7fbc3b3df892bb41db6b321962a23e0a37950e080055d715d15b18af76
DIST serde_json-1.0.128.crate 149520 BLAKE2B 246eb865f64a0f161b79f3d4f783dbadbc930c4a19edb6c0fe8f0c6145c7c47be4b692d3e084b1b500820ece8e94214820978cf898926dd805bd431fb411bbc9 SHA512 9e6290d3a6a971b3c37bbc97097b8179e64c655779b43c7b75303a35ef7030f5401b3a5f62cbc95a7bd5f42ecbefb0b469234d78a76c8c1597726d8e08908a7d
DIST serde_json-1.0.132.crate 150549 BLAKE2B a49aef7737fad2e6f6ec79cb6da00c734e7de7ef16be321846d1f6229534b58e15ceb0f6306eeae6f85bf07431d82959c0a56ed1394d21a67b65c8c48e971f3f SHA512 9d157ce7d705fee8245569e7c577310782b69675a6e459f21904544b824a1ca5c9b445d17419fee438dfeb6fcc35343ba14e022043fffade0210b6d2c1b5795e
-DIST serde_json-1.0.134.crate 154351 BLAKE2B 546f8ffe9373444e8c9e81910476da281dcef10498dceabc8bec9f9063c55f4a9033b83586a09b0f410369515882c37712a2bd75ff1fff05815d904f37386124 SHA512 ab6323799bf19da8ec6e6c428370d37cd230192b45ef54d2c65c7d83907b2dde71d51650e44f1fcca1084e75e0e195e97b28437f53a331bf48effed3d59b58a5
+DIST serde_json-1.0.138.crate 154769 BLAKE2B 42f146a688dda70f3afad1a6ff989823f2e2cf4037c2a4d019b87155c7e37d86f649f2a54b373b787ac9021e42ac3be5fc27ea975b62e08865802afb993196bc SHA512 31678f1289301d65a088b305726c4fa6b5cd17b01527abc8dd7fc09720c98b2e86bebd5b20d7e9e7b7e41c42829db3a7e705172eca20d0c333e6c09131e1fe09
DIST smallvec-1.13.2.crate 35216 BLAKE2B 31a268aad595c06cdb078577a97b089dbea156a0df307a3e6aaaf4861bd9a680c5b11921da9dbdb1bcfe17d58c0cbede1ffe6bba3aef59b384fb1b9703c62d27 SHA512 a97c758b668e40ad9eb572e65feeae4954e09200a04ab92e26a13b48894381cd3a3d2571070c4b7a5e181182e1ede9688f990650342ec69ecfe1a264d234c679
DIST speedate-0.14.4.crate 33077 BLAKE2B 001a3329e90cf3dc5d8c4db870c3b5339e189190c8b7a89c262bb19efec02c9e42eeba0dd5d12a940a6fb3f8b10385aa05a72ea6f98230c989c68e0be4fe8959 SHA512 13ff498cb0885ecbe7a6fef96c48bca166a560598206b16b003e1237eafc525a0cbb6b401d060b4431a50a9638df88b7ae6834d8980f6474aea88cfc827ec329
DIST speedate-0.15.0.crate 33698 BLAKE2B 81a1c87bfeaab44aeb6f7a813275b139b26a618af4b24d3018e866a2855eca897144c863a2dfabec20912046fe17a60749c41ce8cee45450137440cda5d7d934 SHA512 2c3a210e06e3960e2dd24f696e27141f00b186d5ea58272f1ac11ba455d4467459fdb076a65766c2fb242163299aea08f692e86553fe4edccf2e9714f9a9303e
@@ -111,6 +111,7 @@ DIST utf16_iter-1.0.5.crate 9736 BLAKE2B edcd9776113d4d2b267a9cbd58cab11c5497ff1
DIST utf8_iter-1.0.4.crate 10437 BLAKE2B 1e7a8b9241ebbb62cb497542b970473780f735010a0af900771a43abceae4e7f362d21d4f79f7c00630e4549400875ea17574b2cbe4f5ea19e8ed428e3b5577d SHA512 a72671995b3eb295581c60dc632e4a25ba257227fb5d58a8bec322428b6d69529bba79a6f02b8e7ee6698b7779d9d6695f5badad73e07c254b00c9d6256c9090
DIST uuid-1.10.0.crate 47648 BLAKE2B 370f56b5057fc43ed6645ca4a032737230242c88f3c6945248585054a0d1de0c85cb2eb21bd4c759c1ca73df1b5005652f74b474537116c4fd6642cb60d274ff SHA512 e17db9433d919b51468acaebd240a2cb218d07f099fade49118ca9313f8cdf6aa3103e7aa24440be65a4f25a25f8f511e36dba08cbef27747f9e43b849cd612b
DIST uuid-1.11.0.crate 47683 BLAKE2B 37a601b0fe7ec57333613f8c18ada76bd784c43c8af7c252200a7c9c76b445b179931cdf727b5ddae3ffa3fa29c5a13507fb0f2bd604d306982843e042038314 SHA512 0cd1b95fc2247bf4e627de6abb41e332ebaf39e5720640e52b9f235f7a0e2d451e7a486efdabb616ce00e47832d21919611683d0e6a71c86a86f290940cfda32
+DIST uuid-1.12.1.crate 48851 BLAKE2B 9cf9d75b0fd894e20d966d35af4fa25b64ae0e5daad91c6bb974962ed7d2374b947e30514f854b56e86dba7f358a21d6ad7af64894ddd01d51c6ba6f17c0840d SHA512 e9c7cb8f247704b59782a576fb55ff5ad4f0b632fa19da52d81fe09e9dc91a0f60b989d5c1887f548df336fb03a5147d5a03f826d4a98ba66fc6083f9b68174d
DIST version_check-0.9.5.crate 15554 BLAKE2B 131e75cc287518831e142430e2a39b48e4275874f4473780d47a27552294097aa1cddb65c385583e1022478f940b495eb43c24a8b1617b8ac5a24af3340c0d72 SHA512 d11d5a2240ab0c67ea69db56561ce202201edeef9a8e5eda3d9ae7ab7bb5752d8f343fe7f6536d8383de8d55f9024efa84f66a0c21e69563b7a38c4a628014db
DIST wasi-0.11.0+wasi-snapshot-preview1.crate 28131 BLAKE2B fe501889f25d65e2d032f885cc50c4f8bf7dd70fd5cbc438de349838370d8699e9627b0a4fc76030ea9fe6d508f41d0c9928a875fdbc47e73bfb17241cf7b155 SHA512 043500ab28cd9cb779475255da5d109ebab7fccca72b64873dc28d77bc5a157ba8d96b9e8f05223b5b36c7089bb7b4ba87657fc69bac16b78972f897294a865f
DIST write16-1.0.0.crate 7218 BLAKE2B 548796314339463e4b71f8af3d344e45dc89480e103180b6d56c90fcb816ad1a37ab2ba20766c4b9754f2cc686752eb1f3a5a12ec1ed4369a9cef749ad4f3e97 SHA512 655a207b8082bb88e462f992ecb4833cef9d590da06d6356b41d109df2862b49ee5705189c78a607b549e7343035119d158020d58fcad49608e51659357a83c1
diff --git a/dev-python/pydantic-core/pydantic-core-2.28.0.ebuild b/dev-python/pydantic-core/pydantic-core-2.29.0.ebuild
index d7d6b90b2ea3..824a07507c07 100644
--- a/dev-python/pydantic-core/pydantic-core-2.28.0.ebuild
+++ b/dev-python/pydantic-core/pydantic-core-2.29.0.ebuild
@@ -70,7 +70,7 @@ CRATES="
ryu@1.0.18
serde@1.0.217
serde_derive@1.0.217
- serde_json@1.0.134
+ serde_json@1.0.138
smallvec@1.13.2
speedate@0.15.0
stable_deref_trait@1.2.0
@@ -91,7 +91,7 @@ CRATES="
url@2.5.2
utf16_iter@1.0.5
utf8_iter@1.0.4
- uuid@1.11.0
+ uuid@1.12.1
version_check@0.9.5
wasi@0.11.0+wasi-snapshot-preview1
write16@1.0.0
@@ -164,5 +164,5 @@ python_test() {
rm -rf pydantic_core || die
# tests link to libpython, so they fail to link on pypy3
[[ ${EPYTHON} != pypy3 ]] && cargo_src_test
- epytest -p pytest_mock -p timeout -o xfail_strict=False
+ epytest -p pytest_mock -p timeout -o xfail_strict=False -o addopts=
}
diff --git a/dev-python/pydantic/Manifest b/dev-python/pydantic/Manifest
index 8d0b069b7770..a96ecac571b2 100644
--- a/dev-python/pydantic/Manifest
+++ b/dev-python/pydantic/Manifest
@@ -1,5 +1,4 @@
DIST pydantic-2.10.4.tar.gz 762094 BLAKE2B 0d9f3534df4ae05b2724788944776d0ac95329cfe48d59627e71b4769c7813410d0c64f0d7ca96e28aec8e403b2507873673b87acb230bb12ad5d4f304eb76ca SHA512 1c7bfcc214195d8db0cadbdb177da3e2e3ea596d695360036b0a268410711a780f9a88df622016d9bb6d39596f20e01bebc4cf38bdbe5dc987cb80fbb14aeb56
-DIST pydantic-2.10.5.tar.gz 761287 BLAKE2B f34b8a358a5a0e3839097a47b492eff7e6cea96eb6a77e1623ad1da90b4d13118f4b2c68b076ead91df450d85dfbcab1daebe77c6bdfa1ff9e4a49febf0dc0d1 SHA512 0e8ab6786c94b13fe155501cc1cba357bcf69b40413383415fd7e0b6fcaf5a818aa1efcc67a837c1c3c2315eb8b7b26c3af4b03c3f8a57ff3694955f792d2964
DIST pydantic-2.10.6.tar.gz 761681 BLAKE2B 1ddb057cd40f50d09dc870aae937bc4d5d41529601c26b84bbd5223d75adca43e14e779ef40ef88dbeab3dc66ae960b662a3244ffa38bf8718d6f9d50b966aed SHA512 69c5cdfb9047875497cf2ac0107f0aaa8d1d91a354d514277e913cc13081e1a76f72a154b50339c95240c82d2a262f4b8dcf71c1e5762449bd344054dba449ce
-DIST pydantic-2.11.0a1.tar.gz 766922 BLAKE2B 51bb09c9bb919798aefccba78e4b366d68a4a5b1a8c347c341debbef2ec0725c4cdebd231336144d57936bf11a3ff1a3722992151af207b62d18c9be9ed79f16 SHA512 f5a34793c6db0e105b935b217cb5ca2f0b64c78ba033f642fff92434adaf4903d0f388dadb5cf09e9122029f4484c11b5cc5744ef6a92716eb2d5d379076db3c
+DIST pydantic-2.11.0a2.tar.gz 768863 BLAKE2B 2da69490f8dc711e3835a902789cce9fac9a6eba5d827bd8efa7ea8498a5661dd31a17734408d693d78a0b0588170302c76905228aa05dd771a62f581862971c SHA512 9ad26a85c659b5b5d76c1ff7b9267c641deb91b5f3f4c6f65e1ef4035dc73599e300c03b76770ec958847f89040e38bdad87f4119c585d159e95920805c826b7
DIST pydantic-2.9.2.tar.gz 769917 BLAKE2B 4e34fda6a9e8e8331278d0b7d0c2dfd61bde637c126fa6dabf78a09c6ef993f84dc8df6af421c8fb6d69c8e1c387a40e4bcd38cbe02f5ac521c6c70821735763 SHA512 2aace9e79a98bd94e5dc626736a245051912a11fdce36013d2ad2f96b266052386a3e12b259dca30ddc38b63c6b00b5bcc9cd5e80f7805de4d8701064f0982aa
diff --git a/dev-python/pydantic/pydantic-2.10.5.ebuild b/dev-python/pydantic/pydantic-2.10.5.ebuild
deleted file mode 100644
index b9a8ac8466fd..000000000000
--- a/dev-python/pydantic/pydantic-2.10.5.ebuild
+++ /dev/null
@@ -1,65 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=hatchling
-PYTHON_COMPAT=( pypy3 python3_{10..13} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Data parsing and validation using Python type hints"
-HOMEPAGE="
- https://github.com/pydantic/pydantic/
- https://pypi.org/project/pydantic/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
-
-RDEPEND="
- >=dev-python/annotated-types-0.6.0[${PYTHON_USEDEP}]
- ~dev-python/pydantic-core-2.27.2[${PYTHON_USEDEP}]
- >=dev-python/typing-extensions-4.12.2[${PYTHON_USEDEP}]
- dev-python/tzdata[${PYTHON_USEDEP}]
-"
-BDEPEND="
- >=dev-python/hatch-fancy-pypi-readme-22.5.0[${PYTHON_USEDEP}]
- test? (
- dev-python/cloudpickle[${PYTHON_USEDEP}]
- dev-python/dirty-equals[${PYTHON_USEDEP}]
- >=dev-python/email-validator-2.0.0[${PYTHON_USEDEP}]
- >=dev-python/faker-18.13.0[${PYTHON_USEDEP}]
- >=dev-python/jsonschema-4.23.0[${PYTHON_USEDEP}]
- dev-python/pytest-mock[${PYTHON_USEDEP}]
- dev-python/pytz[${PYTHON_USEDEP}]
- dev-python/rich[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-
-src_prepare() {
- sed -i -e '/benchmark/d' pyproject.toml || die
- distutils-r1_src_prepare
-}
-
-python_test() {
- local EPYTEST_DESELECT=()
- local EPYTEST_IGNORE=(
- # require pytest-examples
- tests/test_docs.py
- # benchmarks
- tests/benchmarks
- )
-
- if ! has_version "dev-python/cloudpickle[${PYTHON_USEDEP}]"; then
- EPYTEST_IGNORE+=(
- tests/test_pickle.py
- )
- fi
-
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- epytest -p pytest_mock
-}
diff --git a/dev-python/pydantic/pydantic-2.10.6.ebuild b/dev-python/pydantic/pydantic-2.10.6.ebuild
index f85903a2c4d8..b9a8ac8466fd 100644
--- a/dev-python/pydantic/pydantic-2.10.6.ebuild
+++ b/dev-python/pydantic/pydantic-2.10.6.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/annotated-types-0.6.0[${PYTHON_USEDEP}]
diff --git a/dev-python/pydantic/pydantic-2.11.0_alpha1.ebuild b/dev-python/pydantic/pydantic-2.11.0_alpha2.ebuild
index 9a9f5395ebe8..690948df5a30 100644
--- a/dev-python/pydantic/pydantic-2.11.0_alpha1.ebuild
+++ b/dev-python/pydantic/pydantic-2.11.0_alpha2.ebuild
@@ -20,7 +20,7 @@ KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
RDEPEND="
>=dev-python/annotated-types-0.6.0[${PYTHON_USEDEP}]
- ~dev-python/pydantic-core-2.28.0[${PYTHON_USEDEP}]
+ ~dev-python/pydantic-core-2.29.0[${PYTHON_USEDEP}]
>=dev-python/typing-extensions-4.12.2[${PYTHON_USEDEP}]
dev-python/tzdata[${PYTHON_USEDEP}]
"
diff --git a/dev-python/pyfzf/pyfzf-0.3.1.ebuild b/dev-python/pyfzf/pyfzf-0.3.1.ebuild
index 57424851de28..cb9bd49a5864 100644
--- a/dev-python/pyfzf/pyfzf-0.3.1.ebuild
+++ b/dev-python/pyfzf/pyfzf-0.3.1.ebuild
@@ -16,6 +16,6 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64"
+KEYWORDS="~amd64 ~arm64 ~x86"
RDEPEND="app-shells/fzf"
diff --git a/dev-python/pyghmi/Manifest b/dev-python/pyghmi/Manifest
index 5a4333b9eb7a..9475bc9b4a3e 100644
--- a/dev-python/pyghmi/Manifest
+++ b/dev-python/pyghmi/Manifest
@@ -1,2 +1,2 @@
-DIST pyghmi-1.5.71.tar.gz 258623 BLAKE2B 1032101d1c8b145896a6ccb99a66830c5327fa71c991be95fc6af0fca87f2a3491ae04195d10e2696f67285f79c96750413cfd1050297c1e1340a49f67694ba2 SHA512 77aa8f05bf003b4be803a6c74e1c0040a23a0270094c72ba58aaab0b56e7fdd68691c0c642d7116a62a3a66fafb0bf67d718373b7e67c7b6c6165dec78884d4d
DIST pyghmi-1.5.72.tar.gz 260374 BLAKE2B e68420c86e98de450ddc873bd29bfb64b9651b5b4dc14990b7147ab7973d1b9ee1d4fc6ce4ebdcf460b0ff8d8575ac8f7db77caabff40fe984d7ca5eb03dccf4 SHA512 c9cc5486d6bea6e9ef60f4b98328f42690350432c5b742adb8f69e136a1f001bd47c078ac52a4d147d636e694e4a1efb9a9fe1b704559afe9303020bb0c86d73
+DIST pyghmi-1.5.75.tar.gz 266358 BLAKE2B 59ed934322b9f7acd842e2c625007ef9ec23b86088a183359fafbcafa9ce11ecf38c7aeb0fa8d8d9b9de2fffa8ff54a9e7180e1b2423bd64de6d947d92104643 SHA512 73bcb9a37016af6a173c853cef0089fa5d060e9c58e92d0ea1a90594ca8dff60dcb0c69e4640cd1c59b0b451abc1662ac9e0f8b3df9274aaa948474bb33cdf1b
diff --git a/dev-python/pyghmi/pyghmi-1.5.71.ebuild b/dev-python/pyghmi/pyghmi-1.5.75.ebuild
index 60628881477b..c41c53393a4e 100644
--- a/dev-python/pyghmi/pyghmi-1.5.71.ebuild
+++ b/dev-python/pyghmi/pyghmi-1.5.75.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
diff --git a/dev-python/pyglet/Manifest b/dev-python/pyglet/Manifest
index 477a51b1b561..c817c67c0384 100644
--- a/dev-python/pyglet/Manifest
+++ b/dev-python/pyglet/Manifest
@@ -1,2 +1 @@
-DIST pyglet-2.0.21.gh.tar.gz 6507374 BLAKE2B a75177b5d6d18b29f48c764d68f89377f11a817bd6d7c5c13f8ea1620e1d9b911127599a9c7ff02ae8b10566724be551dc87f1b8f0105ef938afddb4be4efd5c SHA512 adbfac15fcc75d1dd768ef4af14f15fabef53a69b9f166691d387ebb1ba092170052bc99b254f3596decedcdc7e7880074665177f1821af9fca41e21502b7003
DIST pyglet-2.1.2.gh.tar.gz 6535497 BLAKE2B 96195c8bf42d09bcf0ead5e1541ad93af56d8b5d63d88c472b4c5e32f587b40f158b3e84028eb8449ba32500a9585d6dc3ebf85054909b4df7d9ad358f264237 SHA512 d8c3d64ba9fa8d34a5dc52fe6010af2eea6effd8f9d1297c879979c256634317e391035a24e577b903f1be4635513446ece156277010e42b417796434c6e35de
diff --git a/dev-python/pyglet/pyglet-2.0.21.ebuild b/dev-python/pyglet/pyglet-2.0.21.ebuild
deleted file mode 100644
index 8026c4b61260..000000000000
--- a/dev-python/pyglet/pyglet-2.0.21.ebuild
+++ /dev/null
@@ -1,79 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=flit
-PYTHON_COMPAT=( pypy3 python3_{10..13} )
-
-inherit distutils-r1 virtualx xdg-utils
-
-DESCRIPTION="Cross-platform windowing and multimedia library for Python"
-HOMEPAGE="
- https://pyglet.org/
- https://github.com/pyglet/pyglet/
- https://pypi.org/project/pyglet/
-"
-SRC_URI="https://github.com/pyglet/pyglet/archive/v${PV}.tar.gz -> ${P}.gh.tar.gz"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~loong ~ppc64 ~riscv x86 ~amd64-linux ~x86-linux"
-IUSE="examples image +sound"
-
-RDEPEND="
- virtual/glu
- virtual/opengl
- image? (
- || (
- dev-python/pillow[${PYTHON_USEDEP}]
- x11-libs/gtk+:2
- )
- )
- sound? (
- || (
- media-libs/libpulse
- media-libs/openal
- )
- )
-"
-# ffmpeg? ( media-libs/avbin-bin )
-BDEPEND="
- test? (
- dev-python/pillow[${PYTHON_USEDEP}]
- media-libs/fontconfig
- )
-"
-
-distutils_enable_tests pytest
-
-src_test() {
- virtx distutils-r1_src_test
-}
-
-python_test() {
- xdg_environment_reset
-
- local EPYTEST_DESELECT=(
- # lacking device/server permissions
- tests/unit/media/test_listener.py::test_openal_listener
- tests/unit/media/test_listener.py::test_pulse_listener
- # fragile to system load
- tests/unit/media/test_player.py::PlayerTestCase::test_pause_resume
- tests/unit/test_clock_freq.py::test_elapsed_time_between_tick
- )
-
- # Specify path to avoid running interactive tests
- # We could add in integration tests, but they're slow
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- nonfatal epytest tests/unit || die "Tests failed with ${EPYTHON}"
-}
-
-python_install_all() {
- if use examples; then
- dodoc -r examples
- docompress -x /usr/share/doc/${PF}/examples
- fi
-
- distutils-r1_python_install_all
-}
diff --git a/dev-python/pyglet/pyglet-2.1.2.ebuild b/dev-python/pyglet/pyglet-2.1.2.ebuild
index b53946c484de..0047bec1d1ed 100644
--- a/dev-python/pyglet/pyglet-2.1.2.ebuild
+++ b/dev-python/pyglet/pyglet-2.1.2.ebuild
@@ -23,7 +23,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86 ~amd64-linux ~x86-linux"
+KEYWORDS="amd64 ~arm arm64 ~loong ~ppc64 ~riscv x86 ~amd64-linux ~x86-linux"
IUSE="examples image +sound"
RDEPEND="
diff --git a/dev-python/pymediainfo/Manifest b/dev-python/pymediainfo/Manifest
index c84af28c996c..0ce9b8fd02b3 100644
--- a/dev-python/pymediainfo/Manifest
+++ b/dev-python/pymediainfo/Manifest
@@ -1 +1,3 @@
DIST pymediainfo-6.1.0.tar.gz 446466 BLAKE2B 66a2863439cd2df7e5ad8be07a377b8201048aed4f6b4efb2289f316a184ebbc5376ce4e437e05819906a49eb40d49039f8e17654470cd1539fdfdb6496b3b71 SHA512 2c32134f42794a7228591d96e2cbe64b30693b671ded4e386b08eb6d571459e4a06d551d3c169dd340f560cf5ec7f86f6cd73fc135e4404614c22ed452273783
+DIST pymediainfo-7.0.0.tar.gz 437822 BLAKE2B 13cb89a2c3491420ce2ebb1a3dd327baa6c28a0c4f70c02c09542431235b3ee488985c19b6ea1d1ac811b1d0af0c94b235d3150d3485e1163fca720d45b4431f SHA512 ed2e336430497ca24d6057e209fef3803052cd3abff5ab9cb3993a6370035a732ccb1798ecc83d6b0fe3318b10f02555c668f68a418bde2187995b15859ccf2a
+DIST pymediainfo-7.0.1.tar.gz 441563 BLAKE2B c2cb59c8d0c4fe90ef33e3f1cd4a55fa42341213abe399841e1b008b9854861cff1459b17f766ca54bf8ac632d9159029bcbf74283abaa63c8150246b7b6be23 SHA512 73ad42192faf3baf78158f8bad216d306dc37830d64e48d801d133119433a79269fef667430588b94a7625df1541a66e5b6a36239a7820b675b06481e107ab70
diff --git a/dev-python/pymediainfo/pymediainfo-7.0.0.ebuild b/dev-python/pymediainfo/pymediainfo-7.0.0.ebuild
new file mode 100644
index 000000000000..34d866894255
--- /dev/null
+++ b/dev-python/pymediainfo/pymediainfo-7.0.0.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=pdm-backend
+PYTHON_COMPAT=( pypy3 python3_{10..13} )
+PYTHON_REQ_USE="xml(+)"
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A Python wrapper for the MediaInfo library"
+HOMEPAGE="
+ https://github.com/sbraz/pymediainfo/
+ https://pypi.org/project/pymediainfo/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ media-libs/libmediainfo
+"
+# tests/test_pymediainfo.py::MediaInfoURLTest::test_parse_url requires libmediainfo with curl support
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ media-libs/libmediainfo[curl]
+ )
+"
+
+distutils_enable_sphinx docs dev-python/alabaster
+distutils_enable_tests pytest
diff --git a/dev-python/pymediainfo/pymediainfo-7.0.1.ebuild b/dev-python/pymediainfo/pymediainfo-7.0.1.ebuild
new file mode 100644
index 000000000000..7349b521daed
--- /dev/null
+++ b/dev-python/pymediainfo/pymediainfo-7.0.1.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=pdm-backend
+PYTHON_COMPAT=( pypy3 python3_{10..13} )
+PYTHON_REQ_USE="xml(+)"
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A Python wrapper for the MediaInfo library"
+HOMEPAGE="
+ https://github.com/sbraz/pymediainfo/
+ https://pypi.org/project/pymediainfo/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ media-libs/libmediainfo
+"
+# tests/test_pymediainfo.py::MediaInfoURLTest::test_parse_url requires libmediainfo with curl support
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ media-libs/libmediainfo[curl]
+ )
+"
+
+distutils_enable_sphinx docs dev-python/alabaster dev-python/myst-parser
+distutils_enable_tests pytest
diff --git a/dev-python/pymongo/Manifest b/dev-python/pymongo/Manifest
index bea14ac5c26b..b6a83d8017d0 100644
--- a/dev-python/pymongo/Manifest
+++ b/dev-python/pymongo/Manifest
@@ -1,7 +1,5 @@
-DIST mongo-python-driver-4.10.0.gh.tar.gz 1948389 BLAKE2B 19429aad69baa013226a4b36de5c654fe074bdb39a462d588a1a4298a35fd8bbf941d8189dbe632e25619fb691a960c98988e205e82796ec1572d2dc63379b2d SHA512 3153e97ad6e749a35d071ef91eb870be76d75f404526e5275cc5ab19470f09a8450debba519cb10bd79191d1b1dd8cfc04882b1d7ef4898471b14bf131fa8c83
DIST mongo-python-driver-4.10.1.gh.tar.gz 1957402 BLAKE2B 66f7c166af7c7467ca7cb20266d313e453ab485516c17e8eda5a4771b4818778c00ad314e7bd5868a95f2045f879a73617f64549db634257f1abbc7a9a095181 SHA512 200bda479cd951beef6234a15120a043b4399cadd8ef2fda69bfcd6904e1e0e43d179626092dc81d89f48806768bf8147c55108c91620920f5544f712bf3be51
+DIST mongo-python-driver-4.11.1.gh.tar.gz 2111810 BLAKE2B 120168770b1f4a61f7f6327bb7b933e1bf848871ed7a6cb152837a95b438b17236e6b10b1fe54fc29a0791d8ad785033b2d726129dae69e9403ff5b1e3c2b929 SHA512 64f7d2baa90c23f3b5d91192cc4bcc6d3199f81b6b2844c19a1059779a5e6681a45e65872452230b6c1c8c193749324eb30af75f080f8830f9642f575da80bf9
DIST mongo-python-driver-4.11.gh.tar.gz 2111008 BLAKE2B 0f65410b5eead108dec0016c23c3e004251ab2db04f3a7b2a31a8757abdddf526cea695400c8cdf2bb4f7fc8c711ee4d2e5f883d0db8b309843a71e194e75016 SHA512 454109e9c9da8fec6785f50e34dfe253f9fd1a82d69cadd5c0366590c6ca6aeac180f16a0e011f855e72c6a949a0cf06f477c7396d4c9f4da6f936646a5d8c20
DIST mongo-python-driver-4.7.2.gh.tar.gz 1548375 BLAKE2B a40dbe153f36cdf2836583aa0116f447d08376ce7980a09d0f21cea37a34ab318e5ff0b34b7fe1721cf7fc5d5443a1dbe0982d59cb941b0da8a4a99abdc7b19d SHA512 1de8bd14301e365eb53252dedaaaf8c9056dd534662543e2a500511e5f5f67a69e1f11a8a8575efdbd8852bb47b632d59762f66024d32973d20dc17c4448b9be
DIST mongo-python-driver-4.8.0.gh.tar.gz 1550149 BLAKE2B 9462480b17f3da54918883fbcb28a4324e6a00a9c2c34b16267ebcd378170f7fd34ec7290f7a0e3c4c38a5f1f803428cb6a0c64a562d956b3a19c37130697012 SHA512 17513a278187424fea1876d288651e385be759f23eebceca8d04a15182b15ffd64956193bb53e4a90e8b2197c2ebbade274737091f5d2e5fb4398539674c41df
-DIST mongo-python-driver-4.9.1.gh.tar.gz 1937311 BLAKE2B 9312c7df50f86dad7dd713b34aba0a87dd9f878b115b3c00ae9e0825c883c869f57e0d55d552b1b4bf9715930840a540572b451d296e185085c4c0c707855811 SHA512 e616418c90088bfc328505dea315a225bfcc942fa29dcc348d3b80d0fb329b7e8fe9d6164c0e13a0562e6126535cc7d04c2cf497a39a04071f6db8af3c8ed1f1
-DIST mongo-python-driver-4.9.2.gh.tar.gz 1941838 BLAKE2B 07ba597eae08cd1116e0aa42e5c9e8af0024d69d8ee4acc33cd84a80cd9df77028a2b2bc7a1d6563ca1ebe485851d0483c804bce944dc9f1f5ed48b44fe9ae7a SHA512 40fdb22ef5c602e96f735b948fe61fd1a325f51f264087027d58319eaa382f37638cf1d0dabaaf9c0a4f556698638b26bdc5431c9147a245b7b4e515b7b7aac9
diff --git a/dev-python/pymongo/pymongo-4.10.0.ebuild b/dev-python/pymongo/pymongo-4.10.0.ebuild
deleted file mode 100644
index 286a8d403b6a..000000000000
--- a/dev-python/pymongo/pymongo-4.10.0.ebuild
+++ /dev/null
@@ -1,228 +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=hatchling
-PYTHON_COMPAT=( pypy3 python3_{10..13} )
-
-inherit check-reqs distutils-r1
-
-MY_P=mongo-python-driver-${PV}
-DESCRIPTION="Python driver for MongoDB"
-HOMEPAGE="
- https://github.com/mongodb/mongo-python-driver/
- https://pypi.org/project/pymongo/
-"
-SRC_URI="
- https://github.com/mongodb/mongo-python-driver/archive/${PV}.tar.gz
- -> ${MY_P}.gh.tar.gz
-"
-S=${WORKDIR}/${MY_P}
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
-IUSE="doc kerberos +native-extensions +test-full"
-
-RDEPEND="
- <dev-python/dnspython-3.0.0[${PYTHON_USEDEP}]
- kerberos? ( dev-python/kerberos[${PYTHON_USEDEP}] )
-"
-BDEPEND="
- dev-python/setuptools[${PYTHON_USEDEP}]
- test? (
- dev-python/pytest-asyncio[${PYTHON_USEDEP}]
- test-full? (
- >=dev-db/mongodb-2.6.0
- )
- )
-"
-
-distutils_enable_sphinx doc
-distutils_enable_tests pytest
-
-reqcheck() {
- if use test && use test-full; then
- # During the tests, database size reaches 1.5G.
- local CHECKREQS_DISK_BUILD=1536M
-
- check-reqs_${1}
- fi
-}
-
-pkg_pretend() {
- reqcheck pkg_pretend
-}
-
-pkg_setup() {
- reqcheck pkg_setup
-}
-
-src_prepare() {
- distutils-r1_src_prepare
- # we do not want hatch-requirements-txt and its ton of NIH deps
- sed -i -e '/requirements/d' pyproject.toml || die
-}
-
-python_compile() {
- # causes build errors to be fatal
- local -x TOX_ENV_NAME=whatever
- local DISTUTILS_ARGS=()
- # unconditionally implicitly disabled on pypy3
- if ! use native-extensions; then
- export NO_EXT=1
- else
- export PYMONGO_C_EXT_MUST_BUILD=1
- unset NO_EXT
- fi
-
- distutils-r1_python_compile
-}
-
-python_test() {
- rm -rf bson pymongo || die
-
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- local EPYTEST_DESELECT=(
- # network-sandbox
- test/asynchronous/test_client.py::AsyncClientUnitTest::test_connection_timeout_ms_propagates_to_DNS_resolver
- test/asynchronous/test_client.py::AsyncClientUnitTest::test_detected_environment_logging
- test/asynchronous/test_client.py::AsyncClientUnitTest::test_detected_environment_warning
- test/asynchronous/test_client.py::TestClient::test_service_name_from_kwargs
- test/asynchronous/test_client.py::TestClient::test_srv_max_hosts_kwarg
- test/test_client.py::ClientUnitTest::test_connection_timeout_ms_propagates_to_DNS_resolver
- test/test_client.py::ClientUnitTest::test_detected_environment_logging
- test/test_client.py::ClientUnitTest::test_detected_environment_warning
- test/test_client.py::TestClient::test_service_name_from_kwargs
- test/test_client.py::TestClient::test_srv_max_hosts_kwarg
- test/test_dns.py::TestCaseInsensitive::test_connect_case_insensitive
- test/test_srv_polling.py
- test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_custom_srvServiceName
- test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_invalid_type_for_srvMaxHosts
- test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_negative_integer_for_srvMaxHosts
- test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_positive_srvMaxHosts_and_loadBalanced=fa
- test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts
- test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts=0_and_loadBalanced=true
- test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts=0_and_replicaSet
-
- # broken regularly by changes in mypy
- test/test_typing.py::TestMypyFails::test_mypy_failures
-
- # fragile to timing? fails because we're getting too many logs
- test/test_connection_logging.py::TestConnectionLoggingConnectionPoolOptions::test_maxConnecting_should_be_included_in_connection_pool_created_message_when_specified
-
- # hangs?
- test/asynchronous/test_grid_file.py::AsyncTestGridFile::test_small_chunks
- )
-
- local run_separately=(
- # need to run some tests separately and then restart mongodb
- # to prevent it from crashing
- # https://bugs.gentoo.org/934389
- # note that this list must not overlap with EPYTEST_DESELECT
- test/test_bulk.py
- test/test_change_stream.py
- test/test_collection.py
- test/test_crud_unified.py
- test/test_gridfs.py
- test/test_gridfs_bucket.py
- )
- local run_separately2=(
- test/test_command_monitoring.py
- test/test_connection_monitoring.py
- test/test_cursor.py
- test/test_database.py
- test/test_grid_file.py
- test/test_monitoring.py
- )
- local run_separately_async=(
- test/asynchronous/test_database.py
- test/asynchronous/test_grid_file.py
- )
-
- if ! use test-full; then
- # .invalid is guaranteed to return NXDOMAIN per RFC 6761
- local -x DB_IP=mongodb.invalid
- epytest
- return
- fi
-
- # Yes, we need TCP/IP for that...
- local -x DB_IP=127.0.0.1
- local -x DB_PORT=27000
-
- local dbpath=${TMPDIR}/mongo.db
- local logpath=${TMPDIR}/mongod.log
-
- local stage failed=
- for stage in {1..5}; do
- # Now, the hard part: we need to find a free port for mongod.
- # We're just trying to run it random port numbers and check the log
- # for bind errors. It shall be noted that 'mongod --fork' does not
- # return failure when it fails to bind.
-
- mkdir -p "${dbpath}" || die
- while true; do
- ebegin "Trying to start mongod on port ${DB_PORT}"
-
- LC_ALL=C \
- mongod --dbpath "${dbpath}" --nojournal \
- --bind_ip ${DB_IP} --port ${DB_PORT} \
- --unixSocketPrefix "${TMPDIR}" \
- --logpath "${logpath}" --fork \
- && sleep 2
-
- # Now we need to check if the server actually started...
- if [[ ${?} -eq 0 && -S "${TMPDIR}"/mongodb-${DB_PORT}.sock ]]; then
- # yay!
- eend 0
- break
- elif grep -q 'Address already in use' "${logpath}"; then
- # ay, someone took our port!
- eend 1
- : $(( DB_PORT += 1 ))
- continue
- else
- eend 1
- eerror "Unable to start mongod for tests. See the server log:"
- eerror " ${logpath}"
- die "Unable to start mongod for tests."
- fi
- done
-
- local async=( -p asyncio -m default_async )
- local def=( -p asyncio -m "default or encryption" )
- case ${stage} in
- 1)
- nonfatal epytest "${def[@]}" "${run_separately[@]}" || failed=1
- ;;
- 2)
- nonfatal epytest "${def[@]}" "${run_separately2[@]}" || failed=1
- ;;
- 3)
- EPYTEST_DESELECT+=(
- "${run_separately[@]}"
- "${run_separately2[@]}"
- )
- nonfatal epytest "${def[@]}" || failed=1
- ;;
- 4)
- nonfatal epytest "${async[@]}" "${run_separately_async[@]}" || failed=1
- ;;
- 5)
- EPYTEST_DESELECT+=(
- "${run_separately_async[@]}"
- )
- nonfatal epytest "${async[@]}" || failed=1
- ;;
- esac
-
- mongod --dbpath "${dbpath}" --shutdown || die
- done
-
- [[ ${failed} ]] && die "Tests fail with ${EPYTHON}"
-
- rm -rf "${dbpath}" || die
-}
diff --git a/dev-python/pymongo/pymongo-4.9.2.ebuild b/dev-python/pymongo/pymongo-4.11.1.ebuild
index 286a8d403b6a..05670517ffe8 100644
--- a/dev-python/pymongo/pymongo-4.9.2.ebuild
+++ b/dev-python/pymongo/pymongo-4.11.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
@@ -115,6 +115,9 @@ python_test() {
# hangs?
test/asynchronous/test_grid_file.py::AsyncTestGridFile::test_small_chunks
+
+ # broken async tests?
+ test/asynchronous/test_encryption.py
)
local run_separately=(
@@ -127,7 +130,6 @@ python_test() {
test/test_collection.py
test/test_crud_unified.py
test/test_gridfs.py
- test/test_gridfs_bucket.py
)
local run_separately2=(
test/test_command_monitoring.py
@@ -135,6 +137,9 @@ python_test() {
test/test_cursor.py
test/test_database.py
test/test_grid_file.py
+ )
+ local run_separately3=(
+ test/test_gridfs_bucket.py
test/test_monitoring.py
)
local run_separately_async=(
@@ -145,7 +150,7 @@ python_test() {
if ! use test-full; then
# .invalid is guaranteed to return NXDOMAIN per RFC 6761
local -x DB_IP=mongodb.invalid
- epytest
+ epytest -p asyncio
return
fi
@@ -157,7 +162,7 @@ python_test() {
local logpath=${TMPDIR}/mongod.log
local stage failed=
- for stage in {1..5}; do
+ for stage in {1..6}; do
# Now, the hard part: we need to find a free port for mongod.
# We're just trying to run it random port numbers and check the log
# for bind errors. It shall be noted that 'mongod --fork' does not
@@ -202,16 +207,20 @@ python_test() {
nonfatal epytest "${def[@]}" "${run_separately2[@]}" || failed=1
;;
3)
+ nonfatal epytest "${def[@]}" "${run_separately3[@]}" || failed=1
+ ;;
+ 4)
EPYTEST_DESELECT+=(
"${run_separately[@]}"
"${run_separately2[@]}"
+ "${run_separately3[@]}"
)
nonfatal epytest "${def[@]}" || failed=1
;;
- 4)
+ 5)
nonfatal epytest "${async[@]}" "${run_separately_async[@]}" || failed=1
;;
- 5)
+ 6)
EPYTEST_DESELECT+=(
"${run_separately_async[@]}"
)
diff --git a/dev-python/pymongo/pymongo-4.9.1.ebuild b/dev-python/pymongo/pymongo-4.9.1.ebuild
deleted file mode 100644
index 286a8d403b6a..000000000000
--- a/dev-python/pymongo/pymongo-4.9.1.ebuild
+++ /dev/null
@@ -1,228 +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=hatchling
-PYTHON_COMPAT=( pypy3 python3_{10..13} )
-
-inherit check-reqs distutils-r1
-
-MY_P=mongo-python-driver-${PV}
-DESCRIPTION="Python driver for MongoDB"
-HOMEPAGE="
- https://github.com/mongodb/mongo-python-driver/
- https://pypi.org/project/pymongo/
-"
-SRC_URI="
- https://github.com/mongodb/mongo-python-driver/archive/${PV}.tar.gz
- -> ${MY_P}.gh.tar.gz
-"
-S=${WORKDIR}/${MY_P}
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
-IUSE="doc kerberos +native-extensions +test-full"
-
-RDEPEND="
- <dev-python/dnspython-3.0.0[${PYTHON_USEDEP}]
- kerberos? ( dev-python/kerberos[${PYTHON_USEDEP}] )
-"
-BDEPEND="
- dev-python/setuptools[${PYTHON_USEDEP}]
- test? (
- dev-python/pytest-asyncio[${PYTHON_USEDEP}]
- test-full? (
- >=dev-db/mongodb-2.6.0
- )
- )
-"
-
-distutils_enable_sphinx doc
-distutils_enable_tests pytest
-
-reqcheck() {
- if use test && use test-full; then
- # During the tests, database size reaches 1.5G.
- local CHECKREQS_DISK_BUILD=1536M
-
- check-reqs_${1}
- fi
-}
-
-pkg_pretend() {
- reqcheck pkg_pretend
-}
-
-pkg_setup() {
- reqcheck pkg_setup
-}
-
-src_prepare() {
- distutils-r1_src_prepare
- # we do not want hatch-requirements-txt and its ton of NIH deps
- sed -i -e '/requirements/d' pyproject.toml || die
-}
-
-python_compile() {
- # causes build errors to be fatal
- local -x TOX_ENV_NAME=whatever
- local DISTUTILS_ARGS=()
- # unconditionally implicitly disabled on pypy3
- if ! use native-extensions; then
- export NO_EXT=1
- else
- export PYMONGO_C_EXT_MUST_BUILD=1
- unset NO_EXT
- fi
-
- distutils-r1_python_compile
-}
-
-python_test() {
- rm -rf bson pymongo || die
-
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- local EPYTEST_DESELECT=(
- # network-sandbox
- test/asynchronous/test_client.py::AsyncClientUnitTest::test_connection_timeout_ms_propagates_to_DNS_resolver
- test/asynchronous/test_client.py::AsyncClientUnitTest::test_detected_environment_logging
- test/asynchronous/test_client.py::AsyncClientUnitTest::test_detected_environment_warning
- test/asynchronous/test_client.py::TestClient::test_service_name_from_kwargs
- test/asynchronous/test_client.py::TestClient::test_srv_max_hosts_kwarg
- test/test_client.py::ClientUnitTest::test_connection_timeout_ms_propagates_to_DNS_resolver
- test/test_client.py::ClientUnitTest::test_detected_environment_logging
- test/test_client.py::ClientUnitTest::test_detected_environment_warning
- test/test_client.py::TestClient::test_service_name_from_kwargs
- test/test_client.py::TestClient::test_srv_max_hosts_kwarg
- test/test_dns.py::TestCaseInsensitive::test_connect_case_insensitive
- test/test_srv_polling.py
- test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_custom_srvServiceName
- test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_invalid_type_for_srvMaxHosts
- test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_negative_integer_for_srvMaxHosts
- test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_positive_srvMaxHosts_and_loadBalanced=fa
- test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts
- test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts=0_and_loadBalanced=true
- test/test_uri_spec.py::TestAllScenarios::test_test_uri_options_srv-options_SRV_URI_with_srvMaxHosts=0_and_replicaSet
-
- # broken regularly by changes in mypy
- test/test_typing.py::TestMypyFails::test_mypy_failures
-
- # fragile to timing? fails because we're getting too many logs
- test/test_connection_logging.py::TestConnectionLoggingConnectionPoolOptions::test_maxConnecting_should_be_included_in_connection_pool_created_message_when_specified
-
- # hangs?
- test/asynchronous/test_grid_file.py::AsyncTestGridFile::test_small_chunks
- )
-
- local run_separately=(
- # need to run some tests separately and then restart mongodb
- # to prevent it from crashing
- # https://bugs.gentoo.org/934389
- # note that this list must not overlap with EPYTEST_DESELECT
- test/test_bulk.py
- test/test_change_stream.py
- test/test_collection.py
- test/test_crud_unified.py
- test/test_gridfs.py
- test/test_gridfs_bucket.py
- )
- local run_separately2=(
- test/test_command_monitoring.py
- test/test_connection_monitoring.py
- test/test_cursor.py
- test/test_database.py
- test/test_grid_file.py
- test/test_monitoring.py
- )
- local run_separately_async=(
- test/asynchronous/test_database.py
- test/asynchronous/test_grid_file.py
- )
-
- if ! use test-full; then
- # .invalid is guaranteed to return NXDOMAIN per RFC 6761
- local -x DB_IP=mongodb.invalid
- epytest
- return
- fi
-
- # Yes, we need TCP/IP for that...
- local -x DB_IP=127.0.0.1
- local -x DB_PORT=27000
-
- local dbpath=${TMPDIR}/mongo.db
- local logpath=${TMPDIR}/mongod.log
-
- local stage failed=
- for stage in {1..5}; do
- # Now, the hard part: we need to find a free port for mongod.
- # We're just trying to run it random port numbers and check the log
- # for bind errors. It shall be noted that 'mongod --fork' does not
- # return failure when it fails to bind.
-
- mkdir -p "${dbpath}" || die
- while true; do
- ebegin "Trying to start mongod on port ${DB_PORT}"
-
- LC_ALL=C \
- mongod --dbpath "${dbpath}" --nojournal \
- --bind_ip ${DB_IP} --port ${DB_PORT} \
- --unixSocketPrefix "${TMPDIR}" \
- --logpath "${logpath}" --fork \
- && sleep 2
-
- # Now we need to check if the server actually started...
- if [[ ${?} -eq 0 && -S "${TMPDIR}"/mongodb-${DB_PORT}.sock ]]; then
- # yay!
- eend 0
- break
- elif grep -q 'Address already in use' "${logpath}"; then
- # ay, someone took our port!
- eend 1
- : $(( DB_PORT += 1 ))
- continue
- else
- eend 1
- eerror "Unable to start mongod for tests. See the server log:"
- eerror " ${logpath}"
- die "Unable to start mongod for tests."
- fi
- done
-
- local async=( -p asyncio -m default_async )
- local def=( -p asyncio -m "default or encryption" )
- case ${stage} in
- 1)
- nonfatal epytest "${def[@]}" "${run_separately[@]}" || failed=1
- ;;
- 2)
- nonfatal epytest "${def[@]}" "${run_separately2[@]}" || failed=1
- ;;
- 3)
- EPYTEST_DESELECT+=(
- "${run_separately[@]}"
- "${run_separately2[@]}"
- )
- nonfatal epytest "${def[@]}" || failed=1
- ;;
- 4)
- nonfatal epytest "${async[@]}" "${run_separately_async[@]}" || failed=1
- ;;
- 5)
- EPYTEST_DESELECT+=(
- "${run_separately_async[@]}"
- )
- nonfatal epytest "${async[@]}" || failed=1
- ;;
- esac
-
- mongod --dbpath "${dbpath}" --shutdown || die
- done
-
- [[ ${failed} ]] && die "Tests fail with ${EPYTHON}"
-
- rm -rf "${dbpath}" || die
-}
diff --git a/dev-python/pyopengl-accelerate/Manifest b/dev-python/pyopengl-accelerate/Manifest
index 34069827b4da..a30cf9e4c854 100644
--- a/dev-python/pyopengl-accelerate/Manifest
+++ b/dev-python/pyopengl-accelerate/Manifest
@@ -1,2 +1 @@
-DIST pyopengl-release-3.1.8.gh.tar.gz 3599436 BLAKE2B 7f33345d68d66d3cc81278eaa5f54298694f41f40583ee08a1f9f677705fb4414b6b2afbcd7b9345199b5f573478bfeba050e185b6534cbb19b45cb25c241b47 SHA512 d95014a36bd889fa014043e4640ba7f319bb996cb56e5f7086ee05d39c53d3928512d52b0ce181d7c144775a4da7eff7403cada0f91f23f56a699a1b023e00e6
DIST pyopengl_accelerate-3.1.9.tar.gz 21799 BLAKE2B cf0a69d55dd1971fcd91d147e71035e3a59c55dbbf10eb2ae6d5e8e78ac932632a4867c4762ea56be5e79afa0c25b4e3d313557e6b3e1f4fcc3553df12096fce SHA512 a6e4dc2ee88f2133e02384113fa7947f9a30bd2b0dff5905c29fe46b346ba7e61b2d4dc2d598901524f46560025026d5163f750be0a2b58864b3863fa7179fcf
diff --git a/dev-python/pyopengl-accelerate/pyopengl-accelerate-3.1.8-r1.ebuild b/dev-python/pyopengl-accelerate/pyopengl-accelerate-3.1.8-r1.ebuild
deleted file mode 100644
index 26a495c6a4fd..000000000000
--- a/dev-python/pyopengl-accelerate/pyopengl-accelerate-3.1.8-r1.ebuild
+++ /dev/null
@@ -1,81 +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_{10..13} )
-
-inherit distutils-r1
-
-DESCRIPTION="Accelerate module for PyOpenGL"
-HOMEPAGE="
- https://pyopengl.sourceforge.net/
- https://github.com/mcfletch/pyopengl/
- https://pypi.org/project/PyOpenGL-accelerate/
-"
-
-if [[ ${PV} = *9999* ]] ; then
- inherit git-r3
- EGIT_REPO_URI="https://github.com/mcfletch/pyopengl.git"
- S="${S}/accelerate"
-else
- MY_P=pyopengl-release-${PV}
- SRC_URI="
- https://github.com/mcfletch/pyopengl/archive/release-${PV}.tar.gz
- -> ${MY_P}.gh.tar.gz
- "
- KEYWORDS="amd64 x86 ~amd64-linux ~x86-linux"
- S=${WORKDIR}/${MY_P}/accelerate
-fi
-
-LICENSE="BSD"
-SLOT="0"
-IUSE="numpy"
-
-DEPEND="
- numpy? (
- dev-python/numpy:=[${PYTHON_USEDEP}]
- )
-"
-RDEPEND="
- ${DEPEND}
- dev-python/pyopengl[${PYTHON_USEDEP}]
-"
-BDEPEND="
- dev-python/cython[${PYTHON_USEDEP}]
-"
-
-distutils_enable_tests pytest
-
-src_prepare() {
- default
-
- touch requirements.txt || die
-
- eapply -p2 "${FILESDIR}/${PN}-3.1.8-gcc-14.patch"
-
- eapply -p1 "${FILESDIR}/${PN}-3.1.8-numpy-2.0.patch"
-}
-
-src_configure() {
- rm src/*.c || die
-
- if ! use numpy; then
- cat > "${T}"/numpy.py <<-EOF || die
- raise ImportError("building numpy extension disabled")
- EOF
- fi
-}
-
-python_compile() {
- local -x PYTHONPATH=${T}:${PYTHONPATH}
- distutils-r1_python_compile
-}
-
-python_test() {
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- cd "${T}" || die
- epytest "${S}"/tests
-}
diff --git a/dev-python/pyopengl-accelerate/pyopengl-accelerate-3.1.9.ebuild b/dev-python/pyopengl-accelerate/pyopengl-accelerate-3.1.9.ebuild
index 83ad094ff1d6..abb3efdffbdf 100644
--- a/dev-python/pyopengl-accelerate/pyopengl-accelerate-3.1.9.ebuild
+++ b/dev-python/pyopengl-accelerate/pyopengl-accelerate-3.1.9.ebuild
@@ -18,7 +18,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux"
+KEYWORDS="amd64 x86 ~amd64-linux ~x86-linux"
IUSE="numpy"
DEPEND="
diff --git a/dev-python/pyopengl/pyopengl-3.1.9.ebuild b/dev-python/pyopengl/pyopengl-3.1.9.ebuild
index ece7d7b175c3..21ba9aa4c5cc 100644
--- a/dev-python/pyopengl/pyopengl-3.1.9.ebuild
+++ b/dev-python/pyopengl/pyopengl-3.1.9.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~ppc ~ppc64 ~riscv ~x86 ~amd64-linux ~x86-linux"
IUSE="tk"
RDEPEND="
diff --git a/dev-python/pypdf/Manifest b/dev-python/pypdf/Manifest
index 55ad60a5de43..50fc77478217 100644
--- a/dev-python/pypdf/Manifest
+++ b/dev-python/pypdf/Manifest
@@ -1,3 +1,4 @@
DIST pypdf-5.1.0.gh.tar.gz 8026822 BLAKE2B 068490ced3dd97d7c08fe87620b68a7363900ea4b9875b52ea525263ba9240b9ce07f1e98c2fe13167c8f9aa58f9a4280b4eb2ef899ef54efa58a8c1ce02f38c SHA512 2c13b0622fcad1faaee41e82489d12f9f2006822487412eda6108bbec68b37bfc2e94510f29eb0f3a9af788c5d99142fd64f28ed3e464ff17dbecad0442dfd2e
DIST pypdf-5.2.0.gh.tar.gz 8032194 BLAKE2B e7e9a3f5d4bb8ad5ae2158c3d00961f0b00fb12a04ea31649a24a3fb672367766b447c4aa84b06ecf3df8c32ea545f1efe6c52f786aabb3170d11c6e3ef3dde2 SHA512 8112dcf0fe5a2be97bbf940c417eff718a1fc7827fdacc7e2c1768263306441d422a2e3c84c83c757182cb595dc12ad17b2424284f8e0ec1697cfc37fc630492
+DIST pypdf-5.3.0.gh.tar.gz 8036039 BLAKE2B dfdbcf5112da7e82aaa87753433cd236dbfbac20e5c83194d18da13b878713bb7c8b102f0c62e35f157bb28bc125fdc491a0720fd59d1a0a30c8a13476d24a9d SHA512 c656fb766d6e7d550768150c83b289450e8da8632353aa90ce9f355a99b613dbb6be84f1d0742b53ca093dc747dee6ac56f243a96ad60ad7764b1e66e0cca3bd
DIST pypdf-sample-files-8c405ece5eff12396a34a1fae3276132002e1753.gh.tar.gz 11748093 BLAKE2B c5989200893b28a3c2062bb024a5cfc6f3389dc259ec129857979fa43469e1274559612b4d555499e2c7e16cf34be07825229932bf4d147fa6d7324d043e97d5 SHA512 c9771129b7668a2fd1fa79bb859ae9213f3d60341cf1b9937ff0eaab0de9bf4c35adcb7b896e93329038dc0f3809a0c697c523f8fe41b43030b0b029a88058e3
diff --git a/dev-python/pypdf/pypdf-5.3.0.ebuild b/dev-python/pypdf/pypdf-5.3.0.ebuild
new file mode 100644
index 000000000000..a177ecd49219
--- /dev/null
+++ b/dev-python/pypdf/pypdf-5.3.0.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1
+
+SAMPLE_COMMIT=8c405ece5eff12396a34a1fae3276132002e1753
+DESCRIPTION="Python library to work with PDF files"
+HOMEPAGE="
+ https://pypi.org/project/pypdf/
+ https://github.com/py-pdf/pypdf/
+"
+SRC_URI="
+ https://github.com/py-pdf/pypdf/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+ test? (
+ https://github.com/py-pdf/sample-files/archive/${SAMPLE_COMMIT}.tar.gz
+ -> ${PN}-sample-files-${SAMPLE_COMMIT}.gh.tar.gz
+ )
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+
+RDEPEND="
+ $(python_gen_cond_dep '
+ >=dev-python/typing-extensions-4.0[${PYTHON_USEDEP}]
+ ' 3.10)
+"
+BDEPEND="
+ test? (
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ >=dev-python/pillow-8.0.0[jpeg,jpeg2k,tiff,zlib,${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_unpack() {
+ default
+ if use test; then
+ mv "sample-files-${SAMPLE_COMMIT}"/* "${S}"/sample-files/ || die
+ fi
+}
+
+python_test() {
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -o addopts= -m "not enable_socket"
+}
diff --git a/dev-python/pyphen/Manifest b/dev-python/pyphen/Manifest
index a31302067bbe..9e185ca1707e 100644
--- a/dev-python/pyphen/Manifest
+++ b/dev-python/pyphen/Manifest
@@ -1,2 +1 @@
-DIST pyphen-0.17.0.tar.gz 2072773 BLAKE2B 14c7700854dfe952ff24f7d8fcd80b2287fda4e53dfd57c8cfc506162641a5f13031a0f49b3e0868e1adf050a6fb736b87b95cb5136b90e545b1328d61774a2a SHA512 2f856e9d7f404c515bc7c4c26f4a60664d1f22e08d078818d008d87809e76e4a56976169a131bb368785bd4b01b4c08b2699702afa721d498eb715eb797dc3e2
DIST pyphen-0.17.2.tar.gz 2079470 BLAKE2B 9b0363d8c098d2dad28edd06b0fcf1ad11b940e6060323a9e38e34520df69cb7aeec3c65f930282ccb8c4af9df51573462477bd70697024547d4ec09a1f30fac SHA512 8009dc6b82fc5c17cfad12fbf26cbbf4a8580cbbe6cb8274fbe640d7ac9ae30f08c21e2b670e69712c909b1624a930159e7398003b139fc8ad8e486611e5e5c4
diff --git a/dev-python/pyphen/pyphen-0.17.0.ebuild b/dev-python/pyphen/pyphen-0.17.0.ebuild
deleted file mode 100644
index 2fef544a8c28..000000000000
--- a/dev-python/pyphen/pyphen-0.17.0.ebuild
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=flit
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Python module for hyphenation using hunspell dictionaries"
-HOMEPAGE="
- https://github.com/Kozea/Pyphen/
- https://pypi.org/project/pyphen/
-"
-
-LICENSE="GPL-2+ LGPL-2+ MPL-1.1"
-SLOT="0"
-KEYWORDS="amd64 arm64 ~riscv x86"
-
-distutils_enable_tests pytest
-
-python_test() {
- epytest -o addopts=
-}
diff --git a/dev-python/pyphen/pyphen-0.17.2.ebuild b/dev-python/pyphen/pyphen-0.17.2.ebuild
index db446f59c5f0..95be84e5bb40 100644
--- a/dev-python/pyphen/pyphen-0.17.2.ebuild
+++ b/dev-python/pyphen/pyphen-0.17.2.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="GPL-2+ LGPL-2+ MPL-1.1"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+KEYWORDS="amd64 arm64 ~riscv x86"
distutils_enable_tests pytest
diff --git a/dev-python/pyproject-api/Manifest b/dev-python/pyproject-api/Manifest
index fdbc06aab5fa..2e2ff6bd688f 100644
--- a/dev-python/pyproject-api/Manifest
+++ b/dev-python/pyproject-api/Manifest
@@ -1,2 +1 @@
-DIST pyproject_api-1.8.0.tar.gz 22340 BLAKE2B 7087b04045870ab6ec62dbd93ca59fbab6a9200f1eb20140ac28355b6f88a719961949f06c1cb888b4ef2d9ad61c2f533cf4e361c64e34c04faf6d0db7762090 SHA512 9a598179cb31694c862a91040c453d767ecbddd7aed4156f044d6684316294e962bdaaff646cd8c9cf15af204efc9a03dbc781058610c334c7ea2f2df54f1883
DIST pyproject_api-1.9.0.tar.gz 22714 BLAKE2B 743cc09d3a805779940877d3487b7033aeb5e076eb4395f4c2e3c5c062f17b32753e0f94d22609ec8a8e0e54ddedd3f0fcaaf934ec4fabf9f79400d6a3c8c18b SHA512 44822d5433115a353c71ca18a97d33198e0d5c1da80f710abc897fa1f07b5c031a469ec4d1abeeee6e62d5745b5a2e94f79abb4d7318765b1b4fc944b9859d18
diff --git a/dev-python/pyproject-api/pyproject-api-1.8.0.ebuild b/dev-python/pyproject-api/pyproject-api-1.8.0.ebuild
deleted file mode 100644
index ac45a470b9b3..000000000000
--- a/dev-python/pyproject-api/pyproject-api-1.8.0.ebuild
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright 2022-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=hatchling
-PYTHON_COMPAT=( pypy3 python3_{10..13} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="API to interact with the python pyproject.toml based projects"
-HOMEPAGE="
- https://github.com/tox-dev/pyproject-api/
- https://pypi.org/project/pyproject-api/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86"
-
-RDEPEND="
- >=dev-python/packaging-24.1[${PYTHON_USEDEP}]
- $(python_gen_cond_dep '
- >=dev-python/tomli-2.0.1[${PYTHON_USEDEP}]
- ' 3.{9..10})
-"
-BDEPEND="
- >=dev-python/hatch-vcs-0.3.0[${PYTHON_USEDEP}]
- test? (
- >=dev-python/pytest-mock-3.11.1[${PYTHON_USEDEP}]
- >=dev-python/setuptools-68.1.2[${PYTHON_USEDEP}]
- >=dev-python/wheel-0.40.2[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-
-EPYTEST_DESELECT=(
- # hardcodes assumptions specific to setuptools-70.1.0
- tests/test_frontend_setuptools.py::test_setuptools_get_requires_for_build_wheel
- # some minor formatting mismatch
- tests/test_frontend_setuptools.py::test_setuptools_prepare_metadata_for_build_wheel
-)
diff --git a/dev-python/pyproject-api/pyproject-api-1.9.0.ebuild b/dev-python/pyproject-api/pyproject-api-1.9.0.ebuild
index 666b73203cff..5e33cba5bc5e 100644
--- a/dev-python/pyproject-api/pyproject-api-1.9.0.ebuild
+++ b/dev-python/pyproject-api/pyproject-api-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"
+KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86"
RDEPEND="
>=dev-python/packaging-24.2[${PYTHON_USEDEP}]
diff --git a/dev-python/pypy-exe-bin/Manifest b/dev-python/pypy-exe-bin/Manifest
index 35c744f09682..0d2715cc8869 100644
--- a/dev-python/pypy-exe-bin/Manifest
+++ b/dev-python/pypy-exe-bin/Manifest
@@ -6,3 +6,11 @@ DIST pypy-exe-7.3.17-1.ppc64le-musl.gpkg.tar 6696960 BLAKE2B 805d8fb087b8123437f
DIST pypy-exe-7.3.17-1.ppc64le.gpkg.tar 11110400 BLAKE2B b8e3f503f448226c7d59942281cb64fe4bd648a5777ec483de0f549221ddcf71f347f88b9c11070f8875657851e07cfdf4e9ef634e811c0a3dda664cd04543ca SHA512 e4e2f16e2eed8946a1ad07ba3d4ba8677beeda3731b46838a5284e6309b3966ddf8fa9992c4519b19797f633d2288d4f231fc41e992e83683de0ad7b239c5d22
DIST pypy-exe-7.3.17-1.x86-musl.gpkg.tar 9891840 BLAKE2B 3391ad3558baa88741a38549e12666ee669d5949f234e104e5687001928aaf7836573192ded6342fd690337589da10d4f45389c02d15cf3bc10ebc4a7de2d12c SHA512 cf30b7c8f779317126ced75d84b383644a4d90cc65a9d2e75019dd68bb29079fdb0e96312c26ee3f7185f6c64e3a7a0c21d66fdcf18a5c68ce87936dd49d6043
DIST pypy-exe-7.3.17-1.x86.gpkg.tar 9850880 BLAKE2B 08487e276cf616c5c9191a0a29cc6a297f9eab5ce8382d591b01e7da3239b4bef482bba1566b17ca85f3729b4d5ae6bef6d13940b5e7b1dcd9a7b03d7eaec2ac SHA512 70f6660321483361a1de6e5ccf2854daf892282858d2a0a00ce3055103d7f90f1788cea4b5b18913f11c17ce0f6c999551ee5374f897717d33eb06e913310960
+DIST pypy-exe-7.3.18-1.amd64-musl.gpkg.tar 13004800 BLAKE2B 9898cee07c5934485b8686971ce13828465b5d416b7c930a99e21ea5b12a02801827a2ec21015a1ec5a6445fd3dcbe3e69b626e8dd71026978a7b1353fc0e328 SHA512 a9d6ed5a72ee98c4bd11875824c7bfdd91c7ba5b490938af250b3220a8164546909ecf871db4fce03729e5fbef76df70d20444d6f688bce4abd72a2bad16d049
+DIST pypy-exe-7.3.18-1.amd64.gpkg.tar 12984320 BLAKE2B 91462c319c0ae51301166f6a83c97ec81b4c2fed65cf5059ba0279e3d842cb0aa341ae3f0003bc430f69ba9e6e4bbecaea3b29facec9aa2a536c70089c830d29 SHA512 c1abfd2ef44802707e0b402f554d7f12ef88ed8d9002904b932ae476c820323ce2a2bf6c4e2ac40d8c7cc703941be6555e1b8b9775f7e3eb412988e0264c7df1
+DIST pypy-exe-7.3.18-1.arm64-musl.gpkg.tar 11048960 BLAKE2B 7609f00e9f46c7a24917797e1cabf09a8759cbcbe92b8db1449e4237eaa6ad13e39109db4ac14dd140411938d1c959174d0999914164016333cbfe3d62cca787 SHA512 55cf193988c1736cdc1eb0800d3070294df0fdacf8e4ee9f1e15539929c55a98fec474347824cf9895c8a294d24aeb4c973a56a727840f0cc8469b9a049facc5
+DIST pypy-exe-7.3.18-1.arm64.gpkg.tar 10967040 BLAKE2B 09f84c8a584045c24cc888dc2afedd8981da50e568f394e5a5e780e8ead0314811bc382fc85a0d5198ced86e0885f827d74da54ba619b1db65d1d54f0c44a553 SHA512 1ad7e009db436f82d80a82b2db04106b8d5bd286760095779fc9a73f8cdf2a7064a0e96cef60f369ab463112eebd45816059e692a5e8d59821ad8cde949752bb
+DIST pypy-exe-7.3.18-1.ppc64le-musl.gpkg.tar 6686720 BLAKE2B 1481fa7684a011a65c4a19306559b70ffad2d528c60437e36665f7869b4dd1f4d39309c131d3713cd49005c6737dd135ba05e225a210b49ad0bddd49fce3b6bd SHA512 b1c15eebc79af3bd913ba584318a7ec1976fded8b76231e4ba41edad3689723c5c5d457000a6d6efa2ecf991c9ecb4098ff2b2bad79bf48f19f00a00c0000ca2
+DIST pypy-exe-7.3.18-1.ppc64le.gpkg.tar 11069440 BLAKE2B eab43ad91872d43229ddfbee634755e7f5d8083d01e7fbeece0dffb1598403cb8b858de4aeefbdebe17f3b31976e6b7b20da7e57c1599f2dde989194dedaeff4 SHA512 7d0fa89fc3bac50b435f1a2d7cfbdbb7dda014a530b2bfa1229c96a60758fbfe93dc2c0f15b04ae54a0e18e8c7b7cc030081ceb02bf8e79185baf96a96b1c175
+DIST pypy-exe-7.3.18-1.x86-musl.gpkg.tar 9984000 BLAKE2B 8c979113c30e9b57d082fbbc7d7004e06a13f85aa85b77342763a877afdb2f3ba853a6e4a3be7ec956192ba6f4f8eaf42babf0419d367cffede794b7f5dd1514 SHA512 aba37bb2488b81afc5d4b390bf24c9b0a44162dd353e0d053ebbb0e52da86f0414167149e08a3e44ff4d139d410ac9e7a34fe97c67ef1696bd3f4db5049bed89
+DIST pypy-exe-7.3.18-1.x86.gpkg.tar 9902080 BLAKE2B 4d16db3c364d8609c1cdfa52b1383c91e98ae33358ee125e283e8f99dad21ef59472af7341fc8a598cb38c8610a55c4b9fb38d8a059f0120351d5971dcedf1ee SHA512 f1b076cf2be22e1adf48f106744c4ca8e4466f6daa6e4009e36df8af029913085afa0b1f91dd1644e61507e00cf7d16143ceb8405712272b18de9574ad2a9c31
diff --git a/dev-python/pypy-exe-bin/pypy-exe-bin-7.3.18.ebuild b/dev-python/pypy-exe-bin/pypy-exe-bin-7.3.18.ebuild
new file mode 100644
index 000000000000..c68b78a12bd4
--- /dev/null
+++ b/dev-python/pypy-exe-bin/pypy-exe-bin-7.3.18.ebuild
@@ -0,0 +1,82 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit pax-utils unpacker
+
+MY_P=pypy-exe-${PV}-1
+DESCRIPTION="PyPy executable (pre-built version)"
+HOMEPAGE="
+ https://pypy.org/
+ https://github.com/pypy/pypy/
+"
+SRC_URI="
+ elibc_glibc? (
+ amd64? (
+ https://dev.gentoo.org/~mgorny/binpkg/amd64/pypy/dev-python/pypy-exe/${MY_P}.gpkg.tar
+ -> ${MY_P}.amd64.gpkg.tar
+ )
+ arm64? (
+ https://dev.gentoo.org/~mgorny/binpkg/arm64/pypy/dev-python/pypy-exe/${MY_P}.gpkg.tar
+ -> ${MY_P}.arm64.gpkg.tar
+ )
+ ppc64? (
+ https://dev.gentoo.org/~mgorny/binpkg/ppc64le/pypy/dev-python/pypy-exe/${MY_P}.gpkg.tar
+ -> ${MY_P}.ppc64le.gpkg.tar
+ )
+ x86? (
+ https://dev.gentoo.org/~mgorny/binpkg/x86/pypy/dev-python/pypy-exe/${MY_P}.gpkg.tar
+ -> ${MY_P}.x86.gpkg.tar
+ )
+ )
+ elibc_musl? (
+ amd64? (
+ https://dev.gentoo.org/~mgorny/binpkg/amd64-musl/pypy/dev-python/pypy-exe/${MY_P}.gpkg.tar
+ -> ${MY_P}.amd64-musl.gpkg.tar
+ )
+ arm64? (
+ https://dev.gentoo.org/~mgorny/binpkg/arm64-musl/pypy/dev-python/pypy-exe/${MY_P}.gpkg.tar
+ -> ${MY_P}.arm64-musl.gpkg.tar
+ )
+ ppc64? (
+ https://dev.gentoo.org/~mgorny/binpkg/ppc64le-musl/pypy/dev-python/pypy-exe/${MY_P}.gpkg.tar
+ -> ${MY_P}.ppc64le-musl.gpkg.tar
+ )
+ x86? (
+ https://dev.gentoo.org/~mgorny/binpkg/x86-musl/pypy/dev-python/pypy-exe/${MY_P}.gpkg.tar
+ -> ${MY_P}.x86-musl.gpkg.tar
+ )
+ )
+"
+S="${WORKDIR}"
+
+LICENSE="MIT"
+SLOT="${PV%_p*}"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+
+# sys-devel/gcc for libgcc_s.so
+RDEPEND="
+ app-arch/bzip2:0/1
+ dev-libs/expat:0/0
+ dev-libs/libffi:0/8
+ sys-libs/ncurses:0/6
+ >=sys-libs/zlib-1.1.3:0/1
+ virtual/libintl:0/0
+ elibc_glibc? (
+ sys-devel/gcc
+ >=sys-libs/glibc-2.35
+ )
+ !dev-python/pypy-exe:${SLOT}
+"
+
+QA_PREBUILT="
+ usr/lib/pypy2.7/pypy-c-${SLOT}
+"
+
+src_install() {
+ insinto /
+ doins -r */image/usr
+ fperms +x "/usr/lib/pypy2.7/pypy-c-${SLOT}"
+ pax-mark m "${ED}/usr/lib/pypy2.7/pypy-c-${SLOT}"
+}
diff --git a/dev-python/pypy-exe/Manifest b/dev-python/pypy-exe/Manifest
index adfc767b7291..e2ee8da92504 100644
--- a/dev-python/pypy-exe/Manifest
+++ b/dev-python/pypy-exe/Manifest
@@ -1,2 +1,4 @@
DIST pypy2.7-gentoo-patches-7.3.17.tar.xz 5324 BLAKE2B 866f172a6df6f0e94a98c611b37ae58635623e33a47619a5e44658d3908337a3f9029ff7de6997f760c3f1679fc83bfc6ddfb66852c492a581b3336b5eec3ed2 SHA512 6ce5266d0748f3c18a5546aa2bd8479ecb45923eb7df8a140a195e7f7b44999b9167ffdd44f7fd789ddd3a62cd77cb917863b0144180a1127befce1f290e650a
+DIST pypy2.7-gentoo-patches-7.3.18-r1.tar.xz 6828 BLAKE2B 5cd46392d2a7a32335cd52ceaee6f1689d2007576e61787d5e8af00de016b055a172a074004e15179eb3a31f67089e09e6886eac1a88c0993ab131c711effb53 SHA512 80b2d7825458458ad1c3d45be3403494e0487afb5392c7c49adcdc3d663169860c05189ab00a842e9cb59a69fc71050d84fccd65bad9b294370d31ed532f95d6
DIST pypy2.7-v7.3.17-src.tar.bz2 19907140 BLAKE2B de62ebc4e8102867effdecddca64c19c40458b112a6a56ac0c95247047b9f5437a5da68dffb51c14c21bce463c2ca489c6e6a4f86e8cc597b57df2eca707081e SHA512 82b2b9dbf0ea32c405ddc53d98a3a7a153f494d286e8719a0c40960168aadc0f49c3b313416488338f7f51c8fdb58120de41b1d47a8c8eda7db6d4ec4273b4eb
+DIST pypy2.7-v7.3.18-src.tar.bz2 21007839 BLAKE2B 51a9b85ab644ffd142f2570e96f6376c8e75f5bd4882382f11f65f5b816e27305aadac8f9ee1634903845263376e8c718da3bf9c018e213163cdeadbe70bfa35 SHA512 f49763073a67292a780c7f078d90210e08cd1e68168fb4997ee1dccb2a84395dbe650dcfb4af5d1cb07249c5d4abc2c63ffe7c078be9fabcce92bcb4626254ac
diff --git a/dev-python/pypy-exe/pypy-exe-7.3.18.ebuild b/dev-python/pypy-exe/pypy-exe-7.3.18.ebuild
new file mode 100644
index 000000000000..a015fb13ecc1
--- /dev/null
+++ b/dev-python/pypy-exe/pypy-exe-7.3.18.ebuild
@@ -0,0 +1,187 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit check-reqs pax-utils toolchain-funcs
+
+PYPY_PV=${PV%_p*}
+MY_P=pypy2.7-v${PYPY_PV/_}
+PATCHSET="pypy2.7-gentoo-patches-${PV/_}-r1"
+
+DESCRIPTION="PyPy executable (build from source)"
+HOMEPAGE="
+ https://pypy.org/
+ https://github.com/pypy/pypy/
+"
+SRC_URI="
+ https://downloads.python.org/pypy/${MY_P}-src.tar.bz2
+ https://buildbot.pypy.org/pypy/${MY_P}-src.tar.bz2
+ https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz
+"
+S="${WORKDIR}/${MY_P}-src"
+
+LICENSE="MIT"
+SLOT="${PYPY_PV}"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="bzip2 +jit low-memory ncurses cpu_flags_x86_sse2"
+
+DEPEND="
+ >=sys-libs/zlib-1.1.3:0=
+ dev-libs/libffi:0=
+ virtual/libintl:0=
+ dev-libs/expat:0=
+ bzip2? ( app-arch/bzip2:0= )
+ ncurses? ( sys-libs/ncurses:0= )
+"
+RDEPEND="
+ ${DEPEND}
+ !dev-python/pypy-exe-bin:${PYPY_PV}
+"
+# don't enforce the dep on dev-python/pypy with USE=low-memory
+# since it's going to cause circular dep with unhelpful error message
+BDEPEND="
+ !low-memory? (
+ || (
+ dev-lang/pypy:2.7
+ dev-python/pypy
+ dev-lang/python:2.7
+ )
+ )
+"
+
+check_env() {
+ if ! has_version -b dev-lang/pypy:2.7 &&
+ ! has_version -b dev-python/pypy
+ then
+ if use low-memory; then
+ eerror "USE=low-memory requires (a prior version of) dev-python/pypy"
+ eerror "installed."
+ else
+ ewarn "CPython 2.7 will be used to perform the translation. Upstream"
+ ewarn "recommends using (a prior version of) dev-python/pypy instead."
+ fi
+ elog "You can install a prebuilt version of PyPy first using e.g.:"
+ elog " $ emerge -1v dev-python/pypy dev-python/pypy-exe-bin"
+
+ if use low-memory; then
+ die "dev-python/pypy needs to be installed for USE=low-memory"
+ fi
+ fi
+
+ if use low-memory; then
+ CHECKREQS_MEMORY="1750M"
+ use amd64 && CHECKREQS_MEMORY="3500M"
+ else
+ CHECKREQS_MEMORY="3G"
+ use amd64 && CHECKREQS_MEMORY="6G"
+ fi
+
+ check-reqs_pkg_pretend
+}
+
+pkg_pretend() {
+ [[ ${MERGE_TYPE} != binary ]] && check_env
+}
+
+pkg_setup() {
+ [[ ${MERGE_TYPE} != binary ]] && check_env
+}
+
+src_prepare() {
+ local PATCHES=(
+ "${WORKDIR}/${PATCHSET}"
+ )
+ default
+}
+
+src_configure() {
+ tc-export CC
+
+ local jit_backend
+ if use jit; then
+ jit_backend='--jit-backend='
+
+ # We only need the explicit sse2 switch for x86.
+ # On other arches we can rely on autodetection which uses
+ # compiler macros. Plus, --jit-backend= doesn't accept all
+ # the modern values...
+
+ if use x86; then
+ if use cpu_flags_x86_sse2; then
+ jit_backend+=x86
+ else
+ jit_backend+=x86-without-sse2
+ fi
+ else
+ jit_backend+=auto
+ fi
+ fi
+
+ local args=(
+ --no-shared
+ $(usex jit -Ojit -O2)
+
+ ${jit_backend}
+
+ pypy/goal/targetpypystandalone
+ )
+
+ # Avoid linking against libraries disabled by use flags
+ local opts=(
+ bzip2:bz2
+ ncurses:_minimal_curses
+ )
+
+ local opt
+ for opt in "${opts[@]}"; do
+ local flag=${opt%:*}
+ local mod=${opt#*:}
+
+ args+=(
+ $(usex ${flag} --withmod --withoutmod)-${mod}
+ )
+ done
+
+ local interp
+ if use low-memory ||
+ has_version -b dev-lang/pypy:2.7 ||
+ has_version -b dev-python/pypy
+ then
+ einfo "Using already-installed PyPy to perform the translation."
+ interp=( pypy )
+ if use low-memory; then
+ local -x PYPY_GC_MAX_DELTA=200MB
+ interp+=( --jit loop_longevity=300 )
+ fi
+ else
+ einfo "Using CPython 2.7 to perform the translation."
+ interp=( python2.7 )
+
+ # reuse bundled pycparser to avoid external dep
+ mkdir -p "${T}"/pymod/cffi || die
+ : > "${T}"/pymod/cffi/__init__.py || die
+ cp -r lib_pypy/cffi/_pycparser "${T}"/pymod/cffi/ || die
+ local -x PYTHONPATH=${T}/pymod:${PYTHONPATH}
+ fi
+
+ # translate into the C sources
+ # we're going to build them ourselves since otherwise pypy does not
+ # free up the unneeded memory before spawning the compiler
+ set -- "${interp[@]}" rpython/bin/rpython --batch --source "${args[@]}"
+ echo -e "\033[1m${@}\033[0m"
+ "${@}" || die "translation failed"
+}
+
+src_compile() {
+ emake -C "${T}"/usession*-0/testing_1
+}
+
+src_install() {
+ local dest=/usr/lib/pypy2.7
+ exeinto "${dest}"
+ newexe "${T}"/usession*-0/testing_1/pypy-c pypy-c-${PYPY_PV}
+ insinto "${dest}"/include/${PYPY_PV}
+ doins include/pypy_*
+ pax-mark m "${ED}${dest}/pypy-c-${PYPY_PV}"
+}
diff --git a/dev-python/pypy3/pypy3-7.3.18-r100.ebuild b/dev-python/pypy3/pypy3-7.3.18-r100.ebuild
new file mode 100644
index 000000000000..8af5e436abf5
--- /dev/null
+++ b/dev-python/pypy3/pypy3-7.3.18-r100.ebuild
@@ -0,0 +1,18 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DESCRIPTION="A backwards compatibility package for dev-lang/pypy:3.11"
+HOMEPAGE="
+ https://pypy.org/
+ https://foss.heptapod.net/pypy/pypy/
+"
+
+LICENSE="metapackage"
+SLOT="0/pypy311-pp73-400"
+IUSE="+gdbm ncurses sqlite +test-install tk"
+
+RDEPEND="
+ =dev-lang/pypy-3.11.${PV}*:3.11/${SLOT#*/}[gdbm?,ncurses?,sqlite?,symlink,test-install?,tk?]
+"
diff --git a/dev-python/pypy3/pypy3-7.3.18.ebuild b/dev-python/pypy3/pypy3-7.3.18.ebuild
new file mode 100644
index 000000000000..29a856f0396d
--- /dev/null
+++ b/dev-python/pypy3/pypy3-7.3.18.ebuild
@@ -0,0 +1,19 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DESCRIPTION="A backwards compatibility package for dev-lang/pypy:3.10"
+HOMEPAGE="
+ https://pypy.org/
+ https://foss.heptapod.net/pypy/pypy/
+"
+
+LICENSE="metapackage"
+SLOT="0/pypy310-pp73-384"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="+gdbm ncurses sqlite +test-install tk"
+
+RDEPEND="
+ =dev-lang/pypy-3.10.${PV}*:3.10/${SLOT#*/}[gdbm?,ncurses?,sqlite?,symlink,test-install?,tk?]
+"
diff --git a/dev-python/pypy3_10-exe-bin/Manifest b/dev-python/pypy3_10-exe-bin/Manifest
index 76865ea0feed..bb2de1f869dd 100644
--- a/dev-python/pypy3_10-exe-bin/Manifest
+++ b/dev-python/pypy3_10-exe-bin/Manifest
@@ -6,3 +6,11 @@ DIST pypy3_10-exe-7.3.17-1.ppc64le-musl.gpkg.tar 6819840 BLAKE2B 1cc0c5c2c82f831
DIST pypy3_10-exe-7.3.17-1.ppc64le.gpkg.tar 10393600 BLAKE2B da4c97f4d5ee546d776ba937d3736033ded7f5cc0a17e39fd657952b834fe6c002d3c33cfc7b16572f07dd0421040d4bb82e897a101ac129a6082961d0d02c7d SHA512 c49c67eee76f604146aadfcc600312e028bb9f6a24560eefd1dec7e9e0c7304e0a1ce89fdf6229b50b51cd17fb50b89815d937ccac3ef5fcc1ef8ff99af5f237
DIST pypy3_10-exe-7.3.17-1.x86-musl.gpkg.tar 9103360 BLAKE2B 80202a4f66bec51176c29f2506a28ac296e63dd89102c68f62cfb868f455ac51a1e49557962c271e2a99b41001ad21b56790bb05aead361d59b7bea2c526721f SHA512 d7345e886c0ab4c8de987f5daaaddaa9983864e6343f3f64e85607ed897530f19fae653d412eb076b232ff6e7d52fdda4da0b05b4b4767ac1ac669a512e6fe6c
DIST pypy3_10-exe-7.3.17-1.x86.gpkg.tar 9154560 BLAKE2B c388c0bed60fafddf5edc2f0bae19e04e643cc1ca44bd99f2b7b84c8b71d1a685faa48886aab3b5b2137b90ae3ebfa7b41fc6f98bcd99203f7997299ec52f274 SHA512 5c2ab169b5ece9c7c8fb9972ac74cf2aa8c5f385fd805800183ed8c0845540185065aff388b2d0ad56d901365454979c9051e70ec5ff2a9f7059b2812555f8ff
+DIST pypy3_10-exe-7.3.18-1.amd64-musl.gpkg.tar 12226560 BLAKE2B b8a4c3536ac0766d273f39329c9166b37a1685bdec54da6bfe1216e9f8a7aea553b2419b834dc19de1a561dec210be216efd078b56a37bca51cb47373012b52c SHA512 b3ebb3e280000108e1b35694a48c8e6a8c9564d1b17d04861f5a06df9a857046645a090ba32384845cf9c440df4bdd37d392d8d308e65241e0b269cf3f93fe23
+DIST pypy3_10-exe-7.3.18-1.amd64.gpkg.tar 12206080 BLAKE2B 657aff6618c542a7b8c1758e75b6c789ffddbf93b1f012e1ae89a05c6806c1674589159f4d4d667d42a6d9b3533183ac9d9b539e5bb67acb32d1a3f9d1c16fe2 SHA512 fc977d05a36e2b898fa3ec0c2cac7f7366873fbe60bf43f76074203c2d789d263230760740ac677c7c9b420d25e5a63d1d59056ecb16b98b5bd8726797d6a517
+DIST pypy3_10-exe-7.3.18-1.arm64-musl.gpkg.tar 10342400 BLAKE2B 4a7a2843cc02b8f1f54122eddc9645127080b97f82cb61d02c569a804fbac280a75748b6e870e2bf9a1d22bec55a3e1f723d9a11b50a110021378c70a8b63fa0 SHA512 48a280c50d16385ab1cb698060b1fec4a6a45b613949563efc8626a10ebc9da2c9880b6fb2261bde08d255d61e686b32505b3dfe338a2f9b841908ba4139321a
+DIST pypy3_10-exe-7.3.18-1.arm64.gpkg.tar 10332160 BLAKE2B e07d739fc90abf8876aee0bec6cee38465639b64ad64493b9f9c50e83f04e0778b7881c5efeabd42365b57fd5c1cfb84098381c3f0be922502505edd592b1b65 SHA512 575cc369b40884da033723621f7fb7896e36d1be0b923b6d70a598e89def22163ec316d0687d8f4ae4f6336a937c0b938c6daf607413d2834fd693c8b77e59fc
+DIST pypy3_10-exe-7.3.18-1.x86-musl.gpkg.tar 9195520 BLAKE2B 1fbc8ccbfe979e364e06dbcdd91ee588bdddf3a537748f18897fb1c805b07c569d81432c9511b0ea04b9bda9ea9ccadb13e180189d003ee4c61e3f124ef11a72 SHA512 5dfb05c3d82f41f992df37f43d4a8ea1063bae82778db024c8705cb2208c71a9440ad1c3a2cc44f538f7960d8895a75c51ad8fc8bfc4d3c149c239f9818280d4
+DIST pypy3_10-exe-7.3.18-1.x86.gpkg.tar 9164800 BLAKE2B 8fa61124e6d18b91966d0368fba02c85ac9a2a356456914d941139c861e4976dbc75b02b3eada45db03b4f5cc7a2534f4c405f6c5e387bfa4ce6bf622e13de5b SHA512 bd7594744bb23e4c93c9f94fdd29c7a46ae9188c1e8c0d42de3e179d273c210f14084ca137fa7a6f8857e64f88d78ace2751550bca452ddf528bfae90c355dab
+DIST pypy3_10-exe-7.3.18-2.ppc64le-musl.gpkg.tar 6830080 BLAKE2B bd43beaf69cbf50dcc752bfe6f11510baaf511aef372d73712885294d0fc22e940b79635729af406283ec9ef9cb5f4cefdfaba00ccb0a2542f6f476c27130b87 SHA512 cc0ef81c22db18f44eb400b710a9ef18cb9582b1838e0aafad30ee62fdca3ef071fe941a464cc86f939dc6733ad65a22a3918269a32bc15f2bc537bd88b8a95c
+DIST pypy3_10-exe-7.3.18-2.ppc64le.gpkg.tar 10506240 BLAKE2B ae1946a52d3862be091537e0fc752ac75df3844224dacaa7844ed74d9f28cb8fb6558c1b1de6d205117bef90f4f6286912bf27d831c9680cfdff3c9e500bd19d SHA512 95bfd88df1517527ac5239c4871847373043a6d821cfab27486f953536c6a62e4c651efed5ec932f291f7e39ed3f93ced74843c035c9e80b2723cf30822becd5
diff --git a/dev-python/pypy3_10-exe-bin/pypy3_10-exe-bin-7.3.18-r1.ebuild b/dev-python/pypy3_10-exe-bin/pypy3_10-exe-bin-7.3.18-r1.ebuild
new file mode 100644
index 000000000000..e7295aaeb0c2
--- /dev/null
+++ b/dev-python/pypy3_10-exe-bin/pypy3_10-exe-bin-7.3.18-r1.ebuild
@@ -0,0 +1,86 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit pax-utils unpacker
+
+PYVER=3.10
+MY_P=pypy3_10-exe-${PV}-1
+PPC64_P=pypy3_10-exe-${PV}-2
+
+DESCRIPTION="PyPy3.10 executable (pre-built version)"
+HOMEPAGE="
+ https://pypy.org/
+ https://github.com/pypy/pypy/
+"
+SRC_URI="
+ elibc_glibc? (
+ amd64? (
+ https://dev.gentoo.org/~mgorny/binpkg/amd64/pypy/dev-python/pypy3_10-exe/${MY_P}.gpkg.tar
+ -> ${MY_P}.amd64.gpkg.tar
+ )
+ arm64? (
+ https://dev.gentoo.org/~mgorny/binpkg/arm64/pypy/dev-python/pypy3_10-exe/${MY_P}.gpkg.tar
+ -> ${MY_P}.arm64.gpkg.tar
+ )
+ ppc64? (
+ https://dev.gentoo.org/~mgorny/binpkg/ppc64le/pypy/dev-python/pypy3_10-exe/${MY_P}.gpkg.tar
+ -> ${PPC64_P}.ppc64le.gpkg.tar
+ )
+ x86? (
+ https://dev.gentoo.org/~mgorny/binpkg/x86/pypy/dev-python/pypy3_10-exe/${MY_P}.gpkg.tar
+ -> ${MY_P}.x86.gpkg.tar
+ )
+ )
+ elibc_musl? (
+ amd64? (
+ https://dev.gentoo.org/~mgorny/binpkg/amd64-musl/pypy/dev-python/pypy3_10-exe/${MY_P}.gpkg.tar
+ -> ${MY_P}.amd64-musl.gpkg.tar
+ )
+ arm64? (
+ https://dev.gentoo.org/~mgorny/binpkg/arm64-musl/pypy/dev-python/pypy3_10-exe/${MY_P}.gpkg.tar
+ -> ${MY_P}.arm64-musl.gpkg.tar
+ )
+ ppc64? (
+ https://dev.gentoo.org/~mgorny/binpkg/ppc64le-musl/pypy/dev-python/pypy3_10-exe/${MY_P}.gpkg.tar
+ -> ${PPC64_P}.ppc64le-musl.gpkg.tar
+ )
+ x86? (
+ https://dev.gentoo.org/~mgorny/binpkg/x86-musl/pypy/dev-python/pypy3_10-exe/${MY_P}.gpkg.tar
+ -> ${MY_P}.x86-musl.gpkg.tar
+ )
+ )
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="MIT"
+SLOT="${PV%_p*}"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+
+# sys-devel/gcc for libgcc_s.so
+RDEPEND="
+ app-arch/bzip2:0/1
+ dev-libs/expat:0/0
+ dev-libs/libffi:0/8
+ sys-libs/ncurses:0/6
+ >=sys-libs/zlib-1.1.3:0/1
+ virtual/libintl:0/0
+ elibc_glibc? (
+ sys-devel/gcc
+ >=sys-libs/glibc-2.35
+ )
+ !dev-python/pypy3_10-exe:${SLOT}
+"
+
+PYPY_PV=${PV%_p*}
+QA_PREBUILT="
+ usr/bin/pypy${PYVER}-c-${PYPY_PV}
+"
+
+src_install() {
+ insinto /
+ doins -r image/usr
+ fperms +x "/usr/bin/pypy${PYVER}-c-${PYPY_PV}"
+ pax-mark m "${ED}/usr/bin/pypy${PYVER}-c-${PYPY_PV}"
+}
diff --git a/dev-python/pypy3_10-exe/Manifest b/dev-python/pypy3_10-exe/Manifest
index 30cc28fd6cdc..fede9538766f 100644
--- a/dev-python/pypy3_10-exe/Manifest
+++ b/dev-python/pypy3_10-exe/Manifest
@@ -1,2 +1,4 @@
DIST pypy3.10-gentoo-patches-7.3.17.tar.xz 10340 BLAKE2B a9d7dc6a578dc50339574b2fcfff19e390293adfc8412592e4683fdd3ff415ed8da3ff809b00037659a6e218dc0b26efead7a2ae3c54b2c3487222144d5d9633 SHA512 b192685cc100cfb723492d29e89a522bb4ff041c78cbdfd170414e19713cf2a21c39ab8d4e1e9ca47da2559b2fed6df14f1122f96bc50dd117550c357046889a
+DIST pypy3.10-gentoo-patches-7.3.18-r2.tar.xz 6760 BLAKE2B dca4c423a0789042b548dfc117502adcd272b9617910295fb39b1a452ae03f3f100c4516b63a71d043a3fede8df69f4ede6e83a58c2a19eafab86cc1361f6790 SHA512 0c8ff0e896b082dfeff0aa57bac1070f3485cafb43b888cae6d53fd220aa2438ae1cb8292dd34ee64f67bf5e50d52b2c6bf8f7304b61c1861accf7fbb2824d86
DIST pypy3.10-v7.3.17-src.tar.bz2 23350562 BLAKE2B 0a7a091976b352de61057f238fa386f767dd4d2fbcdcc0b4376066c20c2ad35d3818fa6e9e163ab5fd341856802e8ad1e2891decf5948c13cdb26726cd42019e SHA512 46e30845bbc73cf56f5033a24d3583253ce198522f3a28ae4e789884063ba167d401fc08ae7fc8c7769feed9cd942a8ab38961c8b8794d7fae8f9955479faa96
+DIST pypy3.10-v7.3.18-src.tar.bz2 24535433 BLAKE2B 2e5ab213db5cd118076fa3b0bd601818a2a4973134b78ce28056182d635b91719159e6be47cd596407b7cc545b0be957db21322dde0fbba1b1d167e5c6cd80c4 SHA512 8eb3bd618d04f4529b5869549c9208bfe465b5aae6240abe8b252681c16b44ba3d1b2c77ea4dc607a8738479c47e4a1c92f3ead7705b476167790b33c85a3b0f
diff --git a/dev-python/pypy3_10-exe/pypy3_10-exe-7.3.18.ebuild b/dev-python/pypy3_10-exe/pypy3_10-exe-7.3.18.ebuild
new file mode 100644
index 000000000000..67a0a336a02d
--- /dev/null
+++ b/dev-python/pypy3_10-exe/pypy3_10-exe-7.3.18.ebuild
@@ -0,0 +1,139 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit check-reqs flag-o-matic pax-utils toolchain-funcs
+
+PYPY_PV=${PV%_p*}
+PYVER=3.10
+MY_P="pypy${PYVER}-v${PYPY_PV/_}"
+PATCHSET="pypy${PYVER}-gentoo-patches-${PV}-r2"
+
+DESCRIPTION="PyPy3.10 executable (build from source)"
+HOMEPAGE="
+ https://pypy.org/
+ https://github.com/pypy/pypy/
+"
+SRC_URI="
+ https://downloads.python.org/pypy/${MY_P}-src.tar.bz2
+ https://buildbot.pypy.org/pypy/${MY_P}-src.tar.bz2
+ https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz
+"
+S="${WORKDIR}/${MY_P}-src"
+
+LICENSE="MIT"
+SLOT="${PYPY_PV}"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="+jit low-memory ncurses cpu_flags_x86_sse2"
+
+RDEPEND="
+ app-arch/bzip2:0=
+ dev-libs/expat:0=
+ dev-libs/libffi:0=
+ >=sys-libs/zlib-1.1.3:0=
+ virtual/libintl:0=
+ ncurses? ( sys-libs/ncurses:0= )
+ !dev-python/pypy3_10-exe-bin:${SLOT}
+"
+DEPEND="
+ ${RDEPEND}
+"
+BDEPEND="
+ || (
+ dev-lang/pypy:2.7
+ dev-python/pypy
+ )
+ virtual/pkgconfig
+"
+
+check_env() {
+ if use low-memory; then
+ CHECKREQS_MEMORY="1750M"
+ use amd64 && CHECKREQS_MEMORY="3500M"
+ else
+ CHECKREQS_MEMORY="3G"
+ use amd64 && CHECKREQS_MEMORY="6G"
+ fi
+
+ check-reqs_pkg_pretend
+}
+
+pkg_pretend() {
+ [[ ${MERGE_TYPE} != binary ]] && check_env
+}
+
+pkg_setup() {
+ [[ ${MERGE_TYPE} != binary ]] && check_env
+}
+
+src_prepare() {
+ local PATCHES=(
+ "${WORKDIR}/${PATCHSET}"
+ )
+ default
+}
+
+src_configure() {
+ tc-export CC
+
+ # Yes, yuck, but it's being worked on upstream (bug #918971).
+ # https://foss.heptapod.net/pypy/pypy/-/issues/4042
+ append-flags $(test-flags-CC -Wno-error=incompatible-pointer-types)
+
+ local jit_backend
+ if use jit; then
+ jit_backend='--jit-backend='
+
+ # We only need the explicit sse2 switch for x86.
+ # On other arches we can rely on autodetection which uses
+ # compiler macros. Plus, --jit-backend= doesn't accept all
+ # the modern values...
+
+ if use x86; then
+ if use cpu_flags_x86_sse2; then
+ jit_backend+=x86
+ else
+ jit_backend+=x86-without-sse2
+ fi
+ else
+ jit_backend+=auto
+ fi
+ fi
+
+ local args=(
+ --no-shared
+ $(usex jit -Ojit -O2)
+
+ ${jit_backend}
+
+ pypy/goal/targetpypystandalone
+ --withmod-bz2
+ $(usex ncurses --with{,out}mod-_minimal_curses)
+ )
+
+ local interp=( pypy )
+ if use low-memory; then
+ local -x PYPY_GC_MAX_DELTA=200MB
+ interp+=( --jit loop_longevity=300 )
+ fi
+
+ # translate into the C sources
+ # we're going to build them ourselves since otherwise pypy does not
+ # free up the unneeded memory before spawning the compiler
+ set -- "${interp[@]}" rpython/bin/rpython --batch --source "${args[@]}"
+ echo -e "\033[1m${@}\033[0m"
+ "${@}" || die "translation failed"
+}
+
+src_compile() {
+ emake -C "${T}"/usession*-0/testing_1
+}
+
+src_install() {
+ cd "${T}"/usession*-0 || die
+ newbin "testing_1/pypy${PYVER}-c" "pypy${PYVER}-c-${PYPY_PV}"
+ insinto "/usr/include/pypy${PYVER}/${PYPY_PV}"
+ doins *.h
+ pax-mark m "${ED}/usr/bin/pypy${PYVER}-c-${PYPY_PV}"
+}
diff --git a/dev-python/pyqt6/Manifest b/dev-python/pyqt6/Manifest
index 5184766b8d02..bc205191abcc 100644
--- a/dev-python/pyqt6/Manifest
+++ b/dev-python/pyqt6/Manifest
@@ -1 +1,2 @@
DIST PyQt6-6.8.0.tar.gz 1061357 BLAKE2B da944a8ec6c5632cb24d56b5a268521cbf3ae17d307ec5aba292bf5f25e33cb2e92fef28c1bcc506c4e5ea60c9e2f714bfd2a95aefe2cc40726b4ec9fccb36cb SHA512 da57be66ede5fe1355ab1fd95e436c139e0d1dffc75f23f3933c20623d62fc9b9fad573d876e90d066588d2dc2f01e83771a0f05fe3b668fbb69a889ddfbcc15
+DIST pyqt6-6.8.1.tar.gz 1064723 BLAKE2B 99ac44fe250b6ff7a1762df5d668b69ad424dc1b563147be7ba94ce7f00729c29ce17be4cd7c39b276549199b66d877dec69e9eeb6b394ed42f944f9155825fa SHA512 87727369168fde6e3edc488f96dd13d537f026e207e4b4ab1c95d09bf85859512a117dfc801249e0891425a6b5579830724e4145f370e2ef9909788f56eb4df6
diff --git a/dev-python/pyqt6/metadata.xml b/dev-python/pyqt6/metadata.xml
index 4672aed86173..a018da8b5489 100644
--- a/dev-python/pyqt6/metadata.xml
+++ b/dev-python/pyqt6/metadata.xml
@@ -22,6 +22,7 @@
<flag name="quick">Build bindings for the QtQuick module</flag>
<flag name="quick3d">Build bindings for the QtQuick3D module</flag>
<flag name="remoteobjects">Build bindings for the QtRemoteObjects module</flag>
+ <flag name="scxml">Build bindings for the QtSCXML module</flag>
<flag name="sensors">Build bindings for the QtSensors module</flag>
<flag name="serialport">Build bindings for the QtSerialPort module</flag>
<flag name="spatialaudio">Build bindings for the QtSpatialAudio module</flag>
diff --git a/dev-python/pyqt6/pyqt6-6.8.1.ebuild b/dev-python/pyqt6/pyqt6-6.8.1.ebuild
new file mode 100644
index 000000000000..524c13d1af94
--- /dev/null
+++ b/dev-python/pyqt6/pyqt6-6.8.1.ebuild
@@ -0,0 +1,190 @@
+# Copyright 2022-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=sip
+PYTHON_COMPAT=( python3_{10..13} )
+inherit distutils-r1 flag-o-matic multiprocessing pypi qmake-utils
+
+# 'can' work with older Qt depending on features, but keeping it simple
+QT_PV=$(ver_cut 1-2):6
+
+DESCRIPTION="Python bindings for the Qt framework"
+HOMEPAGE="https://www.riverbankcomputing.com/software/pyqt/"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+# defaults match what is provided with qtbase by default (except testlib),
+# reduces the need to set flags but does increase build time a fair amount
+IUSE="
+ bluetooth +dbus debug designer examples gles2-only +gui help
+ multimedia +network nfc opengl pdfium positioning +printsupport
+ qml quick quick3d remoteobjects scxml serialport sensors
+ spatialaudio speech +sql +ssl svg testlib webchannel websockets
+ vulkan +widgets +xml
+"
+# see `grep -r "%Import " sip` and `grep qmake_QT project.py`
+REQUIRED_USE="
+ designer? ( gui widgets )
+ help? ( gui widgets )
+ multimedia? ( gui network )
+ opengl? ( gui )
+ pdfium? ( gui )
+ printsupport? ( gui widgets )
+ qml? ( network )
+ quick3d? ( gui qml )
+ quick? ( gui qml )
+ remoteobjects? ( network )
+ scxml? ( gui )
+ spatialaudio? ( multimedia )
+ sql? ( widgets )
+ svg? ( gui )
+ testlib? ( gui widgets )
+ vulkan? ( gui )
+ webchannel? ( network )
+ websockets? ( network )
+ widgets? ( gui )
+"
+
+# may use qt private symbols wrt qtbase's :=
+# non-trivially broken with Qt6.8 wrt upper bound, waiting for PyQt6-6.8.0
+COMMON_DEPEND="
+ >=dev-qt/qtbase-${QT_PV}=[dbus?,gles2-only=,gui?,network?,opengl?,sql?,ssl=,vulkan?,widgets?,xml?]
+ bluetooth? ( >=dev-qt/qtconnectivity-${QT_PV}[bluetooth] )
+ dbus? (
+ dev-python/dbus-python[${PYTHON_USEDEP}]
+ sys-apps/dbus
+ )
+ designer? ( >=dev-qt/qttools-${QT_PV}[designer] )
+ help? ( >=dev-qt/qttools-${QT_PV}[assistant] )
+ multimedia? ( >=dev-qt/qtmultimedia-${QT_PV} )
+ nfc? ( >=dev-qt/qtconnectivity-${QT_PV}[nfc] )
+ opengl? (
+ gles2-only? ( media-libs/libglvnd )
+ )
+ pdfium? ( >=dev-qt/qtwebengine-${QT_PV}[pdfium,widgets?] )
+ positioning? ( >=dev-qt/qtpositioning-${QT_PV} )
+ qml? ( >=dev-qt/qtdeclarative-${QT_PV}[widgets?] )
+ quick3d? ( >=dev-qt/qtquick3d-${QT_PV} )
+ quick? ( >=dev-qt/qtdeclarative-${QT_PV}[opengl] )
+ remoteobjects? ( >=dev-qt/qtremoteobjects-${QT_PV} )
+ scxml? ( >=dev-qt/qtscxml-${QT_PV} )
+ sensors? ( >=dev-qt/qtsensors-${QT_PV} )
+ serialport? ( >=dev-qt/qtserialport-${QT_PV} )
+ speech? (
+ >=dev-qt/qtdeclarative-${QT_PV}
+ >=dev-qt/qtspeech-${QT_PV}
+ )
+ svg? ( >=dev-qt/qtsvg-${QT_PV} )
+ webchannel? ( >=dev-qt/qtwebchannel-${QT_PV} )
+ websockets? ( >=dev-qt/qtwebsockets-${QT_PV} )
+"
+RDEPEND="
+ ${COMMON_DEPEND}
+ >=dev-python/pyqt6-sip-13.8[${PYTHON_USEDEP}]
+"
+DEPEND="
+ ${COMMON_DEPEND}
+ vulkan? ( dev-util/vulkan-headers )
+"
+BDEPEND="
+ >=dev-python/pyqt-builder-1.17[${PYTHON_USEDEP}]
+ >=dev-python/sip-6.9[${PYTHON_USEDEP}]
+ >=dev-qt/qtbase-${QT_PV}
+ dbus? ( virtual/pkgconfig )
+"
+
+src_prepare() {
+ default
+
+ # hack: PyQt-builder runs qmake without our arguments and calls g++
+ # or clang++ depending on what qtbase was built with, not used for
+ # building but fails with -native-symlinks
+ mkdir "${T}"/cxx || die
+ local cxx
+ ! cxx=$(type -P "${CHOST}"-g++) || ln -s -- "${cxx}" "${T}"/cxx/g++ || die
+ ! cxx=$(type -P "${CHOST}"-clang++) || ln -s -- "${cxx}" "${T}"/cxx/clang++ || die
+ PATH=${T}/cxx:${PATH}
+}
+
+python_configure_all() {
+ append-cxxflags -std=c++17 # for old gcc / clang that use <17 (bug #892331)
+ append-cxxflags ${CPPFLAGS} # respect CPPFLAGS notably for DISTUTILS_EXT=1
+
+ pyqt_use_enable() {
+ local state=$(usex ${1} --enable= --disable=)
+ shift
+ echo ${*/#/${state}}
+ }
+
+ DISTUTILS_ARGS=(
+ --jobs="$(makeopts_jobs)"
+ --qmake="$(qt6_get_bindir)"/qmake
+ --qmake-setting="$(qt6_get_qmake_args)"
+ --verbose
+ --confirm-license
+
+ --enable=QtCore
+
+ $(pyqt_use_enable bluetooth QtBluetooth)
+ $(pyqt_use_enable dbus QtDBus)
+ $(pyqt_use_enable designer QtDesigner)
+ $(pyqt_use_enable help QtHelp)
+ $(pyqt_use_enable gui QtGui)
+ #--disable=QtLocation # force-disabled in project.py
+ $(pyqt_use_enable multimedia QtMultimedia \
+ $(usev widgets QtMultimediaWidgets))
+ $(pyqt_use_enable network QtNetwork)
+ $(pyqt_use_enable nfc QtNfc)
+ $(pyqt_use_enable opengl QtOpenGL \
+ $(usev widgets QtOpenGLWidgets))
+ $(pyqt_use_enable pdfium QtPdf \
+ $(usev widgets QtPdfWidgets))
+ $(pyqt_use_enable positioning QtPositioning)
+ $(pyqt_use_enable printsupport QtPrintSupport)
+ $(pyqt_use_enable qml QtQml)
+ $(pyqt_use_enable quick QtQuick \
+ $(usev widgets QtQuickWidgets))
+ $(pyqt_use_enable quick3d QtQuick3D)
+ $(pyqt_use_enable remoteobjects QtRemoteObjects)
+ $(pyqt_use_enable scxml QtStateMachine)
+ $(pyqt_use_enable sensors QtSensors)
+ $(pyqt_use_enable serialport QtSerialPort)
+ $(pyqt_use_enable spatialaudio QtSpatialAudio)
+ $(pyqt_use_enable sql QtSql)
+ $(pyqt_use_enable svg QtSvg \
+ $(usev widgets QtSvgWidgets))
+ $(pyqt_use_enable testlib QtTest)
+ $(pyqt_use_enable speech QtTextToSpeech)
+ $(pyqt_use_enable webchannel QtWebChannel)
+ $(pyqt_use_enable websockets QtWebSockets)
+ $(pyqt_use_enable widgets QtWidgets)
+ $(pyqt_use_enable xml QtXml)
+
+ $(usev debug '--debug --qml-debug --tracing')
+
+ $(usev !dbus --no-dbus-python)
+ # note: upstream currently intentionally skips installing these two
+ # plugins when using wheels w/ pep517 so, *if* something does need
+ # them, it will need to be handled manually
+ $(usev !designer --no-designer-plugin)
+ $(usev !qml --no-qml-plugin)
+
+ $(usev !gles2-only --disabled-feature=PyQt_OpenGL_ES2)
+ $(usev !opengl --disabled-feature=PyQt_OpenGL)
+ $(usev !ssl --disabled-feature=PyQt_SSL)
+ $(usev !vulkan --disabled-feature=PyQt_Vulkan)
+
+ # intended for Windows / Android or others
+ --disable=QAxContainer
+ --disabled-feature=PyQt_Permissions
+ )
+}
+
+python_install_all() {
+ einstalldocs
+ use examples && dodoc -r examples
+}
diff --git a/dev-python/pyside6/Manifest b/dev-python/pyside/Manifest
index 68e216d91778..f8b5c86f4f41 100644
--- a/dev-python/pyside6/Manifest
+++ b/dev-python/pyside/Manifest
@@ -1,2 +1,3 @@
DIST pyside-pyside-setup-6.8.1.1.gh.tar.gz 18699613 BLAKE2B 2c16f305a746106edc770c267900b31fe480b167a615adc82496e0604cc618982bb787a0c173b069c258749364d7d2cac900d8d8b82244fc3b916744b7339537 SHA512 bd258be6e4c5f0b6b4bbdf8887e5f8ab16a90117deb00f9c46c4acb7f6bbcc36fb9f6b6e7c201403556e0ee269947a5f5b2611ff1b05e48f231f81b1eeac7bce
DIST pyside-pyside-setup-6.8.1.gh.tar.gz 18700869 BLAKE2B 5924f8ffc3e5a4f15442af9191b0531ee9f509595d41ae2759b94c2a7f8d7e08f4a70f9c7fff07f11c5252afb77084dc21ca3b22762d6c8dd66f4fca5944c9f2 SHA512 941844b1f6711859add828cbefe7c39497d45f0936f970f3050631294ed3bfe88d9d7b827a81d61ba3efbbf7920daef6ea6c28fa9c78f8e672d68b8bd3fbb2ad
+DIST pyside-pyside-setup-6.8.2.gh.tar.gz 19305680 BLAKE2B d4da8ec63d35714bf4418cdc9ff5921fe554c1635a7c5c467657b64c2140208b4bba57fc9932f0f96426e1d15c124209b0b29eb9340261d34eed194128a03545 SHA512 30691d27afaeaa3117e68b60745918d9697c8d9e4ee8941eaab51995cb5128c56d44964511f2db731f448bf32219160032e4a4cd4773d3fccc4de8c0e509d1c1
diff --git a/dev-python/pyside6/files/pyside6-6.3.1-no-strip.patch b/dev-python/pyside/files/pyside-6.3.1-no-strip.patch
index 9f3a8c396f05..9f3a8c396f05 100644
--- a/dev-python/pyside6/files/pyside6-6.3.1-no-strip.patch
+++ b/dev-python/pyside/files/pyside-6.3.1-no-strip.patch
diff --git a/dev-python/pyside6/files/pyside6-6.6.0-no-qtexampleicons.patch b/dev-python/pyside/files/pyside-6.6.0-no-qtexampleicons.patch
index f775310504f4..f775310504f4 100644
--- a/dev-python/pyside6/files/pyside6-6.6.0-no-qtexampleicons.patch
+++ b/dev-python/pyside/files/pyside-6.6.0-no-qtexampleicons.patch
diff --git a/dev-python/pyside/files/pyside-6.8.2-no-qtexampleicons.patch b/dev-python/pyside/files/pyside-6.8.2-no-qtexampleicons.patch
new file mode 100644
index 000000000000..29adbe25d479
--- /dev/null
+++ b/dev-python/pyside/files/pyside-6.8.2-no-qtexampleicons.patch
@@ -0,0 +1,10 @@
+diff --git a/sources/pyside6/CMakeLists.txt b/sources/pyside6/CMakeLists.txt
+index 2e4c701..6792258 100644
+--- a/sources/pyside6/CMakeLists.txt
++++ b/sources/pyside6/CMakeLists.txt
+@@ -41,5 +41,3 @@ if(BUILD_TESTS)
+ endif()
+
+ add_subdirectory(doc)
+-
+-add_subdirectory(qtexampleicons)
diff --git a/dev-python/pyside/files/pyside-6.8.2-quick-fix-build-wheel.patch b/dev-python/pyside/files/pyside-6.8.2-quick-fix-build-wheel.patch
new file mode 100644
index 000000000000..7cf0f46e87b1
--- /dev/null
+++ b/dev-python/pyside/files/pyside-6.8.2-quick-fix-build-wheel.patch
@@ -0,0 +1,17 @@
+diff --git a/build_scripts/wheel_override.py b/build_scripts/wheel_override.py
+index b389bb8..71de230 100644
+--- a/build_scripts/wheel_override.py
++++ b/build_scripts/wheel_override.py
+@@ -20,9 +20,9 @@ try:
+
+ from packaging import tags
+ from wheel import __version__ as wheel_version
+- from wheel.bdist_wheel import bdist_wheel as _bdist_wheel
+- from wheel.bdist_wheel import get_abi_tag, get_platform
+- from wheel.bdist_wheel import safer_name as _safer_name
++ from wheel._bdist_wheel import bdist_wheel as _bdist_wheel
++ from wheel._bdist_wheel import get_abi_tag, get_platform
++ from wheel._bdist_wheel import safer_name as _safer_name
+
+ wheel_module_exists = True
+ except Exception as e:
diff --git a/dev-python/pyside6/metadata.xml b/dev-python/pyside/metadata.xml
index d4c2e9662fd1..c760fb957e04 100644
--- a/dev-python/pyside6/metadata.xml
+++ b/dev-python/pyside/metadata.xml
@@ -14,6 +14,7 @@
<flag name="bluetooth">Build QtBluetooth module</flag>
<flag name="charts">Build QtCharts module</flag>
<flag name="concurrent">Build QtConcurrent module</flag>
+ <flag name="core">Build QtCore module, if disable then only shiboken will be built</flag>
<flag name="designer">Build QtDesigner and QtUiTools modules</flag>
<flag name="gles2-only">Build QtGui "QOpenGL*" classes</flag>
<flag name="gui">Build QtGui module</flag>
@@ -24,6 +25,7 @@
<flag name="network">Build QtNetwork module</flag>
<flag name="network-auth">Build QtNetworkAuth module</flag>
<flag name="nfc">Build QtNfc module</flag>
+ <flag name="numpy">Build with support for <pkg>dev-python/numpy</pkg></flag>
<flag name="pdfium">Build QtPdf module</flag>
<flag name="positioning">Build QtPositioning module</flag>
<flag name="printsupport">Build QtPrintSupport module</flag>
@@ -32,6 +34,7 @@
<flag name="quick3d">Build QtQuick3D and QtQuickWidgets modules</flag>
<flag name="scxml">Build QtScxml module</flag>
<flag name="sensors">Build QtSensors module</flag>
+ <flag name="serialbus">Build QtSerialBus modules</flag>
<flag name="serialport">Build QtSerialPort modules</flag>
<flag name="spatialaudio">Build QtSpatialAudio module</flag>
<flag name="speech">Build QtTextToSpeech module</flag>
@@ -39,15 +42,18 @@
<flag name="svg">Build QtSvg module</flag>
<flag name="remoteobjects">Build QtRemoteObjects module</flag>
<flag name="testlib">Build QtTest module</flag>
+ <flag name="tools">Build PySide Tools</flag>
<flag name="uitools">Build UITools module</flag>
<flag name="webchannel">Build QtWebChannel module</flag>
<flag name="webengine">Build QtWebEngine and QtWebEngineWidgets modules</flag>
<flag name="websockets">Build QtWebSockets module</flag>
+ <flag name="webview">Build QtWebView module</flag>
<flag name="widgets">Build QtWidgets module</flag>
<flag name="xml">Build QtXml module</flag>
</use>
<upstream>
<remote-id type="pypi">PySide6</remote-id>
+ <remote-id type="pypi">shiboken6</remote-id>
<remote-id type="github">qtproject/pyside-pyside-setup</remote-id>
</upstream>
</pkgmetadata>
diff --git a/dev-python/pyside6/pyside6-6.8.1.1.ebuild b/dev-python/pyside/pyside-6.8.1.1.ebuild
index 1964cf1dbe7b..89ab1f8e8b99 100644
--- a/dev-python/pyside6/pyside6-6.8.1.1.ebuild
+++ b/dev-python/pyside/pyside-6.8.1.1.ebuild
@@ -124,7 +124,7 @@ RDEPEND="${PYTHON_DEPS}
)
)
websockets? ( =dev-qt/qtwebsockets-${QT_PV} )
- !dev-python/pyside6:0
+ !dev-python/pyside:0
"
DEPEND="${RDEPEND}
$(llvm_gen_dep '
@@ -234,12 +234,12 @@ src_install() {
# file for the current Python target. See also:
# https://github.com/leycec/raiagent/issues/73
sed -i -e 's~^Requires: shiboken6$~&-'${EPYTHON}'~' \
- "${ED}/usr/$(get_libdir)"/pkgconfig/${PN}.pc || die
+ "${ED}/usr/$(get_libdir)"/pkgconfig/${PN}6.pc || die
# Uniquify the PySide6 pkgconfig file for the current Python target,
# preserving an unversioned "pyside6.pc" file arbitrarily associated
# with the last Python target. (See the previously linked issue.)
- cp "${ED}/usr/$(get_libdir)"/pkgconfig/${PN}{,-${EPYTHON}}.pc || die
+ cp "${ED}/usr/$(get_libdir)"/pkgconfig/${PN}6{,-${EPYTHON}}.pc || die
}
python_foreach_impl pyside6_install
diff --git a/dev-python/pyside6/pyside6-6.8.1.ebuild b/dev-python/pyside/pyside-6.8.1.ebuild
index f6f18aa25ee5..e80e682b8c51 100644
--- a/dev-python/pyside6/pyside6-6.8.1.ebuild
+++ b/dev-python/pyside/pyside-6.8.1.ebuild
@@ -124,7 +124,7 @@ RDEPEND="${PYTHON_DEPS}
)
)
websockets? ( =dev-qt/qtwebsockets-${QT_PV} )
- !dev-python/pyside6:0
+ !dev-python/pyside:0
"
DEPEND="${RDEPEND}
$(llvm_gen_dep '
@@ -234,12 +234,12 @@ src_install() {
# file for the current Python target. See also:
# https://github.com/leycec/raiagent/issues/73
sed -i -e 's~^Requires: shiboken6$~&-'${EPYTHON}'~' \
- "${ED}/usr/$(get_libdir)"/pkgconfig/${PN}.pc || die
+ "${ED}/usr/$(get_libdir)"/pkgconfig/${PN}6.pc || die
# Uniquify the PySide6 pkgconfig file for the current Python target,
# preserving an unversioned "pyside6.pc" file arbitrarily associated
# with the last Python target. (See the previously linked issue.)
- cp "${ED}/usr/$(get_libdir)"/pkgconfig/${PN}{,-${EPYTHON}}.pc || die
+ cp "${ED}/usr/$(get_libdir)"/pkgconfig/${PN}6{,-${EPYTHON}}.pc || die
}
python_foreach_impl pyside6_install
diff --git a/dev-python/pyside/pyside-6.8.2-r1.ebuild b/dev-python/pyside/pyside-6.8.2-r1.ebuild
new file mode 100644
index 000000000000..3eea6c5ea105
--- /dev/null
+++ b/dev-python/pyside/pyside-6.8.2-r1.ebuild
@@ -0,0 +1,493 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+LLVM_COMPAT=( {15..19} )
+DISTUTILS_USE_PEP517=setuptools
+DISTUTILS_EXT=1
+
+inherit distutils-r1 llvm-r1 qmake-utils virtualx
+
+MY_PN=pyside-pyside-setup
+MY_P=${MY_PN}-${PV}
+
+DESCRIPTION="Python bindings for the Qt framework"
+HOMEPAGE="https://wiki.qt.io/PySide6"
+SRC_URI="https://github.com/qtproject/${MY_PN}/archive/refs/tags/v${PV}.tar.gz -> ${MY_P}.gh.tar.gz"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="|| ( GPL-2 GPL-3 LGPL-3 )"
+SLOT="6/${PV}"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+
+# If a flag enables multiple Qt modules, they should be ordered
+# according to their dependencies, e.g. for 3d, 3DCore must be first.
+# Widgets for various modules are handled as a special case later
+declare -A QT_MODULES=(
+ ["3d"]="3DCore 3DRender 3DLogic 3DInput 3DAnimation 3DExtras"
+ ["bluetooth"]="Bluetooth"
+ ["charts"]="Charts"
+ ["+concurrent"]="Concurrent"
+ ["+core"]="Core"
+ ["+dbus"]="DBus"
+ ["designer"]="Designer"
+ ["+gui"]="Gui"
+ ["help"]="Help"
+ ["httpserver"]="HttpServer"
+ ["location"]="Location"
+ ["multimedia"]="Multimedia" # plus widgets
+ ["network-auth"]="NetworkAuth"
+ ["+network"]="Network"
+ ["nfc"]="Nfc"
+ ["+opengl"]="OpenGL" # plus widgets
+ ["pdfium"]="Pdf" # plus widgets
+ ["positioning"]="Positioning"
+ ["+printsupport"]="PrintSupport"
+ ["qml"]="Qml"
+ ["quick3d"]="Quick3D"
+ ["quick"]="Quick" # plus widgets
+ ["remoteobjects"]="RemoteObjects"
+ ["scxml"]="Scxml"
+ ["sensors"]="Sensors"
+ ["serialbus"]="SerialBus"
+ ["serialport"]="SerialPort"
+ ["spatialaudio"]="SpatialAudio"
+ ["+sql"]="Sql"
+ ["svg"]="Svg" # plus widgets
+ ["speech"]="TextToSpeech"
+ ["+testlib"]="Test"
+ ["uitools"]="UiTools"
+ ["webchannel"]="WebChannel"
+ ["webengine"]="WebEngineCore" # plus widgets and quick
+ ["websockets"]="WebSockets"
+ ["webview"]="WebView"
+ ["+widgets"]="Widgets"
+ ["+xml"]="Xml"
+)
+
+# Manually reextract these requirements on version bumps by running the
+# following one-liner from within "${S}":
+# $ grep 'set.*_deps' PySide6/Qt*/CMakeLists.txt
+declare -A QT_REQUIREMENTS=(
+ ["3d"]="gui network opengl"
+ ["bluetooth"]="core"
+ ["charts"]="core gui widgets"
+ ["concurrent"]="core"
+ ["dbus"]="core"
+ ["designer"]="widgets"
+ ["gles2-only"]="gui"
+ ["gui"]="core"
+ ["help"]="widgets"
+ ["httpserver"]="core concurrent network websockets"
+ ["location"]="core positioning"
+ ["multimedia"]="core gui network"
+ ["network-auth"]="network"
+ ["network"]="core"
+ ["nfc"]="core"
+ ["opengl"]="gui"
+ ["pdfium"]="core gui network"
+ ["positioning"]="core"
+ ["printsupport"]="widgets"
+ ["qml"]="network"
+ ["quick"]="gui network qml opengl"
+ ["quick3d"]="gui network qml quick"
+ ["remoteobjects"]="core network"
+ ["scxml"]="core"
+ ["sensors"]="core"
+ ["serialbus"]="core network serialport"
+ ["serialport"]="core"
+ ["spatialaudio"]="core gui network multimedia"
+ ["speech"]="core multimedia"
+ ["sql"]="widgets"
+ ["svg"]="gui"
+ ["testlib"]="widgets"
+ ["uitools"]="widgets"
+ ["webchannel"]="core"
+ ["webengine"]="core gui network printsupport quick webchannel"
+ ["websockets"]="network"
+ ["webview"]="gui"
+ ["widgets"]="gui"
+ ["xml"]="core"
+)
+
+IUSE="${!QT_MODULES[@]} debug doc gles2-only numpy test tools"
+RESTRICT="!test? ( test )"
+
+# majority of QtQml tests require QtQuick support
+REQUIRED_USE="
+ test? (
+ qml? ( quick )
+ )
+"
+for requirement in ${!QT_REQUIREMENTS[@]}; do
+ REQUIRED_USE+=" ${requirement}? ( ${QT_REQUIREMENTS[${requirement}]} ) "
+done
+
+# Minimal supported version of Qt.
+QT_PV="$(ver_cut 1-3)*:6"
+
+# WebEngine needs sound support, so enable either pulseaudio or alsa
+RDEPEND="
+ =dev-qt/qtbase-${QT_PV}[concurrent?,dbus?,gles2-only=,network?,opengl?,sql?,widgets?,xml?]
+ 3d? ( =dev-qt/qt3d-${QT_PV}[qml?,gles2-only=] )
+ bluetooth? ( =dev-qt/qtconnectivity-${QT_PV}[bluetooth] )
+ charts? ( =dev-qt/qtcharts-${QT_PV} )
+ designer? ( =dev-qt/qttools-${QT_PV}[designer,widgets,gles2-only=] )
+ gui? (
+ =dev-qt/qtbase-${QT_PV}[gui,jpeg(+)]
+ x11-libs/libxkbcommon
+ )
+ help? ( =dev-qt/qttools-${QT_PV}[assistant,gles2-only=] )
+ httpserver? ( =dev-qt/qthttpserver-${QT_PV} )
+ location? ( =dev-qt/qtlocation-${QT_PV} )
+ multimedia? ( =dev-qt/qtmultimedia-${QT_PV}[widgets(+)?] )
+ network? ( =dev-qt/qtbase-${QT_PV}[ssl] )
+ network-auth? ( =dev-qt/qtnetworkauth-${QT_PV} )
+ nfc? ( =dev-qt/qtconnectivity-${QT_PV}[nfc] )
+ numpy? ( >=dev-python/numpy-2.1.3[${PYTHON_USEDEP}] )
+ pdfium? ( =dev-qt/qtwebengine-${QT_PV}[pdfium(-),widgets?] )
+ positioning? ( =dev-qt/qtpositioning-${QT_PV} )
+ printsupport? ( =dev-qt/qtbase-${QT_PV}[gui,widgets] )
+ qml? ( =dev-qt/qtdeclarative-${QT_PV}[opengl?,widgets?] )
+ quick3d? ( =dev-qt/qtquick3d-${QT_PV}[opengl?] )
+ remoteobjects? ( =dev-qt/qtremoteobjects-${QT_PV} )
+ scxml? ( =dev-qt/qtscxml-${QT_PV} )
+ sensors? ( =dev-qt/qtsensors-${QT_PV}[qml?] )
+ speech? ( =dev-qt/qtspeech-${QT_PV} )
+ serialbus? ( =dev-qt/qtserialbus-${QT_PV} )
+ serialport? ( =dev-qt/qtserialport-${QT_PV} )
+ svg? ( =dev-qt/qtsvg-${QT_PV} )
+ testlib? ( =dev-qt/qtbase-${QT_PV}[gui] )
+ tools? (
+ =dev-qt/qtbase-${QT_PV}
+ =dev-qt/qtdeclarative-${QT_PV}[qmlls]
+ =dev-qt/qttools-${QT_PV}[assistant,designer,linguist]
+ dev-python/pkginfo[${PYTHON_USEDEP}]
+ )
+ uitools? ( =dev-qt/qttools-${QT_PV}[gles2-only=,widgets] )
+ webchannel? ( =dev-qt/qtwebchannel-${QT_PV} )
+ webengine? ( || (
+ =dev-qt/qtwebengine-${QT_PV}[alsa,widgets?]
+ =dev-qt/qtwebengine-${QT_PV}[pulseaudio,widgets?]
+ )
+ )
+ websockets? ( =dev-qt/qtwebsockets-${QT_PV} )
+ webview? ( =dev-qt/qtwebview-${QT_PV} )
+ !dev-python/pyside:0
+ !dev-python/shiboken6
+ !dev-python/pyside6-tools
+"
+
+DEPEND="${RDEPEND}
+ $(llvm_gen_dep '
+ llvm-core/clang:${LLVM_SLOT}
+ llvm-core/llvm:${LLVM_SLOT}
+ ')
+ dev-util/vulkan-headers
+ test? ( =dev-qt/qtbase-${QT_PV}[gui] )
+" # testlib is toggled by the gui flag on qtbase
+
+BDEPEND="
+ dev-build/cmake
+ dev-python/distro[${PYTHON_USEDEP}]
+ dev-util/patchelf
+ doc? (
+ >=dev-libs/libxml2-2.6.32
+ >=dev-libs/libxslt-1.1.19
+ media-gfx/graphviz
+ dev-python/sphinx[${PYTHON_USEDEP}]
+ dev-python/myst-parser[${PYTHON_USEDEP}]
+ )
+ numpy? ( dev-python/numpy[${PYTHON_USEDEP}] )
+"
+
+PATCHES=(
+ # Needs porting to newer wheel and setuptools
+ "${FILESDIR}/${PN}-6.8.2-quick-fix-build-wheel.patch"
+ # References files not present in our dev-qt/qtbase
+ "${FILESDIR}/${PN}-6.8.2-no-qtexampleicons.patch"
+)
+
+# Build system duplicates system libraries. TODO: fix
+QA_PREBUILT=(
+ "/usr/lib/python*/site-packages/PySide6/*"
+)
+
+python_prepare_all() {
+ distutils-r1_python_prepare_all
+
+ # Shiboken6 assumes Vulkan headers live under either "$VULKAN_SDK/include"
+ # or "$VK_SDK_PATH/include" rather than "${EPREFIX}/usr/include/vulkan".
+ sed -i -e "s~\bdetectVulkan(&headerPaths);~headerPaths.append(HeaderPath{QByteArrayLiteral(\"${EPREFIX}/usr/include/vulkan\"), HeaderType::System});~" \
+ sources/shiboken6/ApiExtractor/clangparser/compilersupport.cpp || die
+
+ # Shiboken6 assumes the "/usr/lib/clang/${CLANG_NEWEST_VERSION}/include/"
+ # subdirectory provides Clang builtin includes (e.g., "stddef.h") for the
+ # currently installed version of Clang, where ${CLANG_NEWEST_VERSION} is
+ # the largest version specifier that exists under the "/usr/lib/clang/"
+ # subdirectory. This assumption is false in edge cases, including when
+ # users downgrade from newer Clang versions but fail to remove those
+ # versions with "emerge --depclean". See also:
+ # https://github.com/leycec/raiagent/issues/85
+ #
+ # Sadly, the clang-* family of functions exported by the "toolchain-funcs"
+ # eclass are defective, returning nonsensical placeholder strings if the
+ # end user has *NOT* explicitly configured their C++ compiler to be Clang.
+ # PySide6 does *NOT* care whether the end user has done so or not, as
+ # PySide6 unconditionally requires Clang in either case. See also:
+ # https://bugs.gentoo.org/619490
+ sed -e \
+ 's~(findClangBuiltInIncludesDir())~(QStringLiteral("'"${EPREFIX}"'/usr/lib/clang/'"${LLVM_SLOT}"'/include"))~' \
+ -i sources/shiboken6/ApiExtractor/clangparser/compilersupport.cpp || die
+
+ # blacklist.txt works like XFAIL
+ cat <<- EOF >> build_history/blacklist.txt || die
+ # segfaults with QOpenGLContext::create
+ [pysidetest::qapp_like_a_macro_test]
+ linux
+ # Tries to execute pip install
+ [pyside6-deploy::test_pyside6_deploy]
+ linux
+ [pyside6-android-deploy::test_pyside6_android_deploy]
+ linux
+ EOF
+
+ if ! use numpy; then
+ cat <<- EOF >> build_history/blacklist.txt || die
+ # Requires numpy support to pass
+ [sample::array_numpy]
+ linux
+ [sample::nontypetemplate]
+ linux
+ [QtGui::qpainter_test]
+ linux
+ EOF
+ fi
+}
+
+python_configure_all() {
+ ENABLED_QT_MODULES=()
+
+ # The order matters, dependencies must come first so process
+ # REQUIRED_USE and recursively enable modules
+ enable_qt_mod() {
+ local flag=${1}
+ local modules=${QT_MODULES[${flag}]}
+ if [[ -z ${modules} ]]; then
+ die "incorrect flag=${flag}, not registered"
+ fi
+ local dependencies=${QT_REQUIREMENTS[${flag//+}]}
+ if [[ -n ${dependencies} ]]; then
+ local depflag
+ for depflag in ${dependencies}; do
+ if use ${depflag}; then
+ if [[ -z ${QT_MODULES[${depflag}]} ]]; then
+ depflag=+${depflag}
+ fi
+ enable_qt_mod ${depflag}
+ else
+ die "${depflag} is required but not enabled"
+ fi
+ done
+ fi
+ if [[ "${ENABLED_QT_MODULES[*]}" != *${modules}* ]]; then
+ ENABLED_QT_MODULES+=( ${modules} )
+ fi
+ }
+ # Enable specified qt modules
+ local flag
+ for flag in ${!QT_MODULES[@]}; do
+ if use ${flag//+}; then
+ enable_qt_mod ${flag}
+ fi
+ done
+
+ # Special cases
+ if use widgets; then
+ use multimedia && ENABLED_QT_MODULES+=( MultimediaWidgets )
+ use opengl && ENABLED_QT_MODULES+=( OpenGLWidgets )
+ use pdfium && ENABLED_QT_MODULES+=( PdfWidgets )
+ use quick && ENABLED_QT_MODULES+=( QuickWidgets )
+ use svg && ENABLED_QT_MODULES+=( SvgWidgets )
+ use webengine && ENABLED_QT_MODULES+=( WebEngineWidgets )
+ fi
+ if use quick; then
+ use webengine && ENABLED_QT_MODULES+=( WebEngineQuick )
+ use testlib && ENABLED_QT_MODULES+=( QuickTest )
+ fi
+
+ # Arguments listed in options.py
+ MAIN_DISTUTILS_ARGS=(
+ --cmake="${EPREFIX}/usr/bin/cmake"
+ --ignore-git
+ --limited-api=no
+ --module-subset="$(printf '%s,' "${ENABLED_QT_MODULES[@]}")"
+ --no-strip
+ --no-size-optimization
+ --openssl="${EPREFIX}/usr/bin/openssl"
+ --qt=$(ver_cut 1-3)
+ --qtpaths=$(qt6_get_bindir)/qtpaths
+ --verbose-build
+ $(usex debug "--debug" "--relwithdebinfo")
+ $(usex doc "--build-docs" "--skip-docs")
+ $(usex numpy "--enable-numpy-support" "--disable-numpy-support")
+ $(usex test "--build-tests --use-xvfb" "")
+ $(usex tools "" "--no-qt-tools")
+ )
+}
+
+python_compile() {
+ DISTUTILS_ARGS=(
+ "${MAIN_DISTUTILS_ARGS[@]}"
+ --build-type=shiboken6
+ )
+ distutils-r1_python_compile
+ DISTUTILS_ARGS=(
+ "${MAIN_DISTUTILS_ARGS[@]}"
+ --reuse-build
+ --build-type=shiboken6-generator
+ )
+ distutils-r1_python_compile
+ # If no pyside modules enabled, build just shiboken
+ if [[ ${#ENABLED_QT_MODULES[@]} -gt 0 ]]; then
+ DISTUTILS_ARGS=(
+ "${MAIN_DISTUTILS_ARGS[@]}"
+ --reuse-build
+ --shiboken-target-path="$(find "${BUILD_DIR}/build" -type d -name cmake)/../../"
+ --build-type=pyside6
+ )
+ distutils-r1_python_compile
+ fi
+
+ # Link libraries to the usual location for backwards compatibility
+ pushd "${BUILD_DIR}/install/$(python_get_sitedir)" >/dev/null ||
+ die
+ mkdir -p "${BUILD_DIR}/install/usr/$(get_libdir)" || die
+ local lib
+ for lib in */*.cpython-*.so
+ do
+ local base=${lib##*/}
+ ln -s "${base}" "${lib%/*}/${base%%.*}-${EPYTHON}.so" ||
+ die
+ done
+ for lib in */*.cpython-*.so.$(ver_cut 1-2)
+ do
+ local base=${lib##*/}
+ ln -s "${base}" "${lib%/*}/${base%%.*}-${EPYTHON}.so.$(ver_cut 1-2)" ||
+ die
+ done
+ for lib in */*.so*; do
+ ln -s "../../$(python_get_sitedir)/${lib}" \
+ "${BUILD_DIR}/install/usr/$(get_libdir)/${lib#*/}" || die
+ done
+ popd >/dev/null || die
+
+ # Symlinks for compatibility with pypi wheels
+ local dir
+ if [[ -d ${BUILD_DIR}/install/$(python_get_sitedir)/PySide6 ]]
+ then
+ pushd "${BUILD_DIR}/install/$(python_get_sitedir)/PySide6" \
+ >/dev/null || die
+ mkdir -p "${BUILD_DIR}/install/usr/share/PySide6" || die
+ for dir in doc glue typesystems; do
+ ln -s "../../../$(python_get_sitedir)/PySide6/${dir}" \
+ "${BUILD_DIR}/install/usr/share/PySide6/${dir}" ||
+ die
+ done
+ popd >/dev/null || die
+ fi
+ mkdir -p "${BUILD_DIR}/install/usr/include"
+ for dir in PySide6 shiboken6_generator; do
+ if [[ -d ${BUILD_DIR}/install/$(python_get_sitedir)/${dir}/include ]]
+ then
+ ln -s "../../$(python_get_sitedir)/${dir}/include" \
+ "${BUILD_DIR}/install/usr/include/${dir//_generator}" ||
+ die
+ fi
+ done
+
+ # Install misc files from inner install dir
+ find "${BUILD_DIR}"/build/*/install -type f \
+ -name libPySidePlugin.so -exec \
+ mkdir -p "${BUILD_DIR}/install/$(qt6_get_plugindir)/designer/" \; \
+ -exec \
+ cp "{}" "${BUILD_DIR}/install/$(qt6_get_plugindir)/designer/" \; \
+ || die
+
+ for dir in cmake pkgconfig; do
+ find "${BUILD_DIR}"/build/*/install -type d -name ${dir} \
+ -exec cp -r "{}" "${BUILD_DIR}/install/usr/lib/" \; \
+ || die
+ done
+
+ # Uniquify the pkgconfigs file for the current Python target,
+ # preserving an unversioned "shiboken6.pc" file arbitrarily
+ # associated with the last Python target.
+ if [[ -f ${BUILD_DIR}/install/usr/lib/pkgconfig/shiboken6.pc ]]
+ then
+ sed -e 's~prefix=.*~prefix=/usr~g' \
+ -e 's~exec_prefix=.*~exec_prefix=${prefix}~g' \
+ -e "s~libdir=.*~libdir=$(python_get_sitedir)/shiboken6~g" \
+ -e "s~includedir=.*~includedir=$(python_get_sitedir)/shiboken6_generator/include~g" \
+ -i "${BUILD_DIR}/install/usr/lib/pkgconfig/shiboken6.pc" || die
+ cp "${BUILD_DIR}/install/usr/lib/pkgconfig/"shiboken6{,-${EPYTHON}}.pc || die
+ fi
+ if [[ -f ${BUILD_DIR}/install/usr/lib/pkgconfig/pyside6.pc ]]
+ then
+ sed -e 's~^Requires: shiboken6$~&-'${EPYTHON}'~' \
+ -e 's~prefix=.*~prefix=/usr~g' \
+ -e 's~exec_prefix=.*~exec_prefix=${prefix}~g' \
+ -e "s~libdir=.*~libdir=$(python_get_sitedir)/PySide6~g" \
+ -e "s~includedir=.*~includedir=$(python_get_sitedir)/PySide6/include~g" \
+ -e "s~typesystemdir=.*~typesystemdir=$(python_get_sitedir)/PySide6/typesystems~g" \
+ -e "s~gluedir=.*~gluedir=$(python_get_sitedir)/PySide6/glue~g" \
+ -e "s~pythonpath=.*~pythonpath=$(python_get_sitedir)~g" \
+ -i "${BUILD_DIR}/install/usr/lib/pkgconfig/pyside6.pc" || die
+ cp "${BUILD_DIR}/install/usr/lib/pkgconfig/"pyside6{,-${EPYTHON}}.pc || die
+ fi
+
+ sed \
+ -e "s~/lib/libshiboken6\.cpython~/$(get_libdir)/libshiboken6\.cpython~g" \
+ -e "s~/lib/libpyside6\.cpython~/$(get_libdir)/libpyside6\.cpython~g" \
+ -e "s~/lib/libpyside6qml\.cpython~/$(get_libdir)/libpyside6qml\.cpython~g" \
+ -e "s~libshiboken6\.cpython.*\.so\.$(ver_cut 1-3)~libshiboken6\${PYTHON_CONFIG_SUFFIX}\.so\.$(ver_cut 1-2)~g" \
+ -e "s~libpyside6\.cpython.*\.so\.$(ver_cut 1-3)~libpyside6\${PYTHON_CONFIG_SUFFIX}\.so\.$(ver_cut 1-2)~g" \
+ -e "s~libpyside6qml\.cpython.*\.so\.$(ver_cut 1-3)~libpyside6qml\${PYTHON_CONFIG_SUFFIX}\.so\.$(ver_cut 1-2)~g" \
+ -e "s~libshiboken6\.cpython.*\.so\.$(ver_cut 1-2)~libshiboken6\${PYTHON_CONFIG_SUFFIX}\.so\.$(ver_cut 1-2)~g" \
+ -e "s~libpyside6\.cpython.*\.so\.$(ver_cut 1-2)~libpyside6\${PYTHON_CONFIG_SUFFIX}\.so\.$(ver_cut 1-2)~g" \
+ -e "s~libpyside6qml\.cpython.*\.so\.$(ver_cut 1-2)~libpyside6qml\${PYTHON_CONFIG_SUFFIX}\.so\.$(ver_cut 1-2)~g" \
+ -i "${BUILD_DIR}/install/usr/lib/cmake/"*/*.cmake || die
+ local file
+ for file in "${BUILD_DIR}/install/usr/lib/cmake/"*/*.cpython-*.cmake
+ do
+ local base=${file##*/}
+ ln -s "${base}" "${file%/*}/${base%%.*}-${EPYTHON}.cmake" ||
+ die
+ done
+}
+
+python_test() {
+ # figure out the build dir
+ local build_dir build_classifier
+ build_dir=$(ls -d "${BUILD_DIR}"/build/qfp-*/build/)
+ build_classifier="${build_dir##${BUILD_DIR}/build/qfp-}"
+ build_classifier="${build_dir%%/build}"
+
+ # Otherwise it picks the last built directory breaking assumption for multi target builds
+ mkdir -p build_history/9999-99-99_999999/ || die
+ cat <<- EOF > build_history/9999-99-99_999999/build_dir.txt || die
+ ${build_dir}
+ ${build_classifier}
+ EOF
+
+ virtx ${EPYTHON} testrunner.py test --projects=shiboken6 $(usev core '--projects=pyside6') ||
+ die "Tests failed with ${EPYTHON}"
+}
+
+pkg_preinst() {
+ # Avoid symlinks being blocked by directories
+ rm -rf "${EROOT}/usr/include/"{PySide6,shiboken6} || die
+ rm -rf "${EROOT}/usr/share/PySide6" || die
+}
diff --git a/dev-python/pyside6-tools/pyside6-tools-6.8.1.1.ebuild b/dev-python/pyside6-tools/pyside6-tools-6.8.1.1.ebuild
index f4273b70a9dc..431ab6f76226 100644
--- a/dev-python/pyside6-tools/pyside6-tools-6.8.1.1.ebuild
+++ b/dev-python/pyside6-tools/pyside6-tools-6.8.1.1.ebuild
@@ -29,7 +29,7 @@ QT_PV="$(ver_cut 1-3)*:6"
RDEPEND="${PYTHON_DEPS}
~dev-python/shiboken6-${PV}[${PYTHON_USEDEP},${LLVM_USEDEP}]
- ~dev-python/pyside6-${PV}[quick,${PYTHON_USEDEP},${LLVM_USEDEP}]
+ ~dev-python/pyside-${PV}[quick,${PYTHON_USEDEP},${LLVM_USEDEP}]
!dev-python/pyside6-tools:0
"
DEPEND="${RDEPEND}
diff --git a/dev-python/pyside6-tools/pyside6-tools-6.8.1.ebuild b/dev-python/pyside6-tools/pyside6-tools-6.8.1.ebuild
index e40fed32fe2f..d047e5694dda 100644
--- a/dev-python/pyside6-tools/pyside6-tools-6.8.1.ebuild
+++ b/dev-python/pyside6-tools/pyside6-tools-6.8.1.ebuild
@@ -29,7 +29,7 @@ QT_PV="$(ver_cut 1-3)*:6"
RDEPEND="${PYTHON_DEPS}
=dev-python/shiboken6-${QT_PV}[${PYTHON_USEDEP},${LLVM_USEDEP}]
- =dev-python/pyside6-${QT_PV}[quick,${PYTHON_USEDEP},${LLVM_USEDEP}]
+ =dev-python/pyside-${QT_PV}[quick,${PYTHON_USEDEP},${LLVM_USEDEP}]
!dev-python/pyside6-tools:0
"
DEPEND="${RDEPEND}
diff --git a/dev-python/pysol-cards/Manifest b/dev-python/pysol-cards/Manifest
index 9057b70665ab..f65b400edc08 100644
--- a/dev-python/pysol-cards/Manifest
+++ b/dev-python/pysol-cards/Manifest
@@ -1 +1,2 @@
DIST pysol_cards-0.18.0.tar.gz 18103 BLAKE2B a74af33d566255f40234f3f22f8232c3bc60438a27fbd8144d85da7984d660616ac19474036a29ddc361afd4b61b2ca8835331729fdd0cb8fb312ae3e990dbf5 SHA512 baf2a5db425d1e687a336f8dd7b15b25be82e8dbb4c02f00f882fdb915fcf81c03ad1f39d22d5177b1429cc709baa47463cab39c55576df135534f5f87f31665
+DIST pysol_cards-0.18.1.tar.gz 17975 BLAKE2B 59da03e8944bc94da9f775041b26928fa77af8f7472ae6ed189ac56a583a9b1c6ae419ada7c8118f5b5a6914f4adf94e4664bf2ad67a436e60c1516b29e96ef5 SHA512 aa38a05f6c2f0b9f1b59b1972c6e9fee20050013b8a9238248ba717cb42354c55d194a71cdd6a77462096938fb413c43c002aa2c1d0ca91e3e931ee60de5b791
diff --git a/dev-python/pysol-cards/pysol-cards-0.18.1.ebuild b/dev-python/pysol-cards/pysol-cards-0.18.1.ebuild
new file mode 100644
index 000000000000..af853bcb25b3
--- /dev/null
+++ b/dev-python/pysol-cards/pysol-cards-0.18.1.ebuild
@@ -0,0 +1,25 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Deal PySol FreeCell cards"
+HOMEPAGE="
+ https://github.com/shlomif/pysol_cards/
+ https://pypi.org/project/pysol-cards/
+"
+
+LICENSE="Apache-2.0 MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~loong ~riscv ~x86"
+
+distutils_enable_tests unittest
+
+python_test() {
+ eunittest -s tests
+}
diff --git a/dev-python/pytest-aiohttp/Manifest b/dev-python/pytest-aiohttp/Manifest
index 98240bd53e25..b8183d664787 100644
--- a/dev-python/pytest-aiohttp/Manifest
+++ b/dev-python/pytest-aiohttp/Manifest
@@ -1,2 +1 @@
-DIST pytest-aiohttp-1.0.5.tar.gz 12209 BLAKE2B b02154239a6073bafac3d8be70a7ae8ff13fefdd09941db558c0b1ad31d14c5e29131209f157ab418202852a2d97f151d765cfffe0de06aac57f0c983ea99518 SHA512 b8421c63e4d5caa9742a013a6d1fd3c010b5e4a48e4f5c1a07ddfb7b05853ce6a7a0d65ce78493fd607f59c669d31c75d97a9022048e6a60cbc90a19a48dd02c
DIST pytest_aiohttp-1.1.0.tar.gz 12842 BLAKE2B 96a9164d041e417a9176aba97ade3eb22a58ec7042de38745956b0a9525389f1615b626cf014d86df78491b948f7f6820b25dceb58937b674d2ca33aa534e38c SHA512 891a379535f1ecc9e74282d813cfc11b74c79c852d08e94942e1bb29c0eafecdce73ffbf6aefce24c37315c502bdfe0861bc97b6be1489dd3dd59b2aa215f4e8
diff --git a/dev-python/pytest-aiohttp/pytest-aiohttp-1.0.5.ebuild b/dev-python/pytest-aiohttp/pytest-aiohttp-1.0.5.ebuild
deleted file mode 100644
index 1af8d0235211..000000000000
--- a/dev-python/pytest-aiohttp/pytest-aiohttp-1.0.5.ebuild
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYPI_NO_NORMALIZE=1
-PYTHON_COMPAT=( python3_{10..13} pypy3 )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="pytest plugin for aiohttp support"
-HOMEPAGE="
- https://github.com/aio-libs/pytest-aiohttp/
- https://pypi.org/project/pytest-aiohttp/
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos"
-
-RDEPEND="
- >=dev-python/aiohttp-3.8.1[${PYTHON_USEDEP}]
- >=dev-python/pytest-6.1.0[${PYTHON_USEDEP}]
- >=dev-python/pytest-asyncio-0.17.2[${PYTHON_USEDEP}]
-"
-BDEPEND="
- >=dev-python/setuptools-scm-6.2[${PYTHON_USEDEP}]
-"
-
-distutils_enable_tests pytest
-
-EPYTEST_DESELECT=(
- # warning doesn't seem to be emitted for some reason
- # doesn't look very important
- tests/test_obsolete_fixtures.py::test_loop_fixture
-)
diff --git a/dev-python/pytest-aiohttp/pytest-aiohttp-1.1.0.ebuild b/dev-python/pytest-aiohttp/pytest-aiohttp-1.1.0.ebuild
index cd49d9d5d729..dedc6d7ae9e2 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-check/Manifest b/dev-python/pytest-check/Manifest
index c6063d17249c..8f2190042f97 100644
--- a/dev-python/pytest-check/Manifest
+++ b/dev-python/pytest-check/Manifest
@@ -1 +1,3 @@
DIST pytest_check-2.4.1.tar.gz 28933 BLAKE2B 47ab104426e9c967ba7ad82cb76663803ce55133ca868369ff466def35ad0ea64ef7872464de8184ee985cc938265f0efc586212a9e6be0b0879d955dcd29e10 SHA512 a334425d5aba77b574bcddad8d9a15ffac1638df1ab3b2aeceb4c1580a3871a36431a7d287e1cc1d272bd57b92c1f6e65c3976fdd1793935bfc357916b15b11a
+DIST pytest_check-2.4.2.tar.gz 25569 BLAKE2B b83d9df13c78f363e09833b75137e9d833913c3be7d901af9e6e8c3afa96eaf3e3522a50024f07bd0661ce77b11c43c9af167cdfc4a34d603890425361f12a91 SHA512 62786df10e409738421ef2a2e94c5419f62a8152342f06477c9fafabc075f38d84a3892f1a1db40aac65e8c0d027ca42e3d0852488ae5cda55c1b07a60e95de3
+DIST pytest_check-2.5.0.tar.gz 26844 BLAKE2B 3428071078f9a15ae33937be56957c537c4c98344cb3a5cda798f71caa6bd99e067113af64f548380c949bf6a79202db84e98da16f861d73ad23053a3ea2ec05 SHA512 0a3738f67f1a8467504919d5289398811af8b6bbacef81e27942ce467d3d9e373f2ec9497e4f1794ead2e3f8f9552da538c2472236b9c882cfd2ee3822c50d39
diff --git a/dev-python/pytest-check/pytest-check-2.4.2.ebuild b/dev-python/pytest-check/pytest-check-2.4.2.ebuild
new file mode 100644
index 000000000000..93e0080284b2
--- /dev/null
+++ b/dev-python/pytest-check/pytest-check-2.4.2.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2021-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="pytest plugin that allows multiple failures per test"
+HOMEPAGE="
+ https://github.com/okken/pytest-check/
+ https://pypi.org/project/pytest-check/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/colorama-0.4.6[${PYTHON_USEDEP}]
+ >=dev-python/pytest-7.0.0[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests pytest
diff --git a/dev-python/pytest-check/pytest-check-2.5.0.ebuild b/dev-python/pytest-check/pytest-check-2.5.0.ebuild
new file mode 100644
index 000000000000..9319d3821a90
--- /dev/null
+++ b/dev-python/pytest-check/pytest-check-2.5.0.ebuild
@@ -0,0 +1,28 @@
+# Copyright 2021-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="pytest plugin that allows multiple failures per test"
+HOMEPAGE="
+ https://github.com/okken/pytest-check/
+ https://pypi.org/project/pytest-check/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/pytest-7.0.0[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/typing-extensions-4.12.2[${PYTHON_USEDEP}]
+ ' 3.10)
+"
+
+distutils_enable_tests pytest
diff --git a/dev-python/pytest-datadir/Manifest b/dev-python/pytest-datadir/Manifest
index b311b359dfa3..8add3e7991ac 100644
--- a/dev-python/pytest-datadir/Manifest
+++ b/dev-python/pytest-datadir/Manifest
@@ -1 +1,2 @@
DIST pytest-datadir-1.5.0.tar.gz 8821 BLAKE2B 68250c0100492c501b2752930cc6668a50233a7be08eeec56b99993c2bc21a13a2f6e2a2bd066dd52d58d219cd63b22f0a63fe51b7e16f80dd919f835994b5cd SHA512 6a91bbd7d1ac133c08d5aad3d9b7fa55b9c81dfea1ca5c18f8c9a90a60db4a1e5c09584a4ad0d420007162c507b91d6769a692057ef5be8eb44af6cbd5704f0c
+DIST pytest_datadir-1.6.1.tar.gz 9391 BLAKE2B ce5d0a87e610c6828e2b342bf8d41534e729dff5728238d1ea6a5a78fa1e46d70d4e00d197797f712c1cb4cb3988890a2b1de12f84f867b4538aa57566cb439d SHA512 e7de5aa5196d9c6be519c77b8139bdb416d91540739671d1ae838c4292007819fd6a0b1e0c9aa9380db8ebdeed927c4cfec3e6d4b0f1b2b2b42ec2cce0f97e44
diff --git a/dev-python/pytest-datadir/pytest-datadir-1.6.1.ebuild b/dev-python/pytest-datadir/pytest-datadir-1.6.1.ebuild
new file mode 100644
index 000000000000..8a0740888bc2
--- /dev/null
+++ b/dev-python/pytest-datadir/pytest-datadir-1.6.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_{10..13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Pytest plugin for manipulating test data directories and files"
+HOMEPAGE="
+ https://github.com/gabrielcnr/pytest-datadir/
+ https://pypi.org/project/pytest-datadir/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/pytest-7.0.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests pytest
diff --git a/dev-python/pytest-django/Manifest b/dev-python/pytest-django/Manifest
index 99afb67d665f..36d018e39476 100644
--- a/dev-python/pytest-django/Manifest
+++ b/dev-python/pytest-django/Manifest
@@ -1 +1,2 @@
+DIST pytest-django-4.10.0.gh.tar.gz 78992 BLAKE2B 0d42b7bf11fd06ea58b38d9fedf48b12a1577b7b732a61449b787217a729e95ad7c754530bc31c3a6ce7d4c8417fce5b47bdd554b91b71ed148cdff5efb2696c SHA512 887e02a6122631adf0bb34e7b8354378d628564f736c3754a475473b9dc3ff80599bed9b7ccc12b145d0963c3cb56e7110d49c70bfd0b37e15f8a95f3f787ecf
DIST pytest-django-4.9.0.gh.tar.gz 78407 BLAKE2B 0ab7dd12494fdb5c66ceabc67c793f7d970258a1a1b7cd3f7b31b6ee5087436396936a0a1672d77ab3c7e391f00bc63060e137ee9399a52940ebbc2ba25e253e SHA512 ec4cb8e9220cd21d96b72c1f09cfdd023700831ed583fe79d84a85f8d24eeaf3f111580d672950feecad69455078f0c73879f0d73364e74a4577352a4d8a1d4d
diff --git a/dev-python/pytest-django/pytest-django-4.10.0.ebuild b/dev-python/pytest-django/pytest-django-4.10.0.ebuild
new file mode 100644
index 000000000000..19be61c42164
--- /dev/null
+++ b/dev-python/pytest-django/pytest-django-4.10.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=( pypy3 python3_{10..13} )
+
+inherit distutils-r1
+
+DESCRIPTION="A Django plugin for pytest"
+HOMEPAGE="
+ https://pypi.org/project/pytest-django/
+ https://pytest-django.readthedocs.io/
+ https://github.com/pytest-dev/pytest-django/
+"
+SRC_URI="
+ https://github.com/pytest-dev/pytest-django/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/pytest-7.0.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ >=dev-python/setuptools-scm-1.11.1[${PYTHON_USEDEP}]
+ test? (
+ dev-python/django[${PYTHON_USEDEP}]
+ >=dev-python/django-configurations-2.0[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ )
+"
+
+export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
+
+distutils_enable_tests pytest
+
+python_test() {
+ local -x DJANGO_SETTINGS_MODULE
+ local -x PYTHONPATH=${PWD}
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local -x PYTEST_PLUGINS=pytest_django.plugin,xdist.plugin
+ for DJANGO_SETTINGS_MODULE in pytest_django_test.settings_sqlite{,_file}; do
+ einfo "Testing ${DJANGO_SETTINGS_MODULE}"
+ epytest tests
+ done
+}
diff --git a/dev-python/pytest-httpserver/Manifest b/dev-python/pytest-httpserver/Manifest
index 9d90e0087da9..d5c22f5de3d7 100644
--- a/dev-python/pytest-httpserver/Manifest
+++ b/dev-python/pytest-httpserver/Manifest
@@ -1,2 +1 @@
-DIST pytest_httpserver-1.1.0.tar.gz 67210 BLAKE2B 2965ad0f33a4312439b6af57cb4f53586e6707fbb9f55db1f766b147118a646aa3f0a338c2b693f44b9ae5a5184c94aea245f0af868d929770b54138edf7b70b SHA512 3e707be45d2e29ef213b42e7447ec35599ff1ca6ab7e193a9dee643979d2cd3d9a5a549cd8ff3c313eb2056845ca831c11492f8118e465ce98f0854042b37e27
DIST pytest_httpserver-1.1.1.tar.gz 68190 BLAKE2B 80fec2aaa84f5625e6a67400153efc002f4586e0878745980fbb2f2c6bd82f5d6230284483a8ce7e501f51a5bd732dfd777d96183cfb83c793c347761e5eddb6 SHA512 3d212cb230ee5be5b1fb450944a9fa56396b692c8fd8a63fca71045640865657fd110a657ec0eb2e24c4d2fb43bfc5997fd056a107b7a6ce573dad4e914b7004
diff --git a/dev-python/pytest-httpserver/pytest-httpserver-1.1.0.ebuild b/dev-python/pytest-httpserver/pytest-httpserver-1.1.0.ebuild
deleted file mode 100644
index e5f8c2875460..000000000000
--- a/dev-python/pytest-httpserver/pytest-httpserver-1.1.0.ebuild
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=poetry
-PYTHON_COMPAT=( python3_{10..13} pypy3 )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="HTTP server for pytest to test HTTP clients"
-HOMEPAGE="
- https://github.com/csernazs/pytest-httpserver/
- https://pypi.org/project/pytest_httpserver/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
-
-RDEPEND="
- dev-python/werkzeug[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/requests[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-
-python_test() {
- local EPYTEST_IGNORE=(
- # tests from building release artifacts
- tests/test_release.py
- )
-
- epytest -p no:localserver
-}
diff --git a/dev-python/pytest-httpserver/pytest-httpserver-1.1.1.ebuild b/dev-python/pytest-httpserver/pytest-httpserver-1.1.1.ebuild
index 07aedad04186..e1980516e3f2 100644
--- a/dev-python/pytest-httpserver/pytest-httpserver-1.1.1.ebuild
+++ b/dev-python/pytest-httpserver/pytest-httpserver-1.1.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+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-qt/pytest-qt-4.4.0.ebuild b/dev-python/pytest-qt/pytest-qt-4.4.0.ebuild
index d2289519c423..b465a82bef5e 100644
--- a/dev-python/pytest-qt/pytest-qt-4.4.0.ebuild
+++ b/dev-python/pytest-qt/pytest-qt-4.4.0.ebuild
@@ -6,7 +6,6 @@ EAPI=8
DISTUTILS_USE_PEP517=setuptools
PYPI_NO_NORMALIZE=1
PYTHON_COMPAT=( python3_{10..13} )
-PYSIDE2_COMPAT=( python3_{10..11} )
inherit distutils-r1 virtualx pypi
@@ -29,10 +28,7 @@ BDEPEND="
|| (
dev-python/pyqt6[gui,testlib,widgets,${PYTHON_USEDEP}]
dev-python/pyqt5[gui,testlib,widgets,${PYTHON_USEDEP}]
- dev-python/pyside6[gui,testlib,widgets,${PYTHON_USEDEP}]
- $(python_gen_cond_dep '
- dev-python/pyside2[gui,testlib,widgets,${PYTHON_USEDEP}]
- ' "${PYSIDE2_COMPAT[@]}")
+ dev-python/pyside:6[gui,testlib,widgets,${PYTHON_USEDEP}]
)
)
"
@@ -64,7 +60,7 @@ python_test() {
)
local -x PYTEST_QT_API
- for PYTEST_QT_API in PyQt{5,6} pyside{2,6}; do
+ for PYTEST_QT_API in PyQt{5,6} "pyside:6"; do
if has_version "dev-python/${PYTEST_QT_API}[gui,testlib,widgets,${PYTHON_USEDEP}]"
then
einfo "Testing with ${EPYTHON} and ${PYTEST_QT_API}"
diff --git a/dev-python/python-lsp-server/Manifest b/dev-python/python-lsp-server/Manifest
index ec0b6bef508d..5c9a16cd05c9 100644
--- a/dev-python/python-lsp-server/Manifest
+++ b/dev-python/python-lsp-server/Manifest
@@ -1 +1,3 @@
DIST python_lsp_server-1.12.0.tar.gz 114328 BLAKE2B 3c94642be615822058debda5cb9de07529e7d269938029d66ade7eb7db801e7db90ae724f449e1133a813967e94bcfc71247f0392db1c495af5fff89ae66bd03 SHA512 74cbd8012f5e027fb117105302ba92e142900e88565d7f95d2dad72f2624048fff3c2c85085b648bd1ff86f6f6eb679aa34d5f6d9ae54b80e96b6ed472785b32
+DIST python_lsp_server-1.12.1.tar.gz 115002 BLAKE2B 14d4b424fa0f36d0896d699505636934255ca0057257ba4fc447faf4058327e4e2afcffab3f7dc1e81a901c9c9070c4debc69f69a2c0745bec660bfaba1e58fe SHA512 6a457bd20c5d9113a64ddbbfaabc85c6129b3900bed298622e9fc344afa342eb3a91fd8c4aa795ace063d74369d4096327d464568b16f794257e07bbb1dca5a7
+DIST python_lsp_server-1.12.2.tar.gz 115054 BLAKE2B 5ee67de14e029dc0550d9ac412ce042357938783ae00435db7147921fa4923dd7f0df9c882ce3c54b43f03c9ebec2230444174920141efc17d67c2afaf406f5d SHA512 5a24fa6a8928a36498f50aa026f84478a4193e0991a4b83cad04a7ec131ca50c0d6104feb88c34721cbeab4900e4709b2ba21013aa232a197ee81d13b78c7a0b
diff --git a/dev-python/python-lsp-server/python-lsp-server-1.12.1.ebuild b/dev-python/python-lsp-server/python-lsp-server-1.12.1.ebuild
new file mode 100644
index 000000000000..7b340b993f04
--- /dev/null
+++ b/dev-python/python-lsp-server/python-lsp-server-1.12.1.ebuild
@@ -0,0 +1,90 @@
+# 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_{10..13} )
+
+inherit distutils-r1 optfeature pypi
+
+DESCRIPTION="Python Language Server for the Language Server Protocol"
+HOMEPAGE="
+ https://github.com/python-lsp/python-lsp-server/
+ https://pypi.org/project/python-lsp-server/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="all-plugins"
+
+PLUGIN_DEP="
+ >=dev-python/autopep8-2.0.4[${PYTHON_USEDEP}]
+ >=dev-python/flake8-7.1[${PYTHON_USEDEP}]
+ >=dev-python/mccabe-0.7.0[${PYTHON_USEDEP}]
+ >=dev-python/pycodestyle-2.12.0[${PYTHON_USEDEP}]
+ >=dev-python/pyflakes-3.2.0[${PYTHON_USEDEP}]
+ >=dev-python/pylint-3.1[${PYTHON_USEDEP}]
+ >=dev-python/rope-1.11.0[${PYTHON_USEDEP}]
+ >=dev-python/whatthepatch-1.0.2[${PYTHON_USEDEP}]
+ >=dev-python/yapf-0.33.0[${PYTHON_USEDEP}]
+"
+RDEPEND="
+ dev-python/docstring-to-markdown[${PYTHON_USEDEP}]
+ >=dev-python/jedi-0.17.2[${PYTHON_USEDEP}]
+ >=dev-python/python-lsp-jsonrpc-1.1.0[${PYTHON_USEDEP}]
+ dev-python/pluggy[${PYTHON_USEDEP}]
+ all-plugins? (
+ ${PLUGIN_DEP}
+ )
+"
+BDEPEND="
+ test? (
+ ${PLUGIN_DEP}
+ dev-python/flaky[${PYTHON_USEDEP}]
+ dev-python/matplotlib[${PYTHON_USEDEP}]
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/pandas[${PYTHON_USEDEP}]
+ dev-python/qtpy[gui,testlib,${PYTHON_USEDEP}]
+ )
+"
+
+# Note: xdist breaks some tests
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # remove pytest-cov dep
+ sed -i -e '/addopts =/d' pyproject.toml || die
+ # unpin all the deps
+ sed -i -e 's:,<[0-9.]*::' pyproject.toml || die
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # broken by presence of pathlib2
+ 'test/plugins/test_autoimport.py'
+ # Requires pyqt5
+ 'test/plugins/test_completion.py::test_pyqt_completion'
+ )
+ local EPYTEST_IGNORE=(
+ # pydocstyle is archived upstream and broken with py3.12
+ test/plugins/test_pydocstyle_lint.py
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest
+}
+
+pkg_postinst() {
+ optfeature "Automatically format Python code to conform to the PEP 8 style guide" dev-python/autopep8
+ optfeature "A wrapper around PyFlakes, pep8 & mccabe" dev-python/flake8
+ optfeature "flake8 plugin: McCabe complexity checker" dev-python/mccabe
+ optfeature "Python style guide checker (fka pep8)" dev-python/pycodestyle
+ optfeature "Python docstring style checker" dev-python/pydocstyle
+ optfeature "Passive checker for Python programs" dev-python/pyflakes
+ optfeature "Python code static checker" dev-python/pylint
+ optfeature "Python refactoring library" dev-python/rope
+ optfeature "A formatter for Python files" dev-python/yapf
+}
diff --git a/dev-python/python-lsp-server/python-lsp-server-1.12.2.ebuild b/dev-python/python-lsp-server/python-lsp-server-1.12.2.ebuild
new file mode 100644
index 000000000000..7b340b993f04
--- /dev/null
+++ b/dev-python/python-lsp-server/python-lsp-server-1.12.2.ebuild
@@ -0,0 +1,90 @@
+# 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_{10..13} )
+
+inherit distutils-r1 optfeature pypi
+
+DESCRIPTION="Python Language Server for the Language Server Protocol"
+HOMEPAGE="
+ https://github.com/python-lsp/python-lsp-server/
+ https://pypi.org/project/python-lsp-server/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="all-plugins"
+
+PLUGIN_DEP="
+ >=dev-python/autopep8-2.0.4[${PYTHON_USEDEP}]
+ >=dev-python/flake8-7.1[${PYTHON_USEDEP}]
+ >=dev-python/mccabe-0.7.0[${PYTHON_USEDEP}]
+ >=dev-python/pycodestyle-2.12.0[${PYTHON_USEDEP}]
+ >=dev-python/pyflakes-3.2.0[${PYTHON_USEDEP}]
+ >=dev-python/pylint-3.1[${PYTHON_USEDEP}]
+ >=dev-python/rope-1.11.0[${PYTHON_USEDEP}]
+ >=dev-python/whatthepatch-1.0.2[${PYTHON_USEDEP}]
+ >=dev-python/yapf-0.33.0[${PYTHON_USEDEP}]
+"
+RDEPEND="
+ dev-python/docstring-to-markdown[${PYTHON_USEDEP}]
+ >=dev-python/jedi-0.17.2[${PYTHON_USEDEP}]
+ >=dev-python/python-lsp-jsonrpc-1.1.0[${PYTHON_USEDEP}]
+ dev-python/pluggy[${PYTHON_USEDEP}]
+ all-plugins? (
+ ${PLUGIN_DEP}
+ )
+"
+BDEPEND="
+ test? (
+ ${PLUGIN_DEP}
+ dev-python/flaky[${PYTHON_USEDEP}]
+ dev-python/matplotlib[${PYTHON_USEDEP}]
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/pandas[${PYTHON_USEDEP}]
+ dev-python/qtpy[gui,testlib,${PYTHON_USEDEP}]
+ )
+"
+
+# Note: xdist breaks some tests
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # remove pytest-cov dep
+ sed -i -e '/addopts =/d' pyproject.toml || die
+ # unpin all the deps
+ sed -i -e 's:,<[0-9.]*::' pyproject.toml || die
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # broken by presence of pathlib2
+ 'test/plugins/test_autoimport.py'
+ # Requires pyqt5
+ 'test/plugins/test_completion.py::test_pyqt_completion'
+ )
+ local EPYTEST_IGNORE=(
+ # pydocstyle is archived upstream and broken with py3.12
+ test/plugins/test_pydocstyle_lint.py
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest
+}
+
+pkg_postinst() {
+ optfeature "Automatically format Python code to conform to the PEP 8 style guide" dev-python/autopep8
+ optfeature "A wrapper around PyFlakes, pep8 & mccabe" dev-python/flake8
+ optfeature "flake8 plugin: McCabe complexity checker" dev-python/mccabe
+ optfeature "Python style guide checker (fka pep8)" dev-python/pycodestyle
+ optfeature "Python docstring style checker" dev-python/pydocstyle
+ optfeature "Passive checker for Python programs" dev-python/pyflakes
+ optfeature "Python code static checker" dev-python/pylint
+ optfeature "Python refactoring library" dev-python/rope
+ optfeature "A formatter for Python files" dev-python/yapf
+}
diff --git a/dev-python/python-tests/Manifest b/dev-python/python-tests/Manifest
index dada496efb7d..0e1718df0a4a 100644
--- a/dev-python/python-tests/Manifest
+++ b/dev-python/python-tests/Manifest
@@ -4,11 +4,17 @@ DIST Python-3.11.11.tar.xz 20085792 BLAKE2B a9a778eff94529e1029ae252ef28ecdc2f06
DIST Python-3.11.11.tar.xz.asc 833 BLAKE2B 6a9d873e181d636712567ea46823ad7f972f872d038092506e67bada24187441188b8fde4672c205ce6d37e60c4e0c69a8f3cc5d1915fd8f5dd8743292a16d1b SHA512 d71b0b42537fb636e8c469d62d13ff020149e4fb9d87eb17f8c999301195e418d134dbdb7e4ab49b06de16e96f8ef6bbcf2a749956fffca2ce03185f191c181d
DIST Python-3.12.8.tar.xz 20489808 BLAKE2B 24b9a5abafdb9fedfc371e7acf0efce50bdc6702050c4f5f0b9e97916a899e3462f928cb217c48e6ffae6fdd4d2cd7c05c5f1d73eaa9ef646f4b3281db5ca977 SHA512 406ce1146c4c2c70d252df56bbe9e5970ef469395cbaa211a96af71f32de2cf7abd944906920cc18b4a470027e63a3f64bf7679fb4954b31bf4ca4baf24fa370
DIST Python-3.12.8.tar.xz.asc 963 BLAKE2B 5aeacf16d337949a66bb56e346447e7bbcd9166b60fc512c98bcff6862976732ef2e3ac59869cd9df29a653c2bafd4af63b1e6c14f4c6603efb85d5c3dd88357 SHA512 19493499ddb80764aa105e100585d2ef872798dc30fdff2e31d158cd7fd65b69ca133c6d9d16eb974660eed6ba474a26a2af3acd13a90522cf50e142492bd9a6
+DIST Python-3.12.9.tar.xz 20502440 BLAKE2B df1a8ba4996219c018fc14156958ca9c0e8af4854819064fbcf0c927258ecb3c5f46e562213799a87dafb35ae5bd647e1ce280affe2ac8ce6a85c351822b6693 SHA512 c840b14aa21e6a963d18c06ebaafb551d9c9a101b3866417e762fc4a2fde071a7a25fa257faba2956c7344bbc2413ed61690a712d26fba4d0dbeaa50e49b2574
+DIST Python-3.12.9.tar.xz.asc 963 BLAKE2B d90b9c1a3aafa1a942ef8d978b566829656db1114b74f1565b7cbba188cf3bf5637c1dbeec3432ae0af0f826a154c40f27fd8fc46350a757ef91f5c426908149 SHA512 b59251ca3a0a17c06ff7d165f6c025eb91127c80be0782642590f5c922297e0710544ac5a9ae977378e393f1c4861149576a0515af5ec0e54e6827c4010d544f
DIST Python-3.13.1.tar.xz 22589692 BLAKE2B 161d5c0a7b4cacc4ce9983f9540a7e01662a7b76cbb34c5f3681582b0e7207574bdec5ad7bf79d820d8744b69bc2fb7196cf07a2ecadbfab6a158872f562741d SHA512 056c9b5fc0a6b540f41513d045f43c1ed463d15e0f345cecec703ec9c2335e53b4beb19de9c74ab2b236b023f934d5fd9ae7727a808634eaa01cfe66018a9a35
DIST Python-3.13.1.tar.xz.asc 963 BLAKE2B 47cbfb6bceb92716181a0ed8f41742958568e62609fa4996d341e465bd6be0ebcab586ba1ebe275aa3a99108221be047fab66ec4b7e90af27d9db7524b6b4951 SHA512 1b56b7c2f547aa39c75c18978e174debb113444ce3f9da3829ba6842e3160051e0de70bd49d306b8014299aa8aa911d7c67efe71dd648c3528cf8d7535a01599
+DIST Python-3.13.2.tar.xz 22621108 BLAKE2B 79c7dff8a15fd2487d62847a8e654c02433a89887aa4f93819020b60a30587e3ba92b101553d971b59e132677f9f74dfc41cd7c7901db78a7787607ec96c6664 SHA512 bb1c0598914c6d4326554faa568f660f10b20c701d0f36bf1fa58837b6498d728a407416b06ede39604caea1ca93f60545b83b01ae8ee65f55d4cc83242b63fe
+DIST Python-3.13.2.tar.xz.asc 963 BLAKE2B 95a36c305dd452df23b4f119de05e1d3a2b2c9e0c2778a52dc4065f82b52752b68d89eb737cc54cced70623ad4a7b48c85fdff781bf7d7e3b747dacb1ef77db0 SHA512 5f019be530f688b0adf5d5cc9f2c2243e2f1dc7338559db14c1eedd12aadc85404d42c7aafd74e41828205d85f13f278876662ac30c8f3382a1ee081ba5f29f2
DIST python-gentoo-patches-3.10.16_p1.tar.xz 24964 BLAKE2B 93cf5d208f80f1017e4afdcf7d3551d150a1d68c378312af43c668156d98f10087d2b6f315f717823a9aae1114e2baa999f61ce179639e5511d30ed9620c9570 SHA512 74ad92d3256d744e3572c0d858b4ba4d5f0f6fda84d8f3c1a1fb675376c2d525e2d9fd636a65c8a859a0a312eda00877b13ba311f620b6a51e47dfb082843333
DIST python-gentoo-patches-3.11.11_p1.tar.xz 11644 BLAKE2B d080e1b987ea0e1b397113f20a5c84f6a34d6619a3ed9f7389fd10d95636169563fba97d212477ca7f9b93d2bd0b66c9521fc61963bb468805a661ca3ab287a7 SHA512 f6045adf25923053fc9a60506b9164c9c062580d6886f1a3dcaca00dc4affe69aa9e138f8ce93f093798ccf33322ccca2aca674ab87457df98a93dcaca234b44
DIST python-gentoo-patches-3.12.8.tar.xz 10772 BLAKE2B 9833b5ee6c307a4aa1335fd966fcd64a0f3732a97a190abdd3121b3496ea68ead9436af4ec5e3e8c0e781fd68df41403a1b2e5f29f264fc8569a883141e5f7f9 SHA512 d5906845a6259f7349a0299e185f569750b493c64ea1f6537dc8bfc0babc9b54de7db1c4f1b5b6ec2f7076937ad07ca0ca9c4941bbb8d542da6c687957bdbd5e
DIST python-gentoo-patches-3.12.8_p1.tar.xz 11088 BLAKE2B 4d7ccf4759b624aafde1ef2a0a341cda8f4d3e7c4d86586201a910d77327219e61b134985f2fe85e83892ad4ba607b4e661aed675cc038e4cc193efe9fbe6f6e SHA512 6f1d6ab2b9e958ae7d2ca3f204b7c7eb1435998919cf5a577a82bbf1339232f92a2f517c248afb9e1802850acd2b59b84c41e87f4b8582e19ec88155743cdaae
+DIST python-gentoo-patches-3.12.9.tar.xz 10736 BLAKE2B 1f87d1bba8c094936e5cd3e0ef2eede0dbca3e658430f81b398735d8f02fff1f87739914014dbcb17163f8a969ffc5e7e4cce7d71557ce3c2e58487e6ed8b80f SHA512 342f11df85926e32455d52115d06b817a17f7ae104e3ea8e852046d321d829835bba7c07803c50dd5433ac8b615499428d5bc1a088b484ca0c4304eb8b2cb879
DIST python-gentoo-patches-3.13.1.tar.xz 8320 BLAKE2B 2fef9c501df7ed7603eabb3e01a8c3bde5bcfae3a8ac9bbe772b458cb04ffa9598cf38f3a74f6dcbcda29e7bd294d664b8fb12f7ddd9e0e42ed6268300947bb0 SHA512 419e1f12daaf19ed2d2195699b5e8c2c604779562d84d6a68adb4016dcb13fc3e0383ccc4b01eb153930600e6c9cdcc518929ffce3d6343019226a6111e9d617
DIST python-gentoo-patches-3.13.1_p1.tar.xz 8672 BLAKE2B d35b8b47c6d549753d9a764fbc3538cb6517c809e69901f3221110ccbb0ea9eed10ba1f1637a5ffe4f90d8c3932f53815c7dcf844a7350ad89458763bf0aeea1 SHA512 0505bc1f7c8e264fdcad5459900e37d12ed9bea57e615ea42492fa211d3f0641e79c3e711a6970cd34a3a6275f36a22ed7ba64fd71c988bcdaebfcefc7b6a1d2
+DIST python-gentoo-patches-3.13.2.tar.xz 8316 BLAKE2B 2367808924c83c02b8b2ca765fd4768d4f12cb8e8451eab9d084ce5950a5a81829e573d415f9a16db2e053105def90b5f52c91423fc71e57cd182a1d9c824d8c SHA512 580332ca037c1453f314d5811f96f7bf74defc16cfe515c4fe82ea08a7bf3679aa88d5456db846d988bcf4fbc9eeb4ebe7cee01d135bd55c87931206250e301a
diff --git a/dev-python/python-tests/python-tests-3.12.9.ebuild b/dev-python/python-tests/python-tests-3.12.9.ebuild
new file mode 100644
index 000000000000..7ae5a0012e99
--- /dev/null
+++ b/dev-python/python-tests/python-tests-3.12.9.ebuild
@@ -0,0 +1,69 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_12 )
+
+inherit python-r1 verify-sig
+
+MY_PV=${PV}
+MY_P="Python-${MY_PV%_p*}"
+PYVER=$(ver_cut 1-2)
+PATCHSET="python-gentoo-patches-${MY_PV}"
+
+DESCRIPTION="Test modules from dev-lang/python"
+HOMEPAGE="
+ https://www.python.org/
+ https://github.com/python/cpython/
+"
+SRC_URI="
+ https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz
+ https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz
+ verify-sig? (
+ https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz.asc
+ )
+"
+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"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ ~dev-lang/python-${PV}:${PYVER}
+ !<dev-lang/python-3.12.5_p1-r1:${PYVER}
+"
+BDEPEND="
+ ${RDEPEND}
+ verify-sig? ( >=sec-keys/openpgp-keys-python-20221025 )
+"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/python.org.asc
+
+src_unpack() {
+ if use verify-sig; then
+ verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc}
+ fi
+ default
+}
+
+src_prepare() {
+ local PATCHES=(
+ "${WORKDIR}/${PATCHSET}"
+ )
+
+ cd .. || die
+ default
+}
+
+src_install() {
+ python_setup
+ # keep in sync with TESTSUBDIRS in Makefile.pre.in
+ python_moduleinto "/usr/lib/python${PYVER}"
+ python_domodule test
+ python_moduleinto "/usr/lib/python${PYVER}/idlelib"
+ python_domodule idlelib/idle_test
+}
diff --git a/dev-python/python-tests/python-tests-3.13.2.ebuild b/dev-python/python-tests/python-tests-3.13.2.ebuild
new file mode 100644
index 000000000000..7227ab7555d2
--- /dev/null
+++ b/dev-python/python-tests/python-tests-3.13.2.ebuild
@@ -0,0 +1,69 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_13 )
+
+inherit python-r1 verify-sig
+
+MY_PV=${PV/_}
+MY_P="Python-${MY_PV%_p*}"
+PYVER=$(ver_cut 1-2)
+PATCHSET="python-gentoo-patches-${MY_PV}"
+
+DESCRIPTION="Test modules from dev-lang/python"
+HOMEPAGE="
+ https://www.python.org/
+ https://github.com/python/cpython/
+"
+SRC_URI="
+ https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz
+ https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz
+ verify-sig? (
+ https://www.python.org/ftp/python/${PV%%_*}/${MY_P}.tar.xz.asc
+ )
+"
+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"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ ~dev-lang/python-${PV}:${PYVER}
+ !<dev-lang/python-3.13.0_rc1_p3-r1:${PYVER}
+"
+BDEPEND="
+ ${RDEPEND}
+ verify-sig? ( >=sec-keys/openpgp-keys-python-20221025 )
+"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/python.org.asc
+
+src_unpack() {
+ if use verify-sig; then
+ verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.xz{,.asc}
+ fi
+ default
+}
+
+src_prepare() {
+ local PATCHES=(
+ "${WORKDIR}/${PATCHSET}"
+ )
+
+ cd .. || die
+ default
+}
+
+src_install() {
+ python_setup
+ # keep in sync with TESTSUBDIRS in Makefile.pre.in
+ python_moduleinto "/usr/lib/python${PYVER}"
+ python_domodule test
+ python_moduleinto "/usr/lib/python${PYVER}/idlelib"
+ python_domodule idlelib/idle_test
+}
diff --git a/dev-python/qiskit-aer/Manifest b/dev-python/qiskit-aer/Manifest
index 841379ba28be..8f52f78c01f6 100644
--- a/dev-python/qiskit-aer/Manifest
+++ b/dev-python/qiskit-aer/Manifest
@@ -1,3 +1,2 @@
-DIST qiskit-aer-0.15.1.gh.tar.gz 7136084 BLAKE2B 521329642f141fbb5d4bb045f42b53e1a116614328837999d73e28c54fd7e1b8aa64d72080b54950575c264bd14349227b395363cc92ce384f1b4951d414862b SHA512 bd3a320b8022aacc9691e5aa6e54cbc63fe51e623b7b22399ad23ff8e7c14f7870c78b5ca84c0aeb420b44e088307296d01f351bb1cc90488f0018496ebbaa25
-DIST qiskit-aer-0.15.gh.tar.gz 7133462 BLAKE2B 3a72d5e1c97e54dd9090bbd072ca52c03bc90d53ec13bdb52b20112adebde6ef4e85a5d3761d5cc9fab7bc8d41651865e538eaad591dad266533441114ae1ddc SHA512 ce70755fa26150e8ce870a5f80c7f37a8e09f02ac4dbcfe52de2153b8af6f92764ac6866b1fffb75db6e1ae1b31815432ffca54f2f916337f640c14007a682f3
+DIST qiskit-aer-0.16.1.gh.tar.gz 7137732 BLAKE2B 0f522bae3e2d324171bdf0a3bb8f1c99c8c1b9beac4932146dddb51616ad6b47236ffe15d533cdee64dfbd9b48ca5f24f26774e4487d2b3238f02939908b5891 SHA512 31c57ab09fecb5452205d7c8fb550384bf6e24aaa4a9665d37a7833f6353861407136f0c36fe85c8d26c386bb37b16e3298daa2c81c2aec384c69de0d3a87ee6
DIST qiskit-aer-0.16.gh.tar.gz 7137525 BLAKE2B ddbad1c1c8be51806c5de524327312f8c56fb46f686b3c61b2059770485ff0022fab45faae55f22f2ac37e4cd6e71fd2d2b9c27c945639dc785b6dbb3a33492f SHA512 ef976cc51f0899aeaafd15d8e493925c6c60245a321bc0bf130b8496d003a5b684ce6af4f3caa91fdefe085bba96e957401b7d1aa7e9db3e5fb5d795a0459ad8
diff --git a/dev-python/qiskit-aer/qiskit-aer-0.15.ebuild b/dev-python/qiskit-aer/qiskit-aer-0.15.ebuild
deleted file mode 100644
index 06def0bfe1d8..000000000000
--- a/dev-python/qiskit-aer/qiskit-aer-0.15.ebuild
+++ /dev/null
@@ -1,119 +0,0 @@
-# Copyright 2022-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_{10..13} )
-
-inherit distutils-r1
-
-DESCRIPTION="High performance simulator for quantum circuits that includes noise models"
-HOMEPAGE="
- https://github.com/Qiskit/qiskit-aer/
- https://pypi.org/project/qiskit-aer/
-"
-SRC_URI="
- https://github.com/Qiskit/qiskit-aer/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64"
-
-# The reference implementation of BLAS/CBLAS is not compatible with qiskit-aer right now,
-# because importing library causes an error.
-# /usr/lib/python3.9/site-packages/qiskit/providers/aer/backends/controller_wrappers.cpython-39-x86_64-linux-gnu.so: undefined symbol: slamch_
-# Using sci-libs/openblas instead here,
-# with the option to switch between reference/openblas implementation runtime (eselect-ldso).
-#
-# <nlohmann_json-3.10.3 for https://github.com/Qiskit/qiskit-aer/issues/1742
-DEPEND="
- >=dev-python/numpy-1.16.3[${PYTHON_USEDEP}]
- <dev-cpp/nlohmann_json-3.10.3
- >=dev-cpp/nlohmann_json-3.1.1
- >=dev-libs/spdlog-1.9.2:=
- >=dev-cpp/muParserX-4.0.8
- virtual/cblas[eselect-ldso]
- sci-libs/openblas[eselect-ldso]
-"
-RDEPEND="
- ${DEPEND}
- >=dev-python/psutil-5[${PYTHON_USEDEP}]
- >=dev-python/qiskit-1.1.0[${PYTHON_USEDEP}]
- >=dev-python/scipy-1.0[${PYTHON_USEDEP}]
-"
-BDEPEND="
- >=dev-build/cmake-3.17
- >=dev-python/scikit-build-0.11.0[${PYTHON_USEDEP}]
- >=dev-python/pybind11-2.6[${PYTHON_USEDEP}]
- test? (
- dev-python/ddt[${PYTHON_USEDEP}]
- dev-python/fixtures[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-check_openblas() {
- local libdir=$(get_libdir) me="openblas"
-
- # check blas
- local current_blas=$(eselect blas show ${libdir} | cut -d' ' -f2)
- if [[ ${current_blas} != "${me}" ]]; then
- eerror "Current eselect: BLAS/CBLAS ($libdir) -> [${current_blas}]."
- eerror "To use qiskit-aer, you have to issue (as root):"
- eerror "\t eselect blas set ${libdir} ${me}"
- return 1
- fi
- return 0
-}
-
-pkg_setup() {
- if use test; then
- check_openblas
- if [[ $? -ne 0 ]]; then
- die "Set blas implementation to openblas using 'eselect blas set openblas'!"
- fi
- fi
-}
-
-python_prepare_all() {
- export DISABLE_CONAN="ON"
- export DISABLE_DEPENDENCY_INSTALL="ON"
- export SKBUILD_CONFIGURE_OPTIONS="-DTEST_JSON=1"
-
- distutils-r1_python_prepare_all
-}
-
-python_test() {
- local EPYTEST_DESELECT=(
- # requires qiskit_qasm3_import
- test/terra/backends/aer_simulator/test_save_statevector.py::TestSaveStatevector::test_save_statevector_for_qasm3_circuit_1___automatic____CPU__
- test/terra/backends/aer_simulator/test_save_statevector.py::TestSaveStatevector::test_save_statevector_for_qasm3_circuit_2___statevector____CPU__
- test/terra/backends/aer_simulator/test_save_statevector.py::TestSaveStatevector::test_save_statevector_for_qasm3_circuit_3___matrix_product_state____CPU__
- test/terra/backends/aer_simulator/test_save_statevector.py::TestSaveStatevector::test_save_statevector_for_qasm3_circuit_4___extended_stabilizer____CPU__
- )
-
- local EPYTEST_IGNORE=(
- # TODO: qiskit.providers.aer? wtf?
- test/terra/expression/test_classical_expressions.py
- )
-
- # From tox.ini/tests.yml in CI
- # Needed to suppress a warning in jupyter-core 5.x by eagerly migrating to
- # a new internal interface that will be the default in jupyter-core 6.x.
- # This variable should become redundant on release of jupyter-core 6.
- local -x JUPYTER_PLATFORM_DIRS=1
-
- rm -rf qiskit_aer || die
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- epytest -s
-}
-
-pkg_postinst() {
- check_openblas
-}
diff --git a/dev-python/qiskit-aer/qiskit-aer-0.15.1.ebuild b/dev-python/qiskit-aer/qiskit-aer-0.16.1.ebuild
index 06def0bfe1d8..cc789dc13a1a 100644
--- a/dev-python/qiskit-aer/qiskit-aer-0.15.1.ebuild
+++ b/dev-python/qiskit-aer/qiskit-aer-0.16.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
diff --git a/dev-python/qtpy/Manifest b/dev-python/qtpy/Manifest
index ae92a947f4fb..81110b5fb0d6 100644
--- a/dev-python/qtpy/Manifest
+++ b/dev-python/qtpy/Manifest
@@ -1 +1,2 @@
DIST qtpy-2.4.2.tar.gz 66849 BLAKE2B 1eb362e797950d6c1406fb02bb3047ca7f8fdecd2b75371ab34f39601c9bdebce33336e3809c0d35dca31673c88d1734721a6dfdfb65f2ce20729445c4a4ca27 SHA512 2f9a0e1a4839c8dca23b4364900a12c2bd00f518353785a41eb6bd62fdc469670457f18224e1150a5a216ff5d0c4e799c3a1711ff7703ea07fadd655538fa37a
+DIST qtpy-2.4.3.tar.gz 66982 BLAKE2B 92596eaac7be55feaecbfe2fad388ac3a7a5e55763dc794be2a70c081b311843f5dadb03dba06df6711c32ba9c68f18f54c35921b3ba6e2f02f20922ed89455a SHA512 9a12d9e7a8651309807d578e07075d1bd44a7e72b84b7761e80e80b115a492c9369d842a3cca32a438070d9fde2564d9a69d7a2470e9331d81b11469e2c9808a
diff --git a/dev-python/qtpy/metadata.xml b/dev-python/qtpy/metadata.xml
index 2c32e7f74480..fe0e7db3605b 100644
--- a/dev-python/qtpy/metadata.xml
+++ b/dev-python/qtpy/metadata.xml
@@ -17,8 +17,7 @@
<use>
<flag name="pyqt5">Use <pkg>dev-python/pyqt5</pkg> as Qt for Python implementation</flag>
<flag name="pyqt6">Use <pkg>dev-python/pyqt6</pkg> as Qt for Python implementation</flag>
- <flag name="pyside2">Use dev-python/pyside2 as Qt for Python implementation</flag>
- <flag name="pyside6">Use <pkg>dev-python/pyside6</pkg> as Qt for Python implementation</flag>
+ <flag name="pyside6">Use <pkg>dev-python/pyside</pkg> as Qt for Python implementation</flag>
<flag name="designer">Pull in bindings for the QtDesigner module and enable the designer plugin</flag>
<flag name="gui">Pull in bindings for the QtGui module</flag>
<flag name="help">Pull in bindings for the QtHelp module</flag>
@@ -33,6 +32,7 @@
<flag name="quick">Build bindings for the QtQuick</flag>
<flag name="quick3d">Build bindings for the QtQuick3D</flag>
<flag name="remoteobjects">Pull in bindings for the QtRemoteObjects module</flag>
+ <flag name="scxml">Pull in bindings for the QtScXml module</flag>
<flag name="sensors">Pull in bindings for the QtSensors module</flag>
<flag name="serialport">Pull in bindings for the QtSerialPort module</flag>
<flag name="spatialaudio">Pull in bindings for the QtSpatialAudio module</flag>
diff --git a/dev-python/qtpy/qtpy-2.4.2-r1.ebuild b/dev-python/qtpy/qtpy-2.4.2-r1.ebuild
index 9b6dbd689790..a4a3ff96131b 100644
--- a/dev-python/qtpy/qtpy-2.4.2-r1.ebuild
+++ b/dev-python/qtpy/qtpy-2.4.2-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
@@ -62,12 +62,12 @@ RDEPEND="
)
pyside6? (
- dev-python/pyside6[${PYTHON_USEDEP}]
- dev-python/pyside6[bluetooth?,dbus?,designer?,gui?,help?,multimedia?]
- dev-python/pyside6[network?,nfc?,opengl?,pdfium?,positioning?]
- dev-python/pyside6[printsupport?,qml?,quick?,quick3d?,remoteobjects(-)?]
- dev-python/pyside6[sensors?,serialport?,spatialaudio?,speech?,sql?,svg?]
- dev-python/pyside6[testlib?,webchannel?,webengine?,websockets?,widgets?,xml?]
+ dev-python/pyside:6[${PYTHON_USEDEP},core(+)]
+ dev-python/pyside:6[bluetooth?,dbus?,designer?,gui?,help?,multimedia?]
+ dev-python/pyside:6[network?,nfc?,opengl?,pdfium?,positioning?]
+ dev-python/pyside:6[printsupport?,qml?,quick?,quick3d?,remoteobjects(-)?]
+ dev-python/pyside:6[sensors?,serialport?,spatialaudio?,speech?,sql?,svg?]
+ dev-python/pyside:6[testlib?,webchannel?,webengine?,websockets?,widgets?,xml?]
)
"
@@ -88,14 +88,13 @@ BDEPEND="
dev-qt/qtbase:6[sqlite]
)
pyside6? (
- dev-python/pyside6[${PYTHON_USEDEP}]
- dev-python/pyside6[3d,bluetooth,charts,concurrent,dbus,designer,gui]
- dev-python/pyside6[help,location,multimedia,network,network-auth]
- dev-python/pyside6[nfc,opengl,pdfium,positioning,printsupport,qml]
- dev-python/pyside6[quick,quick3d,scxml,sensors,serialport]
- dev-python/pyside6[spatialaudio,speech,sql,svg,testlib,webchannel]
- dev-python/pyside6[webengine,websockets,widgets,xml]
- dev-python/pyside6-tools[${PYTHON_USEDEP}]
+ dev-python/pyside:6[${PYTHON_USEDEP},core(+)]
+ dev-python/pyside:6[3d,bluetooth,charts,concurrent,dbus,designer,gui]
+ dev-python/pyside:6[help,location,multimedia,network,network-auth]
+ dev-python/pyside:6[nfc,opengl,pdfium,positioning,printsupport,qml]
+ dev-python/pyside:6[quick,quick3d,scxml,sensors,serialport]
+ dev-python/pyside:6[spatialaudio,speech,sql,svg,testlib,webchannel]
+ dev-python/pyside:6[webengine,websockets,widgets,xml]
dev-qt/qtbase:6[sqlite]
)
)
diff --git a/dev-python/qtpy/qtpy-2.4.2.ebuild b/dev-python/qtpy/qtpy-2.4.2.ebuild
index f2a73c7871e3..c1a656c804e4 100644
--- a/dev-python/qtpy/qtpy-2.4.2.ebuild
+++ b/dev-python/qtpy/qtpy-2.4.2.ebuild
@@ -24,14 +24,10 @@ _IUSE_QT_MODULES="
printsupport qml quick sensors serialport speech +sql svg testlib
webchannel webengine websockets +widgets +xml
"
-IUSE="+pyqt5 +pyqt6 pyside2 pyside6 ${_IUSE_QT_MODULES}"
+IUSE="+pyqt5 +pyqt6 pyside6 ${_IUSE_QT_MODULES}"
unset _IUSE_QT_MODULES
-REQUIRED_USE="
- || ( pyqt5 pyqt6 pyside2 pyside6 )
- python_targets_python3_12? ( !pyside2 )
- python_targets_python3_13? ( !pyside2 )
-"
+REQUIRED_USE="|| ( pyqt5 pyqt6 pyside6 )"
# These flags are currently *not* common to the PySide2/6 and PyQt5/6 ebuilds
# Disable them for now, please check periodically if this is still up to date.
@@ -88,21 +84,12 @@ RDEPEND="
webengine? ( dev-python/pyqt6-webengine[${PYTHON_USEDEP},widgets?,quick?] )
)
- pyside2? (
- $(python_gen_cond_dep '
- dev-python/pyside2[${PYTHON_USEDEP}]
- dev-python/pyside2[designer?,gui?,help?,multimedia?,network?,opengl(+)?]
- dev-python/pyside2[positioning?,printsupport?,qml?,quick?,sensors?,serialport(+)?]
- dev-python/pyside2[speech?,sql?,svg?,testlib?,webchannel?,webengine?,websockets?]
- dev-python/pyside2[widgets?,xml?]
- ' python3_{10..11})
- )
pyside6? (
- dev-python/pyside6[${PYTHON_USEDEP}]
- dev-python/pyside6[designer?,gui?,help?,multimedia?,network?,opengl?]
- dev-python/pyside6[positioning?,printsupport?,qml?,quick?,sensors(-)?,serialport?]
- dev-python/pyside6[speech(-)?,sql?,svg?,testlib?,webchannel?,webengine?,websockets?]
- dev-python/pyside6[widgets?,xml?]
+ dev-python/pyside[${PYTHON_USEDEP},core(+)]
+ dev-python/pyside[designer?,gui?,help?,multimedia?,network?,opengl?]
+ dev-python/pyside[positioning?,printsupport?,qml?,quick?,sensors(-)?,serialport?]
+ dev-python/pyside[speech(-)?,sql?,svg?,testlib?,webchannel?,webengine?,websockets?]
+ dev-python/pyside[widgets?,xml?]
)
"
@@ -130,28 +117,13 @@ BDEPEND="
dev-python/pyqt6-webengine[${PYTHON_USEDEP},widgets,quick]
dev-qt/qtbase:6[sqlite]
)
- pyside2? (
- $(python_gen_cond_dep '
- dev-python/pyside2[${PYTHON_USEDEP}]
- dev-python/pyside2[3d,charts,concurrent,datavis,designer,gui,help]
- dev-python/pyside2[location,multimedia,network,opengl(+)]
- dev-python/pyside2[positioning,printsupport,qml,quick,scxml]
- dev-python/pyside2[sensors,serialport(+),speech,sql,svg,testlib]
- dev-python/pyside2[webchannel,webengine,websockets,widgets,x11extras]
- dev-python/pyside2[xml,xmlpatterns]
- dev-qt/qtsql:5[sqlite]
- dev-python/pyside2-tools[${PYTHON_USEDEP}]
- ' python3_{10..11})
- dev-qt/qtsql:5[sqlite]
- )
pyside6? (
- dev-python/pyside6[${PYTHON_USEDEP}]
- dev-python/pyside6[3d(-),bluetooth(-),concurrent,dbus,designer,gui,help]
- dev-python/pyside6[location(-),multimedia,network,nfc(-),opengl,positioning,pdfium(-)]
- dev-python/pyside6[printsupport,qml,quick,quick3d,scxml(-),sensors(-)]
- dev-python/pyside6[serialport,spatialaudio(-),speech(-),sql,svg,testlib,webchannel]
- dev-python/pyside6[webengine,websockets,widgets,xml]
- dev-python/pyside6-tools[${PYTHON_USEDEP}]
+ dev-python/pyside[${PYTHON_USEDEP},core(+)]
+ dev-python/pyside[3d(-),bluetooth(-),concurrent,dbus,designer,gui,help]
+ dev-python/pyside[location(-),multimedia,network,nfc(-),opengl,positioning,pdfium(-)]
+ dev-python/pyside[printsupport,qml,quick,quick3d,scxml(-),sensors(-)]
+ dev-python/pyside[serialport,spatialaudio(-),speech(-),sql,svg,testlib,webchannel]
+ dev-python/pyside[webengine,websockets,widgets,xml]
dev-qt/qtbase:6[sqlite]
)
)
@@ -172,18 +144,16 @@ src_prepare() {
# We need to ensure the first option is an 'if' not 'elif'
sed -e 's/elif "PySide2" in sys.modules:/if "PySide2" in sys.modules:/g' -i qtpy/__init__.py || die
fi
- if ! use pyside2; then
+ sed \
+ -e "s/from PySide2 import/raise ImportError #/" \
+ -e "s/from PySide2.QtCore import/raise ImportError #/" \
+ -e '/if "PySide2" in sys.modules:/,/"pyside2"/c\' \
+ -i qtpy/__init__.py || die
+
+ if ! use pyqt5; then
sed \
- -e "s/from PySide2 import/raise ImportError #/" \
- -e "s/from PySide2.QtCore import/raise ImportError #/" \
- -e '/if "PySide2" in sys.modules:/,/"pyside2"/c\' \
+ -e 's/elif "PyQt6" in sys.modules:/if "PyQt6" in sys.modules:/g' \
-i qtpy/__init__.py || die
-
- if ! use pyqt5; then
- sed \
- -e 's/elif "PyQt6" in sys.modules:/if "PyQt6" in sys.modules:/g' \
- -i qtpy/__init__.py || die
- fi
fi
if ! use pyqt6; then
sed \
@@ -191,7 +161,7 @@ src_prepare() {
-e '/if "PyQt6" in sys.modules:/,/"pyqt6"/c\' \
-i qtpy/__init__.py || die
- if ! use pyqt5 && ! use pyside2; then
+ if ! use pyqt5; then
sed \
-e 's/elif "PySide6" in sys.modules:/if "PySide6" in sys.modules:/g' \
-i qtpy/__init__.py || die
diff --git a/dev-python/qtpy/qtpy-2.4.3.ebuild b/dev-python/qtpy/qtpy-2.4.3.ebuild
new file mode 100644
index 000000000000..3870257452f8
--- /dev/null
+++ b/dev-python/qtpy/qtpy-2.4.3.ebuild
@@ -0,0 +1,184 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_PN=QtPy
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1 virtualx pypi
+
+DESCRIPTION="Abstraction layer on top of PyQt and PySide with additional custom QWidgets"
+HOMEPAGE="
+ https://github.com/spyder-ide/qtpy/
+ https://pypi.org/project/QtPy/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+
+_IUSE_QT_MODULES="
+ bluetooth dbus designer +gui help multimedia +network nfc opengl pdfium
+ positioning printsupport qml quick quick3d remoteobjects scxml sensors
+ serialport spatialaudio speech +sql svg testlib vulkan webchannel
+ webengine websockets +widgets +xml
+"
+IUSE="+pyqt6 pyside6 ${_IUSE_QT_MODULES}"
+unset _IUSE_QT_MODULES
+
+REQUIRED_USE="|| ( pyqt6 pyside6 )"
+
+# These flags are currently *not* common to the PySide2/6 and PyQt5/6 ebuilds
+# Disable them for now, please check periodically if this is still up to date.
+# 3d? ( pyside6 only )
+# charts? ( pyside6 only )
+# concurrent? ( pyside6 only )
+# httpserver? ( pyside6 only )
+# uitools? ( pyside6 only )
+# location? ( pyside6 only)
+# network-auth? ( pyside6 only )
+
+# WARNING: the obvious solution of using || for PyQt5/pyside2 is not going
+# to work. The package only checks whether PyQt5/pyside2 is installed, it does
+# not verify whether they have the necessary modules (i.e. satisfy the USE dep).
+#
+# Webengine is a special case, because PyQt6 provides this in a separate package
+# while PySide6 ships it in the same package.
+RDEPEND="
+ dev-python/packaging[${PYTHON_USEDEP}]
+ pyqt6? (
+ dev-python/pyqt6[${PYTHON_USEDEP}]
+ dev-python/pyqt6[bluetooth?,dbus?,designer?,gui?,help?,multimedia?]
+ dev-python/pyqt6[network?,nfc?,opengl?,pdfium?,positioning?]
+ dev-python/pyqt6[printsupport?,qml?,quick?,quick3d?,remoteobjects?]
+ dev-python/pyqt6[scxml(-)?,sensors?,serialport?,spatialaudio?,speech?]
+ dev-python/pyqt6[sql?,svg?,testlib?,vulkan?,webchannel?,websockets?]
+ dev-python/pyqt6[widgets?,xml?]
+ webengine? ( dev-python/pyqt6-webengine[${PYTHON_USEDEP},widgets?,quick?] )
+
+ )
+ pyside6? (
+ dev-python/pyside:6[${PYTHON_USEDEP},core(+)]
+ dev-python/pyside:6[bluetooth?,dbus?,designer?,gui?,help?,multimedia?]
+ dev-python/pyside:6[network?,nfc?,opengl?,pdfium?,positioning?]
+ dev-python/pyside:6[printsupport?,qml?,quick?,quick3d?,remoteobjects(-)?]
+ dev-python/pyside:6[scxml?,sensors?,serialport?,spatialaudio?,speech?]
+ dev-python/pyside:6[sql?,svg?,testlib?,vulkan(+)?,webchannel?,webengine?]
+ dev-python/pyside:6[websockets?,widgets?,xml?]
+ )
+"
+
+# The QtPy testsuite skips tests for bindings that are not installed, so here we
+# ensure that everything is available and all tests are run. Note that not
+# all flags are available in PyQt5/PySide2, so some tests are still skipped.
+BDEPEND="
+ test? (
+ dev-python/pytest-qt[${PYTHON_USEDEP}]
+ pyqt6? (
+ dev-python/pyqt6[${PYTHON_USEDEP}]
+ dev-python/pyqt6[bluetooth,dbus,designer,gui,help,multimedia]
+ dev-python/pyqt6[network,nfc,opengl,pdfium,positioning,printsupport]
+ dev-python/pyqt6[qml,quick,quick3d,scxml(-),sensors,serialport]
+ dev-python/pyqt6[spatialaudio,speech,sql,svg,testlib,webchannel]
+ dev-python/pyqt6[vulkan(-),websockets,widgets,xml]
+ dev-python/pyqt6-webengine[${PYTHON_USEDEP},widgets,quick]
+ dev-qt/qtbase:6[sqlite]
+ )
+ pyside6? (
+ dev-python/pyside:6[${PYTHON_USEDEP},core(+)]
+ dev-python/pyside:6[3d,bluetooth,charts,concurrent,dbus,designer,gui]
+ dev-python/pyside:6[help,location,multimedia,network,network-auth]
+ dev-python/pyside:6[nfc,opengl,pdfium,positioning,printsupport,qml]
+ dev-python/pyside:6[quick,quick3d,scxml,sensors,serialport]
+ dev-python/pyside:6[spatialaudio,speech,sql,svg,testlib,vulkan(+)]
+ dev-python/pyside:6[webchannel,webengine,websockets,widgets,xml]
+ dev-qt/qtbase:6[sqlite]
+ )
+ )
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+ sed -i -e 's:--cov=qtpy --cov-report=term-missing::' pytest.ini || die
+ # Disable Qt for Python implementations that are not selected
+
+ # Always disable PyQt5
+ sed \
+ -e '/from PyQt5.QtCore import/,/)/c\ \ \ \ \ \ \ \ raise ImportError #/' \
+ -e '/if "PyQt5" in sys.modules:/,/"pyqt5"/c\' \
+ -i qtpy/__init__.py || die
+
+ # We need to ensure the first option is an 'if' not 'elif'
+ sed -e 's/elif "PySide2" in sys.modules:/if "PySide2" in sys.modules:/g' \
+ -i qtpy/__init__.py || die
+
+ # Always disable PySide2
+ sed \
+ -e "s/from PySide2 import/raise ImportError #/" \
+ -e "s/from PySide2.QtCore import/raise ImportError #/" \
+ -e '/if "PySide2" in sys.modules:/,/"pyside2"/c\' \
+ -i qtpy/__init__.py || die
+
+ sed \
+ -e 's/elif "PyQt6" in sys.modules:/if "PyQt6" in sys.modules:/g' \
+ -i qtpy/__init__.py || die
+
+ if ! use pyqt6; then
+ sed \
+ -e '/from PyQt6.QtCore import/,/)/c\ \ \ \ \ \ \ \ raise ImportError #/' \
+ -e '/if "PyQt6" in sys.modules:/,/"pyqt6"/c\' \
+ -i qtpy/__init__.py || die
+
+ sed \
+ -e 's/elif "PySide6" in sys.modules:/if "PySide6" in sys.modules:/g' \
+ -i qtpy/__init__.py || die
+ fi
+ if ! use pyside6; then
+ sed \
+ -e "s/from PySide6 import/raise ImportError #/" \
+ -e "s/from PySide6.QtCore import/raise ImportError #/" \
+ -e '/if "PySide6" in sys.modules:/,/"pyside6"/c\' \
+ -i qtpy/__init__.py || die
+ fi
+}
+
+python_test() {
+ local -x QT_API
+ local -a EPYTEST_DESELECT
+ local other
+
+ # Test for each enabled Qt4Python target.
+ # Deselect the other targets, their test fails if we specify QT_API
+ # or if we have disabled their corresponding inherit in __init__.py above
+ for QT_API in PyQt6 PySide6; do
+ if use "${QT_API,,}"; then
+ EPYTEST_DESELECT=()
+ for other in PyQt{5,6} PySide{2,6}; do
+ if [[ ${QT_API} != ${other} ]]; then
+ EPYTEST_DESELECT+=(
+ "qtpy/tests/test_main.py::test_qt_api_environ[${other}]"
+ )
+ fi
+ done
+
+ einfo "Testing with ${EPYTHON} and QT_API=${QT_API}"
+ nonfatal epytest -o addopts= ||
+ die -n "Tests failed with ${EPYTHON} and QT_API=${QT_API}" ||
+ return 1
+ fi
+ done
+}
+
+src_test() {
+ virtx distutils-r1_src_test
+}
+
+pkg_postinst() {
+ elog "When multiple Qt4Python targets are enabled QtPy will default to"
+ elog "the first enabled target in this order: PyQt6 PySide6."
+ elog "This can be overridden with the QT_API environment variable."
+}
diff --git a/dev-python/recurring-ical-events/Manifest b/dev-python/recurring-ical-events/Manifest
index 98c577d9d269..fe980ebc74b0 100644
--- a/dev-python/recurring-ical-events/Manifest
+++ b/dev-python/recurring-ical-events/Manifest
@@ -1,4 +1,2 @@
-DIST python-recurring-ical-events-3.3.3.gh.tar.gz 479005 BLAKE2B eca43a5892ffd3bc7b6b8e6c0d7d5c84d588894b2cc2d8a592d3753bd5c3158b3b0b4ac31932aa39e20c08789d72688b724cc128d53454b4a6c6e90e2dbd16ca SHA512 1b92383252c5497ff49adad5a2b5d2bb866dd72ccfd31621c305f5ec96baa5db9ca656f32787e34d9f551837cf9da769443fa017775a0d0042f6607fd138c7ef
-DIST python-recurring-ical-events-3.3.4.gh.tar.gz 479042 BLAKE2B cabd8679c362aa78f3f9a600d0518724dd4cabd4b813990147858dcb2659a14e5d947c8e1a2d4e681bf535387160a02e59bb816d6376ba9ba085b04718b5b1da SHA512 fcbc8faad94f34cdced49a9d7452aca61242241e45a591ce76334eb7b29a680e7bcd11f0b03c9037d43b3b4784fe641b032b48f714ee406d80ff43eec5208558
-DIST python-recurring-ical-events-3.4.0.gh.tar.gz 511539 BLAKE2B b451debd28dfa0e629dc7386841968bc3457d5dffe418aa2da10a7637956eb5975dd1d507701931cb9c95bb1f4d39deec452270c4d4f7a7758374af1a2fb46c7 SHA512 5031e902327b3b29806e65c24c059ec7e2a167f7ca96e6c79b639ddc67cbc526b569d822a1c9d9b625b08c8bde22f04b4cfc756bfed355c913de3a64db24ccc9
-DIST python-recurring-ical-events-3.4.1.gh.tar.gz 511709 BLAKE2B 30d0c8894b723d4e2a824840837d5f966fbfcf9b525e98e28993d8bfa5aad4f9a8042e1484339afeb8a966381cc4df92335cb7d13e31baaeb85e22e5e5fc6a1f SHA512 fbad8bf7878a0806fba6c11cfb644f2aecd99b3bab63194137effc4730b81b18aa9a8b3bc48c4442d083515e8a41fc392afbe64f15b5d597fd24079c80e02ff6
+DIST python-recurring-ical-events-3.5.0.gh.tar.gz 519274 BLAKE2B 153c65210a4bcbc3fad9140c9f8c19c0391a2da8e3e4bf712ea341d822486f9d56704966cdbcdfa432dc01edac730dd97c1bf55b2338c4d28925f63a5ce98f6f SHA512 7f3e96ddb23c677d947608610955bef9f1eec91372b5dca66b6e085b304f17252f31458e5c0c62dd20e2a3f654e0ffcbf7473359901223a82695e506ba0bd0c7
+DIST recurring_ical_events-3.5.1.tar.gz 602738 BLAKE2B 9bb39037f10dc5dcf58c4e38b102cdaf9860108a5c48f7d9d2a80a061e95a3f2295a13319b9a5ada372383ecd1ee37af93846822411b9451de87ed7a9c736761 SHA512 b0bb79a1549dec28396fc80b307021ca74cb9d09ff55980215e376e93f3743be242e57427dcaf996f83363f9806a235bcb1ab3f8077e5e9a899e8c1daefe1e5a
diff --git a/dev-python/recurring-ical-events/recurring-ical-events-3.3.3.ebuild b/dev-python/recurring-ical-events/recurring-ical-events-3.3.3.ebuild
deleted file mode 100644
index 61966884487f..000000000000
--- a/dev-python/recurring-ical-events/recurring-ical-events-3.3.3.ebuild
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 2023-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit distutils-r1
-
-MY_P=python-${P}
-DESCRIPTION="Repeat ICalendar events by RRULE, RDATE and EXDATE"
-HOMEPAGE="
- https://github.com/niccokunzmann/python-recurring-ical-events/
- https://pypi.org/project/recurring-ical-events/
-"
-SRC_URI="
- https://github.com/niccokunzmann/python-recurring-ical-events/archive/v${PV}.tar.gz
- -> ${MY_P}.gh.tar.gz
-"
-S=${WORKDIR}/${MY_P}
-
-LICENSE="LGPL-3+"
-SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
-
-RDEPEND="
- <dev-python/icalendar-7[${PYTHON_USEDEP}]
- >=dev-python/icalendar-5.0.9[${PYTHON_USEDEP}]
- >=dev-python/python-dateutil-2.8.1[${PYTHON_USEDEP}]
- <dev-python/x-wr-timezone-2.0.0[${PYTHON_USEDEP}]
- >=dev-python/x-wr-timezone-1.0.0[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- >=dev-python/icalendar-6[${PYTHON_USEDEP}]
- >=dev-python/pytz-2023.3[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-
-EPYTEST_IGNORE=(
- test/test_readme.py
-)
diff --git a/dev-python/recurring-ical-events/recurring-ical-events-3.3.4.ebuild b/dev-python/recurring-ical-events/recurring-ical-events-3.3.4.ebuild
deleted file mode 100644
index 4d17f9a7ab05..000000000000
--- a/dev-python/recurring-ical-events/recurring-ical-events-3.3.4.ebuild
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 2023-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit distutils-r1
-
-MY_P=python-${P}
-DESCRIPTION="Repeat ICalendar events by RRULE, RDATE and EXDATE"
-HOMEPAGE="
- https://github.com/niccokunzmann/python-recurring-ical-events/
- https://pypi.org/project/recurring-ical-events/
-"
-SRC_URI="
- https://github.com/niccokunzmann/python-recurring-ical-events/archive/v${PV}.tar.gz
- -> ${MY_P}.gh.tar.gz
-"
-S=${WORKDIR}/${MY_P}
-
-LICENSE="LGPL-3+"
-SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
-
-RDEPEND="
- <dev-python/icalendar-7[${PYTHON_USEDEP}]
- >=dev-python/icalendar-5.0.9[${PYTHON_USEDEP}]
- >=dev-python/python-dateutil-2.8.1[${PYTHON_USEDEP}]
- <dev-python/x-wr-timezone-3[${PYTHON_USEDEP}]
- >=dev-python/x-wr-timezone-1.0.0[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- >=dev-python/icalendar-6[${PYTHON_USEDEP}]
- >=dev-python/pytz-2023.3[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-
-EPYTEST_IGNORE=(
- test/test_readme.py
-)
diff --git a/dev-python/recurring-ical-events/recurring-ical-events-3.4.1.ebuild b/dev-python/recurring-ical-events/recurring-ical-events-3.5.0.ebuild
index 178daa312f14..178daa312f14 100644
--- a/dev-python/recurring-ical-events/recurring-ical-events-3.4.1.ebuild
+++ b/dev-python/recurring-ical-events/recurring-ical-events-3.5.0.ebuild
diff --git a/dev-python/recurring-ical-events/recurring-ical-events-3.4.0.ebuild b/dev-python/recurring-ical-events/recurring-ical-events-3.5.1.ebuild
index 36ea67595b61..a24c15298f74 100644
--- a/dev-python/recurring-ical-events/recurring-ical-events-3.4.0.ebuild
+++ b/dev-python/recurring-ical-events/recurring-ical-events-3.5.1.ebuild
@@ -1,24 +1,18 @@
-# Copyright 2023-2024 Gentoo Authors
+# Copyright 2023-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
-DISTUTILS_USE_PEP517=setuptools
+DISTUTILS_USE_PEP517=hatchling
PYTHON_COMPAT=( python3_{10..13} )
-inherit distutils-r1
+inherit distutils-r1 pypi
-MY_P=python-${P}
DESCRIPTION="Repeat ICalendar events by RRULE, RDATE and EXDATE"
HOMEPAGE="
https://github.com/niccokunzmann/python-recurring-ical-events/
https://pypi.org/project/recurring-ical-events/
"
-SRC_URI="
- https://github.com/niccokunzmann/python-recurring-ical-events/archive/v${PV}.tar.gz
- -> ${MY_P}.gh.tar.gz
-"
-S=${WORKDIR}/${MY_P}
LICENSE="LGPL-3+"
SLOT="0"
@@ -27,13 +21,14 @@ KEYWORDS="~amd64 ~arm64 ~x86"
RDEPEND="
<dev-python/icalendar-7[${PYTHON_USEDEP}]
>=dev-python/icalendar-6.1.0[${PYTHON_USEDEP}]
+ <dev-python/python-dateutil-3[${PYTHON_USEDEP}]
>=dev-python/python-dateutil-2.8.1[${PYTHON_USEDEP}]
<dev-python/x-wr-timezone-3[${PYTHON_USEDEP}]
>=dev-python/x-wr-timezone-1.0.0[${PYTHON_USEDEP}]
"
BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
test? (
- >=dev-python/icalendar-6[${PYTHON_USEDEP}]
>=dev-python/pytz-2023.3[${PYTHON_USEDEP}]
)
"
diff --git a/dev-python/reportlab/Manifest b/dev-python/reportlab/Manifest
index 573f2fdcd721..51d22c190a1e 100644
--- a/dev-python/reportlab/Manifest
+++ b/dev-python/reportlab/Manifest
@@ -1,2 +1,4 @@
DIST pfbfer-20070710.zip 677333 BLAKE2B 100214476a361a5e5d1f3da0999591345f6e3a3f8c6bc3f6a3e9eca734190c6259758a43302c6e41254d33491fe535eb7d5dd07aa9727c912424bebc31fc18df SHA512 6fd4a5d955464b10d13a7b748703450c1fe120d5ed09e8cfa1b4dfa9c183c59fe001df29433af551796b0df62544b7ddc364f9bb1bdcc2cd300434340ffcc4f2
DIST reportlab-4.2.5.tar.gz 3581379 BLAKE2B 560175a5180f3e991a3bed26f40b1c73b80a0f7dde9a30be2693ca0008d5272a3c1903fa930112e5f023e433a45c6ce384f9f239335c12400434a390a25ca501 SHA512 1daf01a03dd12770d40dbc1be66f0128a63953eebc97175d5cdf9a30cc6f827bc7a50e4f12cf0def8edecd3798fdc1fe009b3b92b0a252ca8a1395f83d6e970f
+DIST reportlab-4.3.0.tar.gz 3499157 BLAKE2B 0f8e38d637f136b341fb85f8c479eea8bce18ce359fd96b62dd72692eab8fdb9890aa1e91348c400e2d389c3302545044163dd58d10e61d1b2a2878d36cd303f SHA512 5c7e7d25016bf3bddf1060c2c72ce138a0aa81a47571474f62d760a4ce7415c355905c81b92960900d51da390cb28c1d8d74e9a0b84a0ec6ab1ee6e246e7e9e9
+DIST reportlab-4.3.1.tar.gz 3499248 BLAKE2B 972d1fcba0dc69ab8c9ae1517fbca27a03fae70f5aa358d0837b12c1ec38f94579b91dee2a8d624e14c70cff71ca48889437a0af2e034d726cc3b9aad5e3d6fb SHA512 e388f29828c542d2db5d3b2d59f799d01806a971d840045360068f86015e59ef0c78a4e991c287227b7375ac3f1696adac3f3dbcc359f2426418686e0f29875f
diff --git a/dev-python/reportlab/reportlab-4.3.0.ebuild b/dev-python/reportlab/reportlab-4.3.0.ebuild
new file mode 100644
index 000000000000..c8637f408af5
--- /dev/null
+++ b/dev-python/reportlab/reportlab-4.3.0.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Tools for generating printable PDF documents from any data source"
+HOMEPAGE="
+ https://www.reportlab.com/
+ https://pypi.org/project/reportlab/
+"
+SRC_URI+="
+ https://www.reportlab.com/ftp/fonts/pfbfer-20070710.zip
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ dev-python/chardet[${PYTHON_USEDEP}]
+ dev-python/pillow[tiff,truetype,jpeg(+),${PYTHON_USEDEP}]
+"
+BDEPEND="
+ app-arch/unzip
+"
+
+distutils_enable_sphinx docs/source
+
+src_unpack() {
+ unpack ${P}.tar.gz
+ cd ${P}/src/reportlab/fonts || die
+ unpack pfbfer-20070710.zip
+}
+
+src_configure() {
+ cat > local-setup.cfg <<-EOF || die
+ [OPTIONS]
+ no-download-t1-files = 1
+ EOF
+}
+
+python_test() {
+ pushd tests >/dev/null || die
+ "${EPYTHON}" runAll.py --post-install --verbosity=2 ||
+ die "Testing failed with ${EPYTHON}"
+ popd >/dev/null || die
+}
diff --git a/dev-python/reportlab/reportlab-4.3.1.ebuild b/dev-python/reportlab/reportlab-4.3.1.ebuild
new file mode 100644
index 000000000000..c8637f408af5
--- /dev/null
+++ b/dev-python/reportlab/reportlab-4.3.1.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Tools for generating printable PDF documents from any data source"
+HOMEPAGE="
+ https://www.reportlab.com/
+ https://pypi.org/project/reportlab/
+"
+SRC_URI+="
+ https://www.reportlab.com/ftp/fonts/pfbfer-20070710.zip
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ dev-python/chardet[${PYTHON_USEDEP}]
+ dev-python/pillow[tiff,truetype,jpeg(+),${PYTHON_USEDEP}]
+"
+BDEPEND="
+ app-arch/unzip
+"
+
+distutils_enable_sphinx docs/source
+
+src_unpack() {
+ unpack ${P}.tar.gz
+ cd ${P}/src/reportlab/fonts || die
+ unpack pfbfer-20070710.zip
+}
+
+src_configure() {
+ cat > local-setup.cfg <<-EOF || die
+ [OPTIONS]
+ no-download-t1-files = 1
+ EOF
+}
+
+python_test() {
+ pushd tests >/dev/null || die
+ "${EPYTHON}" runAll.py --post-install --verbosity=2 ||
+ die "Testing failed with ${EPYTHON}"
+ popd >/dev/null || die
+}
diff --git a/dev-python/rtslib-fb/Manifest b/dev-python/rtslib-fb/Manifest
index 8a9091481aeb..27ea264f8279 100644
--- a/dev-python/rtslib-fb/Manifest
+++ b/dev-python/rtslib-fb/Manifest
@@ -1,2 +1,3 @@
DIST rtslib-fb-2.1.76.tar.gz 78055 BLAKE2B df22093072a7e7b12a080db8253eff9e6aff1efb44a8bdb6c37a21601fd10beea03b665d1e1621904a9a0c1d1299e7f9e5f61682669f75a06f4e050c503da9a7 SHA512 fee3087702e44ede59b9635d7cbe7af06da104d6aeffc3fbb584ce6e8170b7856650a006ee574940448801a67e9f7d9610ccb9ad632dd6d0c378fe7c6cd1c159
DIST rtslib_fb-2.2.1.tar.gz 45483 BLAKE2B 9d255199eff27929dc47d8f141b11bf14e53bcf9c08e0b97d24ff7e5eb5d84b223fa9765e39838318a509960d2d8919ff59a9d982b1a176391af8a935e4f4753 SHA512 4c997a5a481fd19a9c7e2f841f06bd8b60091ed46bca3af4b13dee13729f8abbe8d7363736f7ab36c3c122d648cb5adfdb7029796844f7f50ef6075b35b5c8c1
+DIST rtslib_fb-2.2.2.tar.gz 45508 BLAKE2B e233bd7b346e7da98d8d6237f1cfc976a4963a13802c06175612c9c5497b20fb708228561b8a7a03dfd31e24359c1c339bae9c09228d2c3df5f1a5d9fbad6b08 SHA512 e64b0cc32520c19747c4e752a33aef9e27557f34a695d321b699bfd12feaba9749b32b5e292c96258bf0e6bf87fc4bb56287257691a7dccd786d12c9bec72964
diff --git a/dev-python/rtslib-fb/rtslib-fb-2.2.2.ebuild b/dev-python/rtslib-fb/rtslib-fb-2.2.2.ebuild
new file mode 100644
index 000000000000..e0cf09e902ff
--- /dev/null
+++ b/dev-python/rtslib-fb/rtslib-fb-2.2.2.ebuild
@@ -0,0 +1,31 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{10..12} )
+
+inherit distutils-r1 systemd pypi
+
+DESCRIPTION="A Python object API for managing the Linux LIO kernel target"
+HOMEPAGE="
+ https://github.com/open-iscsi/rtslib-fb/
+ https://pypi.org/project/rtslib-fb/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ dev-python/pyudev[${PYTHON_USEDEP}]
+ dev-python/six[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests import-check
+
+src_install() {
+ distutils-r1_src_install
+ systemd_dounit "${FILESDIR}/target.service"
+}
diff --git a/dev-python/scipy/scipy-1.15.1.ebuild b/dev-python/scipy/scipy-1.15.1.ebuild
index 0aa97a95cf16..6f6e6f18f523 100644
--- a/dev-python/scipy/scipy-1.15.1.ebuild
+++ b/dev-python/scipy/scipy-1.15.1.ebuild
@@ -37,7 +37,7 @@ else
)"
if [[ ${PV} != *rc* ]] ; then
- KEYWORDS="~amd64 ~arm arm64 ~loong ~ppc ppc64 ~riscv ~s390 ~sparc ~x86"
+ KEYWORDS="~amd64 ~arm arm64 ~loong ~ppc ppc64 ~riscv ~s390 ~sparc x86"
fi
fi
diff --git a/dev-python/selenium/selenium-4.28.1.ebuild b/dev-python/selenium/selenium-4.28.1.ebuild
index 96fe852ad727..f3f960e59209 100644
--- a/dev-python/selenium/selenium-4.28.1.ebuild
+++ b/dev-python/selenium/selenium-4.28.1.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/semver/Manifest b/dev-python/semver/Manifest
index b1e37c8221ab..0627e681c6ff 100644
--- a/dev-python/semver/Manifest
+++ b/dev-python/semver/Manifest
@@ -1,2 +1 @@
-DIST semver-3.0.2.tar.gz 214988 BLAKE2B c436ccc99bab2044472444e48de46f7b584291872db6d311d4a16aad0755f633cbe366bd0be6149431fd2db06011018a6cc5bd527f8627a1fbed8999086d2531 SHA512 f7b848f76ae72a8f0f06800d6c02b11a07149dfdff191e356709b75ac15ad19c010d8f13bc32ea082e15858524b38639838fbc09c2d9eb067eee8e163eb1e497
DIST semver-3.0.4.tar.gz 269730 BLAKE2B 5a406c7c1385f4cde578f232c3866d4decdb454d6e4d43a503a5228fb8d54dcfd4387a5c46bead143f7134263136efa83585db54df6e6a4f767c6a96461e49d8 SHA512 dde83495fb759d547313b706ba783d0bb23bdc27b84d13bdb0a2b4557677fd07cab396f15b18ba469dbcd494d5c85f815b6206184af3e975b42185624f542c2a
diff --git a/dev-python/semver/semver-3.0.2.ebuild b/dev-python/semver/semver-3.0.2.ebuild
deleted file mode 100644
index 4dda9e610eee..000000000000
--- a/dev-python/semver/semver-3.0.2.ebuild
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2019-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( pypy3 python3_{10..13} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="A Python module for semantic versioning"
-HOMEPAGE="
- https://github.com/python-semver/python-semver/
- https://pypi.org/project/semver/
-"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="amd64 ~arm64 ~loong ~ppc64 ~riscv ~x86"
-
-BDEPEND="
- dev-python/setuptools-scm[${PYTHON_USEDEP}]
-"
-
-distutils_enable_tests pytest
-
-python_test() {
- epytest -o addopts=
-}
diff --git a/dev-python/semver/semver-3.0.4.ebuild b/dev-python/semver/semver-3.0.4.ebuild
index d673cde7572c..a8b0f435ecc8 100644
--- a/dev-python/semver/semver-3.0.4.ebuild
+++ b/dev-python/semver/semver-3.0.4.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv ~x86"
+KEYWORDS="amd64 ~arm64 ~loong ~ppc64 ~riscv ~x86"
distutils_enable_tests pytest
diff --git a/dev-python/sphinx-autoapi/Manifest b/dev-python/sphinx-autoapi/Manifest
index 3c13d7322d89..446b2b230eb4 100644
--- a/dev-python/sphinx-autoapi/Manifest
+++ b/dev-python/sphinx-autoapi/Manifest
@@ -1 +1,2 @@
DIST sphinx-autoapi-3.4.0.gh.tar.gz 72943 BLAKE2B 8d3187e6c86a9172e5cbeb441a283e5f694b96aade054c3c96c56327365f7310244d37c2643004011ffe9ebad91b5cc61c67d8d8bb12c2eaf9286efce0c5c7db SHA512 8d85497b620326a62c8abc6c638b1526e6d01b744aa200a37acf3f7e2468bf84fc24ce7b91e172cdfe1c419a635e137f690aa860c0ee6283be2028823842139f
+DIST sphinx-autoapi-3.5.0.gh.tar.gz 73246 BLAKE2B 63fd39ed4a6dd8077161a0607d34dd3e499b48a3e88576813d50bd478a581451a09baf5dd1a92d00c4b48118526c87f68f2deb95ee79d52edbaa7f432694f9bb SHA512 6a39fcbe3a67711f681594444e45c12118f57b27d8cd9544913b6d673ea0d587ec1c40f1e182faad4b86f2ddb5809d4b940ca54dd5df6369026e07c805f25aae
diff --git a/dev-python/sphinx-autoapi/sphinx-autoapi-3.5.0.ebuild b/dev-python/sphinx-autoapi/sphinx-autoapi-3.5.0.ebuild
new file mode 100644
index 000000000000..0a0ed78e594c
--- /dev/null
+++ b/dev-python/sphinx-autoapi/sphinx-autoapi-3.5.0.ebuild
@@ -0,0 +1,51 @@
+# Copyright 2022-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1
+
+DESCRIPTION="A new approach to API documentation in Sphinx"
+HOMEPAGE="
+ https://sphinx-autoapi.readthedocs.io/
+ https://github.com/readthedocs/sphinx-autoapi/
+ https://pypi.org/project/sphinx-autoapi/
+"
+# sdist is missing docs, as of 2.1.0
+SRC_URI="
+ https://github.com/readthedocs/sphinx-autoapi/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+
+RDEPEND="
+ >=dev-python/astroid-3.0.0[${PYTHON_USEDEP}]
+ dev-python/jinja2[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-6.1.0[${PYTHON_USEDEP}]
+"
+
+BDEPEND+="
+ test? ( dev-python/beautifulsoup4[${PYTHON_USEDEP}] )
+"
+
+DOCS=( README.rst CHANGELOG.rst )
+
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # Internet
+ tests/python/test_pyintegration.py::TestPEP695::test_integration
+ tests/python/test_pyintegration.py::TestPipeUnionModule::test_integration
+ "tests/test_integration.py::TestExtensionErrors::test_extension_setup_errors[dotnetexample"
+ )
+
+ distutils-r1_python_test
+}
diff --git a/dev-python/sphinx-gallery/Manifest b/dev-python/sphinx-gallery/Manifest
index 9ef955f51559..f692191088c7 100644
--- a/dev-python/sphinx-gallery/Manifest
+++ b/dev-python/sphinx-gallery/Manifest
@@ -1 +1,2 @@
DIST sphinx_gallery-0.18.0.tar.gz 466371 BLAKE2B 5d01bf19fa24d32ea667e7846dae03a85b470f430204a20d65efb988d54a8a6462e8cb6bed03de6f240c4945fbb1aa5e839d84feddd8093ab303d846773e4097 SHA512 59712e6a50d0a01e091b51e8532798ba4068a3a65472c25ea5a913dea599ac1afa54c44a057d332e6204930fa958d5b88dafe796af913566f504f0d9cf91e72a
+DIST sphinx_gallery-0.19.0.tar.gz 471479 BLAKE2B 335d976be4786c522693d5a5c08bbcf29aea6c571187fef77d582b827c4958e34bf1a86fec7012fc6af921600b925f46c25924522c0c5c96519331cb42a30c16 SHA512 90ed1aafa718937ee9bd5c8f52937c5a65058ca5a2138606f48f41637dae8a1d3c22cfcbed2eef3aaf3180ee137d943cfbde72ba2625c23f6d7d8e911f3f374f
diff --git a/dev-python/sphinx-gallery/sphinx-gallery-0.19.0.ebuild b/dev-python/sphinx-gallery/sphinx-gallery-0.19.0.ebuild
new file mode 100644
index 000000000000..cf505e523dfb
--- /dev/null
+++ b/dev-python/sphinx-gallery/sphinx-gallery-0.19.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_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Sphinx extension to automatically generate an examples gallery"
+HOMEPAGE="
+ https://github.com/sphinx-gallery/sphinx-gallery/
+ https://sphinx-gallery.github.io/
+ https://pypi.org/project/sphinx-gallery/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ dev-python/matplotlib[${PYTHON_USEDEP}]
+ dev-python/pillow[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-5[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ dev-python/joblib[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # Internet
+ sphinx_gallery/tests/test_docs_resolv.py::test_embed_code_links_get_data
+ sphinx_gallery/tests/test_full.py::test_run_sphinx
+ sphinx_gallery/tests/test_full.py::test_embed_links_and_styles
+ # require jupyterlite_sphinx
+ sphinx_gallery/tests/test_full.py
+ sphinx_gallery/tests/test_full_noexec.py
+ sphinx_gallery/tests/test_gen_gallery.py::test_create_jupyterlite_contents
+ sphinx_gallery/tests/test_gen_gallery.py::test_create_jupyterlite_contents_non_default_contents
+ sphinx_gallery/tests/test_gen_gallery.py::test_create_jupyterlite_contents_with_jupyterlite_disabled_via_config
+ )
+
+ epytest -o addopts=
+}
diff --git a/dev-python/sphinxcontrib-doxylink/Manifest b/dev-python/sphinxcontrib-doxylink/Manifest
index 9317da98f9a1..6f9ab0a8d72f 100644
--- a/dev-python/sphinxcontrib-doxylink/Manifest
+++ b/dev-python/sphinxcontrib-doxylink/Manifest
@@ -1 +1,2 @@
DIST sphinxcontrib-doxylink-1.12.3.gh.tar.gz 23632 BLAKE2B 4a80366f4beeb9715c69c221a8e5247c28179613b59fb7bdadb1f145b69e4afdc0c2c30affd9647ec9e56e892503a95d018fd97eda014980177282299b81d61f SHA512 d25003dab35c6877bc846552db3e663c660bd5cb6ac6d9077bf04eca32afe0f9559118390c5c884901ce8c5297e97d84f6089428e3173123da6e7869a606a05e
+DIST sphinxcontrib-doxylink-1.12.4.gh.tar.gz 24425 BLAKE2B 04c3a9fef624d87b5f9b756dde6bd9a12acfcefb5331ebaa9a97267b0a8389b96676f996bbd8817c0e4096aad693e711527e4981f8a035e70a4abfd26834b53d SHA512 6b1edef1e78635d30fba34abe6f6cfaadf9e941a50c2c13790da848300289938e1f9eafdce5a820e68ff26f2975a14945ee1c43963074343858daa34c16de513
diff --git a/dev-python/sphinxcontrib-doxylink/sphinxcontrib-doxylink-1.12.4.ebuild b/dev-python/sphinxcontrib-doxylink/sphinxcontrib-doxylink-1.12.4.ebuild
new file mode 100644
index 000000000000..679ea0ce2525
--- /dev/null
+++ b/dev-python/sphinxcontrib-doxylink/sphinxcontrib-doxylink-1.12.4.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=poetry
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1
+
+DESCRIPTION="Extension to link to external Doxygen API documentation"
+HOMEPAGE="
+ https://pypi.org/project/sphinxcontrib-doxylink/
+ https://pythonhosted.org/sphinxcontrib-doxylink/
+ https://github.com/sphinx-contrib/doxylink/
+"
+SRC_URI="
+ https://github.com/sphinx-contrib/doxylink/archive/refs/tags/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+S="${WORKDIR}/doxylink-${PV}"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ >=dev-python/sphinx-1.6[${PYTHON_USEDEP}]
+ >=dev-python/pyparsing-3.0.8[${PYTHON_USEDEP}]
+ >=dev-python/python-dateutil-2.8.2[${PYTHON_USEDEP}]
+"
+
+BDEPEND="
+ test? (
+ app-text/doxygen
+ >=dev-python/testfixtures-6.18.5[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+distutils_enable_sphinx doc \
+ dev-python/sphinx-rtd-theme
+
+python_test() {
+ distutils_write_namespace sphinxcontrib
+ cd "${T}" || die
+ epytest "${S}"/tests
+}
diff --git a/dev-python/sphinxygen/Manifest b/dev-python/sphinxygen/Manifest
index b838189e0971..ccb0d0cf2e41 100644
--- a/dev-python/sphinxygen/Manifest
+++ b/dev-python/sphinxygen/Manifest
@@ -1,2 +1 @@
DIST sphinxygen-v1.0.10.tar.bz2 16711 BLAKE2B 3915125ceb70e50bc9848216e5b98a7d17886184f9aa6838f18030bc8b57f464e305adb84c14e3bd758164973eb85afb76ada0b3928f95a4c6ea96517d6e3a1c SHA512 8789962a76c770eb460b672d753c880574ad7abdf2e971053a8b1460efa166abf1689f4361db186b8a1e2fd91f6c4135d24bb7e413119d8d234f365b337e2c69
-DIST sphinxygen-v1.0.6.tar.bz2 16583 BLAKE2B e9838b66de1575fdb884978a2b33e0d5b4585063b9d3cd52ca464bbaf4af56af26fa264916564c54bfcdc36603d87648037a2b8c129f53a294b312e7e7a20c3d SHA512 298a7017480a51e29dd3f74d3615bb931175635a9169b7aa308eacd51cfa274a6504e9231f08b7e71fcd00ca2d18086030b4805cb4ad4517ea43c1b8ab0e1111
diff --git a/dev-python/sphinxygen/sphinxygen-1.0.10.ebuild b/dev-python/sphinxygen/sphinxygen-1.0.10.ebuild
index a23270e7f581..a938db4b1fc0 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/sphinxygen/sphinxygen-1.0.6.ebuild b/dev-python/sphinxygen/sphinxygen-1.0.6.ebuild
deleted file mode 100644
index a938db4b1fc0..000000000000
--- a/dev-python/sphinxygen/sphinxygen-1.0.6.ebuild
+++ /dev/null
@@ -1,35 +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_{10..13} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Python module/script that generates Sphinx markup to describe a C API"
-HOMEPAGE="
- https://gitlab.com/drobilla/sphinxygen/
- https://pypi.org/project/sphinxygen/
-"
-SRC_URI="
- https://gitlab.com/drobilla/sphinxygen/-/archive/v${PV}/${PN}-v${PV}.tar.bz2
-"
-S="${WORKDIR}/${PN}-v${PV}"
-
-LICENSE="ISC"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv sparc x86"
-
-RDEPEND="
- app-text/doxygen
- dev-python/sphinx[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/html5lib[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
diff --git a/dev-python/spyder/Manifest b/dev-python/spyder/Manifest
index bd8f1d29ac99..ce9fbd74cb8f 100644
--- a/dev-python/spyder/Manifest
+++ b/dev-python/spyder/Manifest
@@ -1,4 +1,6 @@
DIST spyder-5.5.6.gh.tar.gz 16304234 BLAKE2B 9d14b96901276ced1644eef8dd57539036aecb067ee361b6581368b371d56b2008350969224992a35fe10ee177babca7f3e941f43b4cc3f432f6d0dec9104ead SHA512 93ce6ac2e71bd4e81ca4a630a6fe152d1bf3c83d6e5c01dda8f3e5ad2735de1948a86642f5bc589c90616935e997526b26367ce178905ad2b80faf81f36f9164
DIST spyder-6.0.3.gh.tar.gz 15774411 BLAKE2B a9089c4d94e29cd38f2a80606ccd51daf443953f605dba22a1d7709b583add24d1a35b519a068e53b111bb96e04c27cb0a49b3d8f6fc88ac2f0e4667146361d0 SHA512 2f71667b54b8e8b85d862cb0e16d3657a2d1ce81bafa3170335866725c63e29e2349d8bff9a34422c9ff018677fd92f98d7f0ff22a064fe08e425492df216091
+DIST spyder-6.0.4.gh.tar.gz 15800140 BLAKE2B 43447f622d528f6d8ea60e83d3ed868e2303c95df30b614900e48ecc34d472319b7786ac033fadc50c517488f8f0e4a657c926276e45710461f751817bb203d6 SHA512 d3718e8815f9f8d0e7b2e48c2ec5127a51b17a4549766376cfcaef68abb47f71ebba7c5823f8910583d171af9cde0e496ed2d7f947323ea54d2fcfff6fe8b34f
DIST spyder-docs-6951e02799fc7cd1f29456f1d93cfdcb570dad27.gh.tar.gz 93033557 BLAKE2B 395dd2a8ddb6e1b1408ba46cbe0fa452c1f2e69da1f3b6176401ff7395ace1463e63c696e13ee0b79f992b0ceca86228ad113f95ed7873db1b970452bc679f89 SHA512 c631e720e3ca49413482df294fb032285cf217ba94de299c37cb073e4e2bdeb629d16a139db17c569c74c628c50789c90d6085383886d32fa26b942711ccedc0
+DIST spyder-docs-98004cb46d97fa9fa1cfc3f469919928761e7054.gh.tar.gz 93375891 BLAKE2B c98d391bb33b1ba70bf9c8e8072073e87437541aacd4be42140711b786e8ae07bf5a7ca53dffdb826922b5523150fa2950b04117c335dc57f7c2c22eb693c23f SHA512 55e13f9a55075aed007be32581af954d406703dd9586352084162e01865f943c5aff3aa11b50bdc9813dd8a3a52f8fa8f961c73cfc3f96d95930f2a7b823a1d1
DIST spyder-docs-fa91f0e9c8c2da33e7ec974e6b0e2a5ed6f04b10.gh.tar.gz 93358798 BLAKE2B 81f4d1d7b1244cb05df621e764c57e856952d9ec1b923a0d6529280651f8e15c586be0c7fe1dc65eed3792033cf0f1e5e8813d79706dbbfca0dcff29cb476831 SHA512 39d0a2d6ef45ebfd3e656916bad18adb7b4f3981e619dcb16fc6160b445cf80a264c4fd8d82f61a51a55774bf2f2a08ac0b1fb4201b2cce9046a0ddd1062daa5
diff --git a/dev-python/spyder/spyder-6.0.4.ebuild b/dev-python/spyder/spyder-6.0.4.ebuild
new file mode 100644
index 000000000000..f77d41e10d54
--- /dev/null
+++ b/dev-python/spyder/spyder-6.0.4.ebuild
@@ -0,0 +1,202 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+DISTUTILS_USE_PEP517=setuptools
+
+inherit distutils-r1 optfeature xdg #virtualx
+
+# Commit of documentation to fetch
+DOCS_PV="98004cb46d97fa9fa1cfc3f469919928761e7054"
+
+DESCRIPTION="The Scientific Python Development Environment"
+HOMEPAGE="
+ https://www.spyder-ide.org/
+ https://github.com/spyder-ide/spyder/
+ https://pypi.org/project/spyder/
+"
+SRC_URI="
+ https://github.com/spyder-ide/${PN}/archive/v${PV}.tar.gz -> ${P}.gh.tar.gz
+ https://github.com/spyder-ide/${PN}-docs/archive/${DOCS_PV}.tar.gz -> ${PN}-docs-${DOCS_PV}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+# Missing deps and broken
+RESTRICT="test"
+
+RDEPEND="
+ >=dev-python/aiohttp-3.9.3[${PYTHON_USEDEP}]
+ >=dev-python/asyncssh-2.14.0[${PYTHON_USEDEP}]
+ <dev-python/asyncssh-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/atomicwrites-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/chardet-2.0.0[${PYTHON_USEDEP}]
+ >=dev-util/cookiecutter-1.6.0[${PYTHON_USEDEP}]
+ >=dev-python/diff-match-patch-20181111[${PYTHON_USEDEP}]
+ >=dev-python/intervaltree-3.0.2[${PYTHON_USEDEP}]
+ >=dev-python/ipython-pygments-lexers-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/jellyfish-0.7[${PYTHON_USEDEP}]
+ >=dev-python/jsonschema-3.2.0[${PYTHON_USEDEP}]
+ >=dev-python/keyring-17.0.0[${PYTHON_USEDEP}]
+ >=dev-python/nbconvert-4.0[${PYTHON_USEDEP}]
+ >=dev-python/numpydoc-0.6.0[${PYTHON_USEDEP}]
+ >=dev-python/pexpect-4.4.0[${PYTHON_USEDEP}]
+ >=dev-python/pickleshare-0.4[${PYTHON_USEDEP}]
+ >=dev-python/psutil-5.3[${PYTHON_USEDEP}]
+ >=dev-python/pygithub-2.3.0[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.0[${PYTHON_USEDEP}]
+ >=dev-python/pylint-venv-3.0.2[${PYTHON_USEDEP}]
+ >=dev-python/python-lsp-black-2.0.0[${PYTHON_USEDEP}]
+ <dev-python/python-lsp-black-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/pyls-spyder-0.4.0[${PYTHON_USEDEP}]
+ >=dev-python/pyuca-1.2[${PYTHON_USEDEP}]
+ >=dev-python/qdarkstyle-3.2.0[${PYTHON_USEDEP}]
+ <dev-python/qdarkstyle-3.3.0[${PYTHON_USEDEP}]
+ >=dev-python/qstylizer-0.2.2[${PYTHON_USEDEP}]
+ >=dev-python/qtawesome-1.3.1[${PYTHON_USEDEP}]
+ <dev-python/qtawesome-1.4.0[${PYTHON_USEDEP}]
+ >=dev-python/qtconsole-5.6.1[${PYTHON_USEDEP}]
+ <dev-python/qtconsole-5.7.0[${PYTHON_USEDEP}]
+ >=dev-python/qtpy-2.4.0[${PYTHON_USEDEP},pyqt6,quick,svg,webengine]
+ >=dev-python/rtree-0.9.7[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-0.6.6[${PYTHON_USEDEP}]
+ >=dev-python/spyder-kernels-3.0.2[${PYTHON_USEDEP}]
+ <dev-python/spyder-kernels-3.1.0[${PYTHON_USEDEP}]
+ >=dev-python/superqt-0.6.2[${PYTHON_USEDEP}]
+ <dev-python/superqt-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/textdistance-4.2.0[${PYTHON_USEDEP}]
+ >=dev-python/three-merge-0.1.1[${PYTHON_USEDEP}]
+ >=dev-python/watchdog-0.10.3[${PYTHON_USEDEP}]
+ >=dev-python/yarl-1.9.4[${PYTHON_USEDEP}]
+"
+
+# BDEPEND="
+# test? (
+# dev-python/cython[${PYTHON_USEDEP}]
+# dev-python/flaky[${PYTHON_USEDEP}]
+# dev-python/matplotlib[tk,${PYTHON_USEDEP}]
+# dev-python/pandas[${PYTHON_USEDEP}]
+# dev-python/pillow[${PYTHON_USEDEP}]
+# dev-python/pytest-lazy-fixture[${PYTHON_USEDEP}]
+# dev-python/pytest-mock[${PYTHON_USEDEP}]
+# dev-python/pytest-order[${PYTHON_USEDEP}]
+# dev-python/pytest-qt[${PYTHON_USEDEP}]
+# dev-python/pytest-timeout[${PYTHON_USEDEP}]
+# dev-python/pyyaml[${PYTHON_USEDEP}]
+# dev-python/qtpy[${PYTHON_USEDEP}]
+# dev-python/scipy[${PYTHON_USEDEP}]
+# dev-python/sympy[${PYTHON_USEDEP}]
+# )"
+
+# Based on the courtesy of Arfrever
+# This patch removes a call to update-desktop-database during build
+# This fails because access is denied to this command during build
+PATCHES=(
+ "${FILESDIR}/${PN}-5.0.0-build.patch"
+ "${FILESDIR}/${PN}-6.0.3-no-dep-on-importlib.patch"
+)
+
+DOCS=(
+ "AUTHORS.txt"
+ "Announcements.md"
+ "CHANGELOG.md"
+ "CODE_OF_CONDUCT.md"
+ "CONTRIBUTING.md"
+ "NOTICE.txt"
+ "README.md"
+ "RELEASE.md"
+)
+
+distutils_enable_tests pytest
+# TODO: Package sphinx-design
+# distutils_enable_sphinx docs/doc \
+# dev-python/sphinx-panels \
+# dev-python/pydata-sphinx-theme \
+# dev-python/sphinx-multiversion
+
+python_prepare_all() {
+ # move docs into workdir
+ mv ../spyder-docs-${DOCS_PV}* docs || die
+
+ # these dependencies are packaged separately:
+ # dev-python/spyder-kernels,
+ # dev-python/python-lsp-server,
+ # dev-python/qdarkstyle
+ rm -r external-deps/* || die
+ # runs against things packaged in external-deps dir
+ rm conftest.py || die
+
+ # Do not depend on pyqt5<5.16, this dependency is carried by QtPy[pyqt5]
+ # Do not depend on pyqtwebengine<5.16, this dependency is carried by QtPy[webengine]
+ # Do not depend on parso and jedi, this is dependency is carried in python-lsp-server
+ # Do not depend on python-lsp-server, this dependency is carried in pyls-spyder
+ # Do not depend on ipython, this dependency is carried in spyder-kernels
+ # The explicit version requirements only make things more complicated, if e.g.
+ # pyls-spyder gains compatibility with a newer version of python-lsp-server
+ # in a new release it will take time for this information to propagate into
+ # the next spyder release. So just remove the dependency and let the other
+ # ebuilds handle the version requirements to speed things up and prevent
+ # issues such as Bug 803269.
+ sed -i \
+ -e "/'pyqt5[ 0-9<=>.,]*',/d" \
+ -e "/'pyqtwebengine[ 0-9<=>.,]*',/d" \
+ -e "/'python-lsp-server\[all\][ 0-9<=>.,]*',/d" \
+ -e "/'parso[ 0-9<=>.,]*',/d" \
+ -e "/'jedi[ 0-9<=>.,]*',/d" \
+ -e "/'pylint[ 0-9<=>.,]*',/d" \
+ setup.py || die
+ # -e "/'ipython[ 0-9<=>.,]*',/d" \
+ sed -i \
+ -e "/^PYLS_REQVER/c\PYLS_REQVER = '>=0.0.1'" \
+ -e "/^PYLSP_REQVER/c\PYLSP_REQVER = '>=0.0.1'" \
+ -e "/^PARSO_REQVER/c\PARSO_REQVER = '>=0.0.1'" \
+ -e "/^JEDI_REQVER/c\JEDI_REQVER = '>=0.0.1'" \
+ -e "/^PYLINT_REQVER/c\PYLINT_REQVER = '>=0.0.1'" \
+ spyder/dependencies.py || die
+ # -e "/^IPYTHON_REQVER/c\IPYTHON_REQVER = '>=0.0.1'" \
+
+ # do not check deps, fails because we removed dependencies above
+ sed -i -e 's:test_dependencies_for_spyder_setup_install_requires_in_sync:_&:' \
+ spyder/tests/test_dependencies_in_sync.py || die
+
+ # skip online test
+ rm spyder/widgets/github/tests/test_github_backend.py || die
+
+ export SPYDER_QT_BINDING=pyqt6
+
+ distutils-r1_python_prepare_all
+}
+
+# Calling pytest directly somehow passes the pytest arguments to spyder
+# causing an invalid argument error
+# python_test() {
+# virtx "${EPYTHON}" runtests.py
+# }
+
+pkg_postinst() {
+ xdg_pkg_postinst
+
+ optfeature "2D/3D plotting in the Python and IPython consoles" dev-python/matplotlib
+ optfeature "View and edit DataFrames and Series in the Variable Explorer" dev-python/pandas
+ optfeature "View and edit two or three dimensional arrays in the Variable Explorer" dev-python/numpy
+ optfeature "Symbolic mathematics in the IPython console" dev-python/sympy
+ optfeature "Import Matlab workspace files in the Variable Explorer" dev-python/scipy
+ optfeature "Run Cython files in the IPython console" dev-python/cython
+ optfeature "The hdf5/h5py plugin" dev-python/h5py
+ optfeature "The line profiler plugin" dev-python/spyder-line-profiler
+ optfeature "Vim key bindings" dev-python/spyder-vim
+ optfeature "Unittest support" dev-python/spyder-unittest
+ optfeature "System terminal inside spyder" dev-python/spyder-terminal
+ optfeature "Jupyter notebook support" dev-python/spyder-notebook
+ # spyder-memory-profiler is not compatible with spyder-5.2+ yet
+ # optfeature "The memory profiler plugin" dev-python/spyder-memory-profiler
+ # spyder-reports not yet updated to >=spyder-4.0.0
+ # optfeature "Markdown reports using Pweave" dev-python/spyder-reports
+ # Plugins with no release yet:
+ # optfeature "Manage virtual environments and packages" dev-python/spyder-env-manager
+ # optfeature "VCS (e.g. git) integration" dev-python/spyder-vcs
+}
diff --git a/dev-python/sqlalchemy/Manifest b/dev-python/sqlalchemy/Manifest
index 604e11ae1145..9552e4523116 100644
--- a/dev-python/sqlalchemy/Manifest
+++ b/dev-python/sqlalchemy/Manifest
@@ -1,3 +1,4 @@
DIST sqlalchemy-1.4.54.tar.gz 8470350 BLAKE2B 0d97beb4edde38455c03dfc1238655d1cb63aa6e042b941913ec68dca3654de07087ab967f208fda495f048a5068ced70d642c4b8b80ab32e5346fcefa3bf9bc SHA512 e7ea4920d81914d362134a3c6fd4a2dd4fdb75f6ce17358528d568e2b2ac0ee711a71f6beb894e61d6d1e4e5833034ebde651d73a13f873c682f780e1831b427
DIST sqlalchemy-2.0.36.tar.gz 9574485 BLAKE2B 31fb7375041f354b940a5b8beee8886cbb66cb0a4b4dcad8f9bdb9ebfeb673cdc6ce7335d9fa7bbc443e3dafb0337106e0ca0c6a8ccf3df55bde3e6e310dcbc6 SHA512 480fa9893d20806127f6b060726210e32989af92439ff445066aebfc931453eb8c05b5f8497582fcdb897f8e9e70243f092f46e06d7dfe49301ab71ada4eebda
DIST sqlalchemy-2.0.37.tar.gz 9626249 BLAKE2B 8bcfbaa7d83c09b5c57cd422ac6e0ba759a5fd8ec63af01f32fe35c616811a74a9e19382813b2104a938aa3a19aa4adbe36cb02ad206cf069a8649094d483cde SHA512 ea83a9cc1bcd69424d8f0b6c0f2195ac2c7c77ad92187d9f83e1c0d02fbd0bc8b75973c1849757283434041f073994ed235dc9d520c24f21bd72b4cd20a51a5c
+DIST sqlalchemy-2.0.38.tar.gz 9634782 BLAKE2B c1fa85895e3c39cf3abd28ebddec9cd6e764eeafa35b1e86a11836504552b9602d7d3582d0eb0f10ed3481501e56a068e6d563c399b22bf756465a6d5255ab23 SHA512 244df15b30a2d585aa9cb1d89b7460b1e75871a5e41579a23743bbfe40ece9c5c24308e317ccb7686ba7599a2e02a61f61077da6e1ab8567e4e31d61d4d77380
diff --git a/dev-python/sqlalchemy/sqlalchemy-2.0.38.ebuild b/dev-python/sqlalchemy/sqlalchemy-2.0.38.ebuild
new file mode 100644
index 000000000000..c310c9c86fe8
--- /dev/null
+++ b/dev-python/sqlalchemy/sqlalchemy-2.0.38.ebuild
@@ -0,0 +1,109 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYPI_PN=SQLAlchemy
+PYTHON_COMPAT=( pypy3 python3_{10..13} )
+PYTHON_REQ_USE="sqlite?"
+
+inherit distutils-r1 optfeature pypi
+
+DESCRIPTION="Python SQL toolkit and Object Relational Mapper"
+HOMEPAGE="
+ https://www.sqlalchemy.org/
+ https://pypi.org/project/SQLAlchemy/
+ https://github.com/sqlalchemy/sqlalchemy/
+"
+
+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="examples +sqlite test"
+
+RDEPEND="
+ >=dev-python/typing-extensions-4.6.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/cython[${PYTHON_USEDEP}]
+ test? (
+ $(python_gen_impl_dep sqlite)
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ sed -i -e '/greenlet/d' setup.cfg || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ test/ext/mypy/test_mypy_plugin_py3k.py
+ test/typing/test_mypy.py
+ # hardcode call counts specific to Python versions
+ test/aaa_profiling
+ )
+ local EPYTEST_DESELECT=(
+ # warning tests are unreliable
+ test/base/test_warnings.py
+ )
+ local sqlite_version=$(sqlite3 --version | cut -d' ' -f1)
+ case ${EPYTHON} in
+ pypy3)
+ EPYTEST_DESELECT+=(
+ test/ext/test_associationproxy.py::ProxyHybridTest::test_msg_fails_on_cls_access
+ test/ext/test_associationproxy.py::DictOfTupleUpdateTest::test_update_multi_elem_varg
+ test/ext/test_associationproxy.py::DictOfTupleUpdateTest::test_update_one_elem_varg
+ test/engine/test_processors.py::PyDateProcessorTest::test_date_invalid_string
+ test/engine/test_processors.py::PyDateProcessorTest::test_datetime_invalid_string
+ test/engine/test_processors.py::PyDateProcessorTest::test_time_invalid_string
+ "test/dialect/test_sqlite.py::TestTypes_sqlite+pysqlite_${sqlite_version//./_}::test_cant_parse_datetime_message"
+ "test/dialect/test_suite.py::ReturningGuardsTest_sqlite+pysqlite_${sqlite_version//./_}"::test_{delete,insert,update}_single
+ test/base/test_utils.py::ImmutableDictTest::test_pep584
+ 'test/sql/test_compare.py::HasCacheKeySubclass::test_init_args_in_traversal[_MemoizedSelectEntities]'
+ )
+ ;;
+ esac
+ if ! has_version "dev-python/greenlet[${PYTHON_USEDEP}]"; then
+ EPYTEST_DESELECT+=(
+ test/ext/asyncio/test_engine_py3k.py::TextSyncDBAPI::test_sync_driver_execution
+ test/ext/asyncio/test_engine_py3k.py::TextSyncDBAPI::test_sync_driver_run_sync
+ "test/engine/test_pool.py::PoolEventsTest::test_checkin_event_gc[False-True]"
+ "test/engine/test_pool.py::PoolEventsTest::test_checkin_event_gc[True-True]"
+ "test/engine/test_pool.py::PoolEventsTest::test_checkin_event_gc[has_terminate-is_asyncio]"
+ "test/engine/test_pool.py::PoolEventsTest::test_checkin_event_gc[not_has_terminate-is_asyncio]"
+ "test/engine/test_pool.py::QueuePoolTest::test_userspace_disconnectionerror_weakref_finalizer[True-_exclusions0]"
+ "test/engine/test_pool.py::QueuePoolTest::test_userspace_disconnectionerror_weakref_finalizer[True]"
+ )
+ fi
+
+ # upstream's test suite is horribly hacky; it relies on disabling
+ # the warnings plugin and turning warnings into errors; this also
+ # means that any DeprecationWarnings from third-party plugins cause
+ # everything to explode
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -p rerunfailures --reruns=10 --reruns-delay=2
+}
+
+python_install_all() {
+ if use examples; then
+ docompress -x "/usr/share/doc/${PF}/examples"
+ dodoc -r examples
+ fi
+
+ distutils-r1_python_install_all
+}
+
+pkg_postinst() {
+ optfeature "asyncio support" dev-python/greenlet
+ optfeature "MySQL support" \
+ dev-python/mysqlclient \
+ dev-python/pymysql
+ optfeature "postgresql support" dev-python/psycopg:2
+}
diff --git a/dev-python/sqlglot/Manifest b/dev-python/sqlglot/Manifest
index 7fc8745a777a..82df517a4a4a 100644
--- a/dev-python/sqlglot/Manifest
+++ b/dev-python/sqlglot/Manifest
@@ -57,6 +57,8 @@ DIST serde_derive-1.0.216.crate 57674 BLAKE2B 12a9228679c16288c08c8b256707e276ae
DIST serde_json-1.0.133.crate 150739 BLAKE2B 7891eb5b8edcc7fd09ab1e15d3881ffdcb629aa39f2bd758c0505700a5f2dfabd85b1b66c3b094268bc1627b346e204c792f4ca61efa76c54ab9cd5744fb0ee2 SHA512 20e65ec87bff319897a141960d13deb5cadcf821209c1ee8799f1dc7f458ce432bc62c16df5bdada1c8d3cc01ff23b8125e8fa0a03545d4614f32efd687dc69f
DIST sqlglot-26.3.8.tar.gz 19957402 BLAKE2B c4dd2a2f64c7b8fa537d0d81b0915b0b2c044ae4cb1e6da8824cdb43e116313d61f93ddb3c0faaac83b6f624d595573c55686d0dd2cc103f716eab2f564e2ec6 SHA512 d1853353d60674a91d13cebcc3329d227fa7c998e2cfd689a3de77bea4fe5b1bd86dc167f790c929a1617b882962060bc84d923fc6f93f0356145438dcb8433c
DIST sqlglot-26.3.9.tar.gz 5311903 BLAKE2B 0637f47170c53b22a8672b4d35a16b5d22c696a1568b22b0474d9075b82534c18f54a66b06010a426ff8121be64934041871d97f78c5a1951ad200849ab5c5a0 SHA512 3fb7ba3a0fe583837a7aed0f18a66eefa06fa193f0f97484eca60fc13bb2700c27b7dd1b4d0a54d64adf8ea2b4009057a091534b5d52aa36a5d499c861e2b2a8
+DIST sqlglot-26.4.1.tar.gz 5315460 BLAKE2B d96c6927f24ba10cff61c4a56542fe689c372e10e2af5c05829e856bf36ead667e56a37b5c8fcacbeaa3c08f302e8ec0f78a2896c7ee659ff419e8b023cf6e0a SHA512 0a17247b060a4d631799aa23e5722eb2b40676a1482207b0a9c5ee3c88b965e31e79b10855c174a918f4e2f32bde1b37dcbf45511d7814446a1fa1405f59e0d8
+DIST sqlglot-26.6.0.tar.gz 5317429 BLAKE2B 5ce8516f9e03c55bed95cbb5f6c8904c1304a161e3809da11ad178c26629fa343be32bdd0418d23fd37826b84f94000e272f5687d85a147b1a9f7c57adad101c SHA512 f600f1c596c02c1668bc1236c5539b4e80f0b5d4a85c1faebd4273cdd08d04ebf6f5bdb2d6885be5eeefcc25d87ed47efd81fd4790f3d82a406bb05932f6a1b4
DIST syn-2.0.87.crate 278076 BLAKE2B 93385f64103fdb482bec34c7912474ae7a5935948715e6eb9a54907e0db5c39f089f6cd393bab33c935c59a1bbb0f4099431f206343811c1a450554d96a35756 SHA512 bcfff545d6dfefd81e09f8f30a86bdd85759b3a7d4093ef3365ed02718e10dbd604c52b94c9d7fa955d339fdc5b6c079940c6f345b5a48c52b5c8607794ca6f2
DIST target-lexicon-0.12.16.crate 26488 BLAKE2B e7950e4a302059a1bfc9bc15618a3c1b971a17cffae117a6e8f5f63a0d82fd2bd02680301d15338612d5426d349dd24cfee30ee787a15a7d3187f2a6825e69ce SHA512 092639957c4a0391560b6442b31c47159c04d12e971010f730a6ec9cb5389e4be903ef3d7daa06db95e64dc78b6970731fb647179ebaad2b12e9ed5e9b24da27
DIST tinytemplate-1.2.1.crate 26490 BLAKE2B af39d96f33f63238e455a4e38fde1d1730fd9661ae68be7b05df6ef9d2ab1a04db1332cc4ec9deb6da3a8e22b124df81b0fa8916d8491b808742bb733c8e48be SHA512 0cc080057e096f0796e72004343e1a8332c2e8a12e43f6ade150ebf632e9c29c7ad04de0b940cd57df81efdc4d07a6607da9b86a30d8383e39ac3d7be185edb9
diff --git a/dev-python/sqlglot/sqlglot-26.4.1.ebuild b/dev-python/sqlglot/sqlglot-26.4.1.ebuild
new file mode 100644
index 000000000000..f66889c1ac68
--- /dev/null
+++ b/dev-python/sqlglot/sqlglot-26.4.1.ebuild
@@ -0,0 +1,177 @@
+# Copyright 2023-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..13} )
+
+CARGO_OPTIONAL=1
+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.22.6
+ pyo3-ffi@0.22.6
+ pyo3-macros-backend@0.22.6
+ pyo3-macros@0.22.6
+ pyo3@0.22.6
+ 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.12.16
+ 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
+"
+
+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? (
+ ${CARGO_CRATE_URIS}
+ )
+"
+
+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}]
+ )
+"
+
+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
+ cd sqlglotrs || die
+ distutils-r1_python_compile
+ cd - >/dev/null || die
+ fi
+}
+
+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.
+ "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/sqlglot/sqlglot-26.6.0.ebuild b/dev-python/sqlglot/sqlglot-26.6.0.ebuild
new file mode 100644
index 000000000000..f66889c1ac68
--- /dev/null
+++ b/dev-python/sqlglot/sqlglot-26.6.0.ebuild
@@ -0,0 +1,177 @@
+# Copyright 2023-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..13} )
+
+CARGO_OPTIONAL=1
+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.22.6
+ pyo3-ffi@0.22.6
+ pyo3-macros-backend@0.22.6
+ pyo3-macros@0.22.6
+ pyo3@0.22.6
+ 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.12.16
+ 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
+"
+
+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? (
+ ${CARGO_CRATE_URIS}
+ )
+"
+
+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}]
+ )
+"
+
+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
+ cd sqlglotrs || die
+ distutils-r1_python_compile
+ cd - >/dev/null || die
+ fi
+}
+
+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.
+ "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/sshtunnel/sshtunnel-0.4.0.ebuild b/dev-python/sshtunnel/sshtunnel-0.4.0.ebuild
index 2f69b50fa02e..906dd10656c6 100644
--- a/dev-python/sshtunnel/sshtunnel-0.4.0.ebuild
+++ b/dev-python/sshtunnel/sshtunnel-0.4.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
@@ -12,7 +12,7 @@ HOMEPAGE="https://pypi.org/project/sshtunnel/"
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 ~arm x86"
+KEYWORDS="amd64 ~arm ~arm64 x86"
RESTRICT="test"
diff --git a/dev-python/starlette/Manifest b/dev-python/starlette/Manifest
index 644be59015bd..e62d5d3fc0d5 100644
--- a/dev-python/starlette/Manifest
+++ b/dev-python/starlette/Manifest
@@ -1,2 +1 @@
-DIST starlette-0.44.0.gh.tar.gz 2575663 BLAKE2B f566f354b87379ba076b37ebb7366ffc8c209bf1318f8c49ffcdc2cb604b90d29ecb24071b17c551c7e2aa4d383393fae9bf2b3e8129095e7adcaf10956d3a9d SHA512 052baac1a0f60354a35711e87de58b90b1c6fd13f6a2290746663dcc88d131840c340a2c95f8664b4b6347a7397639e26e547a1c353ca7b1911c3f5e3873868e
DIST starlette-0.45.3.gh.tar.gz 2574214 BLAKE2B e3a1c44288ba8d2da558417d14a2787a7c00c689298074b4ac9ce330d90e17181d98ad2ed85795bcea408ee2a64d287dec14ce5c7f9dfc79507562697b83511a SHA512 45d3726ce794a7572e4c816fa3eb1a8a9ad2c110757200b4f6e1aed0d502d2cc293e29c5b282d3451c9770ea067cfb684176755bf2d261fdb22de111ef8a1542
diff --git a/dev-python/starlette/starlette-0.44.0.ebuild b/dev-python/starlette/starlette-0.44.0.ebuild
deleted file mode 100644
index c5ff6274ffb2..000000000000
--- a/dev-python/starlette/starlette-0.44.0.ebuild
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=hatchling
-PYTHON_COMPAT=( pypy3 python3_{10..13} )
-
-inherit distutils-r1
-
-MY_P=${P/_p/.post}
-DESCRIPTION="The little ASGI framework that shines"
-HOMEPAGE="
- https://www.starlette.io/
- https://github.com/encode/starlette/
- https://pypi.org/project/starlette/
-"
-# no docs or tests in sdist, as of 0.27.0
-SRC_URI="
- https://github.com/encode/starlette/archive/${PV/_p/.post}.tar.gz
- -> ${MY_P}.gh.tar.gz
-"
-S=${WORKDIR}/${MY_P}
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86"
-
-RDEPEND="
- <dev-python/anyio-5[${PYTHON_USEDEP}]
- >=dev-python/anyio-3.4.0[${PYTHON_USEDEP}]
- <dev-python/httpx-0.29[${PYTHON_USEDEP}]
- >=dev-python/httpx-0.22.0[${PYTHON_USEDEP}]
- dev-python/itsdangerous[${PYTHON_USEDEP}]
- dev-python/jinja2[${PYTHON_USEDEP}]
- >=dev-python/python-multipart-0.0.18[${PYTHON_USEDEP}]
- dev-python/pyyaml[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- >=dev-python/pytest-8[${PYTHON_USEDEP}]
- dev-python/trio[${PYTHON_USEDEP}]
- )
-"
-
-: ${EPYTEST_TIMEOUT:-180}
-distutils_enable_tests pytest
-
-python_test() {
- local EPYTEST_IGNORE=(
- # Unpackaged 'databases' dependency
- tests/test_database.py
- )
-
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- epytest -p anyio
-}
diff --git a/dev-python/starlette/starlette-0.45.3.ebuild b/dev-python/starlette/starlette-0.45.3.ebuild
index 944b7f1ef8da..f1198cd46af3 100644
--- a/dev-python/starlette/starlette-0.45.3.ebuild
+++ b/dev-python/starlette/starlette-0.45.3.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/tox/Manifest b/dev-python/tox/Manifest
index c8812d367ea9..8a91b85a7a21 100644
--- a/dev-python/tox/Manifest
+++ b/dev-python/tox/Manifest
@@ -1,2 +1 @@
-DIST tox-4.23.2.tar.gz 189998 BLAKE2B 776b653388a4b0578b5e5fd7957e97e1b3591d6239a23fe232238a7ce64a9adc641bbd5d3d4585ebb094da7c487da2b0875a466d62e27a9686317cc38a9b2491 SHA512 5008964ebed3c94a6ad5f0985150c7bf73fd3996b91171b16323d195bf0288102aac0dc38848bd4c63e5c5678ab1a82c170579139eda97132a4555eb11d381a0
DIST tox-4.24.1.tar.gz 194742 BLAKE2B d0f383b42c9c0e05ef08598ec32a6096c6e8dcb49108e0ecd755fabe613dee4c1b5d3d687841ac96478f7a1bde781ec83fda5f757982f459bad31a5b1bb7d249 SHA512 8d7a3cd9c6140463dd2d2e1df7845c676f750ca23c0a9d528ee4fc7923bcadea94cfc0e7a1d70bd436d867be5f2edddd1576569777f2c15a0e11768cd932b6dd
diff --git a/dev-python/tox/tox-4.23.2.ebuild b/dev-python/tox/tox-4.23.2.ebuild
deleted file mode 100644
index a77019e021f4..000000000000
--- a/dev-python/tox/tox-4.23.2.ebuild
+++ /dev/null
@@ -1,98 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=hatchling
-PYTHON_COMPAT=( python3_{10..13} pypy3 )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="virtualenv-based automation of test activities"
-HOMEPAGE="
- https://tox.readthedocs.io/
- https://github.com/tox-dev/tox/
- https://pypi.org/project/tox/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86"
-
-RDEPEND="
- dev-python/cachetools[${PYTHON_USEDEP}]
- dev-python/chardet[${PYTHON_USEDEP}]
- dev-python/colorama[${PYTHON_USEDEP}]
- dev-python/filelock[${PYTHON_USEDEP}]
- dev-python/packaging[${PYTHON_USEDEP}]
- dev-python/platformdirs[${PYTHON_USEDEP}]
- dev-python/pluggy[${PYTHON_USEDEP}]
- dev-python/pyproject-api[${PYTHON_USEDEP}]
- $(python_gen_cond_dep '
- dev-python/tomli[${PYTHON_USEDEP}]
- dev-python/typing-extensions[${PYTHON_USEDEP}]
- ' 3.10)
- dev-python/virtualenv[${PYTHON_USEDEP}]
-"
-BDEPEND="
- dev-python/hatch-vcs[${PYTHON_USEDEP}]
- test? (
- dev-python/build[${PYTHON_USEDEP}]
- dev-python/distlib[${PYTHON_USEDEP}]
- dev-python/flaky[${PYTHON_USEDEP}]
- dev-python/psutil[${PYTHON_USEDEP}]
- dev-python/pytest-mock[${PYTHON_USEDEP}]
- dev-python/pytest-xdist[${PYTHON_USEDEP}]
- dev-python/re-assert[${PYTHON_USEDEP}]
- $(python_gen_cond_dep '
- dev-python/time-machine[${PYTHON_USEDEP}]
- ' 'python*')
- )
-"
-
-distutils_enable_tests pytest
-
-src_prepare() {
- # upstream lower bounds are meaningless
- sed -i -e 's:>=[0-9.]*::' pyproject.toml || die
- distutils-r1_src_prepare
-}
-
-python_test() {
- # devpi_process is not packaged, and has lots of dependencies
- cat > "${T}"/devpi_process.py <<-EOF || die
- def IndexServer(*args, **kwargs): raise NotImplementedError()
- EOF
-
- local -x PYTHONPATH=${T}:${PYTHONPATH}
- local EPYTEST_DESELECT=(
- # Internet
- tests/tox_env/python/virtual_env/package/test_package_cmd_builder.py::test_build_wheel_external
- tests/tox_env/python/virtual_env/package/test_package_cmd_builder.py::test_run_installpkg_targz
- )
- local EPYTEST_IGNORE=(
- # requires devpi*
- tests/test_provision.py
- )
-
- case ${EPYTHON} in
- pypy3)
- EPYTEST_DESELECT+=(
- 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[explicit-True-True]'
- 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[requirements-True-True]'
- 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[constraints-True-True]'
- 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[explicit+requirements-True-True]'
- 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[requirements_indirect-True-True]'
- 'tests/tox_env/python/pip/test_pip_install.py::test_constrain_package_deps[requirements_constraints_indirect-True-True]'
- )
- ;;
- python3.13)
- EPYTEST_DESELECT+=(
- # https://github.com/tox-dev/tox/issues/3290
- 'tests/config/loader/test_str_convert.py::test_str_convert_ok_py39[1,2-value1-Optional]'
- )
- ;;
- esac
-
- epytest
-}
diff --git a/dev-python/tox/tox-4.24.1.ebuild b/dev-python/tox/tox-4.24.1.ebuild
index 73a9b829f156..96419cbc905e 100644
--- a/dev-python/tox/tox-4.24.1.ebuild
+++ b/dev-python/tox/tox-4.24.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}]
diff --git a/dev-python/translate-toolkit/Manifest b/dev-python/translate-toolkit/Manifest
index 45475228f69b..ee8ae0725fa5 100644
--- a/dev-python/translate-toolkit/Manifest
+++ b/dev-python/translate-toolkit/Manifest
@@ -1,2 +1,3 @@
DIST translate-3.14.6.gh.tar.gz 1175486 BLAKE2B 3cfd844815adcd7ac24a41df41f3e717d7afa7c19f4e4467f9ce7892ec9adb321ed2e499358cdaa294c5a5d8ca8e20271ac47cc598b8e7585c290eea8e9b8235 SHA512 a2e23c4ec29e61fdcc0c28e7789478d595a11751c6117b7b5cc9191deec01e31309cea8a6e39c81635105b8b6b10c34533af5b91b736f7c2bbd4780146b79b3d
DIST translate-3.14.7.gh.tar.gz 1176117 BLAKE2B 4237e99c92b1e0e207e4618039061ff33170d1e152d224b2455514f7a30a7248566304e8550bb3f8a7412daf26f50c855541c3d0674d4f9e032e65d9d5e12eec SHA512 e0b505a0d5cd520a83560e08aa414a3b3d95b4c7af96a7dd3cd5a7e28ff827918e12cbefa36212b018a1ab7c2c345d6fb66e94d5d09f80eaa6bcaf330c5927e8
+DIST translate-3.14.8.gh.tar.gz 1177211 BLAKE2B 70e57918899f77057f4f42af2e9aab0df180b788b4f8e22a081cc607d8ee2e34264ba0715e23ede85ffb8882c579b3d6c61cd247756cbdbb54fd8a92f44a838d SHA512 5ff3f56e44f171f2c6bc1c3bf82787cc7f024615fb0d1371a11e8135a2908150ec515b40beaf3a3deeaeefa6c4ea2345ce4766ebe9b3d188d5cabfd762b9ed30
diff --git a/dev-python/translate-toolkit/translate-toolkit-3.14.8.ebuild b/dev-python/translate-toolkit/translate-toolkit-3.14.8.ebuild
new file mode 100644
index 000000000000..9af4d0313f20
--- /dev/null
+++ b/dev-python/translate-toolkit/translate-toolkit-3.14.8.ebuild
@@ -0,0 +1,119 @@
+# 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_{10..12} )
+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-4.3.1[${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}]
+ )
+"
+
+distutils_enable_tests pytest
+
+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 ! use ini; then
+ EPYTEST_IGNORE+=(
+ translate/convert/test_ini2po.py
+ translate/convert/test_po2ini.py
+ )
+ fi
+
+ if ! use subtitles; then
+ EPYTEST_IGNORE+=(
+ translate/storage/test_subtitles.py
+ )
+ fi
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ 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/Manifest b/dev-python/tree-sitter/Manifest
index 6be0178c4436..504c4cfbad82 100644
--- a/dev-python/tree-sitter/Manifest
+++ b/dev-python/tree-sitter/Manifest
@@ -1,3 +1,4 @@
DIST tree-sitter-0.22.3.gh.tar.gz 164914 BLAKE2B 7ab97203fed17fc8d18c40d5a24ff60cea4757353a4124c832cc52bff93ed8af913dbbab682225eac309762a26e90c216d2e1058dcaeb860ebd467b4c9655939 SHA512 8ac729b90f942eef07de97c4ebd070c1040f338c1f57a2203b6aa4f3f8db863fdb5183c9b27d5be2ec270d7eefba7665800d6cc4e9265cbd4b4715af4c4d3921
DIST tree-sitter-0.23.0.gh.tar.gz 167761 BLAKE2B 694e90f608f51fe4f9add476cd5ebcd0ce04a7b027efc4948ce49a6cc0f05ebf4f15e0fe3f365f89f3e04cfec542cb3f1db1e5b05ff7ca23d3134561ea3dcf36 SHA512 67a6f3359c6283c58afcdbe5b6a521cdfcf2585a5361fb69a55eff82941726a143528a402e6d609286d8846c77e20d0a38551525d761e35abb21045ad9c5a2f8
DIST tree-sitter-0.23.1.gh.tar.gz 168079 BLAKE2B fe3f8d9dae426d7771eab7775d78a0af72e59bf3448005cec1e597a3263b2ac89d7b2c1a80aa12da42db54b242da10d0395673412257d57dff557b2cf4763869 SHA512 39ed2d5d8a737bd72d539701a2dab5abc501b151a3666180f127645895582757eba2ec98607bbeb07bf90377fccad4a93cb385ce16565ed3420908129cea4f57
+DIST tree-sitter-0.24.0.gh.tar.gz 170141 BLAKE2B 3d7f076f947192105be2fc9d93831eb331c1ec189619f6db860db8b6b6c1f2f33cd03edf315c09a5de6637d870351d06d5507d9c0de8a4dadc4e9e863ac233e8 SHA512 471d605cc29bcf7fd228eefe8a3bc2dd39c163d584e941cfd8ac0e498ff1815c7cadb9a7a45c643f704b8c9f12932bcc53597c835e23b5988da087f9a6a59067
diff --git a/dev-python/tree-sitter/tree-sitter-0.23.1.ebuild b/dev-python/tree-sitter/tree-sitter-0.23.1.ebuild
index 2ca69f44e4b2..453e180d3b38 100644
--- a/dev-python/tree-sitter/tree-sitter-0.23.1.ebuild
+++ b/dev-python/tree-sitter/tree-sitter-0.23.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
@@ -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.24.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
new file mode 100644
index 000000000000..c1ed1ea679bd
--- /dev/null
+++ b/dev-python/tree-sitter/tree-sitter-0.24.0.ebuild
@@ -0,0 +1,66 @@
+# 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_{10..13} )
+
+inherit distutils-r1
+
+DESCRIPTION="Python bindings to the Tree-sitter parsing library"
+HOMEPAGE="
+ https://github.com/tree-sitter/py-tree-sitter/
+ https://pypi.org/project/tree-sitter/
+"
+SRC_URI="
+ https://github.com/tree-sitter/py-tree-sitter/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+S=${WORKDIR}/py-${P}
+
+LICENSE="MIT"
+SLOT="0"
+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:="
+RDEPEND="${DEPEND}
+ $(python_gen_cond_dep '
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ ' 3.12 3.13)
+"
+BDEPEND="
+ test? (
+ >=dev-libs/tree-sitter-html-0.23.2[python,${PYTHON_USEDEP}]
+ >=dev-libs/tree-sitter-javascript-0.23.1[python,${PYTHON_USEDEP}]
+ >=dev-libs/tree-sitter-json-0.24.8[python,${PYTHON_USEDEP}]
+ >=dev-libs/tree-sitter-python-0.23.6[python,${PYTHON_USEDEP}]
+ >=dev-libs/tree-sitter-rust-0.23.2[python,${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-0.22.2-unbundle.patch
+)
+
+src_unpack() {
+ default
+ rmdir "${S}/tree_sitter/core" || die
+}
+
+src_prepare() {
+ sed -e 's/ts_node_child_containing_descendant/ts_node_child_with_descendant/' \
+ -i tree_sitter/binding/node.c || die
+ sed -e 's/TSInputEncodingUTF16/TSInputEncodingUTF16LE/' \
+ -i tree_sitter/binding/parser.c || die
+ distutils-r1_src_prepare
+}
+
+src_test() {
+ rm -r tree_sitter || die
+ distutils-r1_src_test
+}
diff --git a/dev-python/trimesh/Manifest b/dev-python/trimesh/Manifest
index d880e8259173..8d55d771a3a0 100644
--- a/dev-python/trimesh/Manifest
+++ b/dev-python/trimesh/Manifest
@@ -1,3 +1,4 @@
DIST trimesh-4.5.3.gh.tar.gz 13618342 BLAKE2B 1bb74c872a09d928b9ccd4b098377f584ef05e444c1f3eee50ec456e108485a14757b1bdcb2920118e8ea6f557d56c2708784d51979c18cee956d9b7aac6093a SHA512 4000ae55e8020bf1fd884a646d18db77f55abbb5de2ccc9f89ada4854b2001c0da377d53b834e48f7f43fa4ea1681fd0cf092697bb59e888c5416cf4a245a847
DIST trimesh-4.6.0.gh.tar.gz 13621454 BLAKE2B 520d7be8479c3490dc5125c75ae91887ab499a7af82a7b4ef1568d2ff89ec78f40d2a06f4ad2f7176e9233ca1d6bf209cb64225f44642f93ec0fea4a317e9cb9 SHA512 afb430a939cba17b36d07c6b6eb1acae6aafc388ac636b76dacb8053069f929a60f0d4be56f706786d3853123f3fb361a4550c9cabdbf46aa7d07c7eea956d64
DIST trimesh-4.6.1.gh.tar.gz 13621428 BLAKE2B 2fc457ff32cfb69c93f0640c0f1a08cf801008c3804485dba1cdff8496cf4f5583223fe6c0b1099d3e75527f5ef5df2c8cbadce7cacecb878988c7d973d66bf8 SHA512 1adebab15a08324e4e6585aa2a1cd788439176c4c938a6507bb17eff1bafbb81d86f9be1fb7d7fc2274496b22ff94a47ebae050fc6c8a811cdebb7f68c008653
+DIST trimesh-4.6.2.gh.tar.gz 13621607 BLAKE2B 796f06f9bd43779a6a7a9dea97ec6c62714a4dd1a9151afd37f638d715097b60c47f59f7b253cef355219359279c89f6d70b8e50b62c4746aedae77545cc0b13 SHA512 450d07e19af342f5676a33dd6594c360d6761eb19310c60c9c89bce0eaa0dc032c2a3c1503883baa9889d0c1e53a6738af0655df3ebe95bd7e62c2f9615921bf
diff --git a/dev-python/trimesh/trimesh-4.6.2.ebuild b/dev-python/trimesh/trimesh-4.6.2.ebuild
new file mode 100644
index 000000000000..d155904ce200
--- /dev/null
+++ b/dev-python/trimesh/trimesh-4.6.2.ebuild
@@ -0,0 +1,80 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..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/setuptools[${PYTHON_USEDEP}]
+ >=dev-python/shapely-1.8.2[${PYTHON_USEDEP}]
+ dev-python/svg-path[${PYTHON_USEDEP}]
+ dev-python/sympy[${PYTHON_USEDEP}]
+ dev-python/xxhash[${PYTHON_USEDEP}]
+ dev-python/rtree[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/mapbox-earcut[${PYTHON_USEDEP}]
+ dev-python/pillow[webp,${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_TIMEOUT=1800
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # requires manifold3d
+ tests/test_boolean.py::test_multiple_difference
+ # timing nonsense
+ tests/test_bounds.py::BoundsTest::test_obb_mesh_large
+ )
+ local EPYTEST_IGNORE=(
+ # require pyinstrument
+ tests/test_sweep.py
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest
+}
+
+pkg_postinst() {
+ optfeature_header "${PN} functionality can be extended by installing the following packages:"
+ optfeature "making GUI applications with 3D stuff" dev-python/glooey
+ optfeature "2D triangulations of polygons" dev-python/mapbox-earcut
+ optfeature "loading a number of additional mesh formats" dev-python/meshio
+ optfeature "figuring out how much memory we have" dev-python/psutil
+ optfeature "marching cubes and other nice stuff" dev-python/scikit-image
+}
diff --git a/dev-python/truststore/Manifest b/dev-python/truststore/Manifest
index 850407ee7ada..dc591a432fe7 100644
--- a/dev-python/truststore/Manifest
+++ b/dev-python/truststore/Manifest
@@ -1 +1,2 @@
DIST truststore-0.10.0.gh.tar.gz 28644 BLAKE2B cf83a6936e361bb08f399ea5f6739acbe254dab380b06cf4befab8e1084e01d0757afd02eb0b9718963b4249280e2fa629b079eea143a7d3c5bda3767d4e0611 SHA512 eb1b16f093f32ff8be29bb696e92843823a8ffe2e7428ea989ee987d94d7328b5c40d6d8e5aa25eb223ca348ca30b29018decaec11d6106221753fd4525aa5b0
+DIST truststore-0.10.1.gh.tar.gz 29120 BLAKE2B 2efb72b04f3e6fd5365d0d4f8fda12fcaa6fd2008cb17fdc76a679b4bff965040d30465cf78dc0a2cec2e02430100b5e6cc1f4ec4102326805a6d9bd52c38b10 SHA512 8a1c1269d44c0c33444c67d4302484eddcd3223b3e792b133efcf547ed1292cdca0ebc15447f68e7078928ea01d5c2108692dffb703d6bbdad0b9f1c23eeebe9
diff --git a/dev-python/truststore/truststore-0.10.1.ebuild b/dev-python/truststore/truststore-0.10.1.ebuild
new file mode 100644
index 000000000000..f508f827a26f
--- /dev/null
+++ b/dev-python/truststore/truststore-0.10.1.ebuild
@@ -0,0 +1,47 @@
+# Copyright 2023-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit
+PYTHON_COMPAT=( pypy3 python3_{10..13} )
+
+inherit distutils-r1
+
+DESCRIPTION="Verify certificates using native system trust stores"
+HOMEPAGE="
+ https://github.com/sethmlarson/truststore/
+ https://pypi.org/project/truststore/
+"
+SRC_URI="
+ https://github.com/sethmlarson/truststore/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+# The vast majority of tests require Internet access.
+PROPERTIES="test_network"
+RESTRICT="test"
+
+BDEPEND="
+ test? (
+ dev-python/aiohttp[${PYTHON_USEDEP}]
+ dev-python/flaky[${PYTHON_USEDEP}]
+ dev-python/httpx[${PYTHON_USEDEP}]
+ dev-python/pyopenssl[${PYTHON_USEDEP}]
+ dev-python/pytest-asyncio[${PYTHON_USEDEP}]
+ dev-python/pytest-httpserver[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/trustme[${PYTHON_USEDEP}]
+ dev-python/urllib3[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -p asyncio -p pytest_httpserver
+}
diff --git a/dev-python/twine/twine-6.1.0.ebuild b/dev-python/twine/twine-6.1.0.ebuild
index 1e0781543334..969824c35121 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 ~ppc64 ~riscv ~sparc ~x86"
+KEYWORDS="amd64 arm arm64 ~loong ppc64 ~riscv ~sparc x86"
RDEPEND="
>=dev-python/colorama-0.4.3[${PYTHON_USEDEP}]
diff --git a/dev-python/types-setuptools/Manifest b/dev-python/types-setuptools/Manifest
index 2f154902983e..6ebc40fb96aa 100644
--- a/dev-python/types-setuptools/Manifest
+++ b/dev-python/types-setuptools/Manifest
@@ -1,2 +1,2 @@
-DIST types_setuptools-75.6.0.20241223.tar.gz 48063 BLAKE2B ecd24e67fe4df358a88c3de2f7cbbc003febbba4216cab3913d5672112d15d88767bd695ee918eff5790918ce749bd2359b8b159ef2e182cbf387b4e0f11dd51 SHA512 5251c28cd36c5e0ed3353ecf76c15bef567488286ebf839a60410a100456a85edd56a4c5d72fd15ac718a8abe57d71958252a9811d6c1a2eeab50c2591ae5510
DIST types_setuptools-75.8.0.20250110.tar.gz 48185 BLAKE2B d6db261fe44fe7bd05670c5cd6519d4ea4825e97af0d3663ebe0538496d2816af81dff9bab3e7f51641d07b4d185e75e87d5dbda77f244019488384d5db6d56a SHA512 fe9ce44c59b237f75af5f38f6efdb63fba142673cfd9f8b765f825d2d52154dda4c3d4fe8dd0bd7a22448192a4bbb90e02cb31619c473e1e7d9f0df39959c326
+DIST types_setuptools-75.8.0.20250210.tar.gz 48240 BLAKE2B 5cf73044b6f813039c2590c0928fb38f8d4f721a3e1efadf09170130c412c0ec970761ebd01b513bc119b5dd99218f5a0d286c945c7c591fe5c9fadd875ad4b2 SHA512 46ab3d6155f0c21a51854c261a20ec2ded46f3b38aceda71b96f82f90be5d2847f9469ac4348158b16f45c99218237d7743fb9383560293121732d1d93a8c8b3
diff --git a/dev-python/types-setuptools/types-setuptools-75.6.0.20241223.ebuild b/dev-python/types-setuptools/types-setuptools-75.8.0.20250210.ebuild
index ceb64b48dfd9..8149f98d4409 100644
--- a/dev-python/types-setuptools/types-setuptools-75.6.0.20241223.ebuild
+++ b/dev-python/types-setuptools/types-setuptools-75.8.0.20250210.ebuild
@@ -13,4 +13,4 @@ HOMEPAGE="https://pypi.org/project/types-setuptools/"
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
diff --git a/dev-python/uv/Manifest b/dev-python/uv/Manifest
index bb3260a4c7f5..25e775bfa37c 100644
--- a/dev-python/uv/Manifest
+++ b/dev-python/uv/Manifest
@@ -1,7 +1,13 @@
DIST pubgrub-648aa343486e5529953153781fc86025c73c4a61.gh.tar.gz 99073 BLAKE2B 86252bb78e0f832ce77040d86b188b4dd0637acd68e28c8b87fa36ab7cc23c5e296d0f634647d407bcd7fc24bf6c34d281de1744608ff0fd2741428bb0bf55a8 SHA512 8386273deca98df82c95931159848fa159ea4dbb75b8bba539cfe73f91e87340bc0e8048f1a4483148b021bb99d6a3b90275d9bb1cedccf153a7ebc29bd70e17
+DIST pubgrub-b70cf707aa43f21b32f3a61b8a0889b15032d5c4.gh.tar.gz 98983 BLAKE2B 08ad8a10a96ba7da3100f7658f38cb8d6fb0e1eca92ba0aaf1393778012db807084f047eec171f0a46836a6746367369e79ab95836d5cdf215211e321d2800ac SHA512 401ea5ca16e978d5407a1400e4e27cec9fcac11332067ee1ed8a3bc511901e08fc421ce875ebbb0990593ed549a4a5f4620914a71ae3490c7b8ae0f7b26b5937
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 tokio-tar-ba2b140f27d081c463335f0d68b5f8df8e6c845e.gh.tar.gz 51225 BLAKE2B bfa6875edb3fe3fb98b379f4cdc3c7df78b74b8b88e8ef389678666c2ac0136ca6e04eb61e799e1691635d2bbfee82b361adbff3c66748e0d829a64e6068017b SHA512 bee8794161740b336b68514896a0c972e676a1aaf90662fe1f53961afbcccfb144eb3f5e903864f395a1be71c62ffd13ec8357c6848c0b86eb881bdf3dc55408
DIST uv-0.5.20-crates.tar.xz 53845912 BLAKE2B 3ebe6099304f4520cba49bf36a7b900146b57740c6dcf783cf2f064707b5880041eac8ee0adf2e251819cb7f3ac3f2739dd89636a48618f6220bc21bdb7fd334 SHA512 fbfb6becb1008c5dbfd571871abe053721f4a9939f98e1d0b1c3c5ad405d1d4dcdd121986e12cdaab9e1ff7a9bc0353aa69345ddb2fbb8c0ac0a427bdbb6c9f9
DIST uv-0.5.21.gh.tar.gz 3260658 BLAKE2B 064f52d4c690d2992988ca1683ce2c5183c2662961b931519b84651bebedff90a5b64fd87052b79c591b62a8fa07691997c38cf2b636e9a0facfb5683e64627b SHA512 351bf2a76cc0ec10f254f9eab0df0c0f307594a7052388e3b793c8314d9119488c2ebaa20125021fe0bf54192ce17d7e69719832c17aa4c815a5d9d69521e225
DIST uv-0.5.25-crates.tar.xz 53882356 BLAKE2B b0762449534ccf0be33d2c4d50fd9bc01823c6aeef7b82a84e4dc49e3ce92272f62632608664614d62dc5e0f40c500e3b3ca3ca0388761f3c3b50b89d0f83a42 SHA512 ec7b64d5b40d20d1d5081819b895cc18a69d008e6b27f40cc147573b99f8fabf11ee83c60a389791ad8a844a8c0965da2dd1be500f4c2ce8860724a41c37ece5
DIST uv-0.5.26.gh.tar.gz 3353978 BLAKE2B 1920825eaf2d2eca3d5e5fdaba9677e08f6bbb6d1b078a3ffe706f1344ccd9de19237c0470cc902a06f5fbfa9bad0af51c67a10141e76c9f9f182217c461c094 SHA512 e723775465594959b8e70c1bd43f0ddce0b8d64d7ddb157f28385593aa6c40153b1152b2c22534862da0605e2a0ccb7dffd1f95e07d8003eb37433bb3b887b73
+DIST uv-0.5.27-crates.tar.xz 47539520 BLAKE2B 701e7bf284a3506555a6da6ccc0f3aba5161305b4acc065f68c14ebf25f79a8bce3739589e5d3461aa8d058860d387790e6f007ce74309c03c1623574ef15c85 SHA512 fe276c9cfb0d07d4ba56427fde7067480f32cb21341b3967bfa65217e94d78992692808981dcd321731339c81ee7a44cfcd103557d63ebd727c04cbc403217fe
+DIST uv-0.5.27.gh.tar.gz 3356614 BLAKE2B 143d1ee171a46a4bdedec79767f04973233ba389ed053358383834f9b6fdbd2334ce695adc63a76f3ffcc92427739bfc4adbf57b19280f98c1904b607f2ecbc2 SHA512 ce597666983b24e85992cf7aa313506255d58b97ac0e98300c5f01f8418a71e2c7357b9fdbd2cd1b56b3a8cfff13d3014f18f740e11561cd4eea03438efec990
+DIST uv-0.5.29-crates.tar.xz 47545324 BLAKE2B 880a4c51619031cabd6e375373e5a1a99f0ad344d08fd0bca4bfdb3b7c72fe4a23e34cad93167c23c7b2e7b09e350ae4e0b832786e09246f297aea146f9cc3fc SHA512 fa6489400af45462dc59ccd35a8c942dc635bad4ebf7481cc2eda585147a6016b17eca42ef6d0fa233d714def6d56fef205abe4782aba4610c324fd2825eef62
+DIST uv-0.5.29.gh.tar.gz 3375616 BLAKE2B bce1af0353271f8c0ecf073286ed26303953920f68fdb3e24aa7f03926dbc0a9165e93ee2b92bc554ce5eeca3c2d40413e3eee5c83c85dc85da7f737a9af5cb3 SHA512 ebcc2f4d25e800fdd864b1aa64ed0c2f7e5ab2f9e4a80e43f7ecc27d4a0fedac1062644bd954e15b39055d562ec2366c089a934fd65bb103cb50e2b5414a6d97
diff --git a/dev-python/uv/uv-0.5.27.ebuild b/dev-python/uv/uv-0.5.27.ebuild
new file mode 100644
index 000000000000..eb7a0571dafa
--- /dev/null
+++ b/dev-python/uv/uv-0.5.27.ebuild
@@ -0,0 +1,171 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CRATES="
+"
+
+declare -A GIT_CRATES=(
+ [astral-tokio-tar]='https://github.com/astral-sh/tokio-tar;ba2b140f27d081c463335f0d68b5f8df8e6c845e;tokio-tar-%commit%'
+ [async_zip]='https://github.com/charliermarsh/rs-async-zip;c909fda63fcafe4af496a07bfda28a5aae97e58d;rs-async-zip-%commit%'
+ [pubgrub]='https://github.com/astral-sh/pubgrub;b70cf707aa43f21b32f3a61b8a0889b15032d5c4;pubgrub-%commit%'
+ [tl]='https://github.com/astral-sh/tl;6e25b2ee2513d75385101a8ff9f591ef51f314ec;tl-%commit%'
+ [version-ranges]='https://github.com/astral-sh/pubgrub;b70cf707aa43f21b32f3a61b8a0889b15032d5c4;pubgrub-%commit%/version-ranges'
+)
+
+RUST_MIN_VER="1.83.0"
+
+inherit cargo check-reqs
+
+CRATE_PV=0.5.27
+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 ISC MIT
+ MPL-2.0 Unicode-3.0 Unicode-DFS-2016 ZLIB
+"
+# ring crate
+LICENSE+=" openssl"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+IUSE="test"
+RESTRICT="test"
+PROPERTIES="test_network"
+
+DEPEND="
+ app-arch/bzip2:=
+ app-arch/xz-utils:=
+ app-arch/zstd:=
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ test? (
+ dev-lang/python:3.8
+ dev-lang/python:3.9
+ dev-lang/python:3.10
+ dev-lang/python:3.11
+ dev-lang/python:3.12
+ !!~dev-python/uv-0.5.0
+ )
+"
+
+QA_FLAGS_IGNORED="usr/bin/.*"
+
+check_space() {
+ local CHECKREQS_DISK_BUILD=3G
+ use debug && CHECKREQS_DISK_BUILD=9G
+ check-reqs_pkg_setup
+}
+
+pkg_pretend() {
+ check_space
+}
+
+pkg_setup() {
+ check_space
+ rust_pkg_setup
+}
+
+src_prepare() {
+ default
+
+ # enable system libraries where supported
+ export ZSTD_SYS_USE_PKG_CONFIG=1
+ # TODO: unbundle libz-ng-sys, tikv-jemalloc-sys?
+
+ # remove unbundled sources, just in case
+ find "${ECARGO_VENDOR}"/{bzip2,lzma,zstd}-sys-*/ -name '*.c' -delete || die
+
+ # bzip2-sys requires a pkg-config file
+ # https://github.com/alexcrichton/bzip2-rs/issues/104
+ mkdir "${T}/pkg-config" || die
+ export PKG_CONFIG_PATH=${T}/pkg-config${PKG_CONFIG_PATH+:${PKG_CONFIG_PATH}}
+ cat >> "${T}/pkg-config/bzip2.pc" <<-EOF || die
+ Name: bzip2
+ Version: 9999
+ Description:
+ Libs: -lbz2
+ EOF
+}
+
+src_configure() {
+ local myfeatures=(
+ git
+ pypi
+ python
+ )
+
+ cargo_src_configure --no-default-features
+}
+
+src_compile() {
+ cd crates/uv || die
+ cargo_src_compile
+}
+
+src_test() {
+ # work around https://github.com/astral-sh/uv/issues/4376
+ local -x PATH=${BROOT}/usr/lib/python-exec/python3.12:${PATH}
+ local -x COLUMNS=100
+ local -x PYTHONDONTWRITEBYTECODE=
+ # fix tests failing because of our config
+ local -x XDG_CONFIG_DIRS=${T}
+
+ cd crates/uv || die
+ cargo_src_test --no-fail-fast
+}
+
+src_install() {
+ cd crates/uv || die
+ cargo_src_install
+
+ insinto /etc/xdg/uv
+ newins - uv.toml <<-EOF || die
+ # These defaults match Fedora, see:
+ # https://src.fedoraproject.org/rpms/uv/pull-request/18
+
+ # By default ("automatic"), uv downloads missing Python versions
+ # automatically and keeps them in the user's home directory.
+ # Disable that to make downloading opt-in, and especially
+ # to avoid unnecessarily fetching custom Python when the distro
+ # package would be preferable. Python builds can still be
+ # downloaded manually via "uv python install".
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-downloads
+ python-downloads = "manual"
+
+ # By default ("managed"), uv always prefers self-installed
+ # Python versions over the system Python, independently
+ # of versions. Since we generally expect users to use that
+ # to install old Python versions not in ::gentoo anymore,
+ # this effectively means that uv would end up preferring very
+ # old Python versions over the newer ones that are provided
+ # by the system. Default to using the system versions to avoid
+ # this counter-intuitive behavior.
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-preference
+ python-preference = "system"
+ EOF
+}
diff --git a/dev-python/uv/uv-0.5.29.ebuild b/dev-python/uv/uv-0.5.29.ebuild
new file mode 100644
index 000000000000..d917efbee3a8
--- /dev/null
+++ b/dev-python/uv/uv-0.5.29.ebuild
@@ -0,0 +1,170 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CRATES="
+"
+
+declare -A GIT_CRATES=(
+ [async_zip]='https://github.com/charliermarsh/rs-async-zip;c909fda63fcafe4af496a07bfda28a5aae97e58d;rs-async-zip-%commit%'
+ [pubgrub]='https://github.com/astral-sh/pubgrub;b70cf707aa43f21b32f3a61b8a0889b15032d5c4;pubgrub-%commit%'
+ [tl]='https://github.com/astral-sh/tl;6e25b2ee2513d75385101a8ff9f591ef51f314ec;tl-%commit%'
+ [version-ranges]='https://github.com/astral-sh/pubgrub;b70cf707aa43f21b32f3a61b8a0889b15032d5c4;pubgrub-%commit%/version-ranges'
+)
+
+RUST_MIN_VER="1.83.0"
+
+inherit cargo check-reqs
+
+CRATE_PV=0.5.29
+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 ISC MIT
+ MPL-2.0 Unicode-3.0 Unicode-DFS-2016 ZLIB
+"
+# ring crate
+LICENSE+=" openssl"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+IUSE="test"
+RESTRICT="test"
+PROPERTIES="test_network"
+
+DEPEND="
+ app-arch/bzip2:=
+ app-arch/xz-utils:=
+ app-arch/zstd:=
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ test? (
+ dev-lang/python:3.8
+ dev-lang/python:3.9
+ dev-lang/python:3.10
+ dev-lang/python:3.11
+ dev-lang/python:3.12
+ !!~dev-python/uv-0.5.0
+ )
+"
+
+QA_FLAGS_IGNORED="usr/bin/.*"
+
+check_space() {
+ local CHECKREQS_DISK_BUILD=3G
+ use debug && CHECKREQS_DISK_BUILD=9G
+ check-reqs_pkg_setup
+}
+
+pkg_pretend() {
+ check_space
+}
+
+pkg_setup() {
+ check_space
+ rust_pkg_setup
+}
+
+src_prepare() {
+ default
+
+ # enable system libraries where supported
+ export ZSTD_SYS_USE_PKG_CONFIG=1
+ # TODO: unbundle libz-ng-sys, tikv-jemalloc-sys?
+
+ # remove unbundled sources, just in case
+ find "${ECARGO_VENDOR}"/{bzip2,lzma,zstd}-sys-*/ -name '*.c' -delete || die
+
+ # bzip2-sys requires a pkg-config file
+ # https://github.com/alexcrichton/bzip2-rs/issues/104
+ mkdir "${T}/pkg-config" || die
+ export PKG_CONFIG_PATH=${T}/pkg-config${PKG_CONFIG_PATH+:${PKG_CONFIG_PATH}}
+ cat >> "${T}/pkg-config/bzip2.pc" <<-EOF || die
+ Name: bzip2
+ Version: 9999
+ Description:
+ Libs: -lbz2
+ EOF
+}
+
+src_configure() {
+ local myfeatures=(
+ git
+ pypi
+ python
+ )
+
+ cargo_src_configure --no-default-features
+}
+
+src_compile() {
+ cd crates/uv || die
+ cargo_src_compile
+}
+
+src_test() {
+ # work around https://github.com/astral-sh/uv/issues/4376
+ local -x PATH=${BROOT}/usr/lib/python-exec/python3.12:${PATH}
+ local -x COLUMNS=100
+ local -x PYTHONDONTWRITEBYTECODE=
+ # fix tests failing because of our config
+ local -x XDG_CONFIG_DIRS=${T}
+
+ cd crates/uv || die
+ cargo_src_test --no-fail-fast
+}
+
+src_install() {
+ cd crates/uv || die
+ cargo_src_install
+
+ insinto /etc/xdg/uv
+ newins - uv.toml <<-EOF || die
+ # These defaults match Fedora, see:
+ # https://src.fedoraproject.org/rpms/uv/pull-request/18
+
+ # By default ("automatic"), uv downloads missing Python versions
+ # automatically and keeps them in the user's home directory.
+ # Disable that to make downloading opt-in, and especially
+ # to avoid unnecessarily fetching custom Python when the distro
+ # package would be preferable. Python builds can still be
+ # downloaded manually via "uv python install".
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-downloads
+ python-downloads = "manual"
+
+ # By default ("managed"), uv always prefers self-installed
+ # Python versions over the system Python, independently
+ # of versions. Since we generally expect users to use that
+ # to install old Python versions not in ::gentoo anymore,
+ # this effectively means that uv would end up preferring very
+ # old Python versions over the newer ones that are provided
+ # by the system. Default to using the system versions to avoid
+ # this counter-intuitive behavior.
+ #
+ # https://docs.astral.sh/uv/reference/settings/#python-preference
+ python-preference = "system"
+ EOF
+}
diff --git a/dev-python/virtualenv/Manifest b/dev-python/virtualenv/Manifest
index d703b1696125..f122d72efef1 100644
--- a/dev-python/virtualenv/Manifest
+++ b/dev-python/virtualenv/Manifest
@@ -1 +1,2 @@
DIST virtualenv-20.29.1.tar.gz 7658028 BLAKE2B b03008966fdeb0f7e72525ae5612a17721b9e5cbfb1e95f7a0b1d9677dfc8d3036e86623724a722ea5571f32bb7a43a7af0ec530fba3fa4e96b5215b5ee06e66 SHA512 94a2c9ce13cb98bf1df6f2e0a9db0e1acacf4667fb9609ad39d8ae7a6529818c0b1597b463262b0ea9a492684d9af027fa0ac9c1bb499e862ab587786b3b9511
+DIST virtualenv-20.29.2.tar.gz 4320272 BLAKE2B 3a00c2be2a511968020df74eb5da6ee03cafb3942ac70b23ce598840d2c21db57ba190dac0d30fade915e379fca98db1c53a0c4dbafec457e817957bb736cde4 SHA512 9c455e38fcf1eb2e8ca053df35c86c04dae6c32a55e5ba057de1f1713f5f2a8ad0fa597e4409409646d6d3b3f020058f9955a2888756ac3e6af91e37efcf8c91
diff --git a/dev-python/virtualenv/virtualenv-20.29.2.ebuild b/dev-python/virtualenv/virtualenv-20.29.2.ebuild
new file mode 100644
index 000000000000..8af728153afa
--- /dev/null
+++ b/dev-python/virtualenv/virtualenv-20.29.2.ebuild
@@ -0,0 +1,118 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{10..13} pypy3 )
+
+inherit distutils-r1 multiprocessing pypi
+
+DESCRIPTION="Virtual Python Environment builder"
+HOMEPAGE="
+ https://virtualenv.pypa.io/en/stable/
+ https://pypi.org/project/virtualenv/
+ https://github.com/pypa/virtualenv/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/distlib-0.3.7[${PYTHON_USEDEP}]
+ >=dev-python/filelock-3.12.2[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-3.9.1[${PYTHON_USEDEP}]
+
+ dev-python/ensurepip-pip
+ dev-python/ensurepip-setuptools
+ dev-python/ensurepip-wheel
+"
+# coverage is used somehow magically in virtualenv, maybe it actually
+# tests something useful
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ dev-python/coverage[${PYTHON_USEDEP}]
+ dev-python/flaky[${PYTHON_USEDEP}]
+ >=dev-python/pip-22.2.1[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/pytest-freezer-0.4.6[${PYTHON_USEDEP}]
+ ' pypy3)
+ >=dev-python/pytest-mock-3.6.1[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-67.8[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/time-machine[${PYTHON_USEDEP}]
+ ' 'python3*')
+ dev-python/wheel[${PYTHON_USEDEP}]
+ >=dev-python/packaging-20.0[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_TIMEOUT=180
+distutils_enable_tests pytest
+
+src_prepare() {
+ local PATCHES=(
+ # use wheels from ensurepip bundle
+ "${FILESDIR}/${PN}-20.26.3-ensurepip.patch"
+ )
+
+ distutils-r1_src_prepare
+
+ # workaround test failures due to warnings from setuptools-scm, sigh
+ echo '[tool.setuptools_scm]' >> pyproject.toml || die
+
+ # remove useless pins
+ sed -i -e 's:,<[0-9.]*::' pyproject.toml || die
+
+ # remove bundled wheels
+ rm src/virtualenv/seed/wheels/embed/*.whl || die
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ tests/unit/seed/embed/test_bootstrap_link_via_app_data.py::test_seed_link_via_app_data
+ # tests for old wheels with py3.7 support
+ tests/unit/seed/embed/test_pip_invoke.py::test_base_bootstrap_via_pip_invoke
+ tests/unit/seed/wheels/test_wheels_util.py::test_wheel_not_support
+ # broken by different wheel versions in ensurepip
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_latest_string
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_exact
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_latest_none
+ tests/unit/seed/wheels/test_acquire.py::test_download_wheel_bad_output
+ # hangs on a busy system, sigh
+ tests/unit/test_util.py::test_reentrant_file_lock_is_thread_safe
+ )
+ case ${EPYTHON} in
+ python3.1[23])
+ EPYTEST_DESELECT+=(
+ tests/unit/create/via_global_ref/test_build_c_ext.py
+ )
+ ;&
+ python3.11)
+ EPYTEST_DESELECT+=(
+ # TODO
+ tests/unit/discovery/py_info/test_py_info.py::test_fallback_existent_system_executable
+ )
+ ;;
+ esac
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local -x TZ=UTC
+ local plugins=( -p flaky -p pytest_mock )
+ if [[ ${EPYTHON} == pypy3 ]]; then
+ plugins+=( -p freezer )
+ else
+ plugins+=( -p time_machine )
+ fi
+ epytest "${plugins[@]}" -p xdist -n "$(makeopts_jobs)" --dist=worksteal
+}
+
+src_install() {
+ distutils-r1_src_install
+
+ # remove bundled wheels, we're using ensurepip bundle instead
+ find "${ED}" -name '*.whl' -delete || die
+}
diff --git a/dev-python/virtualenvwrapper/Manifest b/dev-python/virtualenvwrapper/Manifest
index 38deaed880b4..11167cc0509e 100644
--- a/dev-python/virtualenvwrapper/Manifest
+++ b/dev-python/virtualenvwrapper/Manifest
@@ -1 +1,2 @@
DIST virtualenvwrapper-6.1.0.tar.gz 95880 BLAKE2B 86d37682148ee132f9be5c4554de3c770c0f1c3055441bbce080d94da6fa83fc138a15c4c7edbb525e0c303c3c2ba5c1b1ee23260ea5bafaab157b3699b39b87 SHA512 78e09956132862fbf1caf53cb6c9375aa3718685f72d8f3fb61e402e6b26e8568d5b3a3ed18142b14f3b2691f89e6f912782e813d8139dc71ceb7e47bde8d0b0
+DIST virtualenvwrapper-6.1.1.tar.gz 95964 BLAKE2B 722fee78cdadbde77e03b22458f1591e9540ef12cd7deb14ecfa8abf1b030d16f8548b31297832eaf843d5b1db8453c239ff42162d66a74490339ab77e8ccc37 SHA512 1d2095c79f3679a4068418fe6e740771334bf0be44961dc5a50ac4848c83b5af046fc6125497177b864603efc4f2a0aacc912185129b8eb510dc4dcdef661853
diff --git a/dev-python/virtualenvwrapper/virtualenvwrapper-6.1.1.ebuild b/dev-python/virtualenvwrapper/virtualenvwrapper-6.1.1.ebuild
new file mode 100644
index 000000000000..348f62c23963
--- /dev/null
+++ b/dev-python/virtualenvwrapper/virtualenvwrapper-6.1.1.ebuild
@@ -0,0 +1,98 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_SINGLE_IMPL=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{11..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Set of extensions to Ian Bicking's virtualenv tool"
+HOMEPAGE="
+ https://github.com/python-virtualenvwrapper/virtualenvwrapper/
+ https://pypi.org/project/virtualenvwrapper/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc64 ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ $(python_gen_cond_dep '
+ dev-python/stevedore[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ dev-python/virtualenv-clone[${PYTHON_USEDEP}]
+ ')
+"
+BDEPEND="
+ $(python_gen_cond_dep '
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ ')
+ test? (
+ $(python_gen_cond_dep '
+ dev-python/pip[${PYTHON_USEDEP}]
+ ')
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}/virtualenvwrapper-6.0.0-remove-use-of-which.patch"
+ "${FILESDIR}/virtualenvwrapper-4.8.4_p20230121-override-default-python-executable.patch"
+)
+
+src_prepare() {
+ default
+
+ # specify default python interpeter to align with PYTHON_SINGLE_TARGET
+ sed -i -e "s:@@GENTOO_PYTHON_EXECUTABLE@@:${PYTHON}:" virtualenvwrapper.sh || die
+
+ # remove tests which require an internet connection + bug #936086
+ rm tests/test_mkvirtualenv_install.sh || die
+ rm tests/test_mkvirtualenv_requirements.sh || die
+ sed -i -e '/test_new_env_activated () {/,/}/ d' tests/test_cp.sh || die
+ sed -i -e '/test_wipeenv () {/,/}/ d' tests/test_wipeenv.sh || die
+
+ # remove tests which require functional git repos with remotes
+ sed -i -e '/test_wipeenv_\(pip_e\|develop\) () {/,/}/ d' tests/test_wipeenv.sh || die
+}
+
+python_test() {
+ # tests have unusual expectations
+ local -x HOME="${HOME%/}"
+ local -x USER="${USER}"
+ local -x USING_TOX=1
+
+ # Make sure that users env doesn't leak to tests
+ unset VIRTUALENVWRAPPER_SCRIPT
+ unset _VIRTUALENVWRAPPER_API
+
+ local old_path="${PATH}"
+
+ # Tests are based on how upstream tox handles it
+
+ cp -a "${BUILD_DIR}"/{install/usr,test_bash} || die
+ local -x VIRTUAL_ENV="${BUILD_DIR}/test_bash"
+ touch "${VIRTUAL_ENV}"/bin/activate || die # silence warning
+
+ local -x PATH="${VIRTUAL_ENV}/bin:${old_path}"
+ local -x SHELL="/bin/bash"
+ local -x test_shell_opts=
+
+ bash ./tests/run_tests "${VIRTUAL_ENV}" || die "Tests failed under ${EPYTHON} with bash"
+
+ if has_version app-shells/zsh; then
+ cp -a "${BUILD_DIR}"/{install/usr,test_zsh} || die
+ local -x VIRTUAL_ENV="${BUILD_DIR}/test_zsh"
+ touch "${VIRTUAL_ENV}"/bin/activate || die # silence warning
+
+ local -x PATH="${VIRTUAL_ENV}/bin:${old_path}"
+ local -x SHELL="/bin/zsh"
+ local -x test_shell_opts="-o shwordsplit"
+
+ zsh -o shwordsplit ./tests/run_tests "${VIRTUAL_ENV}" || die "Tests failed under ${EPYTHON} with zsh"
+ fi
+}
diff --git a/dev-python/websockets/websockets-14.2.ebuild b/dev-python/websockets/websockets-14.2.ebuild
index 767a592057f3..3b6e296a0d67 100644
--- a/dev-python/websockets/websockets-14.2.ebuild
+++ b/dev-python/websockets/websockets-14.2.ebuild
@@ -24,7 +24,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/Manifest b/dev-python/webtest/Manifest
index c555a17826a7..87bca959a761 100644
--- a/dev-python/webtest/Manifest
+++ b/dev-python/webtest/Manifest
@@ -1 +1,2 @@
DIST webtest-3.0.3.tar.gz 79391 BLAKE2B 7ac8362c325d5570446ed587d725b3e4a81e6167295de3030070078e209c692ed95c1a4a03f5db2b2a2e390cfb80ab17adf1a359ec3b349e11514f4bcd4c483d SHA512 5122fa995f9fc4a2338cfe9c3516648d56b0e843c66b8e40b869d5ba3e3ed1bd442836712ed6dd683ea1db2080ce7d5674d71f053c7a29a80812e4cc2606f1de
+DIST webtest-3.0.4.tar.gz 79395 BLAKE2B 8a0aa8fae18e7c4ac816910cf0a7e6dea8905d14a35bacca8b53351189c9d00da0016c533a74b3b0623c81e7d8504260a2ad83ca4a2cb57f7a629cb1f2067d0a SHA512 ebf7a76d18719283af5fcf0ea902285a9eee280e68892f2db35e5e48e04efd18e96e393a020e3c4ac4e001875c6da5583348572fd028c0e1a11d468695362a0b
diff --git a/dev-python/webtest/webtest-3.0.4.ebuild b/dev-python/webtest/webtest-3.0.4.ebuild
new file mode 100644
index 000000000000..94ac2b3113cd
--- /dev/null
+++ b/dev-python/webtest/webtest-3.0.4.ebuild
@@ -0,0 +1,45 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_PN="WebTest"
+PYTHON_COMPAT=( python3_{10..13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Helper to test WSGI applications"
+HOMEPAGE="
+ https://docs.pylonsproject.org/projects/webtest/en/latest/
+ https://github.com/Pylons/webtest/
+ https://pypi.org/project/WebTest/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+
+RDEPEND="
+ dev-python/paste[${PYTHON_USEDEP}]
+ dev-python/pastedeploy[${PYTHON_USEDEP}]
+ >=dev-python/webob-1.2[${PYTHON_USEDEP}]
+ >=dev-python/waitress-3.0.2[${PYTHON_USEDEP}]
+ dev-python/beautifulsoup4[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/pyquery[${PYTHON_USEDEP}]
+ dev-python/wsgiproxy2[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/legacy-cgi[${PYTHON_USEDEP}]
+ ' 3.13)
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}/webtest-2.0.33-no-pylons-theme.patch"
+)
+
+distutils_enable_sphinx docs
+distutils_enable_tests pytest
diff --git a/dev-python/x-wr-timezone/Manifest b/dev-python/x-wr-timezone/Manifest
index 1296194aada7..6402b0cbbd0f 100644
--- a/dev-python/x-wr-timezone/Manifest
+++ b/dev-python/x-wr-timezone/Manifest
@@ -1,2 +1,3 @@
DIST x-wr-timezone-1.0.1.gh.tar.gz 22182 BLAKE2B 18ac9281b484de7eb1b4da9063743b98b63e259f7ad914c68194d49e27aa3528f0466e6e7c6c668e14e58ef1439f2c8db6bb8b8f94e51635a63f13af98db826b SHA512 4c388efc2b5710f5db24de218d72ef4ddfd951186fa67631a34f48d49ffcd391195f0232104c586eeae18fb414eab61b3bb1f52d39416c2123eb452a44f20ad6
DIST x-wr-timezone-2.0.0.gh.tar.gz 23131 BLAKE2B 878615167c145a139892bbb651697b05707a8e05ff62e578118a40b773299f4eb356b04d3de34387ea20cfdb230179d8b9d48abc1a8e6a0e90d138d028669c7c SHA512 c42b71d9bf08e3395121ef32b4a015404824e74c0b9731d80f94c8cfa10efe9a1259413faa6bf3d33ac44f3aaf24e28a5bbc23259cb532e7ec44654951dc9081
+DIST x-wr-timezone-2.0.1.gh.tar.gz 23799 BLAKE2B 32a7599657a06f164fac6f245beb0fce5d2d16b9ec3188c7273812f49143b215cf779573ca03016160af417b86a80a4f61e1aca5fb184f6511bac4c6746ca85c SHA512 ceb20827e9204b05566102d9dd8ef214d1507338e95d00509f9aeaa0f43faada880a46ad7e88f88ee24dce705d7adbc7a0759fd733fb90fa8d8a232e7080606f
diff --git a/dev-python/x-wr-timezone/x-wr-timezone-2.0.1.ebuild b/dev-python/x-wr-timezone/x-wr-timezone-2.0.1.ebuild
new file mode 100644
index 000000000000..458433076a32
--- /dev/null
+++ b/dev-python/x-wr-timezone/x-wr-timezone-2.0.1.ebuild
@@ -0,0 +1,41 @@
+# Copyright 2023-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1
+
+DESCRIPTION="Convert calendars using X-WR-TIMEZONE to standard ones"
+HOMEPAGE="
+ https://github.com/niccokunzmann/x-wr-timezone/
+ https://pypi.org/project/x-wr-timezone/
+"
+SRC_URI="
+ https://github.com/niccokunzmann/x-wr-timezone/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="LGPL-3+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ dev-python/click[${PYTHON_USEDEP}]
+ >=dev-python/icalendar-6.1.0[${PYTHON_USEDEP}]
+ dev-python/tzdata[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/pytest-click[${PYTHON_USEDEP}]
+ dev-python/pytz[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+EPYTEST_IGNORE=(
+ test/test_readme.py
+)
diff --git a/dev-python/xcffib/xcffib-1.7.1.ebuild b/dev-python/xcffib/xcffib-1.7.1.ebuild
index fca70ee1943b..ef045e7f3adc 100644
--- a/dev-python/xcffib/xcffib-1.7.1.ebuild
+++ b/dev-python/xcffib/xcffib-1.7.1.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/xlsxwriter/Manifest b/dev-python/xlsxwriter/Manifest
index 31798217a120..a7890452cea9 100644
--- a/dev-python/xlsxwriter/Manifest
+++ b/dev-python/xlsxwriter/Manifest
@@ -1,3 +1,2 @@
-DIST XlsxWriter-RELEASE_3.2.0.gh.tar.gz 24079667 BLAKE2B ee6f35d2df8edef3a1282bd821b1eaa3d3a79bb9d962df9d50394519905a0344e0b747a58d3bf5fc1323baefde3b9e11a2c5e7e77be2cc02bab716b0a3cf3226 SHA512 b36ee896d01e5a6369f4f42e69338b69b9ea5ee4919eea9361c0f5f6ff012ca153c708ff1c719b82ce067c5d57392e3b72c47e828a7e832953d0c06de9f65962
DIST XlsxWriter-RELEASE_3.2.1.gh.tar.gz 24307679 BLAKE2B 8e547b21c04c46159de9cb4f2bb75139b372287264714114b01d649ab290a9595ee8f36b82f976d4ec015cccd23cff4e57ac04c611b8553c0d1963d98886ed6b SHA512 510195ce7b008fa341a2fee5e0bb71cd150f853dddd6f5af6b5fd3a1090d64c9b14fbd4eb05c55a32a6a451fa0fa9471f15ee14a7d808d948479106510ae43d3
DIST XlsxWriter-RELEASE_3.2.2.gh.tar.gz 24656384 BLAKE2B b1b7313d0b486ff1e612102a67530ac96ae672a577b2c2cf23be65e1a0d8a0698ba6060c127b3d45afaa7691a8f03f82352ada9cf3aff98771bc7537622c6d69 SHA512 21fa5e550123506e0777dd849aacfd0c2177a4b0f79c675a55361693c286d03a100cf09c29c4a434a7d9e43825d90506ed6a4f3beef36c054cd0fd805a7a9446
diff --git a/dev-python/xlsxwriter/xlsxwriter-3.2.0.ebuild b/dev-python/xlsxwriter/xlsxwriter-3.2.0.ebuild
deleted file mode 100644
index 65f84ffaf9a3..000000000000
--- a/dev-python/xlsxwriter/xlsxwriter-3.2.0.ebuild
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..13} pypy3 )
-
-inherit distutils-r1
-
-TAG=RELEASE_${PV}
-MY_P=XlsxWriter-${TAG}
-DESCRIPTION="Python module for creating Excel XLSX files"
-HOMEPAGE="
- https://github.com/jmcnamara/XlsxWriter/
- https://pypi.org/project/XlsxWriter/
-"
-SRC_URI="
- https://github.com/jmcnamara/XlsxWriter/archive/${TAG}.tar.gz
- -> ${MY_P}.gh.tar.gz
-"
-S=${WORKDIR}/${MY_P}
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
-
-distutils_enable_tests pytest
-
-python_test() {
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- epytest
-}
diff --git a/dev-python/xlsxwriter/xlsxwriter-3.2.1.ebuild b/dev-python/xlsxwriter/xlsxwriter-3.2.1.ebuild
index 60c7b3e4d0cd..88336c841870 100644
--- a/dev-python/xlsxwriter/xlsxwriter-3.2.1.ebuild
+++ b/dev-python/xlsxwriter/xlsxwriter-3.2.1.ebuild
@@ -23,7 +23,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux"
distutils_enable_tests pytest
diff --git a/dev-python/zeroconf/Manifest b/dev-python/zeroconf/Manifest
index a8218b75b6a8..c86f35b48c70 100644
--- a/dev-python/zeroconf/Manifest
+++ b/dev-python/zeroconf/Manifest
@@ -1,3 +1,5 @@
DIST zeroconf-0.140.1.tar.gz 240320 BLAKE2B 70d10656f8a79a837d24901ceffb106ff86c805f922569aef48aa4e7b94f0f88e80c48085a282d3a928a863509309593f8f6457d6a0b0608eb0143c5dd56c7aa SHA512 b92c25dad0e313f72870da54d0f9f9f96c889130f23eba2946702fb95c82757a40f96285771568074d78346f67f9e366ef0e488256a669daf602971919f48ab1
DIST zeroconf-0.142.0.tar.gz 159412 BLAKE2B 78b1d7e50e9a37571743942c614e8d5b65761f8be1deb5394aca65d4d82e9b607d20ea41322df6bb20d0efc35e1464b01ad5c734e386e7d550d9d4b980452d74 SHA512 754679a6bc5d9175012a0299786f1aad0e199cc06b47ee2a4c3b4f94cbabb7a61037b6541564e7c9ce26b867abb9a31fc6ae3ef1b1ca1d5ba225f000dc2bba5d
DIST zeroconf-0.143.0.tar.gz 159481 BLAKE2B 3c73c85a86180b21766bae0a9ba9ebce89109f28e7f0e103c703a988bd604cf714e93bd9b52d50c76143745b99ce14a9fa8ff968f8391da066cb1782f93f41ad SHA512 11bbff2b045cea94588f8c1aadc2f53f82632c48d8fbabccc4fdd71f25e178fb9f5fe6d5016b5c389f396155a23b1749f39d89015af243d84c83afdcee4323b8
+DIST zeroconf-0.143.1.tar.gz 160017 BLAKE2B 6ca7c3c72f747703c2d12aa1547c1007bca77ba288e915e5dc56f77c21117158792e5ebb0829d016058889592e45139ee80af3f57d71ff333e5523834062d0e3 SHA512 16efd961a5c06264006ef6c39afbff49cce09812a31b392b3fa56c9f14cb4ea011ab6c1cac9934ad5e466e1430154f70693ea2160ec6d319e3a4a516005b90dd
+DIST zeroconf-0.144.1.tar.gz 160109 BLAKE2B c0dc535665fa46ee143c09b35f380f6898c16a844d2e7c3c233bd0ea1b0c0f1f551daf05dd220f4d7ce6478f65d5bb8a1dbda2d845744e9fe46b6138008c98f7 SHA512 3ad3827c5bd834ce4fc9b6a1349c34b0ede562da327f87fba17905b697a001271c55569e4a1ee8857c088a96a18e1a0782836a7ec2ff3c36982ae57f805e72c8
diff --git a/dev-python/zeroconf/zeroconf-0.143.1.ebuild b/dev-python/zeroconf/zeroconf-0.143.1.ebuild
new file mode 100644
index 000000000000..8ab627f86158
--- /dev/null
+++ b/dev-python/zeroconf/zeroconf-0.143.1.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=poetry
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Pure Python Multicast DNS Service Discovery Library (Bonjour/Avahi compatible)"
+HOMEPAGE="
+ https://github.com/python-zeroconf/python-zeroconf/
+ https://pypi.org/project/zeroconf/
+"
+
+LICENSE="LGPL-2.1+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ >=dev-python/ifaddr-0.1.7[${PYTHON_USEDEP}]
+"
+# the build system uses custom build script that uses distutils to build
+# C extensions, sigh
+BDEPEND="
+ >=dev-python/cython-3.0.8[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-65.6.3[${PYTHON_USEDEP}]
+ test? (
+ dev-python/pytest-asyncio[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+export REQUIRE_CYTHON=1
+
+python_test() {
+ local -x SKIP_IPV6=1
+ local EPYTEST_DESELECT=(
+ # network
+ tests/test_core.py::Framework::test_close_multiple_times
+ tests/test_core.py::Framework::test_launch_and_close
+ tests/test_core.py::Framework::test_launch_and_close_context_manager
+
+ # fragile to timeouts (?)
+ tests/services/test_browser.py::test_service_browser_expire_callbacks
+ tests/utils/test_asyncio.py::test_run_coro_with_timeout
+
+ # randomly broken by a leftover thread?
+ tests/test_circular_imports.py::test_circular_imports
+ )
+ local EPYTEST_IGNORE=(
+ tests/benchmarks
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -o addopts= -p asyncio
+}
diff --git a/dev-python/zeroconf/zeroconf-0.144.1.ebuild b/dev-python/zeroconf/zeroconf-0.144.1.ebuild
new file mode 100644
index 000000000000..8ab627f86158
--- /dev/null
+++ b/dev-python/zeroconf/zeroconf-0.144.1.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=poetry
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Pure Python Multicast DNS Service Discovery Library (Bonjour/Avahi compatible)"
+HOMEPAGE="
+ https://github.com/python-zeroconf/python-zeroconf/
+ https://pypi.org/project/zeroconf/
+"
+
+LICENSE="LGPL-2.1+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ >=dev-python/ifaddr-0.1.7[${PYTHON_USEDEP}]
+"
+# the build system uses custom build script that uses distutils to build
+# C extensions, sigh
+BDEPEND="
+ >=dev-python/cython-3.0.8[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-65.6.3[${PYTHON_USEDEP}]
+ test? (
+ dev-python/pytest-asyncio[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+export REQUIRE_CYTHON=1
+
+python_test() {
+ local -x SKIP_IPV6=1
+ local EPYTEST_DESELECT=(
+ # network
+ tests/test_core.py::Framework::test_close_multiple_times
+ tests/test_core.py::Framework::test_launch_and_close
+ tests/test_core.py::Framework::test_launch_and_close_context_manager
+
+ # fragile to timeouts (?)
+ tests/services/test_browser.py::test_service_browser_expire_callbacks
+ tests/utils/test_asyncio.py::test_run_coro_with_timeout
+
+ # randomly broken by a leftover thread?
+ tests/test_circular_imports.py::test_circular_imports
+ )
+ local EPYTEST_IGNORE=(
+ tests/benchmarks
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -o addopts= -p asyncio
+}