summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2024-09-30 17:53:36 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2024-09-30 17:53:36 +0000
commit1ec111473796291bd34f3f069d97495d0ceb5085 (patch)
tree6f7bc2b212bfd7b8afa598ddab50b51a1c91888a /dev-python
parentcc3a1f469f99ba33e4af115ed23b933ed656de7e (diff)
downloadbaldeagleos-repo-1ec111473796291bd34f3f069d97495d0ceb5085.tar.gz
baldeagleos-repo-1ec111473796291bd34f3f069d97495d0ceb5085.tar.xz
baldeagleos-repo-1ec111473796291bd34f3f069d97495d0ceb5085.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/asteval/Manifest3
-rw-r--r--dev-python/asteval/asteval-1.0.3.ebuild36
-rw-r--r--dev-python/asteval/asteval-1.0.5.ebuild (renamed from dev-python/asteval/asteval-1.0.2.ebuild)0
-rw-r--r--dev-python/django-taggit/Manifest1
-rw-r--r--dev-python/django-taggit/django-taggit-6.1.0.ebuild49
-rw-r--r--dev-python/executing/executing-2.1.0-r1.ebuild65
-rw-r--r--dev-python/executing/files/executing-2.1.0-py3126.patch178
-rw-r--r--dev-python/hypothesis/Manifest1
-rw-r--r--dev-python/hypothesis/hypothesis-6.112.2.ebuild103
-rw-r--r--dev-python/iniparse/iniparse-0.5_p20221102.ebuild5
-rw-r--r--dev-python/mkdocs-material/Manifest1
-rw-r--r--dev-python/mkdocs-material/mkdocs-material-9.5.39.ebuild67
-rw-r--r--dev-python/moto/Manifest1
-rw-r--r--dev-python/moto/moto-5.0.16.ebuild123
-rw-r--r--dev-python/psycopg/Manifest1
-rw-r--r--dev-python/psycopg/psycopg-3.2.3.ebuild119
-rw-r--r--dev-python/pygame/Manifest1
-rw-r--r--dev-python/pygame/pygame-2.6.1.ebuild96
-rw-r--r--dev-python/pygraphviz/Manifest1
-rw-r--r--dev-python/pygraphviz/pygraphviz-1.14.ebuild50
-rw-r--r--dev-python/pymdown-extensions/Manifest3
-rw-r--r--dev-python/pymdown-extensions/pymdown-extensions-10.10.ebuild37
-rw-r--r--dev-python/pymdown-extensions/pymdown-extensions-10.11.1.ebuild (renamed from dev-python/pymdown-extensions/pymdown-extensions-10.10.1.ebuild)0
-rw-r--r--dev-python/pyparsing/Manifest1
-rw-r--r--dev-python/pyparsing/pyparsing-3.2.0_beta3.ebuild58
-rw-r--r--dev-python/pypdf/Manifest1
-rw-r--r--dev-python/pypdf/pypdf-5.0.1.ebuild68
-rw-r--r--dev-python/pypresence/pypresence-4.3.0.ebuild2
-rw-r--r--dev-python/pyproject-hooks/Manifest1
-rw-r--r--dev-python/pyproject-hooks/pyproject-hooks-1.2.0.ebuild38
-rw-r--r--dev-python/pyside6-tools/Manifest1
-rw-r--r--dev-python/pyside6-tools/pyside6-tools-6.7.3.ebuild80
-rw-r--r--dev-python/pyside6/Manifest1
-rw-r--r--dev-python/pyside6/pyside6-6.7.3.ebuild248
-rw-r--r--dev-python/python-multipart/Manifest1
-rw-r--r--dev-python/python-multipart/python-multipart-0.0.12.ebuild31
-rw-r--r--dev-python/recurring-ical-events/Manifest3
-rw-r--r--dev-python/recurring-ical-events/recurring-ical-events-3.2.0.ebuild45
-rw-r--r--dev-python/recurring-ical-events/recurring-ical-events-3.3.1.ebuild (renamed from dev-python/recurring-ical-events/recurring-ical-events-3.1.1.ebuild)0
-rw-r--r--dev-python/ruamel-yaml-clib/Manifest1
-rw-r--r--dev-python/ruamel-yaml-clib/files/ruamel-yaml-clib-0.2.7_cython_pointer_types.patch75
-rw-r--r--dev-python/ruamel-yaml-clib/metadata.xml18
-rw-r--r--dev-python/ruamel-yaml-clib/ruamel-yaml-clib-0.2.7.ebuild39
-rw-r--r--dev-python/ruamel-yaml-clib/ruamel-yaml-clib-0.2.8.ebuild21
-rw-r--r--dev-python/shiboken6/Manifest1
-rw-r--r--dev-python/shiboken6/shiboken6-6.7.3.ebuild175
-rw-r--r--dev-python/starlette/Manifest1
-rw-r--r--dev-python/starlette/starlette-0.39.2.ebuild56
-rw-r--r--dev-python/yaxmldiff/Manifest1
-rw-r--r--dev-python/yaxmldiff/yaxmldiff-0.2.0.ebuild26
50 files changed, 1750 insertions, 184 deletions
diff --git a/dev-python/asteval/Manifest b/dev-python/asteval/Manifest
index f59972d5c52b..54d188d27705 100644
--- a/dev-python/asteval/Manifest
+++ b/dev-python/asteval/Manifest
@@ -1,3 +1,2 @@
-DIST asteval-1.0.2.gh.tar.gz 45578 BLAKE2B 87bf6c9eaf4cb8f202bf78f8eb8b670fa7c4619384b8b07dd0b46fbba3f39508d16f69237a0798a705d5077fbe71930d7aa946e637668d5b41ec43d7b5802837 SHA512 6e7ae98e96c359852db46c3c2ba0fa9796375eea84b6f213fe59cf91fb3d9862effa759051e962daf6fc072579b907233166cd12ff4e9a2d04b62a519a8f9af8
-DIST asteval-1.0.3.gh.tar.gz 46346 BLAKE2B 1f0985030d9684db2fbb7f112e32e6d4434f3600a4825c50366aafd9d3a0f1c9a87143e09d6017c69e5ba0987f256162c9b516f2042f872e27469eeb82250214 SHA512 b7dcb52ebb56b114167b05dd743656b427db1bd416c7842fd5ee2ad5c81ff1c62cadcf94b29b218985e4bfbc2111f2ab0b0a6bca172b1092a50edce011fc5e31
DIST asteval-1.0.4.gh.tar.gz 46374 BLAKE2B 4a3133457a752bc99a68fc4bffeb8aab8b4340ef21f8bae75d9131a5bcaa7eb4d081cacdfa7d9396565cc744a4d997e33516ba9cb0ae290392b06bfbcc608f27 SHA512 cf29562a2792013ed8fc7c14aaa261650b05037ee92ab75f8c79a1a235c59e8ee4768955c03ed615798666bfb62bf2ca37105dc93c1a4f56bcf446a0e4ba01f6
+DIST asteval-1.0.5.gh.tar.gz 46599 BLAKE2B 159076d1cdcac9ee6d9bf319ccb6ffcdb775fea7a930dce85d1171ede4f3e2b6acf1e9293cfe9d44e8da2762f20507c0781492fa5e6054a4f28fe836581af958 SHA512 a85cfde94e9f8d224d83b434d028bb91f2eec415090a14c2e8ceeecaba76c8e29c795bd54d9cfabc070dc9ee27cc492cfd533f35c272bf0649e284375b84ba7e
diff --git a/dev-python/asteval/asteval-1.0.3.ebuild b/dev-python/asteval/asteval-1.0.3.ebuild
deleted file mode 100644
index 13ce4055164e..000000000000
--- a/dev-python/asteval/asteval-1.0.3.ebuild
+++ /dev/null
@@ -1,36 +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_{9,10,11,12,13} )
-
-inherit distutils-r1
-
-DESCRIPTION="Evaluator of Python expression using ast module"
-HOMEPAGE="
- https://lmfit.github.io/asteval/
- https://github.com/lmfit/asteval/
- https://pypi.org/project/asteval/
-"
-SRC_URI="
- https://github.com/lmfit/asteval/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64"
-
-BDEPEND="
- dev-python/setuptools-scm[${PYTHON_USEDEP}]
-"
-
-distutils_enable_tests pytest
-
-export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
-
-python_test() {
- epytest -o addopts=
-}
diff --git a/dev-python/asteval/asteval-1.0.2.ebuild b/dev-python/asteval/asteval-1.0.5.ebuild
index 13ce4055164e..13ce4055164e 100644
--- a/dev-python/asteval/asteval-1.0.2.ebuild
+++ b/dev-python/asteval/asteval-1.0.5.ebuild
diff --git a/dev-python/django-taggit/Manifest b/dev-python/django-taggit/Manifest
index 09bf982ba050..5b84f4bd9aba 100644
--- a/dev-python/django-taggit/Manifest
+++ b/dev-python/django-taggit/Manifest
@@ -1 +1,2 @@
DIST django-taggit-5.0.1.tar.gz 60372 BLAKE2B 1934fc0a92655db15a4997646c44d8faa57b48469421abb7c48ea248525f0c536d658a9a481ed646dc4846c2f8f6ca9799274f9961238bd727ef0bafbb0ddf0c SHA512 af7b04da8359ebf68ea1b5c1fba3ed509b5357d65cccd95d835e0db68431fcbf0057e613cd05c54ac76524c8fc1c23d0dbacae8b80a23bb7867a0fa4a62f445b
+DIST django-taggit-6.1.0.gh.tar.gz 146478 BLAKE2B 3480f0a2c3b6e5ee48789bf00331da623d54218ef36e80e60797287fdb9953ae382e90d1bcdcbe8ff9af440530a12b573a17b0218e6f81a5f40c6d26a61b81a7 SHA512 60060e9674f7cca24704d786c5dd7bf985ce4891ed0c2bfed532f1033b97e2fca45b52eeacd475eda17062bb5e11605ebdef745cc45e1ca77a8e654aad1f80e1
diff --git a/dev-python/django-taggit/django-taggit-6.1.0.ebuild b/dev-python/django-taggit/django-taggit-6.1.0.ebuild
new file mode 100644
index 000000000000..c30231cc1fb2
--- /dev/null
+++ b/dev-python/django-taggit/django-taggit-6.1.0.ebuild
@@ -0,0 +1,49 @@
+# 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_{9,10,11,12,13} )
+
+inherit distutils-r1
+
+DESCRIPTION="Simple tagging for Django"
+HOMEPAGE="
+ https://github.com/jazzband/django-taggit/
+ https://pypi.org/project/django-taggit/
+"
+SRC_URI="
+ https://github.com/jazzband/django-taggit/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+RDEPEND="
+ >=dev-python/django-4.1[${PYTHON_USEDEP}]
+ dev-python/djangorestframework[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/pytest-django[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=()
+
+ if has_version "dev-python/unidecode[${PYTHON_USEDEP}]"; then
+ EPYTEST_DESELECT+=(
+ # https://github.com/jazzband/django-taggit/issues/856
+ tests/test_models.py::TestSlugification::test_old_slugs
+ )
+ fi
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -p django -o DJANGO_SETTINGS_MODULE=tests.settings
+}
diff --git a/dev-python/executing/executing-2.1.0-r1.ebuild b/dev-python/executing/executing-2.1.0-r1.ebuild
new file mode 100644
index 000000000000..644f723bd1fe
--- /dev/null
+++ b/dev-python/executing/executing-2.1.0-r1.ebuild
@@ -0,0 +1,65 @@
+# Copyright 2020-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 optfeature
+
+DESCRIPTION="Get information about what a Python frame is currently doing"
+HOMEPAGE="
+ https://github.com/alexmojaki/executing/
+ https://pypi.org/project/executing/
+"
+SRC_URI="
+ https://github.com/alexmojaki/executing/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
+
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ >=dev-python/asttokens-2.1.0[${PYTHON_USEDEP}]
+ dev-python/littleutils[${PYTHON_USEDEP}]
+ dev-python/rich[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
+
+PATCHES=(
+ # https://github.com/alexmojaki/executing/pull/86
+ "${FILESDIR}/${P}-py3126.patch"
+)
+
+python_test() {
+ local EPYTEST_DESELECT=()
+ case ${EPYTHON} in
+ pypy3)
+ EPYTEST_DESELECT+=(
+ "tests/test_main.py::test_small_samples[22bc344a43584c051d8962116e8fd149d72e7e68bcb54caf201ee6e78986b167.py]"
+ "tests/test_main.py::test_small_samples[46597f8f896f11c5d7f432236344cc7e5645c2a39836eb6abdd2437c0422f0f4.py]"
+ )
+ ;;
+ esac
+ if ! has_version "dev-python/ipython[${PYTHON_USEDEP}]"; then
+ EPYTEST_DESELECT+=(
+ tests/test_ipython.py
+ )
+ fi
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest
+}
+
+pkg_postinst() {
+ optfeature "getting node's source code" dev-python/asttokens
+}
diff --git a/dev-python/executing/files/executing-2.1.0-py3126.patch b/dev-python/executing/files/executing-2.1.0-py3126.patch
new file mode 100644
index 000000000000..7c3b96d0b568
--- /dev/null
+++ b/dev-python/executing/files/executing-2.1.0-py3126.patch
@@ -0,0 +1,178 @@
+From 4acebfaa89196785ccc893d56b97ac8598c30e71 Mon Sep 17 00:00:00 2001
+From: Frank Hoffmann <15r10nk-git@polarbit.de>
+Date: Mon, 26 Aug 2024 21:43:13 +0200
+Subject: [PATCH 1/2] fix: backward compatibility fix for changed source
+ positions in 3.12.6 (#85)
+
+---
+ executing/_position_node_finder.py | 15 +++++++++++++++
+ tests/generate_small_sample.py | 9 ++++++---
+ tests/test_main.py | 5 +++++
+ 3 files changed, 26 insertions(+), 3 deletions(-)
+
+diff --git a/executing/_position_node_finder.py b/executing/_position_node_finder.py
+index 7a81415..c923822 100644
+--- a/executing/_position_node_finder.py
++++ b/executing/_position_node_finder.py
+@@ -242,6 +242,21 @@ def fix_result(
+ # keeping the old behaviour makes it possible to distinguish both cases.
+
+ return node.parent
++
++ if (
++ sys.version_info >= (3, 12, 6)
++ and instruction.opname in ("GET_ITER", "FOR_ITER")
++ and isinstance(
++ node.parent.parent,
++ (ast.ListComp, ast.SetComp, ast.DictComp, ast.GeneratorExp),
++ )
++ and isinstance(node.parent,ast.comprehension)
++ and node is node.parent.iter
++ ):
++ # same as above but only for comprehensions, see:
++ # https://github.com/python/cpython/issues/123142
++
++ return node.parent.parent
+ return node
+
+ def known_issues(self, node: EnhancedAST, instruction: dis.Instruction) -> None:
+diff --git a/tests/generate_small_sample.py b/tests/generate_small_sample.py
+index 89c7477..573d17a 100644
+--- a/tests/generate_small_sample.py
++++ b/tests/generate_small_sample.py
+@@ -18,6 +18,7 @@
+ from rich.syntax import Syntax
+ from rich.console import Console
+ import argparse
++import ast
+
+ last_samples_dir = Path(__file__).parent / "last_samples"
+ last_samples_dir.mkdir(exist_ok=True)
+@@ -63,6 +64,11 @@ def test_file(filename: Path):
+ delattr(Source, cache_name)
+
+ test = TestFiles()
++ try:
++ ast.parse(code)
++ except (RecursionError,SyntaxError):
++ return True
++
+ try:
+ with open(os.devnull, "w") as dev_null:
+ with contextlib.redirect_stderr(dev_null):
+@@ -122,9 +128,6 @@ def main():
+ break_file.unlink()
+ sys.exit(0)
+
+- if time.time() > end_time:
+- print("Timeout")
+- sys.exit(0)
+
+ if not result:
+ print(f"{filename} is failing the tests -> minimize\n")
+diff --git a/tests/test_main.py b/tests/test_main.py
+index 5d4f83b..a3f92ee 100644
+--- a/tests/test_main.py
++++ b/tests/test_main.py
+@@ -609,6 +609,11 @@ def __next__(self):
+ assert {i: i for i in iter_test(ast.DictComp)} == {1: 1, 2: 2}
+ assert list(i for i in iter_test(ast.GeneratorExp)) == [1, 2]
+
++ assert [i for j in [0] for i in iter_test(ast.ListComp)] == [1, 2]
++ assert {i for j in [0] for i in iter_test(ast.SetComp)} == {1, 2}
++ assert {i: i for j in [0] for i in iter_test(ast.DictComp)} == {1: 1, 2: 2}
++ assert list(i for j in [0] for i in iter_test(ast.GeneratorExp)) == [1, 2]
++
+ for i in iter_test(ast.For):
+ assert i in (1, 2)
+
+
+From 6a6925e691681aa5bc05b42bf1f1f06adeb25722 Mon Sep 17 00:00:00 2001
+From: Frank Hoffmann <15r10nk-git@polarbit.de>
+Date: Sun, 15 Sep 2024 14:24:10 +0200
+Subject: [PATCH 2/2] fix: handle changed positions for __exit__ of ast.With
+
+---
+ executing/_position_node_finder.py | 50 +++++++++++++++++++
+ ...3cd3a42b54914d66f7a67f8b2ade36f89ed761b.py | 3 ++
+ 2 files changed, 53 insertions(+)
+ create mode 100644 tests/small_samples/3e40f2921fbaf6ccbabb2fa5c3cd3a42b54914d66f7a67f8b2ade36f89ed761b.py
+
+diff --git a/executing/_position_node_finder.py b/executing/_position_node_finder.py
+index c923822..0f83441 100644
+--- a/executing/_position_node_finder.py
++++ b/executing/_position_node_finder.py
+@@ -257,6 +257,51 @@ def fix_result(
+ # https://github.com/python/cpython/issues/123142
+
+ return node.parent.parent
++
++ if sys.version_info >= (3, 12,6) and instruction.opname == "CALL":
++ before = self.instruction_before(instruction)
++ if (
++ before is not None
++ and before.opname == "LOAD_CONST"
++ and before.positions == instruction.positions
++ and isinstance(node.parent, ast.withitem)
++ and node is node.parent.context_expr
++ ):
++ # node positions for with-statements have change
++ # and is now equal to the expression which created the context-manager
++ # https://github.com/python/cpython/pull/120763
++
++ # with context_manager:
++ # ...
++
++ # but there is one problem to distinguish call-expressions from __exit__()
++
++ # with context_manager():
++ # ...
++
++ # the call for __exit__
++
++ # 20 1:5 1:22 LOAD_CONST(None)
++ # 22 1:5 1:22 LOAD_CONST(None)
++ # 24 1:5 1:22 LOAD_CONST(None)
++ # 26 1:5 1:22 CALL() # <-- same source range as context_manager()
++
++ # but we can use the fact that the previous load for None
++ # has the same source range as the call, wich can not happen for normal calls
++
++ # we return the same ast.With statement at the and to preserve backward compatibility
++
++ return node.parent.parent
++
++ if (
++ sys.version_info >= (3, 12,6)
++ and instruction.opname == "BEFORE_WITH"
++ and isinstance(node.parent, ast.withitem)
++ and node is node.parent.context_expr
++ ):
++ # handle positions changes for __enter__
++ return node.parent.parent
++
+ return node
+
+ def known_issues(self, node: EnhancedAST, instruction: dis.Instruction) -> None:
+@@ -895,6 +940,11 @@ def node_match(node_type: Union[Type, Tuple[Type, ...]], **kwargs: Any) -> bool:
+ def instruction(self, index: int) -> Optional[dis.Instruction]:
+ return self.bc_dict.get(index,None)
+
++ def instruction_before(
++ self, instruction: dis.Instruction
++ ) -> Optional[dis.Instruction]:
++ return self.bc_dict.get(instruction.offset - 2, None)
++
+ def opname(self, index: int) -> str:
+ i=self.instruction(index)
+ if i is None:
+diff --git a/tests/small_samples/3e40f2921fbaf6ccbabb2fa5c3cd3a42b54914d66f7a67f8b2ade36f89ed761b.py b/tests/small_samples/3e40f2921fbaf6ccbabb2fa5c3cd3a42b54914d66f7a67f8b2ade36f89ed761b.py
+new file mode 100644
+index 0000000..bfffc14
+--- /dev/null
++++ b/tests/small_samples/3e40f2921fbaf6ccbabb2fa5c3cd3a42b54914d66f7a67f8b2ade36f89ed761b.py
+@@ -0,0 +1,3 @@
++async def wait():
++ async with something:
++ pass
+\ No newline at end of file
diff --git a/dev-python/hypothesis/Manifest b/dev-python/hypothesis/Manifest
index 79bb5b923c76..be8f01928d75 100644
--- a/dev-python/hypothesis/Manifest
+++ b/dev-python/hypothesis/Manifest
@@ -1 +1,2 @@
DIST hypothesis-6.112.1.gh.tar.gz 9476397 BLAKE2B adee46d6a4cf56bbbd8e5a91afc8236b9d311aa18efeaf6b367fc32d5ff3d679e08c5a8c500cedb50ff2cda2bab567a56f5ed564067972bc2f63bd6f5f0b88e1 SHA512 60b68f50a5d8d7ec23b2632a1a3c7d412ecedef6e58ec9e2f0450b07add9ddaa25963cd08cfa1d60741ff54cc47996da02dab1176ab25b8e7ecd3154f1b0446d
+DIST hypothesis-6.112.2.gh.tar.gz 9476114 BLAKE2B 50b4dd0e7599732b78fea672738c20b3b20bd51ede08816c63e2adb841e1b441994be68b203bd4cf826d2f258f81b91510668b0b141658938ec31fc14bb464cb SHA512 e4544feb0e12e4bfa380a3e31f33b3898e365fd6063586c1831ee39c21c0447e17d2f10066d59e1c576e6135ae6987ea2b49dfb09a1eeaa379893748b7caa4bd
diff --git a/dev-python/hypothesis/hypothesis-6.112.2.ebuild b/dev-python/hypothesis/hypothesis-6.112.2.ebuild
new file mode 100644
index 000000000000..902ce1505c8b
--- /dev/null
+++ b/dev-python/hypothesis/hypothesis-6.112.2.ebuild
@@ -0,0 +1,103 @@
+# Copyright 1999-2024 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=( python3_{9,10,11,12,13} )
+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-xdist[${PYTHON_USEDEP}]
+ !!<dev-python/requests-toolbelt-0.10.1
+ )
+"
+
+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= 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/iniparse/iniparse-0.5_p20221102.ebuild b/dev-python/iniparse/iniparse-0.5_p20221102.ebuild
index e75f00d3a227..61fe69b823c5 100644
--- a/dev-python/iniparse/iniparse-0.5_p20221102.ebuild
+++ b/dev-python/iniparse/iniparse-0.5_p20221102.ebuild
@@ -25,12 +25,17 @@ S=${WORKDIR}/${MY_P}
LICENSE="MIT PSF-2"
SLOT="0"
KEYWORDS="amd64 arm64 ~riscv x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
RDEPEND="
>=dev-python/six-1.10.0[${PYTHON_USEDEP}]
"
BDEPEND="
${RDEPEND}
+ test? (
+ dev-python/test[${PYTHON_USEDEP}]
+ )
"
src_prepare() {
diff --git a/dev-python/mkdocs-material/Manifest b/dev-python/mkdocs-material/Manifest
index 6dec55404bfa..aa4146d17116 100644
--- a/dev-python/mkdocs-material/Manifest
+++ b/dev-python/mkdocs-material/Manifest
@@ -3,3 +3,4 @@ DIST mkdocs-material-9.5.35.gh.tar.gz 14791440 BLAKE2B d6cd4826e4a9f57e7c1790063
DIST mkdocs-material-9.5.36.gh.tar.gz 14794813 BLAKE2B 607df2d24803cf8ff41243e9583128f9b9e49c077f6242b3949618cc6e8da9dc8b0e6db8caa0e5bad7f7f2607f4f313e954304091bf80a454ad3d913625947e7 SHA512 d5d86feeb35ca85d47d98ad09285a30075c0e6b925240d2e31d1050f8d55468f33b5f80216eb0fd1fc7833074b97f02abf3b9c277b9d64eec002d487bae8a11c
DIST mkdocs-material-9.5.37.gh.tar.gz 14792573 BLAKE2B c232f9212ed47da3524497705a5ad106aa486a0c79ef739bf586d561507f54a0487a609ea4662a7c83aeedc7264ac44f2571d88ac20baac622bab0f696b3a3e6 SHA512 6fb62d4d6e67c1219deebd6313f1c0f3abbadc7f3bc8d0d187ac5a52faf1535a3b0544da0617aa180cf454a6bec16b8ba04067364dba802fc0850ad2aedb3f13
DIST mkdocs-material-9.5.38.gh.tar.gz 14793685 BLAKE2B 6dcfafc67fec3a257a5609bbfe1bf1e0ad246c48d063d94adc221b0cb9caaa3a83647637ecf70143ace738fb600d652315ac9f652bf3f57c0f2a3e01f95be5b4 SHA512 735de92d151df519f4950e0bb9e77e9055472bcb177ddab73ebc8339f4a8f8c8b6bc80a3c9402c3e95fad469f79d253883e538a6d7ec57cacb562150e0a50dea
+DIST mkdocs-material-9.5.39.gh.tar.gz 14799240 BLAKE2B 7dcc1ae2cc17c631e76810cb255b894b10c984b083d462b804f3054c3beefcc04b9780a0fa252961ebb5ee2bdb9753cb137e4e2e643edeb4aadcacb1c17bdb9b SHA512 ba698cf60db9f5b991a6193cdab42b6c13c5269fc2ff6bc985f90577e088f7182117b356d5c20a584b5ad56be4667c59f9098f7daddecf39dfd73008b88c2493
diff --git a/dev-python/mkdocs-material/mkdocs-material-9.5.39.ebuild b/dev-python/mkdocs-material/mkdocs-material-9.5.39.ebuild
new file mode 100644
index 000000000000..30ab9a0405c7
--- /dev/null
+++ b/dev-python/mkdocs-material/mkdocs-material-9.5.39.ebuild
@@ -0,0 +1,67 @@
+# 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_{9,10,11,12,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/jinja-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/moto/Manifest b/dev-python/moto/Manifest
index fc01ceff77b0..f3b1c774e22e 100644
--- a/dev-python/moto/Manifest
+++ b/dev-python/moto/Manifest
@@ -2,3 +2,4 @@ DIST moto-4.2.14.tar.gz 4933741 BLAKE2B 4c50a808dc8f27cfbcd0ba234d268084ee9a32f3
DIST moto-5.0.13.tar.gz 5389183 BLAKE2B 9428f5857ccf9082a985c90281267cde65f15fc970cbc43e00d6a38663c6786d1d8cd5aede4f01a0bb69c65bfa156e7b12336f19e0e2ff9da44291a367583eb0 SHA512 5fd3fcf4404e61056170eb187c4f9acb42b4178ad56ee44a74fdf423c061aa7455fb1ce4f34e0517e7eadeb2ffb32ea9485c100772fd89d4c12bb8956b2797c0
DIST moto-5.0.14.tar.gz 5436824 BLAKE2B 9bcab90605a73c9b03c09285a00055c552437545b6d524377cec816ac569e4a1e399d84ccdd54ac0c1ac00ae253f8849bb5c3892e8d95021d31fa5c05705b3ba SHA512 063fe3b518263f0dfb9d0dc569d537bcbaba4a439e4945806c641cd7b0bc32e7431972ae800d4d581b1ae200122f5d22870faf8ce025377c174360cad2896aa5
DIST moto-5.0.15.tar.gz 5465282 BLAKE2B c043b0cf5ce42d0633f25ab874e787315367836d54c59ceedc3e85a161b01974671eb6dd42916e45ccaaaab9a48bfa217c0b8f22fbd817da3d2a9b4ee4522a03 SHA512 95c20146d6d5dcb6b49c3bb90e23bc6b656f6773267263bfd6a4f069a572311ef47cde3e1797dce78cfa38a28894b5deaf5e1bbe4bfcde3b49cfeea90cc63b25
+DIST moto-5.0.16.tar.gz 5483357 BLAKE2B 7486a17627451494d09dcad8987da1ab456a9a8ad8fa6bca4650cf1c582e3babb39b502aec0b8c389415181af7e3c8f91ddde16715432a69ade0eb65c0e84ea2 SHA512 2201fe7b74eec9b2896afa5d7eba814c41ffae73b7becfc5e6c80523d51bf19d1de6713a5713758909c8d2343cc0ca1e0e238655153d91da161d043336c1e313
diff --git a/dev-python/moto/moto-5.0.16.ebuild b/dev-python/moto/moto-5.0.16.ebuild
new file mode 100644
index 000000000000..222ef9d32a30
--- /dev/null
+++ b/dev-python/moto/moto-5.0.16.ebuild
@@ -0,0 +1,123 @@
+# 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_{9,10,11,12,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-3.3.1[${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/jinja-2.10.1[${PYTHON_USEDEP}]
+ >=dev-python/jsondiff-1.1.2[${PYTHON_USEDEP}]
+ dev-python/jsonpath-ng[${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
+ # 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
+ )
+ local EPYTEST_IGNORE=(
+ # require joserfc
+ tests/test_cognitoidp/test_cognitoidp.py
+ )
+
+ # test for 32-bit time_t
+ "$(tc-getCC)" ${CFLAGS} ${CPPFLAGS} -c -x c - -o /dev/null <<-EOF &>/dev/null
+ #include <sys/types.h>
+ int test[sizeof(time_t) >= 8 ? 1 : -1];
+ EOF
+
+ if [[ ${?} -eq 0 ]]; then
+ einfo "time_t is at least 64-bit long"
+ else
+ 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/psycopg/Manifest b/dev-python/psycopg/Manifest
index ea63b81e16e4..9b4894290f4c 100644
--- a/dev-python/psycopg/Manifest
+++ b/dev-python/psycopg/Manifest
@@ -2,5 +2,6 @@ DIST psycopg-3.1.19.gh.tar.gz 507073 BLAKE2B c10e2ba83f4a3bb0646d86c0f1311ae43e3
DIST psycopg-3.2.0.gh.tar.gz 549161 BLAKE2B 33997b5ee2f4f814561f83f92e9db4b61664f0ac84f6ff3bfd057d1cf9039a5e169478c8f40deb97e07433cf1481bfa7f4f79765158ec968ff6ab74b5aa6d14e SHA512 4466390a33f55eca73e1d490aca98ad7bb0e4c55b166d8956e1c940f5ea71c7cb07ba5602276f7510b2368d6c0c0e6eacac8d4ae67f465fd07afc4c75283f3c1
DIST psycopg-3.2.1.gh.tar.gz 549277 BLAKE2B badea79ca48b99ae363ffa1d04de922add9456662e0909a2761f61f1a5d03e2afc01ee188814495029551d9521aff95caa7ef3123d96dfcfbb3c0d0a14597e3c SHA512 ecaeee67493ce849a2d7477d0373061ab3b329d228e3c0dd482d7ee8c7eea07c59127db2e6afc0233a78f073306d4adef915aba5f3fc6378c0335c3155350294
DIST psycopg-3.2.2.gh.tar.gz 550226 BLAKE2B 2731190da5b044f16eb0f90fb5417244e46fc0906dde6ee9bd1ee4d91613f59ef1943da6662ad1f3db1487b8cc2b4ccb4e0a79ecc056a8f72c7e2b7b70e39abd SHA512 48686101c9d568003ffbf90cf07bc4496fb161f599b60a2b2df41ac120f338bee7edbeae3786071969d6bbb9acdbe868fa568b9cfa3b7a17dec2d47e5d54f002
+DIST psycopg-3.2.3.gh.tar.gz 550802 BLAKE2B 1f748fc2dc915fd82b2bc557ae4263ecf1070d5ba08681cb6ae21570acf601b03a2bde7e4324cd506e0146c86db976b003c57e99cd1948a930c074f0674d6ba8 SHA512 cf543652cfd27cf1cad3b1e3b8b50802562cc49f8fbd9ae5bd85ffdf26e30dc470f1f3380261c8cad418945ade8dc4f199ebcba08968cb87fd0b6c241fd8040d
DIST psycopg2-2.9.4.tar.gz 384017 BLAKE2B 4bc0afcc890c8a257c1ccd5c6e4e5301857a80f8b1428aa46c1473c9e18f5d2914a2e592c13336b06106217bb334d9b0321835bdd123f1627cbeb29dedf97bf7 SHA512 259088e42e0ab0d8a1a0ccf04f5e560f32c6179b4a0a0059e91bcf269baa8f4b0f1f949c332c640a2438c927a29b2c144078a861f8e18ba9c764da7c93c73b8d
DIST psycopg2-2.9.9.tar.gz 384926 BLAKE2B 8418fca1329703cedfc86be74d85cae5133a0604bb8a21fa43e5359a46626d38ef227d0cd8fbbeb497e2db517a469d7f3e86b74ef9163617a547e999073a6b4c SHA512 a691fd09762221e854861dedce37b05e5354e0701feea470a6d5046960056ef02a8c9ecfa751adeba485271ea7d5834643b7d3a3c3f3270087f5ed9c68509f5f
diff --git a/dev-python/psycopg/psycopg-3.2.3.ebuild b/dev-python/psycopg/psycopg-3.2.3.ebuild
new file mode 100644
index 000000000000..6614702ee22f
--- /dev/null
+++ b/dev-python/psycopg/psycopg-3.2.3.ebuild
@@ -0,0 +1,119 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 flag-o-matic
+
+DESCRIPTION="PostgreSQL database adapter for Python"
+HOMEPAGE="
+ https://www.psycopg.org/psycopg3/
+ https://github.com/psycopg/psycopg/
+ https://pypi.org/project/psycopg/
+"
+SRC_URI="
+ https://github.com/psycopg/psycopg/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="LGPL-3+"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+IUSE="+native-extensions"
+
+DEPEND="
+ native-extensions? (
+ >=dev-db/postgresql-8.1:=
+ )
+ !native-extensions? (
+ >=dev-db/postgresql-8.1:*
+ )
+"
+RDEPEND="
+ ${DEPEND}
+ >=dev-python/typing-extensions-4.4[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ native-extensions? (
+ dev-python/cython[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/tomli[${PYTHON_USEDEP}]
+ ' 3.10)
+ )
+ test? (
+ >=dev-db/postgresql-8.1[server]
+ >=dev-python/anyio-4.0[${PYTHON_USEDEP}]
+ >=dev-python/dnspython-2.1[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_compile() {
+ # -Werror=strict-aliasing
+ # https://bugs.gentoo.org/935401
+ # https://github.com/psycopg/psycopg/issues/867
+ #
+ # Do not trust with LTO either.
+ append-flags -fno-strict-aliasing
+ filter-lto
+
+ # Python code + ctypes backend
+ cd psycopg || die
+ distutils-r1_python_compile
+
+ # optional C backend
+ if use native-extensions && [[ ${EPYTHON} != pypy3 ]]; then
+ local DISTUTILS_USE_PEP517=standalone
+ cd ../psycopg_c || die
+ distutils-r1_python_compile
+ fi
+ cd .. || die
+}
+
+src_test() {
+ rm -r psycopg{,_c} || die
+
+ initdb -D "${T}"/pgsql || die
+ # TODO: random port
+ pg_ctl -w -D "${T}"/pgsql start \
+ -o "-h '' -k '${T}'" || die
+ createdb -h "${T}" test || die
+
+ local -x PSYCOPG_TEST_DSN="host=${T} dbname=test"
+ distutils-r1_src_test
+
+ pg_ctl -w -D "${T}"/pgsql stop || die
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # tests for the psycopg_pool package
+ tests/pool
+ # some broken mypy magic
+ tests/test_module.py::test_version
+ tests/test_module.py::test_version_c
+ tests/test_typing.py
+ tests/crdb/test_typing.py
+ # TODO, relying on undefined ordering in Python?
+ tests/test_dns_srv.py::test_srv
+ )
+
+ local impls=( python )
+ if use native-extensions && [[ ${EPYTHON} != pypy3 ]]; then
+ impls+=( c )
+ fi
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local -x PSYCOPG_IMPL
+ for PSYCOPG_IMPL in "${impls[@]}"; do
+ einfo "Testing with ${PSYCOPG_IMPL} implementation ..."
+ # leak and timing tests are fragile whereas slow tests are slow
+ epytest -p anyio -k "not leak" \
+ -m "not timing and not slow and not flakey"
+ done
+}
diff --git a/dev-python/pygame/Manifest b/dev-python/pygame/Manifest
index 9d7b5373a2c8..7be429d9246e 100644
--- a/dev-python/pygame/Manifest
+++ b/dev-python/pygame/Manifest
@@ -1 +1,2 @@
DIST pygame-2.6.0.gh.tar.gz 5970025 BLAKE2B 2a7616982675d8d9a5f306bae709e97e87d4f602f12ea553ca4779f858fb88bf92ac2a4e0f8f63ac52096e1829d2f7805edee919d7e96b7764db72e9cb7f4034 SHA512 bdf36314bd2179ab30942efab4e4cb65eff023b6951d1705a46d7cb4b89095e76bf4dcd04e714224355705d3e44283213fbb807973b3b241bf128b78c80044ae
+DIST pygame-2.6.1.gh.tar.gz 5970088 BLAKE2B 70ea8d1828118fe3d1ecb47b51f2384dfa78ff26fd4c6ee72752c3be1b85194f1e3dd5f4cf1456a121599c8da5cd4a874bb0fa453ccc4e606c0989d14152fa73 SHA512 e072b303b89ede611a47622e0233570a74861001e0d92e7f34712d08185ee6112f7a21b529acba743f9fa5ea8cb6b51d611abbb69634660bdc4cf807597240d7
diff --git a/dev-python/pygame/pygame-2.6.1.ebuild b/dev-python/pygame/pygame-2.6.1.ebuild
new file mode 100644
index 000000000000..d5868d444d13
--- /dev/null
+++ b/dev-python/pygame/pygame-2.6.1.ebuild
@@ -0,0 +1,96 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1
+
+DESCRIPTION="Python bindings for SDL multimedia library"
+HOMEPAGE="
+ https://www.pygame.org/
+ https://github.com/pygame/pygame/
+ https://pypi.org/project/pygame/
+"
+SRC_URI="
+ https://github.com/pygame/pygame/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~x86"
+IUSE="examples opengl test X"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ dev-python/numpy[${PYTHON_USEDEP}]
+ media-libs/freetype
+ media-libs/libjpeg-turbo:=
+ media-libs/libpng:=
+ media-libs/portmidi
+ media-libs/sdl2-image
+ media-libs/sdl2-mixer
+ media-libs/sdl2-ttf
+ X? ( media-libs/libsdl2[opengl?,threads(+),video,X] )
+ !X? ( media-libs/libsdl2[threads(+)] )
+"
+DEPEND="
+ ${RDEPEND}
+ test? (
+ media-libs/sdl2-image[gif,jpeg,png,tiff,webp]
+ media-libs/sdl2-mixer[mp3,vorbis,wav]
+ )
+"
+# fontconfig used for fc-list
+RDEPEND+="
+ media-libs/fontconfig
+"
+# util-linux provides script
+BDEPEND="
+ >=dev-python/cython-3.0[${PYTHON_USEDEP}]
+ test? (
+ media-libs/fontconfig
+ sys-apps/util-linux
+ )
+"
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # some numpy-related crash (not a regression)
+ # https://github.com/pygame/pygame/issues/4049
+ sed -e 's:import numpy:raise ImportError(""):' \
+ -i test/pixelcopy_test.py || die
+}
+
+python_configure() {
+ PORTMIDI_INC_PORTTIME=1 LOCALBASE="${EPREFIX}/usr" \
+ "${EPYTHON}" "${S}"/buildconfig/config.py || die
+}
+
+python_configure_all() {
+ find src_c/cython -name '*.pyx' -exec touch {} + || die
+ "${EPYTHON}" setup.py cython_only || die
+}
+
+python_test() {
+ local -x SDL_VIDEODRIVER=dummy
+ local -x SDL_AUDIODRIVER=disk
+ script -eqc "${EPYTHON} -m pygame.tests -v" || die
+}
+
+python_install() {
+ distutils-r1_python_install
+
+ # https://bugs.gentoo.org/497720
+ rm -fr "${D}$(python_get_sitedir)"/pygame/{docs,examples} || die
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+ use examples && dodoc -r examples
+}
diff --git a/dev-python/pygraphviz/Manifest b/dev-python/pygraphviz/Manifest
index ea30261224ea..1cdf195ec2ca 100644
--- a/dev-python/pygraphviz/Manifest
+++ b/dev-python/pygraphviz/Manifest
@@ -1 +1,2 @@
DIST pygraphviz-1.13.tar.gz 104642 BLAKE2B 6111c1b811d5359da673f9c43719d21e86e93e7e82e5819872fed6f87ebb74efb87dba40b5dac737b93bffcd51683f143528a135a76e3d6f62615593fdc22b88 SHA512 3159fd9fb1226974c3a6289ebc437eed394021a7fc41669e29879fa6fd5e5cb809c808a4016cfb1afaf30dc10e467e8b0fe5c3b71fb9a1f889efcf5ae6ff3597
+DIST pygraphviz-1.14.tar.gz 106003 BLAKE2B d56b16c6cc0fefeb258f6071424e20e38277bf76a8750ecbc1d9e2e8af5737ff79c78436bdf0d09c0e785e3b1bf90519b9bfd7014cf8373280c58e7057e2ba19 SHA512 867346303d560be21a37080e6d3ce0afe42119ee373f8cd872e853fee611d2c4cb56cc057023230fcf8ffbf03053ea92b9fc2ec6d5e682d6c6667b6727d87899
diff --git a/dev-python/pygraphviz/pygraphviz-1.14.ebuild b/dev-python/pygraphviz/pygraphviz-1.14.ebuild
new file mode 100644
index 000000000000..2f2ab560ed12
--- /dev/null
+++ b/dev-python/pygraphviz/pygraphviz-1.14.ebuild
@@ -0,0 +1,50 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python wrapper for the Graphviz Agraph data structure"
+HOMEPAGE="
+ https://pygraphviz.github.io/
+ https://github.com/pygraphviz/pygraphviz/
+ https://pypi.org/project/pygraphviz/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86 ~x86-linux ~ppc-macos ~x64-macos"
+
+# Note: only C API of graphviz is used, PYTHON_USEDEP unnecessary.
+DEPEND="
+ media-gfx/graphviz
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ dev-lang/swig:0
+"
+
+distutils_enable_tests pytest
+
+src_configure() {
+ swig -python pygraphviz/graphviz.i || die
+}
+
+python_test() {
+ cd "${BUILD_DIR}"/install || die
+ epytest
+}
+
+python_install_all() {
+ dodoc -r examples
+ docompress -x /usr/share/doc/${PF}/examples
+
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/pymdown-extensions/Manifest b/dev-python/pymdown-extensions/Manifest
index a005e1dafd05..ec88a7428019 100644
--- a/dev-python/pymdown-extensions/Manifest
+++ b/dev-python/pymdown-extensions/Manifest
@@ -1,5 +1,4 @@
-DIST pymdown_extensions-10.10.1.tar.gz 828448 BLAKE2B 6db04e72229e53c01f358679025ad94905553aa0eefec37887dd91c83ed4e24efc2be41ac533a981880ff7527b2d592dd7958ea7b49ce623b31b94aff69a63f1 SHA512 731cc26e225af87c75d743abc422e27f93fc0fdf2059411580e63b8344e6ede731e57f20b6679c15a3b84f45432273dce6ad63cacbbeed63ab9c31d8338ccdaa
DIST pymdown_extensions-10.10.2.tar.gz 829801 BLAKE2B 8da4c0afba79a4736621ce8b644a42b4918c04685c1c0312f6a184007c456f92e106fdfd9ae9be64a32bba1d907b6a528fdc49267d1153c0393a8c20c4ded527 SHA512 5885a8f9ea774a5718647a9d546dc5285186d19761441cd1ef39d5f8be40ee13f8fb6cf8791f890001affa6fe051962a45f8cfe8c1d0c549eb4bfeab956494f9
-DIST pymdown_extensions-10.10.tar.gz 828386 BLAKE2B feca952ef46e405215a9ad3365c9afb24bc042590a3ddd87dae7d38a2ba24236463c3ffd7348446c563259246763b969b2c51986a3843d4645ffa530a44cbfb4 SHA512 09aaf7b4ee54bea055816a9f30da04f2cd7e342aa37163805f2eda19554ef93e33c6ef2853ca6b59ae9ae00f5347742c7ea2ba2abe3b5a2de503ec3106320465
+DIST pymdown_extensions-10.11.1.tar.gz 830215 BLAKE2B b32f11d7c3ee3c680b6a225ec44e7eaab4bd23cc95dd96fff29a037938384ac348ef0405a3fabf9dfb2bccc705e2cc2293d04dec7e323a47612c9a1d2ca7188c SHA512 cb04fef9cf6e2c2371287f0cc914b892a519392bb573b04eb547f96c7167cbd93da5848324c5693fc3e9cbec61c9a6d45b22d12d5164db4a09621d8de1d44999
DIST pymdown_extensions-10.11.tar.gz 829898 BLAKE2B ed0acbfa6ec4b8a61e1a05817aff8abc94545fe9c6da9c43000a696a25c7f3ec7a27b9398079c2cdecad397fff6ddd8716ea07d36c00272ae7ae144a513e39f3 SHA512 a06c00e64635fa6223a7e764e3f5f4604cc7d8ae4c2a8f6e47f6f799e877a213eab5398e67d7bb6586142ad03b2c155897b559bbb66d50e343405d15c53fe7c0
DIST pymdown_extensions-10.9.tar.gz 812128 BLAKE2B 2427c41b8587e8b0c4d9bedc4e7c413959545f6c1a12b2c9453861bdb349cbd5bb70327384821f6423718296f56efa17aae21db79bdd038f330246555bcd538b SHA512 3642ccf18a85ffe6ac03dcb132f4b64009490e2a6d0cc70c322ef7640de2a5895a321f755f2d6e16f9c9e84b112c12ded2db18ff73d3201f7b9e0a10c8cd78b5
diff --git a/dev-python/pymdown-extensions/pymdown-extensions-10.10.ebuild b/dev-python/pymdown-extensions/pymdown-extensions-10.10.ebuild
deleted file mode 100644
index 23a947575357..000000000000
--- a/dev-python/pymdown-extensions/pymdown-extensions-10.10.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=hatchling
-PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Extensions for Python Markdown"
-HOMEPAGE="
- https://github.com/facelessuser/pymdown-extensions/
- https://pypi.org/project/pymdown-extensions/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
-
-RDEPEND="
- >=dev-python/markdown-3.6[${PYTHON_USEDEP}]
- dev-python/pyyaml[${PYTHON_USEDEP}]
-"
-
-BDEPEND="
- test? (
- >=dev-python/pygments-2.12.0[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-
-python_test() {
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- epytest
-}
diff --git a/dev-python/pymdown-extensions/pymdown-extensions-10.10.1.ebuild b/dev-python/pymdown-extensions/pymdown-extensions-10.11.1.ebuild
index 23a947575357..23a947575357 100644
--- a/dev-python/pymdown-extensions/pymdown-extensions-10.10.1.ebuild
+++ b/dev-python/pymdown-extensions/pymdown-extensions-10.11.1.ebuild
diff --git a/dev-python/pyparsing/Manifest b/dev-python/pyparsing/Manifest
index 80526b73e638..511c31e43086 100644
--- a/dev-python/pyparsing/Manifest
+++ b/dev-python/pyparsing/Manifest
@@ -1,2 +1,3 @@
DIST pyparsing-3.1.4.tar.gz 900231 BLAKE2B 121092316528a69f79a8fac5e903de513c4193bd00d5ef7e98dfcb09f3a48eb3384217ede39b0f954f58bdade8644931ce8cef41729539fc1be3dfb910b90be7 SHA512 b475e5571510cd7b07fecbc8ae583b1e75a6308b64018d2884570dfa461e0529b96d02d11403cecac41f92b5d802a5dd4bbf9f8321d58ffa2d24cb89b86652e1
DIST pyparsing-3.2.0b2.tar.gz 913100 BLAKE2B 50cb171b9fec23d04ea30b649f98dba605c317ea50a07a94f4391a63fac9f177421a910b3d52010238692ebae4dce0d236f9f32676db1402514dc5d873a4fae1 SHA512 401d80d7ffffb5407d26a80d1638c0c9516bf242d8b3ac0d0947914105a6b42cce355cc52002921103aee7b668042179be43ea3929b2cda9cf21da99aa0f971e
+DIST pyparsing-3.2.0b3.tar.gz 914295 BLAKE2B d542366991972641d5bda7b2d7c1df7de9239d4f8cfdae5ce68d6e763cbc8d5fe87d0bfea18d2b13a6b53d15fa1e97f0d0a9f73735fcb7599f1514f4e1c0e4a6 SHA512 8d743d79f5b099330c186a8a5671d284254db314648ce4f59ce28795122561489d1015419a8ad14dae46d62d1c0c7ffd72b366320ea1e84d4a13655bc8d62e95
diff --git a/dev-python/pyparsing/pyparsing-3.2.0_beta3.ebuild b/dev-python/pyparsing/pyparsing-3.2.0_beta3.ebuild
new file mode 100644
index 000000000000..4ba7381cc264
--- /dev/null
+++ b/dev-python/pyparsing/pyparsing-3.2.0_beta3.ebuild
@@ -0,0 +1,58 @@
+# Copyright 2004-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
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Easy-to-use Python module for text parsing"
+HOMEPAGE="
+ https://github.com/pyparsing/pyparsing/
+ https://pypi.org/project/pyparsing/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
+IUSE="examples"
+
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_IGNORE=(
+ # railroad-diagrams not packaged (and not suitable for packaging yet)
+ tests/test_diagram.py
+ )
+ local EPYTEST_DESELECT=(
+ # also railroad-diagrams
+ tests/test_examples.py::TestExamples::test_range_check
+ tests/test_examples.py::TestExamples::test_rosettacode
+ tests/test_unit.py::Test02_WithoutPackrat::testEmptyExpressionsAreHandledProperly
+ tests/test_unit.py::Test04_WithPackrat::testEmptyExpressionsAreHandledProperly
+ tests/test_unit.py::Test06_WithBoundedPackrat::testEmptyExpressionsAreHandledProperly
+ tests/test_unit.py::Test08_WithUnboundedPackrat::testEmptyExpressionsAreHandledProperly
+ tests/test_unit.py::Test09_WithLeftRecursionParsing::testEmptyExpressionsAreHandledProperly
+ tests/test_unit.py::Test10_WithLeftRecursionParsingBoundedMemo::testEmptyExpressionsAreHandledProperly
+ )
+
+ if ! has_version "dev-python/matplotlib[${PYTHON_USEDEP}]"; then
+ EPYTEST_IGNORE+=(
+ tests/test_matplotlib_cases.py
+ )
+ fi
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest
+}
+
+python_install_all() {
+ if use examples; then
+ docompress -x /usr/share/doc/${PF}/examples
+ dodoc -r examples
+ fi
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/pypdf/Manifest b/dev-python/pypdf/Manifest
index 3fbcac15c7ec..c663710f9f8a 100644
--- a/dev-python/pypdf/Manifest
+++ b/dev-python/pypdf/Manifest
@@ -1,3 +1,4 @@
DIST pypdf-4.3.1.gh.tar.gz 8016393 BLAKE2B 1ff64b79dda008c92670188e174940137da5af721e169e3a45f4784aa5fdd41f9b679701009f9fa59ac31a401786cece8315d72bd7942ca5af8b05e4ed4564be SHA512 17e1b127efe744a0ff2e9733295effcbab8e497d65cae3cb821646df1c0178991771910f0ef0b4f72525d980d840bfdc4290a05ea191669887f2122ec3521825
DIST pypdf-5.0.0.gh.tar.gz 8020126 BLAKE2B 81f1eab322365c52fde063908f474d3a4ae75f888b3e3adcbc083bb189fb0e0046ea8399da101d2725ddb2c2b605766a3a84f236619d290cb592c375dcff30c0 SHA512 f346414b232150c527b623f883f85e2c9010ff189cc41da3bcf7ce8718f529f5285a4a3af6d480115e68baf7a8b12a05bf6ec78c9ca9f346eff9ffba0b9785bd
+DIST pypdf-5.0.1.gh.tar.gz 8014103 BLAKE2B 27b7533e56e87b0945058a05aaf6079d7259705c01d4d8601e46b1c5947918d155664250cc5339afe3a3a4cc926abfb34502a7048aba91d67b2bf3661169df72 SHA512 3109164a5fbcb03c397e371802dd8502f78ed31acf38fdf7cf25be959427614ba0cb05662bc7791d8017fa4adb9438e7bba6190266759286f7a82e5618718023
DIST pypdf-sample-files-8c405ece5eff12396a34a1fae3276132002e1753.gh.tar.gz 11748093 BLAKE2B c5989200893b28a3c2062bb024a5cfc6f3389dc259ec129857979fa43469e1274559612b4d555499e2c7e16cf34be07825229932bf4d147fa6d7324d043e97d5 SHA512 c9771129b7668a2fd1fa79bb859ae9213f3d60341cf1b9937ff0eaab0de9bf4c35adcb7b896e93329038dc0f3809a0c697c523f8fe41b43030b0b029a88058e3
diff --git a/dev-python/pypdf/pypdf-5.0.1.ebuild b/dev-python/pypdf/pypdf-5.0.1.ebuild
new file mode 100644
index 000000000000..1491220de8a8
--- /dev/null
+++ b/dev-python/pypdf/pypdf-5.0.1.ebuild
@@ -0,0 +1,68 @@
+# 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_{9,10,11,12,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-2"
+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}]
+ )
+"
+
+distutils_enable_tests pytest
+
+src_unpack() {
+ default
+ if use test; then
+ mv "sample-files-${SAMPLE_COMMIT}"/* "${S}"/sample-files/ || die
+ fi
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ tests/test_reader.py::test_decode_permissions
+ tests/test_workflows.py::test_text_extraction_layout_mode
+ # rely on -Werror
+ tests/test_utils.py::test_deprecate_no_replacement
+ tests/test_workflows.py::test_orientations
+ tests/test_writer.py::test_remove_image_per_type
+ tests/test_generic.py::test_name_object
+ # Internet
+ tests/test_generic.py::test_calling_indirect_objects
+ tests/test_writer.py::test_increment_writer
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -o addopts= -m "not enable_socket"
+}
diff --git a/dev-python/pypresence/pypresence-4.3.0.ebuild b/dev-python/pypresence/pypresence-4.3.0.ebuild
index 7d839efabd9c..26a6215ffe32 100644
--- a/dev-python/pypresence/pypresence-4.3.0.ebuild
+++ b/dev-python/pypresence/pypresence-4.3.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/pyproject-hooks/Manifest b/dev-python/pyproject-hooks/Manifest
index e83e095938e2..0f63b86e1965 100644
--- a/dev-python/pyproject-hooks/Manifest
+++ b/dev-python/pyproject-hooks/Manifest
@@ -1 +1,2 @@
DIST pyproject-hooks-1.1.0.gh.tar.gz 18774 BLAKE2B e6b376188655a5bc188567f412c22f8224209612c4fb0332f8c0c441180c18589139549139957834b3359bf3ced961e22f97e2449edc354047afaa6d2eff58d7 SHA512 256028d13adbe35126a63431a2a49e0c48adddce5ffc3ff2eebad368eee7ce52591ecfd8a8526876de20bc59dfc87156533d6a97b55538a739873e60f9509eff
+DIST pyproject_hooks-1.2.0.tar.gz 19228 BLAKE2B e02864220393876639cc459918f48c02e19835b392102d117cb5900c9a4f5228bc21377421f7afdd67300ba15d131194197a3b4b1ce0ad7fef195bca9be4344b SHA512 e098e521f03cfae9a96c0ee5d2e2ef46ef832d8f38c7d8380fc17355776e09ae3a704879e6e4a2bc7999092c4dbf80267b3b56850135c74d275a12607e0ffe83
diff --git a/dev-python/pyproject-hooks/pyproject-hooks-1.2.0.ebuild b/dev-python/pyproject-hooks/pyproject-hooks-1.2.0.ebuild
new file mode 100644
index 000000000000..97450eda58a6
--- /dev/null
+++ b/dev-python/pyproject-hooks/pyproject-hooks-1.2.0.ebuild
@@ -0,0 +1,38 @@
+# 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_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Wrappers to build Python packages using PEP 517 hooks"
+HOMEPAGE="
+ https://pypi.org/project/pyproject-hooks/
+ https://github.com/pypa/pyproject-hooks/
+ https://pyproject-hooks.readthedocs.io/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+BDEPEND="
+ test? (
+ dev-python/testpath[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/tomli[${PYTHON_USEDEP}]
+ ' 3.10)
+ )
+"
+
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # fails due to setuptools 70.1
+ # https://bugs.gentoo.org/936052
+ # https://github.com/pypa/pyproject-hooks/issues/203
+ tests/test_call_hooks.py::test_setup_py
+)
diff --git a/dev-python/pyside6-tools/Manifest b/dev-python/pyside6-tools/Manifest
index 6bad2ad97ee1..8f53c5c18479 100644
--- a/dev-python/pyside6-tools/Manifest
+++ b/dev-python/pyside6-tools/Manifest
@@ -1 +1,2 @@
DIST pyside-setup-everywhere-src-6.7.2.tar.xz 14402156 BLAKE2B 321717ba46c7ed29404ee326f852cd4032f93e23b6b32a16e4e05305ff04a00a2029ee7c1d50ad7191a836ffd9a3ae858483bac35e8254bdcaeb474e2c92df60 SHA512 4376aba85867b5a04dab9d8889f5e32cb503cb8010757c1e810e60d29755f15a002b582594d0737a4119c030b48ede26964e8b1392700a6c061d7d631cdfe73e
+DIST pyside-setup-everywhere-src-6.7.3.tar.xz 14591496 BLAKE2B dfe21f8d9af346e43720685982ee736974661059f83e7f22e59ef98d444d181a5f6235e41db4c40c83697401e45dbc4e8765e6351702d4f300d1c63e5789a4d5 SHA512 5e4292b9809df571e1aa3db7c1366973aecf5aaba6638c78d676413985a965aa23b694ba287bdc1d9b8dca59ac24b8229021db6f5a2b5818c929cbada7ef7491
diff --git a/dev-python/pyside6-tools/pyside6-tools-6.7.3.ebuild b/dev-python/pyside6-tools/pyside6-tools-6.7.3.ebuild
new file mode 100644
index 000000000000..f71250a28ee4
--- /dev/null
+++ b/dev-python/pyside6-tools/pyside6-tools-6.7.3.ebuild
@@ -0,0 +1,80 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# TODO: Add PyPy once officially supported. See also:
+# https://bugreports.qt.io/browse/PYSIDE-535
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+LLVM_COMPAT=( {15..18} )
+
+inherit cmake llvm-r1 python-r1
+
+MY_PN="pyside-setup-everywhere-src"
+
+DESCRIPTION="PySide development tools (pyside6-lupdate with support for Python)"
+HOMEPAGE="https://wiki.qt.io/PySide6"
+SRC_URI="https://download.qt.io/official_releases/QtForPython/pyside6/PySide6-${PV}-src/${MY_PN}-${PV}.tar.xz"
+S="${WORKDIR}/${MY_PN}-${PV}/sources/pyside-tools"
+
+LICENSE="GPL-2"
+SLOT="6/${PV}"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+# Minimal supported version of Qt.
+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/pyside6-tools:0
+"
+DEPEND="${RDEPEND}
+ $(llvm_gen_dep '
+ sys-devel/clang:${LLVM_SLOT}
+ sys-devel/llvm:${LLVM_SLOT}
+ ')
+"
+
+src_prepare() {
+ cmake_src_prepare
+
+ python_copy_sources
+}
+
+src_configure() {
+ pyside-tools_configure() {
+ local mycmakeargs=(
+ # If this is enabled cmake just makes copies of /lib64/qt6/bin/*
+ -DNO_QT_TOOLS=yes
+ )
+ cmake_src_configure
+ }
+
+ python_foreach_impl pyside-tools_configure
+}
+
+src_compile() {
+ pyside-tools_compile() {
+ cmake_src_compile
+ }
+
+ python_foreach_impl pyside-tools_compile
+}
+
+src_install() {
+ pyside-tools_install() {
+ # This replicates the contents of the PySide6 pypi wheel
+ DESTDIR="${BUILD_DIR}" cmake_build install
+ cp __init__.py "${BUILD_DIR}/usr/bin" || die
+ rm -r "${BUILD_DIR}/usr/bin/qtpy2cpp_lib/tests" || die
+ python_moduleinto PySide6/scripts
+ python_domodule "${BUILD_DIR}/usr/bin/."
+ }
+
+ python_foreach_impl pyside-tools_install
+
+ einstalldocs
+}
diff --git a/dev-python/pyside6/Manifest b/dev-python/pyside6/Manifest
index 6bad2ad97ee1..8f53c5c18479 100644
--- a/dev-python/pyside6/Manifest
+++ b/dev-python/pyside6/Manifest
@@ -1 +1,2 @@
DIST pyside-setup-everywhere-src-6.7.2.tar.xz 14402156 BLAKE2B 321717ba46c7ed29404ee326f852cd4032f93e23b6b32a16e4e05305ff04a00a2029ee7c1d50ad7191a836ffd9a3ae858483bac35e8254bdcaeb474e2c92df60 SHA512 4376aba85867b5a04dab9d8889f5e32cb503cb8010757c1e810e60d29755f15a002b582594d0737a4119c030b48ede26964e8b1392700a6c061d7d631cdfe73e
+DIST pyside-setup-everywhere-src-6.7.3.tar.xz 14591496 BLAKE2B dfe21f8d9af346e43720685982ee736974661059f83e7f22e59ef98d444d181a5f6235e41db4c40c83697401e45dbc4e8765e6351702d4f300d1c63e5789a4d5 SHA512 5e4292b9809df571e1aa3db7c1366973aecf5aaba6638c78d676413985a965aa23b694ba287bdc1d9b8dca59ac24b8229021db6f5a2b5818c929cbada7ef7491
diff --git a/dev-python/pyside6/pyside6-6.7.3.ebuild b/dev-python/pyside6/pyside6-6.7.3.ebuild
new file mode 100644
index 000000000000..efc1fd90fb63
--- /dev/null
+++ b/dev-python/pyside6/pyside6-6.7.3.ebuild
@@ -0,0 +1,248 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# TODO: Add PyPy once officially supported. See also:
+# https://bugreports.qt.io/browse/PYSIDE-535
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+LLVM_COMPAT=( {15..18} )
+
+inherit cmake llvm-r1 python-r1 virtualx
+
+# TODO: Add conditional support for "QtRemoteObjects" via a new "remoteobjects"
+# USE flag after an external "dev-qt/qtremoteobjects" package has been created.
+# TODO: Add conditional support for apidoc generation via a new "doc" USE flag.
+# Note that doing so requires the Qt source tree, sphinx, and graphviz. Once
+# ready, pass the ${QT_SRC_DIR} variable to cmake to enable this support.
+# TODO: Disable GLES support if the "gles2-only" USE flag is disabled. Note
+# that the "PySide6/QtGui/CMakeLists.txt" and
+# "PySide6/QtOpenGLFunctions/CMakeLists.txt" files test for GLES support by
+# testing whether the "Qt5::Gui" list property defined by
+# "/usr/lib64/cmake/Qt5Gui/Qt5GuiConfig.cmake" at "dev-qt/qtgui" installation
+# time contains the substring "opengles2". Since cmake does not permit
+# properties to be overridden from the command line, these files must instead
+# be conditionally patched to avoid these tests. An issue should be filed with
+# upstream requesting a CLI-settable variable to control this.
+
+MY_PN="pyside-setup-everywhere-src"
+
+DESCRIPTION="Python bindings for the Qt framework"
+HOMEPAGE="https://wiki.qt.io/PySide6"
+SRC_URI="https://download.qt.io/official_releases/QtForPython/pyside6/PySide6-${PV}-src/${MY_PN}-${PV}.tar.xz"
+S="${WORKDIR}/${MY_PN}-${PV}/sources/pyside6"
+
+# See "sources/pyside6/PySide6/licensecomment.txt" for licensing details.
+# Shall we allow essential modules to be disabled? They are:
+# (core), gui, widgets, printsupport, sql, network, testlib, concurrent,
+# x11extras (for X)
+LICENSE="|| ( GPL-2 GPL-3+ LGPL-3 )"
+SLOT="6/${PV}"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+IUSE="
+ 3d bluetooth charts +concurrent +dbus designer gles2-only +gui help location
+ multimedia +network network-auth nfc positioning +opengl pdfium positioning
+ +printsupport qml quick quick3d serialport scxml sensors spatialaudio speech
+ +sql svg test +testlib webchannel webengine websockets +widgets +xml
+"
+
+# Manually reextract these requirements on version bumps by running the
+# following one-liner from within "${S}":
+# $ grep 'set.*_deps' PySide6/Qt*/CMakeLists.txt
+# Note that the "designer" USE flag corresponds to the "Qt6UiTools" module.
+REQUIRED_USE="${PYTHON_REQUIRED_USE}
+ 3d? ( gui network )
+ charts? ( gui widgets )
+ designer? ( widgets )
+ gles2-only? ( gui )
+ gui? ( dbus opengl )
+ help? ( network sql widgets )
+ location? ( gui network positioning quick )
+ multimedia? ( gui network )
+ network-auth? ( network )
+ opengl? ( gui )
+ pdfium? ( gui )
+ printsupport? ( widgets )
+ qml? ( network )
+ quick? ( gui network opengl qml )
+ quick3d? ( gui network opengl qml quick )
+ spatialaudio? ( multimedia )
+ speech? ( multimedia )
+ sql? ( widgets )
+ svg? ( gui )
+ testlib? ( widgets )
+ webchannel? ( qml )
+ webengine? ( network gui printsupport quick webchannel )
+ websockets? ( network )
+ widgets? ( gui )
+"
+
+# Tests fail pretty bad and I'm not fixing them right now
+RESTRICT="test"
+
+# Minimal supported version of Qt.
+QT_PV="$(ver_cut 1-3)*:6"
+
+RDEPEND="${PYTHON_DEPS}
+ =dev-python/shiboken6-${QT_PV}[${PYTHON_USEDEP},${LLVM_USEDEP}]
+ =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] )
+ gui? (
+ =dev-qt/qtbase-${QT_PV}[gui,jpeg(+)]
+ x11-libs/libxkbcommon
+ )
+ help? ( =dev-qt/qttools-${QT_PV}[assistant] )
+ location? ( =dev-qt/qtlocation-${QT_PV} )
+ multimedia? ( =dev-qt/qtmultimedia-${QT_PV} )
+ network? ( =dev-qt/qtbase-${QT_PV}[ssl] )
+ network-auth? ( =dev-qt/qtnetworkauth-${QT_PV} )
+ nfc? ( =dev-qt/qtconnectivity-${QT_PV}[nfc] )
+ 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}[widgets?] )
+ quick3d? ( =dev-qt/qtquick3d-${QT_PV} )
+ scxml? ( =dev-qt/qtscxml-${QT_PV} )
+ sensors? ( =dev-qt/qtsensors-${QT_PV}[qml?] )
+ speech? ( =dev-qt/qtspeech-${QT_PV} )
+ serialport? ( =dev-qt/qtserialport-${QT_PV} )
+ svg? ( =dev-qt/qtsvg-${QT_PV} )
+ testlib? ( =dev-qt/qtbase-${QT_PV}[gui] )
+ 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} )
+ !dev-python/pyside6:0
+"
+DEPEND="${RDEPEND}
+ $(llvm_gen_dep '
+ sys-devel/clang:${LLVM_SLOT}
+ sys-devel/llvm:${LLVM_SLOT}
+ ')
+ test? ( =dev-qt/qtbase-${QT_PV}[gui] )
+"
+# testlib is toggled by the gui flag on qtbase
+
+PATCHES=(
+ "${FILESDIR}/${PN}-6.3.1-no-strip.patch"
+ # References files not present in our dev-qt/qtbase
+ "${FILESDIR}/${PN}-6.6.0-no-qtexampleicons.patch"
+)
+
+src_configure() {
+ # See collect_module_if_found macros in PySideHelpers.cmake
+ local mycmakeargs=(
+ -DBUILD_TESTS=$(usex test)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt63DAnimation=$(usex !3d)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt63DCore=$(usex !3d)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt63DExtras=$(usex !3d)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt63DInput=$(usex !3d)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt63DLogic=$(usex !3d)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt63DRender=$(usex !3d)
+ #-DCMAKE_DISABLE_FIND_PACKAGE_Qt6AxContainer=yes
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6Bluetooth=$(usex !bluetooth)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6Charts=$(usex !charts)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6Concurrent=$(usex !concurrent)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6DataVisualization=yes
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6DBus=$(usex !dbus)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6Designer=$(usex !designer)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6Gui=$(usex !gui)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6Help=$(usex !help)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6HttpServer=yes
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6Location=$(usex !location)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6Multimedia=$(usex !multimedia)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6MultimediaWidgets=$(usex !multimedia yes $(usex !widgets))
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6NetworkAuth=$(usex !network-auth)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6Network=$(usex !network)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6Nfc=$(usex !nfc)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6OpenGL=$(usex !opengl)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6OpenGLWidgets=$(usex !opengl yes $(usex !widgets))
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6Pdf=$(usex !pdfium)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6PdfWidgets=$(usex !pdfium yes $(usex !widgets))
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6Positioning=$(usex !positioning)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6PrintSupport=$(usex !printsupport)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6Qml=$(usex !qml)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6Quick3D=$(usex !quick3d)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6Quick=$(usex !quick)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6QuickControls2=yes
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6QuickWidgets=$(usex !quick yes $(usex !widgets))
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6RemoteObjects=yes
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6Scxml=$(usex !scxml)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6Sensors=$(usex !sensors)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6SerialPort=$(usex !serialport)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6SpatialAudio=$(usex !spatialaudio)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6Sql=$(usex !sql)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6StateMachine=yes
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6Svg=$(usex !svg)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6SvgWidgets=$(usex !svg yes $(usex !widgets))
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6Test=$(usex !testlib)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6TextToSpeech=$(usex !speech)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6UiTools=$(usex !designer)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6WebChannel=$(usex !webchannel)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6WebEngineCore=$(usex !webengine)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6WebEngineQuick=$(usex !webengine yes $(usex !quick))
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6WebEngineWidgets=$(usex !webengine yes $(usex !widgets))
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6WebSockets=$(usex !websockets)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6Widgets=$(usex !widgets)
+ #-DCMAKE_DISABLE_FIND_PACKAGE_Qt6WinExtras=yes
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6Xml=$(usex !xml)
+ # try to avoid pre-stripping
+ -DQFP_NO_OVERRIDE_OPTIMIZATION_FLAGS=yes
+ -DQFP_NO_STRIP=yes
+
+ )
+
+ pyside6_configure() {
+ local mycmakeargs=(
+ "${mycmakeargs[@]}"
+ -DPYTHON_CONFIG_SUFFIX="-${EPYTHON}"
+ -DPYTHON_SITE_PACKAGES="$(python_get_sitedir)"
+ -DSHIBOKEN_PYTHON_SHARED_LIBRARY_SUFFIX="-${EPYTHON}"
+ )
+ cmake_src_configure
+ }
+ python_foreach_impl pyside6_configure
+}
+
+src_compile() {
+ python_foreach_impl cmake_src_compile
+}
+
+src_test() {
+ local -x PYTHONDONTWRITEBYTECODE
+ python_foreach_impl virtx cmake_src_test
+}
+
+src_install() {
+ pyside6_install() {
+ cmake_src_install
+ python_optimize
+
+ # Uniquify the shiboken6 pkgconfig dependency in the PySide6 pkgconfig
+ # 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
+
+ # 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
+ }
+ python_foreach_impl pyside6_install
+
+ # CMakeLists.txt installs a "PySide6Targets-gentoo.cmake" file forcing
+ # downstream consumers (e.g., pyside6-tools) to target one
+ # "libpyside6-*.so" library linked to one Python interpreter. See also:
+ # https://bugreports.qt.io/browse/PYSIDE-1053
+ # https://github.com/leycec/raiagent/issues/74
+ sed -i -e 's~pyside6-python[[:digit:]]\+\.[[:digit:]]\+~pyside6${PYTHON_CONFIG_SUFFIX}~g' \
+ "${ED}/usr/$(get_libdir)/cmake/PySide6/PySide6Targets-${CMAKE_BUILD_TYPE,,}.cmake" || die
+}
diff --git a/dev-python/python-multipart/Manifest b/dev-python/python-multipart/Manifest
index 5402419fe983..b137dffaad89 100644
--- a/dev-python/python-multipart/Manifest
+++ b/dev-python/python-multipart/Manifest
@@ -1,3 +1,4 @@
DIST python-multipart-0.0.10.gh.tar.gz 88275 BLAKE2B 56c1e1e5e59861068f29b66a5bea28234a70c273c1c5f0625f497eda19cc19389ecf6c602cc6fffca6d0681e4ab19b6b536196654f1b7ef9c40b192b475281af SHA512 eb35194b23772f448ff9b9a79bf69425891e39a54c56be92a25cf0c356bfa6ae016ec97c31bcc20535065f2eecdbc14444dfaedb3008c85f26e1a704b6b4b214
DIST python-multipart-0.0.11.gh.tar.gz 88438 BLAKE2B 5d44f25e411d69c0c0e314e6406b36a3429623cd16dbae9e5f848479b096f6765efc99bbefc2026c0be2821d49986e3236beb5bf7dd2a29e6132d984f312b2f8 SHA512 93ba294c66ebbb5fdf29af78aa1022cc68d2d79c129b8a6459e363555629d1bf6cc2d42d9da96bdec63e997b2953959cacc8701d212915744ba90899debfeef1
+DIST python-multipart-0.0.12.gh.tar.gz 92904 BLAKE2B 25076627fdcb3a4bfc9eda74218f9d6d30ea18517da00c312f50c9d3ae156894b29e83bd38d4e11d7d06732999ae9640243e660d2a037253b9f511772a6c737b SHA512 271ed29f3025be5c058a56ec56ce373348dc27b4c8130c17609bd48d73fc975b2ac8387d4989be578e1be01a618aad87c1d3ec3a37dbe73dc45813ec961842d0
DIST python-multipart-0.0.9.gh.tar.gz 49448 BLAKE2B 9ab4026dd4f45e60fd3bd781b178258edc9841e2a999ba6d0e918e37da106d7e9fb5816fa3e2fccb9eb3139c06c83dc892fe3e38b98bc6289dccaee4cdc64260 SHA512 6e41be080e079b1e9730e61d72b5b339fbb447bfb2b171a617c17025c5ad69924ca3c24f39e160f7b1cc495cea0999e72e6674e5631ce88a48240ecc229d0343
diff --git a/dev-python/python-multipart/python-multipart-0.0.12.ebuild b/dev-python/python-multipart/python-multipart-0.0.12.ebuild
new file mode 100644
index 000000000000..30de790f2295
--- /dev/null
+++ b/dev-python/python-multipart/python-multipart-0.0.12.ebuild
@@ -0,0 +1,31 @@
+# Copyright 2022-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1
+
+DESCRIPTION="A streaming multipart parser for Python"
+HOMEPAGE="
+ https://github.com/Kludex/python-multipart/
+ https://pypi.org/project/python-multipart/
+"
+SRC_URI="
+ https://github.com/Kludex/python-multipart/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+BDEPEND="
+ test? (
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
diff --git a/dev-python/recurring-ical-events/Manifest b/dev-python/recurring-ical-events/Manifest
index 5f4104ff821b..aa6e03b4eeba 100644
--- a/dev-python/recurring-ical-events/Manifest
+++ b/dev-python/recurring-ical-events/Manifest
@@ -1,3 +1,2 @@
-DIST python-recurring-ical-events-3.1.1.gh.tar.gz 438998 BLAKE2B 9a141e697444278fd5f41e94e3ab2b12308b38f9c7aaca264e65ffccf9328a36cb67a0e2ed4dbf7dd3abccabf400762184570b62185d39428b0d6c11682d7305 SHA512 3ea995bd56430f9322d888559567dc809552cb6752f4a2acc4e33e385d730b91aa4a2d2389f3ab1ac9dfb5c7eb09327cfc9e858dd06671f7a1c30d39a30e7767
-DIST python-recurring-ical-events-3.2.0.gh.tar.gz 439359 BLAKE2B 10b72e24d97dff1b7d0883a2da632facf1d89945447540acbb64e1f61c490870458bd5c9d389484fbc1be562a88232baf9817dce5be3adc5628e7367b5bef5c5 SHA512 27b9e4e5ed84ad94a1ca12c03995a17ff9db933d98c38f9c34c9cd33fe524e80b55a1507f0e2800b9d027e8030904a06ce05aee596d6d93d2d69ed8ab1ea9046
DIST python-recurring-ical-events-3.3.0.gh.tar.gz 472075 BLAKE2B 70f531550a8d766e027fb9416883880385731c8b72a4115e2311024bfc4eac8fc7e8b06dc079309430e8d9da6d725c3e2efce8ce7e1ae93ca7f1d1cd288ff41b SHA512 d414d2b035c80d46fa7ea63c9df995edf632841b4f2bd9072d9004a2aaf8a9468de276330c5f939f172a93121577bfd1402606b9fab525af9aa662cd49c16501
+DIST python-recurring-ical-events-3.3.1.gh.tar.gz 478584 BLAKE2B 79728b5a1aed1495e468cf0ad86ee1a130b6f5100576ecae93ad2d278ae998fb4a89825c046800c6064eda674499bd5ca2cc29a2031c41486f23155de6d67522 SHA512 dd2b4de334ef48efaf201b833cf21cc25be3a39f9c06466a6a25a0f8402d01d7262c4030ba0878d74efb6b3011bdcf5c7fcea5b114ab908c7fa30a37c3ba6f88
diff --git a/dev-python/recurring-ical-events/recurring-ical-events-3.2.0.ebuild b/dev-python/recurring-ical-events/recurring-ical-events-3.2.0.ebuild
deleted file mode 100644
index 2e4ec3e53dc7..000000000000
--- a/dev-python/recurring-ical-events/recurring-ical-events-3.2.0.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_{9,10,11,12,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-1.0.0[${PYTHON_USEDEP}]
- >=dev-python/x-wr-timezone-0.0.5[${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.1.1.ebuild b/dev-python/recurring-ical-events/recurring-ical-events-3.3.1.ebuild
index 2e4ec3e53dc7..2e4ec3e53dc7 100644
--- a/dev-python/recurring-ical-events/recurring-ical-events-3.1.1.ebuild
+++ b/dev-python/recurring-ical-events/recurring-ical-events-3.3.1.ebuild
diff --git a/dev-python/ruamel-yaml-clib/Manifest b/dev-python/ruamel-yaml-clib/Manifest
index 872b5b381480..7ca6bb128809 100644
--- a/dev-python/ruamel-yaml-clib/Manifest
+++ b/dev-python/ruamel-yaml-clib/Manifest
@@ -1,2 +1 @@
-DIST ruamel.yaml.clib-0.2.7.tar.gz 182535 BLAKE2B 59ac86f3e9812ec393868cea6f5374c7727224542f0b0abedaba29d8826c96a4e86630be4cc1962d0b40f46519b3948c098eb1617f6379201c04f05064dea68b SHA512 b752b17ddf5da99fa6ee18b0ed1836da9a5c3dc58ab8b326d7aa97f6e4daadb298a2f149d79a650ab0326f52873aee6b1bc68cdaeb59465b4fafce49553ce69e
DIST ruamel.yaml.clib-0.2.8.tar.xz 163768 BLAKE2B 38f41c45a4e043b01a80d725baeba5fd6e74fa56e86ad0c1e7e0b811f85fd92f98f3ac096419757bae2273537e7c31356d0d222896e631a39ddc36684ebf29e0 SHA512 3877bc6fcefab91f5d2bd013275f63bba6dd2f5ce1b29b74aef73d01638e184ff1f16ab1fbf9ccbf30d148a33f19dc2535ca8b5d8aecca8c48f1d3eef188e151
diff --git a/dev-python/ruamel-yaml-clib/files/ruamel-yaml-clib-0.2.7_cython_pointer_types.patch b/dev-python/ruamel-yaml-clib/files/ruamel-yaml-clib-0.2.7_cython_pointer_types.patch
new file mode 100644
index 000000000000..855571f05bb0
--- /dev/null
+++ b/dev-python/ruamel-yaml-clib/files/ruamel-yaml-clib-0.2.7_cython_pointer_types.patch
@@ -0,0 +1,75 @@
+--- a/_ruamel_yaml.pxd
++++ b/_ruamel_yaml.pxd
+@@ -2,15 +2,15 @@
+ cdef extern from "_ruamel_yaml.h":
+
+ void malloc(int l)
+- void memcpy(char *d, char *s, int l)
++ void memcpy(unsigned char *d, char *s, int l)
+ int strlen(char *s)
+ int PyString_CheckExact(object o)
+ int PyUnicode_CheckExact(object o)
+ char *PyString_AS_STRING(object o)
+ int PyString_GET_SIZE(object o)
+- object PyString_FromStringAndSize(char *v, int l)
++ object PyString_FromStringAndSize(unsigned char *v, size_t l)
+ object PyUnicode_FromString(char *u)
+- object PyUnicode_DecodeUTF8(char *u, int s, char *e)
++ object PyUnicode_DecodeUTF8(unsigned char *u, size_t s, char *e)
+ object PyUnicode_AsUTF8String(object o)
+ int PY_MAJOR_VERSION
+
+@@ -85,11 +85,11 @@
+ YAML_MAPPING_START_EVENT
+ YAML_MAPPING_END_EVENT
+
+- ctypedef int yaml_read_handler_t(void *data, char *buffer,
+- int size, int *size_read) except 0
++ ctypedef int yaml_read_handler_t(void *data, unsigned char *buffer,
++ size_t size, size_t *size_read) except 0
+
+- ctypedef int yaml_write_handler_t(void *data, char *buffer,
+- int size) except 0
++ ctypedef int yaml_write_handler_t(void *data, unsigned char *buffer,
++ size_t size) except 0
+
+ ctypedef struct yaml_mark_t:
+ int index
+@@ -112,7 +112,7 @@
+ char *handle
+ char *suffix
+ ctypedef struct _yaml_token_scalar_data_t:
+- char *value
++ unsigned char *value
+ int length
+ yaml_scalar_style_t style
+ ctypedef struct _yaml_token_version_directive_data_t:
+@@ -151,7 +151,7 @@
+ ctypedef struct _yaml_event_scalar_data_t:
+ char *anchor
+ char *tag
+- char *value
++ unsigned char *value
+ int length
+ int plain_implicit
+ int quoted_implicit
+--- a/_ruamel_yaml.pyx
++++ b/_ruamel_yaml.pyx
+@@ -904,7 +904,7 @@
+ raise error
+ return 1
+
+-cdef int input_handler(void *data, char *buffer, int size, int *read) except 0:
++cdef int input_handler(void *data, unsigned char *buffer, size_t size, size_t *read) except 0:
+ cdef CParser parser
+ parser = <CParser>data
+ if parser.stream_cache is None:
+@@ -1514,7 +1514,7 @@
+ self.ascend_resolver()
+ return 1
+
+-cdef int output_handler(void *data, char *buffer, int size) except 0:
++cdef int output_handler(void *data, unsigned char *buffer, size_t size) except 0:
+ cdef CEmitter emitter
+ emitter = <CEmitter>data
+ if emitter.dump_unicode == 0:
diff --git a/dev-python/ruamel-yaml-clib/metadata.xml b/dev-python/ruamel-yaml-clib/metadata.xml
index c19bf356a518..8338b89ad44b 100644
--- a/dev-python/ruamel-yaml-clib/metadata.xml
+++ b/dev-python/ruamel-yaml-clib/metadata.xml
@@ -1,18 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
<pkgmetadata>
- <maintainer type="project">
- <email>dev@liguros.net</email>
- <name>Development</name>
- </maintainer>
- <maintainer type="person">
- <email>andrey_utkin@gentoo.org</email>
- <name>Andrey Utkin</name>
- </maintainer>
- <maintainer type="person">
- <email>marecki@gentoo.org</email>
- <name>Marek Szuba</name>
- </maintainer>
<maintainer type="person">
<email>zoltan@sinustrom.info</email>
<name>Zoltan Puskas</name>
@@ -21,6 +9,10 @@
<email>proxy-maint@gentoo.org</email>
<name>Proxy Maintainers</name>
</maintainer>
+ <maintainer type="project">
+ <email>python@gentoo.org</email>
+ <name>Python</name>
+ </maintainer>
<longdescription>
This package was split of from ruamel.yaml, so that ruamel.yaml can be
built as a universal wheel. Apart from the C code seldom changing, and
@@ -30,5 +22,5 @@
ruamel.yaml under /usr/lib/pythonX.Y.
</longdescription>
- <origin>ports</origin>
+ <origin>gentoo-staging</origin>
</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/ruamel-yaml-clib/ruamel-yaml-clib-0.2.7.ebuild b/dev-python/ruamel-yaml-clib/ruamel-yaml-clib-0.2.7.ebuild
deleted file mode 100644
index e689272b03e4..000000000000
--- a/dev-python/ruamel-yaml-clib/ruamel-yaml-clib-0.2.7.ebuild
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2021-2023 Liguros Authors
-# Distributed under the terms of the GNU General Public License v2
-EAPI=8
-
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
-
-inherit distutils-r1
-
-MY_PN="${PN//-/.}"
-MY_P="${MY_PN}-${PV}"
-
-DESCRIPTION="C-based reader/scanner and emitter for dev-python/ruamel-yaml"
-HOMEPAGE="https://pypi.org/project/ruamel.yaml.clib/ https://sourceforge.net/p/ruamel-yaml-clib"
-SRC_URI="mirror://pypi/${MY_PN:0:1}/${MY_PN}/${MY_P}.tar.gz"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="amd64 arm arm64 ~hppa ~ia64 ppc ppc64 sparc x86"
-
-RDEPEND="!<dev-python/ruamel-yaml-0.16.0"
-
-S="${WORKDIR}"/${MY_P}
-
-src_prepare() {
- # Force regeneration of C files from Cython sources to ensure compatibility with python 3.10
- cd ${S}
- rm -v $(grep -rl '/\* Generated by Cython')
- mkdir ruamel.yaml.clib
- mv *.py ruamel.yaml.clib
- cythonize ruamel.yaml.clib/*.py
- mv ruamel.yaml.clib/* .
- rmdir ruamel.yaml.clib
- mv setup.c _ruamel_yaml.c
- default
-}
-
-python_install() {
- distutils-r1_python_install --single-version-externally-managed
-}
diff --git a/dev-python/ruamel-yaml-clib/ruamel-yaml-clib-0.2.8.ebuild b/dev-python/ruamel-yaml-clib/ruamel-yaml-clib-0.2.8.ebuild
index fce3dedb6821..d33b2222670a 100644
--- a/dev-python/ruamel-yaml-clib/ruamel-yaml-clib-0.2.8.ebuild
+++ b/dev-python/ruamel-yaml-clib/ruamel-yaml-clib-0.2.8.ebuild
@@ -1,10 +1,11 @@
-# Copyright 2021-2023 Liguros Authors
+# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
+
EAPI=8
DISTUTILS_EXT=1
DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
inherit distutils-r1
@@ -12,18 +13,26 @@ MY_PN="${PN//-/.}"
MY_P="${MY_PN}-${PV}"
DESCRIPTION="C-based reader/scanner and emitter for dev-python/ruamel-yaml"
-HOMEPAGE="https://pypi.org/project/ruamel.yaml.clib/ https://sourceforge.net/p/ruamel-yaml-clib"
-SRC_URI="mirror://sourceforge/ruamel-dl-tagged-releases/${MY_P}.tar.xz"
+HOMEPAGE="
+ https://pypi.org/project/ruamel.yaml.clib/
+ https://sourceforge.net/projects/ruamel-yaml-clib/
+"
+# sdist lacks .pyx files for cythonizing
+SRC_URI="https://downloads.sourceforge.net/ruamel-dl-tagged-releases/${MY_P}.tar.xz"
+# workaround https://bugs.gentoo.org/898716
+S=${WORKDIR}/ruamel_yaml_clib
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
BDEPEND="
dev-python/cython[${PYTHON_USEDEP}]
"
-S=${WORKDIR}/ruamel_yaml_clib
+PATCHES=(
+ "${FILESDIR}"/${PN}-0.2.7_cython_pointer_types.patch
+)
src_unpack() {
default
diff --git a/dev-python/shiboken6/Manifest b/dev-python/shiboken6/Manifest
index 6bad2ad97ee1..8f53c5c18479 100644
--- a/dev-python/shiboken6/Manifest
+++ b/dev-python/shiboken6/Manifest
@@ -1 +1,2 @@
DIST pyside-setup-everywhere-src-6.7.2.tar.xz 14402156 BLAKE2B 321717ba46c7ed29404ee326f852cd4032f93e23b6b32a16e4e05305ff04a00a2029ee7c1d50ad7191a836ffd9a3ae858483bac35e8254bdcaeb474e2c92df60 SHA512 4376aba85867b5a04dab9d8889f5e32cb503cb8010757c1e810e60d29755f15a002b582594d0737a4119c030b48ede26964e8b1392700a6c061d7d631cdfe73e
+DIST pyside-setup-everywhere-src-6.7.3.tar.xz 14591496 BLAKE2B dfe21f8d9af346e43720685982ee736974661059f83e7f22e59ef98d444d181a5f6235e41db4c40c83697401e45dbc4e8765e6351702d4f300d1c63e5789a4d5 SHA512 5e4292b9809df571e1aa3db7c1366973aecf5aaba6638c78d676413985a965aa23b694ba287bdc1d9b8dca59ac24b8229021db6f5a2b5818c929cbada7ef7491
diff --git a/dev-python/shiboken6/shiboken6-6.7.3.ebuild b/dev-python/shiboken6/shiboken6-6.7.3.ebuild
new file mode 100644
index 000000000000..bff195e53782
--- /dev/null
+++ b/dev-python/shiboken6/shiboken6-6.7.3.ebuild
@@ -0,0 +1,175 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# TODO: Split the "/usr/bin/shiboken6" binding generator from the
+# "/usr/lib64/libshiboken6-*.so" family of shared libraries. The former
+# requires everything (including Clang) at runtime; the latter only requires
+# Qt and Python at runtime. Note that "pip" separates these two as well. See:
+# https://doc.qt.io/qtforpython/shiboken6/faq.html#is-there-any-runtime-dependency-on-the-generated-binding
+# Once split, the PySide6 ebuild should be revised to require
+# "/usr/bin/shiboken6" at build time and "libshiboken6-*.so" at runtime.
+# TODO: Add PyPy once officially supported. See also:
+# https://bugreports.qt.io/browse/PYSIDE-535
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+LLVM_COMPAT=( {15..18} )
+
+inherit cmake llvm-r1 python-r1 toolchain-funcs
+
+MY_PN="pyside-setup-everywhere-src"
+
+DESCRIPTION="Python binding generator for C++ libraries"
+HOMEPAGE="https://wiki.qt.io/PySide6"
+SRC_URI="https://download.qt.io/official_releases/QtForPython/pyside6/PySide6-${PV}-src/${MY_PN}-${PV}.tar.xz"
+S="${WORKDIR}/${MY_PN}-${PV}/sources/shiboken6"
+
+# The "sources/shiboken6/libshiboken" directory is triple-licensed under the
+# GPL v2, v3+, and LGPL v3. All remaining files are licensed under the GPL v3
+# with version 1.0 of a Qt-specific exception enabling shiboken6 output to be
+# arbitrarily relicensed. (TODO)
+LICENSE="|| ( GPL-2 GPL-3+ LGPL-3 ) GPL-3"
+SLOT="6/${PV}"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+IUSE="+docstrings numpy test vulkan"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+# Tests fail pretty bad and I'm not fixing them right now
+RESTRICT="test"
+
+# Minimal supported version of Qt.
+QT_PV="$(ver_cut 1-3)*:6"
+
+# Since Clang is required at both build- and runtime, BDEPEND is omitted here.
+RDEPEND="${PYTHON_DEPS}
+ =dev-qt/qtbase-${QT_PV}
+ $(llvm_gen_dep '
+ sys-devel/clang:${LLVM_SLOT}
+ sys-devel/llvm:${LLVM_SLOT}
+ ')
+ docstrings? (
+ >=dev-libs/libxml2-2.6.32
+ >=dev-libs/libxslt-1.1.19
+ )
+ numpy? ( dev-python/numpy[${PYTHON_USEDEP}] )
+ vulkan? ( dev-util/vulkan-headers )
+ !dev-python/shiboken6:0
+"
+DEPEND="${RDEPEND}
+ test? ( =dev-qt/qtbase-${QT_PV}[gui] )
+"
+# testlib is toggled by the gui flag on qtbase
+
+DOCS=( AUTHORS )
+
+PATCHES=(
+ "${FILESDIR}/${PN}-6.3.1-no-strip.patch"
+)
+
+src_prepare() {
+ # TODO: File upstream issue requesting a sane way to disable NumPy support.
+ if ! use numpy; then
+ sed -i -e '/\bprint(os\.path\.realpath(numpy))/d' \
+ libshiboken/CMakeLists.txt || die
+ fi
+
+ # Shiboken6 assumes Vulkan headers live under either "$VULKAN_SDK/include"
+ # or "$VK_SDK_PATH/include" rather than "${EPREFIX}/usr/include/vulkan".
+ if use vulkan; then
+ sed -i -e "s~\bdetectVulkan(&headerPaths);~headerPaths.append(HeaderPath{QByteArrayLiteral(\"${EPREFIX}/usr/include/vulkan\"), HeaderType::System});~" \
+ ApiExtractor/clangparser/compilersupport.cpp || die
+ fi
+
+ local clangver="$(CPP=clang clang-major-version)"
+
+ # Clang 15 and older used the full version as a directory name.
+ if [[ ${clangver} -lt 16 ]]; then
+ clangver="$(CPP=clang clang-fullversion)"
+ fi
+
+ # 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 -i -e 's~(findClangBuiltInIncludesDir())~(QStringLiteral("'"${EPREFIX}"'/usr/lib/clang/'"${clangver}"'/include"))~' \
+ ApiExtractor/clangparser/compilersupport.cpp || die
+
+ cmake_src_prepare
+}
+
+src_configure() {
+ # Minimal tests for now, 2 failing with the extended version
+ # FIXME Subscripted generics cannot be used with class and instance checks
+ local mycmakeargs=(
+ -DBUILD_TESTS=$(usex test)
+ -DDISABLE_DOCSTRINGS=$(usex !docstrings)
+ )
+
+ shiboken6_configure() {
+ local mycmakeargs=(
+ "${mycmakeargs[@]}"
+ -DPYTHON_CONFIG_SUFFIX="-${EPYTHON}"
+ -DUSE_PYTHON_VERSION="${EPYTHON#python}"
+ -DFORCE_LIMITED_API=OFF
+ )
+ # CMakeLists.txt expects LLVM_INSTALL_DIR as an environment variable.
+ local -x LLVM_INSTALL_DIR="$(get_llvm_prefix)"
+ cmake_src_configure
+ }
+ python_foreach_impl shiboken6_configure
+}
+
+src_compile() {
+ python_foreach_impl cmake_src_compile
+}
+
+src_test() {
+ python_foreach_impl cmake_src_test
+}
+
+src_install() {
+ shiboken6_install() {
+ cmake_src_install
+ python_optimize
+
+ # Uniquify the "shiboken6" executable for the current Python target,
+ # preserving an unversioned "shiboken6" file arbitrarily associated
+ # with the last Python target.
+ cp "${ED}"/usr/bin/${PN}{,-${EPYTHON}} || die
+
+ # Uniquify the Shiboken6 pkgconfig file for the current Python target,
+ # preserving an unversioned "shiboken6.pc" file arbitrarily associated
+ # with the last Python target. See also:
+ # https://github.com/leycec/raiagent/issues/73
+ cp "${ED}/usr/$(get_libdir)"/pkgconfig/${PN}{,-${EPYTHON}}.pc || die
+ }
+ python_foreach_impl shiboken6_install
+
+ # CMakeLists.txt installs a "Shiboken6Targets-gentoo.cmake" file forcing
+ # downstream consumers (e.g., PySide6) to target one "libshiboken6-*.so"
+ # library and one "shiboken6" executable linked to one Python interpreter.
+ # See also:
+ # https://bugreports.qt.io/browse/PYSIDE-1053
+ # https://github.com/leycec/raiagent/issues/74
+ sed -i \
+ -e 's~shiboken6-python[[:digit:]]\+\.[[:digit:]]\+~shiboken6${PYTHON_CONFIG_SUFFIX}~g' \
+ -e 's~/bin/shiboken6~/bin/shiboken6${PYTHON_CONFIG_SUFFIX}~g' \
+ "${ED}/usr/$(get_libdir)"/cmake/Shiboken6/Shiboken6Targets-${CMAKE_BUILD_TYPE,,}.cmake || die
+
+ # Remove the broken "shiboken_tool.py" script. By inspection, this script
+ # reduces to a noop. Moreover, this script raises the following exception:
+ # FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/../shiboken_tool.py': '/usr/bin/../shiboken_tool.py'
+ rm "${ED}"/usr/bin/shiboken_tool.py || die
+}
diff --git a/dev-python/starlette/Manifest b/dev-python/starlette/Manifest
index 3ece1b230c8e..1c2c43a2b417 100644
--- a/dev-python/starlette/Manifest
+++ b/dev-python/starlette/Manifest
@@ -1,3 +1,4 @@
DIST starlette-0.38.5.gh.tar.gz 2569392 BLAKE2B 9ad32478b22cc743652eda43ad71e6b43af9a1c9b42614a16b5fbae282cfdf5e1c092717bb35711d256e75249cf8705d3545289236c78382673f87a9706b7599 SHA512 1ad5ddb497eb35c8b0b2569218b7e98cb4bee0fc2497912aa86bc75fd894264f8d30c886313cc4aa6dd02a24197d71dbd0640b7e2f0a472ce1002ee5cba5ae59
DIST starlette-0.38.6.gh.tar.gz 2569402 BLAKE2B 1d580aa6d5f9782a0f3688f3ebde59ca0a8ec8756b3c05c9d9465af0ead346a566b28e14d068392d6d16a55a22a0c77adc3c99f781003df0b5963cfbb0e01514 SHA512 eeaf3c573e587ce4eec8c10f879b20059e0ca4f14c04865a744a8aefe1b3f51327a291e36db312d119b9df51475584b20d8407332a8817eee5b387255d4826d6
DIST starlette-0.39.1.gh.tar.gz 2572649 BLAKE2B f8b1fb9c64ae73d6018e9ec2f069b413c14060a076d9b3cdcaa6a56219733b65e73a7b8ed8abc6caf4bb896e88a34e326fd98a6f2859e5c05a200bac94aa16bb SHA512 b019d368b5610d8b865a17ff98bec40dacaf1dc830150da907a01a900b058519a9170c80ed92a5a78c835c833e089234e38f939523923e3e566fb2d59de28bfe
+DIST starlette-0.39.2.gh.tar.gz 2573134 BLAKE2B e6cd3bd3e2c2fac96d8b145ffae3a680d775a7668d9baf4db09ab81036985c8c0f5cdc6505f6db56f51126013118568c75d6f0dd6c28ea330baf575a5ff7c004 SHA512 2e81e61451136802449baafd152bf6db9cdad9a111713efb16ccef419aeb9a99b004167cd890509bad613df12d300cb5531197867c594c2b755220a1dae7bf14
diff --git a/dev-python/starlette/starlette-0.39.2.ebuild b/dev-python/starlette/starlette-0.39.2.ebuild
new file mode 100644
index 000000000000..f84693875c8d
--- /dev/null
+++ b/dev-python/starlette/starlette-0.39.2.ebuild
@@ -0,0 +1,56 @@
+# 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_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1
+
+MY_P=${P/_p/.post}
+DESCRIPTION="The little ASGI framework that shines"
+HOMEPAGE="
+ https://www.starlette.io/
+ https://github.com/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="~amd64 ~arm ~arm64 ~hppa ~loong ~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.22.0[${PYTHON_USEDEP}]
+ dev-python/itsdangerous[${PYTHON_USEDEP}]
+ dev-python/jinja[${PYTHON_USEDEP}]
+ >=dev-python/python-multipart-0.0.7[${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/yaxmldiff/Manifest b/dev-python/yaxmldiff/Manifest
index bd082e210f10..a3e9868aa350 100644
--- a/dev-python/yaxmldiff/Manifest
+++ b/dev-python/yaxmldiff/Manifest
@@ -1 +1,2 @@
DIST yaxmldiff-0.1.0.gh.tar.gz 8938 BLAKE2B 9fd9b9ede1d5c28c7d5a47967748de411dbc56b0191c4bcb7f2ee6270093523172497d470c6b99e87ccf50c8a70310500b103ecc3d28a49046f09c70055564b0 SHA512 3b853edd13a95f92d82f563d784d30df4f2876d0a9bf89ad67b3e53228a908fe32407386c221725b30668ac2b98be98623a2fb6da8e268380ee586b49e5ae78e
+DIST yaxmldiff-0.2.0.tar.gz 30530 BLAKE2B 011e2ae06d8348c4c45dd6f6f58f61c1ade4a371a5b2f1b6e2cd9970016e96494ac08783551d964731553868c16a8084c96a8143f6338a29ced1eefb8533d060 SHA512 d8a00565d9ec084c9d6ab482317abe65dc44cf80641085fdcbf3464461b7066d56e7153c09198649222c29d9a8a4311d9d7fbf9a1b85ec428e86637601584aa2
diff --git a/dev-python/yaxmldiff/yaxmldiff-0.2.0.ebuild b/dev-python/yaxmldiff/yaxmldiff-0.2.0.ebuild
new file mode 100644
index 000000000000..32492ec4a703
--- /dev/null
+++ b/dev-python/yaxmldiff/yaxmldiff-0.2.0.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2022-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Yet Another XML Differ"
+HOMEPAGE="
+ https://pypi.org/project/yaxmldiff/
+ https://github.com/latk/yaxmldiff.py
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~loong ~x86"
+
+RDEPEND="
+ dev-python/lxml[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ >=dev-python/hatch-fancy-pypi-readme-24.1.0[${PYTHON_USEDEP}]
+"