summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2022-07-01 00:48:58 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2022-07-01 00:48:58 +0000
commitc9b2fb93a56edf7778b6bbe1ba998ee0b328ae83 (patch)
tree45f790910a20b490d6c6ace2c03fe87781380473 /dev-python
parent8eb65fcef570b6ed45d74cc40fb6ecd7a2f91e3c (diff)
downloadbaldeagleos-repo-c9b2fb93a56edf7778b6bbe1ba998ee0b328ae83.tar.gz
baldeagleos-repo-c9b2fb93a56edf7778b6bbe1ba998ee0b328ae83.tar.xz
baldeagleos-repo-c9b2fb93a56edf7778b6bbe1ba998ee0b328ae83.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/3to2/3to2-1.1.1-r1.ebuild34
-rw-r--r--dev-python/3to2/Manifest1
-rw-r--r--dev-python/3to2/metadata.xml15
-rw-r--r--dev-python/PyPDF2/Manifest1
-rw-r--r--dev-python/PyPDF2/PyPDF2-2.4.1.ebuild102
-rw-r--r--dev-python/QtPy/QtPy-2.1.0-r2.ebuild142
-rw-r--r--dev-python/axisregistry/axisregistry-0.3.2.ebuild2
-rw-r--r--dev-python/axisregistry/files/axisregistry-0.3.2-remove-setuptools_scm-constraint.patch10
-rw-r--r--dev-python/cftime/Manifest1
-rw-r--r--dev-python/cftime/cftime-1.6.1.ebuild29
-rw-r--r--dev-python/confluent-kafka/confluent-kafka-1.9.0.ebuild4
-rw-r--r--dev-python/dulwich/Manifest1
-rw-r--r--dev-python/dulwich/dulwich-0.20.44.ebuild59
-rw-r--r--dev-python/exceptiongroup/exceptiongroup-1.0.0_rc8.ebuild2
-rw-r--r--dev-python/flit_scm/flit_scm-1.6.2.ebuild2
-rw-r--r--dev-python/furo/furo-2022.6.21.ebuild2
-rw-r--r--dev-python/humanize/Manifest1
-rw-r--r--dev-python/humanize/humanize-4.2.3.ebuild29
-rw-r--r--dev-python/hypothesis/hypothesis-6.48.2.ebuild2
-rw-r--r--dev-python/mako/Manifest1
-rw-r--r--dev-python/mako/mako-1.2.1.ebuild58
-rw-r--r--dev-python/matplotlib/matplotlib-3.5.2-r3.ebuild2
-rw-r--r--dev-python/myst_parser/myst_parser-0.18.0.ebuild2
-rw-r--r--dev-python/nuitka/Manifest1
-rw-r--r--dev-python/nuitka/nuitka-0.9.2.ebuild49
-rw-r--r--dev-python/pika/Manifest1
-rw-r--r--dev-python/pika/pika-1.3.0.ebuild59
-rw-r--r--dev-python/pikepdf/Manifest1
-rw-r--r--dev-python/pikepdf/pikepdf-5.2.0.ebuild59
-rw-r--r--dev-python/pycapnp/Manifest1
-rw-r--r--dev-python/pycapnp/files/sdist.patch13
-rw-r--r--dev-python/pycapnp/metadata.xml11
-rw-r--r--dev-python/pycapnp/pycapnp-0.6.4.ebuild36
-rw-r--r--dev-python/pyopenssl/pyopenssl-22.0.0.ebuild2
-rw-r--r--dev-python/pypam/Manifest1
-rw-r--r--dev-python/pypam/files/PyPAM-0.5.0-dealloc.patch17
-rw-r--r--dev-python/pypam/files/PyPAM-0.5.0-memory-errors.patch128
-rw-r--r--dev-python/pypam/files/PyPAM-0.5.0-nofree.patch60
-rw-r--r--dev-python/pypam/files/PyPAM-0.5.0-return-value.patch57
-rw-r--r--dev-python/pypam/files/PyPAM-python3-support.patch198
-rw-r--r--dev-python/pypam/files/pypam-0.5.0-stricter.patch15
-rw-r--r--dev-python/pypam/metadata.xml6
-rw-r--r--dev-python/pypam/pypam-0.5.0-r6.ebuild45
-rw-r--r--dev-python/pypam/pypam-0.5.0-r7.ebuild45
-rw-r--r--dev-python/pypam/pypam-0.5.0-r8.ebuild40
-rw-r--r--dev-python/pypcap/Manifest1
-rw-r--r--dev-python/pypcap/files/pypcap-1.2.3-mktemp.patch19
-rw-r--r--dev-python/pypcap/metadata.xml14
-rw-r--r--dev-python/pypcap/pypcap-1.2.3-r1.ebuild38
-rw-r--r--dev-python/pyside2/files/pyside2-5.15.2-python311-fixups.patch54
-rw-r--r--dev-python/pyside2/files/pyside2-5.15.2-python311.patch41
-rw-r--r--dev-python/pyside2/pyside2-5.15.2-r2.ebuild216
-rw-r--r--dev-python/shiboken2/files/shiboken2-5.15.2-python311-fixups.patch47
-rw-r--r--dev-python/shiboken2/files/shiboken2-5.15.2-python311.patch125
-rw-r--r--dev-python/shiboken2/shiboken2-5.15.2-r2.ebuild172
-rw-r--r--dev-python/sphinx-basic-ng/sphinx-basic-ng-0.0.1_alpha11.ebuild2
-rw-r--r--dev-python/sphinx-pytest/sphinx-pytest-0.0.4.ebuild2
-rw-r--r--dev-python/tempest/Manifest1
-rw-r--r--dev-python/tempest/tempest-31.1.0.ebuild73
59 files changed, 1345 insertions, 807 deletions
diff --git a/dev-python/3to2/3to2-1.1.1-r1.ebuild b/dev-python/3to2/3to2-1.1.1-r1.ebuild
deleted file mode 100644
index a5c5e0286b87..000000000000
--- a/dev-python/3to2/3to2-1.1.1-r1.ebuild
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-PYTHON_COMPAT=( python3_{7,8,9,10} )
-inherit distutils-r1
-
-DESCRIPTION="Tool to refactor valid 3.x syntax into valid 2.x syntax"
-HOMEPAGE="https://pypi.org/project/3to2/"
-SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.zip"
-
-LICENSE="Apache-1.1"
-SLOT="0"
-KEYWORDS="amd64 x86"
-IUSE=""
-
-BDEPEND="app-arch/unzip"
-
-python_prepare_all() {
- # https://bitbucket.org/amentajo/lib3to2/issues/50/testsuite-fails-with-new-python-35
- # Remove failing test
- sed -i -e "/test_argument_unpacking/a \\ return"\
- lib3to2/tests/test_print.py || die
- sed -i -e "s/Exception, err/Exception as err/" lib3to2/build.py || die
-
- distutils-r1_python_prepare_all
-}
-
-python_test() {
- cd "${BUILD_DIR}"/lib || die
- # the standard test runner fails to properly return failure
- "${EPYTHON}" -m unittest discover -v || die "Tests fail with ${EPYTHON}"
-}
diff --git a/dev-python/3to2/Manifest b/dev-python/3to2/Manifest
deleted file mode 100644
index f41d02261223..000000000000
--- a/dev-python/3to2/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST 3to2-1.1.1.zip 78779 BLAKE2B 441e74bd06017c84bd382c32513d84f42b8bc35f46aeb62ec1e3f5b9876573e0a76f6e04f4ca529175761af6f29e10ee0c4d4114ff0bcafb066d2d6344b1d885 SHA512 7580f174409420556f89ae78eba07cc95b95aee9d062586d0862bd41980ae31bf4ac82a43855e160eec745fcdd3b4aff614f68e77da1bfc5f9f404413cab1492
diff --git a/dev-python/3to2/metadata.xml b/dev-python/3to2/metadata.xml
deleted file mode 100644
index 29e7ada65f00..000000000000
--- a/dev-python/3to2/metadata.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
-<pkgmetadata>
- <maintainer type="person">
- <email>chutzpah@gentoo.org</email>
- <name>Patrick McLean</name>
- </maintainer>
- <maintainer type="project">
- <email>python@gentoo.org</email>
- <name>Python</name>
- </maintainer>
-
- <origin>gentoo-staging</origin>
- <stabilize-allarches/>
-</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/PyPDF2/Manifest b/dev-python/PyPDF2/Manifest
index 988a63ca7d34..e628d662809f 100644
--- a/dev-python/PyPDF2/Manifest
+++ b/dev-python/PyPDF2/Manifest
@@ -3,6 +3,7 @@ DIST PyPDF2-2.1.0.gh.tar.gz 4728411 BLAKE2B 00949842da43136afc7ee3482dc0b61182a0
DIST PyPDF2-2.2.1.gh.tar.gz 5019240 BLAKE2B 31412cc136bebdf0288fcdf693540e2ae8b88c08f9d837ebeb17b8f8bfae289146028890f36b7b16c6012469908d4f6855169efcebce082d4c31f634b6410162 SHA512 669c41f477114bc38a214e8f4893c5eb59d40dfe07e3c436b71ede09738539e3f47d8f9293cf9c3012887d296c7a634ee93bf2542910c400c4765bd30495f0f6
DIST PyPDF2-2.3.1.gh.tar.gz 5077679 BLAKE2B 36a70ef9e10ebb6d5c50b713f539aad56b8ccbd94d279aa0b0dc41e9ef1c682ac21b04b4612771e386e8655aa812e11bdbe04363ebaa074a96ffa7059f500e62 SHA512 885d6bab457be594c7a715345f0d4c6f5ba1e34f422e3de42822f4886c0021fc799682e9d253f3c3f48f8c45d387ef431843e2f2f9c7e54c1402ef31b975c511
DIST PyPDF2-2.4.0.gh.tar.gz 5119230 BLAKE2B a396f1e36a4ad74396a549fa6a6dd76b4a24bee66c78e52bd01b9d3ffebbf15698c0b1b30372fbc7224a815733bfcdecc7e7caa275de32f1a25f44c0e8276c9b SHA512 664f57132c6fa9d2cba324559de985b2c4de4a1f9b5d1ca4539cc9ae35b4296a0b3dac1d15ad069e3f46cc01b2b55d530c0fd5f70e6c41ce5461dfd0ebdd4cdd
+DIST PyPDF2-2.4.1.gh.tar.gz 5121207 BLAKE2B 387085ea028d7fcbcfd5fa4e5373b655e647548093638db66fa92d44b8771bb5342f8086ebca82e205cf56f1865778bc604f49a49b39af16d8d9e3466a51653d SHA512 430e73ee6965fd6b8dac9ce8b6ee232e8ea829a7dbdfe87aafd29ae24ab182cd3e568b447030a0c199aab9049a79ce2a5518ce7fe59b1d8ce533b1313a568fc2
DIST PyPDF2-sample-files-41b5cd4f774f8fbd8ac42d93b9962f0376352a15.gh.tar.gz 5406287 BLAKE2B 8ddad01235bdb55cee596d9114e5b6c3b153919bcff5203d229311243516f3595cb36dcca87cae27514a8231d72daa94782115795bff8c1c3d046236811c21e0 SHA512 6c38d5ee0e1c5c0ffdd78f7c2fe56dbf357a1e82d2af642a10264a6102ae8fb95cba6d2f76b26df6a33a5d84cfd5111885d39c1747cf95a5ce545f26bdb37263
DIST PyPDF2-sample-files-4d24ff93dcddf21d55d028d9675d5b5bf9d7a350.gh.tar.gz 5443819 BLAKE2B 6eb440a2db3b58f7e195b8f24438552b2b414296b887cf44d75b14bda367e37ffef75b870152ac3b38e20e5a6f2c6a4cf374087b70daa9036821dd3ebdce2128 SHA512 de631f650098b6fe15830e5a816158d7f352c7a25d0c743b9e4bdf146e1ef2e3a6ea1751ed5d68f34e9a339a793bfb9dc217934595c7a8dffb854c0a4111b963
DIST PyPDF2-sample-files-d7ce88b71820fccaaa4738aa37cbace51f3ed3d9.gh.tar.gz 5406263 BLAKE2B 69673ec380941f567d3630459dc610b1c3a58d5f2956138776412683a96292549107294775d236d1304c054fb91b238f42942a169a7bc862c0b721de647ad191 SHA512 a245de88952de08b45e483f05a1ed42a70a67c4215dd8c32a9b5d70bb64b01acc58ebb1cee677ca178eee8380528dbfac50d3a1a022f19039fa3a47746ddc2a0
diff --git a/dev-python/PyPDF2/PyPDF2-2.4.1.ebuild b/dev-python/PyPDF2/PyPDF2-2.4.1.ebuild
new file mode 100644
index 000000000000..d289bccd1de4
--- /dev/null
+++ b/dev-python/PyPDF2/PyPDF2-2.4.1.ebuild
@@ -0,0 +1,102 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{7,8,9,10} )
+
+inherit distutils-r1
+
+SAMPLE_COMMIT=4d24ff93dcddf21d55d028d9675d5b5bf9d7a350
+DESCRIPTION="Python library to work with PDF files"
+HOMEPAGE="
+ https://pypi.org/project/PyPDF2/
+ https://github.com/py-pdf/PyPDF2/
+"
+SRC_URI="
+ https://github.com/py-pdf/PyPDF2/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[${PYTHON_USEDEP}]
+ ' 3.8 3.9)
+"
+BDEPEND="
+ dev-python/pillow[${PYTHON_USEDEP}]
+ test? (
+ dev-python/pycryptodome[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # Needs network access
+ tests/test_cmap.py
+ tests/test_filters.py::test_decompress_zlib_error
+ tests/test_filters.py::test_lzw_decode_neg1
+ tests/test_generic.py::test_dict_read_from_stream
+ tests/test_generic.py::test_parse_content_stream_peek_percentage
+ tests/test_generic.py::test_read_inline_image_no_has_q
+ tests/test_generic.py::test_read_inline_image_loc_neg_1
+ tests/test_generic.py::test_text_string_write_to_stream
+ tests/test_generic.py::test_name_object_read_from_stream_unicode_error
+ tests/test_generic.py::test_bool_repr
+ tests/test_generic.py::test_issue_997
+ 'tests/test_page.py::test_page_operations[https://arxiv.org/pdf/2201.00029.pdf-None]'
+ tests/test_merger.py::test_trim_outline_list
+ tests/test_merger.py::test_zoom
+ tests/test_merger.py::test_zoom_xyz_no_left
+ tests/test_merger.py::test_bookmark
+ tests/test_merger.py::test_trim_outline
+ tests/test_merger.py::test1
+ tests/test_merger.py::test_sweep_recursion1
+ tests/test_merger.py::test_sweep_recursion2
+ tests/test_reader.py::test_unexpected_destination
+ tests/test_writer.py::test_sweep_indirect_references_nullobject_exception
+ tests/test_writer.py::test_write_bookmark_on_page_fitv
+ tests/test_page.py::test_extract_text_single_quote_op
+ tests/test_page.py::test_extract_text_page_pdf
+ tests/test_page.py::test_extract_text_page_pdf_impossible_decode_xform
+ tests/test_page.py::test_extract_text_operator_t_star
+ tests/test_reader.py::test_iss925
+ tests/test_reader.py::test_extract_text_xref_issue_2
+ tests/test_reader.py::test_extract_text_xref_issue_3
+ tests/test_reader.py::test_extract_text_pdf15
+ tests/test_reader.py::test_extract_text_xref_table_21_bytes_clrf
+ tests/test_reader.py::test_get_fields
+ tests/test_reader.py::test_get_fields_read_else_block
+ tests/test_reader.py::test_get_fields_read_else_block2
+ tests/test_reader.py::test_get_fields_read_else_block3
+ tests/test_reader.py::test_metadata_is_none
+ tests/test_reader.py::test_get_fields_read_write_report
+ tests/test_reader.py::test_unexpected_destination
+ tests/test_utils.py::test_deprecate_no_replacement
+ tests/test_workflows.py::test_extract_textbench
+ tests/test_xmp.py::test_xmpmm
+ tests/test_xmp.py::test_dc_description
+ tests/test_xmp.py::test_dc_creator
+ tests/test_xmp.py::test_custom_properties
+ tests/test_xmp.py::test_dc_subject
+
+ # Broken test
+ tests/test_utils.py::test_deprecate_no_replacement
+)
+
+src_unpack() {
+ default
+ if use test; then
+ mv "sample-files-${SAMPLE_COMMIT}"/* "${P}"/sample-files/ || die
+ fi
+}
diff --git a/dev-python/QtPy/QtPy-2.1.0-r2.ebuild b/dev-python/QtPy/QtPy-2.1.0-r2.ebuild
new file mode 100644
index 000000000000..ba6f89aab8ee
--- /dev/null
+++ b/dev-python/QtPy/QtPy-2.1.0-r2.ebuild
@@ -0,0 +1,142 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{7,8,9,10} )
+
+inherit distutils-r1 virtualx
+
+DESCRIPTION="Abstraction layer on top of PyQt5 and PySide2 and additional custom QWidgets"
+HOMEPAGE="
+ https://github.com/spyder-ide/qtpy/
+ https://pypi.org/project/QtPy/
+"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+
+_IUSE_QT_MODULES="
+ declarative designer gui help location multimedia network opengl
+ positioning printsupport sensors serialport speech sql svg testlib
+ webchannel webengine websockets widgets x11extras xml xmlpatterns
+"
+IUSE="+pyqt5 pyside2 ${_IUSE_QT_MODULES}"
+unset _IUSE_QT_MODULES
+
+REQUIRED_USE="
+ || ( pyqt5 pyside2 )
+ python_targets_python3_11? ( pyqt5 !pyside2 )
+"
+
+# These flags are currently *not* common to both the PySide2 and PyQt5 ebuild
+# Disable them for now, please check periodically if this is still up to date.
+# bluetooth? ( pyqt5 )
+# dbus? ( pyqt5 )
+#
+# 3d? ( pyside2 )
+# charts? ( pyside2 )
+# concurrent? ( pyside2 )
+# datavis? ( pyside2 )
+# scxml? ( pyside2 )
+# script? ( pyside2 )
+# scripttools? ( pyside2 )
+
+# WARNING: the obvious solution of using || for PyQt5/pyside2 is not going
+# to work. The package only checks whether PyQt5/pyside2 is installed, it does
+# not verify whether they have the necessary modules (i.e. satisfy the USE dep).
+#
+# Webengine is a special case, because PyQt5 provides this in a separate package
+# while PySide2 ships it in the same package.
+#
+# declarative/qml/quick is a special case, because PyQt5 bundles the bindings
+# for qml and quick in one flag: declarative PySide2 does not.
+#
+# The PyQt5 ebuild currently enables xml support unconditionally, the flag is
+# added anyway with a (+) to make it future proof if the ebuild were to change
+# this behaviour in the future.
+#
+# The PySide2 ebuild currently enables opengl and serialport support
+# unconditionally, the flag is added anyway with a (+) to make it future proof
+# if the ebuild were to change this behaviour in the future.
+RDEPEND="
+ dev-python/packaging[${PYTHON_USEDEP}]
+ pyqt5? (
+ dev-python/PyQt5[${PYTHON_USEDEP}]
+ dev-python/PyQt5[declarative?,designer?,gui?,help?,location?]
+ dev-python/PyQt5[multimedia?,network?,opengl?,positioning?]
+ dev-python/PyQt5[printsupport?,sensors?,serialport?,speech(-)?,sql?,svg?]
+ dev-python/PyQt5[testlib?,webchannel?,websockets?,widgets?]
+ dev-python/PyQt5[x11extras?,xml(+)?,xmlpatterns?]
+ webengine? ( dev-python/PyQtWebEngine[${PYTHON_USEDEP}] )
+ )
+ pyside2? (
+ dev-python/pyside2[${PYTHON_USEDEP}]
+ dev-python/pyside2[designer?,gui?,help?,location?,multimedia?]
+ dev-python/pyside2[network?,opengl(+)?,positioning?,printsupport?]
+ dev-python/pyside2[sensors?,serialport(+)?,speech?,sql?,svg?]
+ dev-python/pyside2[testlib?,webchannel?,webengine?,websockets?]
+ dev-python/pyside2[widgets?,x11extras?,xml?,xmlpatterns?]
+ declarative? ( dev-python/pyside2[qml,quick] )
+ )
+"
+
+# The QtPy testsuite skips tests for bindings that are not installed, so here we
+# ensure that everything is available and all tests are run. Note that not
+# all flags are available in PyQt5/PySide2, so some tests are still skipped.
+BDEPEND="
+ test? (
+ dev-python/mock[${PYTHON_USEDEP}]
+ pyqt5? (
+ dev-python/PyQt5[${PYTHON_USEDEP}]
+ dev-python/PyQt5[bluetooth,dbus,declarative,designer,gui,help,location]
+ dev-python/PyQt5[multimedia,network,opengl,positioning,printsupport]
+ dev-python/PyQt5[sensors,serialport,speech(-),sql,svg,testlib,webchannel]
+ dev-python/PyQt5[websockets,widgets,x11extras,xml(+),xmlpatterns]
+ dev-python/PyQtWebEngine[${PYTHON_USEDEP}]
+ )
+ pyside2? (
+ dev-python/pyside2[${PYTHON_USEDEP}]
+ dev-python/pyside2[3d,charts,concurrent,datavis,designer,gui,help]
+ dev-python/pyside2[location,multimedia,network,opengl(+),positioning]
+ dev-python/pyside2[printsupport,qml,quick,script,scripttools,scxml]
+ dev-python/pyside2[sensors,serialport(+),speech,sql,svg,testlib]
+ dev-python/pyside2[webchannel,webengine,websockets,widgets,x11extras]
+ dev-python/pyside2[xml,xmlpatterns]
+ )
+ )
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+ sed -i -e 's:--cov=qtpy --cov-report=term-missing::' pytest.ini || die
+ # Disable Qt for Python implementations that are not selected
+ if ! use pyqt5; then
+ sed -i -e "s/from PyQt5.QtCore import/raise ImportError #/" qtpy/__init__.py || die
+ fi
+ if ! use pyside2; then
+ sed -i -e "s/from PySide2 import/raise ImportError #/" qtpy/__init__.py || die
+ sed -i -e "s/from PySide2.QtCore import/raise ImportError #/" qtpy/__init__.py || die
+ fi
+}
+
+python_test() {
+ if use pyqt5; then
+ QT_API="pyqt5" virtx epytest
+ fi
+ if use pyside2; then
+ QT_API="pyside2" virtx epytest
+ fi
+}
+
+pkg_postinst() {
+ if use pyqt5 && use pyside2; then
+ ewarn "You have enabled both PyQt5 and PySide2, note that QtPy will default"
+ ewarn "to PyQt5 unless the QT_API environment variable overrides this."
+ fi
+}
diff --git a/dev-python/axisregistry/axisregistry-0.3.2.ebuild b/dev-python/axisregistry/axisregistry-0.3.2.ebuild
index b9f617764402..9a265350cd99 100644
--- a/dev-python/axisregistry/axisregistry-0.3.2.ebuild
+++ b/dev-python/axisregistry/axisregistry-0.3.2.ebuild
@@ -24,7 +24,7 @@ DEPEND="
>=dev-python/setuptools_scm-4[${PYTHON_USEDEP}]
"
-PATCHES=( "${FILESDIR}/${PN}-0.2.0-remove-setuptools_scm-constraint.patch" )
+PATCHES=( "${FILESDIR}/${P}-remove-setuptools_scm-constraint.patch" )
distutils_enable_tests pytest
diff --git a/dev-python/axisregistry/files/axisregistry-0.3.2-remove-setuptools_scm-constraint.patch b/dev-python/axisregistry/files/axisregistry-0.3.2-remove-setuptools_scm-constraint.patch
new file mode 100644
index 000000000000..c50745baacf2
--- /dev/null
+++ b/dev-python/axisregistry/files/axisregistry-0.3.2-remove-setuptools_scm-constraint.patch
@@ -0,0 +1,10 @@
+--- a/setup.py
++++ b/setup.py
+@@ -42,6 +42,6 @@
+ "Programming Language :: Python :: 3",
+ ],
+ python_requires=">=3.7",
+- setup_requires=["setuptools_scm>=4,<6.1"],
++ setup_requires=["setuptools_scm>=4"],
+ install_requires=["protobuf"],
+ )
diff --git a/dev-python/cftime/Manifest b/dev-python/cftime/Manifest
index 563a0d744831..de0d767d26d5 100644
--- a/dev-python/cftime/Manifest
+++ b/dev-python/cftime/Manifest
@@ -1 +1,2 @@
DIST cftime-1.6.0.tar.gz 47633 BLAKE2B 5201afcd4ecc733511481ec7aa557953acd741d7b5f3126b94d23a0848b30ea1c65b0e965e3e5560581fb7e9b8d1acd144044e8b2cb6fe6ffed99094eb39bc32 SHA512 87f350155c1b875b002822424d8bb4916cc33dfff0c249c3ac7f008c0cf41ea03c1a1b187b79d4a15b935b88a5b2d217bd19f6d069e6255c7fab2ad2d69fe7f9
+DIST cftime-1.6.1.tar.gz 47821 BLAKE2B 3231ac7c019cf134800248dd42192ac89e0040421e64ba25ed4711cf21b6170e000208c3b5165bed4dc2a32451f90d52b704ea2f35709ea1f23d52fffd2bad78 SHA512 530454730e71850acf03080978ae1cfb12b34f9ebf3b062c88d04c495bc759af5ff022c14a5539edcec689fe6758bb832d194bc5b3bb8b9fcc4808a511c18fff
diff --git a/dev-python/cftime/cftime-1.6.1.ebuild b/dev-python/cftime/cftime-1.6.1.ebuild
new file mode 100644
index 000000000000..2f6c02eb4698
--- /dev/null
+++ b/dev-python/cftime/cftime-1.6.1.ebuild
@@ -0,0 +1,29 @@
+# Copyright 2020-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{7,8,9,10} )
+inherit distutils-r1
+
+DESCRIPTION="Time-handling functionality from netcdf4-python"
+HOMEPAGE="https://pypi.org/project/cftime/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~riscv ~x86"
+
+DEPEND=">=dev-python/numpy-1.13.4[${PYTHON_USEDEP}]"
+RDEPEND="${DEPEND}"
+BDEPEND=">=dev-python/cython-0.26.2[${PYTHON_USEDEP}]"
+
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # remove pytest-cov dep
+ sed -e "/--cov/d" -i setup.cfg || die
+
+ distutils-r1_python_prepare_all
+}
diff --git a/dev-python/confluent-kafka/confluent-kafka-1.9.0.ebuild b/dev-python/confluent-kafka/confluent-kafka-1.9.0.ebuild
index e8aeb77448d9..b92130213841 100644
--- a/dev-python/confluent-kafka/confluent-kafka-1.9.0.ebuild
+++ b/dev-python/confluent-kafka/confluent-kafka-1.9.0.ebuild
@@ -19,9 +19,9 @@ S="${WORKDIR}/${MYPN}-${PV}"
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64"
+KEYWORDS=""
-RDEPEND="dev-libs/librdkafka"
+RDEPEND="~dev-libs/librdkafka-1.9.0"
DEPEND="${RDEPEND}"
BDEPEND="
test? (
diff --git a/dev-python/dulwich/Manifest b/dev-python/dulwich/Manifest
index ae0d2eb53abd..23ce166b9e5c 100644
--- a/dev-python/dulwich/Manifest
+++ b/dev-python/dulwich/Manifest
@@ -1 +1,2 @@
DIST dulwich-0.20.43.tar.gz 423604 BLAKE2B e8f6b3fc22ac2289e6529d862f54d8c407725c8d22ba9ee7ddb0d700b4ea617f8b069b14168c43c25cccf6e84592e63f88d3402e58b15413952e5b139bda2c2b SHA512 68ef6e3928a202d76ab882d764d08f8948743825b3b07950a81bd86522c9db6865260c2c725a08b26365719e99343daa1c2a2d242bafe991be2552d06b2e3684
+DIST dulwich-0.20.44.tar.gz 425226 BLAKE2B ba120c682b0fd298a9f17eec524ffdd92af9024e30d0b8c52accda3ef8a1d4876b483e8aaa5f12b4beb73a6c1719ed4504c52396cd355244ab688ceab551faaf SHA512 124a3ae89abf5df9e192919f916012be67112195fc7cfd7c30e814a04d93749a3dc396e12f2d8df1456b113a24cdd1b2f3a1f2733864d5cfad22431a987c25fb
diff --git a/dev-python/dulwich/dulwich-0.20.44.ebuild b/dev-python/dulwich/dulwich-0.20.44.ebuild
new file mode 100644
index 000000000000..6174956163fa
--- /dev/null
+++ b/dev-python/dulwich/dulwich-0.20.44.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{7,8,9,10} )
+
+inherit distutils-r1
+
+DESCRIPTION="Pure-Python implementation of the Git file formats and protocols"
+HOMEPAGE="
+ https://github.com/jelmer/dulwich/
+ https://pypi.org/project/dulwich/
+"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2+ Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~ppc ~ppc64 ~riscv ~s390 ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+IUSE="doc examples test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ dev-python/certifi[${PYTHON_USEDEP}]
+ dev-python/urllib3[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ ${RDEPEND}
+ !hppa? ( !ia64? ( !s390? (
+ dev-python/gevent[${PYTHON_USEDEP}]
+ dev-python/geventhttpclient[${PYTHON_USEDEP}]
+ ) ) )
+ app-crypt/gpgme[python,${PYTHON_USEDEP}]
+ dev-python/mock[${PYTHON_USEDEP}]
+ dev-python/fastimport[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_sphinx docs
+
+python_test() {
+ # remove interference from the tests that do stuff like user.name
+ unset GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_AUTHOR_DATE \
+ GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL GIT_COMMITTER_DATE EMAIL
+ # Do not use make check which rebuilds the extension and uses -Werror,
+ # causing unexpected failures.
+ "${EPYTHON}" -m unittest -v dulwich.tests.test_suite ||
+ die "tests failed with ${EPYTHON}"
+}
+
+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/exceptiongroup/exceptiongroup-1.0.0_rc8.ebuild b/dev-python/exceptiongroup/exceptiongroup-1.0.0_rc8.ebuild
index 7b527b443706..e7ae40078052 100644
--- a/dev-python/exceptiongroup/exceptiongroup-1.0.0_rc8.ebuild
+++ b/dev-python/exceptiongroup/exceptiongroup-1.0.0_rc8.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="MIT PSF-2.4"
SLOT="0"
-KEYWORDS="amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~ppc ~ppc64 ~riscv ~sparc x86"
+KEYWORDS="amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~ppc ~ppc64 ~riscv ~s390 ~sparc x86"
distutils_enable_tests pytest
diff --git a/dev-python/flit_scm/flit_scm-1.6.2.ebuild b/dev-python/flit_scm/flit_scm-1.6.2.ebuild
index 822079f67d1b..f62745f16385 100644
--- a/dev-python/flit_scm/flit_scm-1.6.2.ebuild
+++ b/dev-python/flit_scm/flit_scm-1.6.2.ebuild
@@ -19,7 +19,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~ppc ~ppc64 ~riscv ~sparc x86"
+KEYWORDS="amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~ppc ~ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
>=dev-python/flit_core-3.5.0[${PYTHON_USEDEP}]
diff --git a/dev-python/furo/furo-2022.6.21.ebuild b/dev-python/furo/furo-2022.6.21.ebuild
index 0b8cfcd8b9e6..4b2d667f0dd5 100644
--- a/dev-python/furo/furo-2022.6.21.ebuild
+++ b/dev-python/furo/furo-2022.6.21.ebuild
@@ -24,7 +24,7 @@ S=${WORKDIR}
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~riscv ~x86"
+KEYWORDS="~amd64 ~ia64 ~riscv ~s390 ~x86"
RDEPEND="
dev-python/beautifulsoup4[${PYTHON_USEDEP}]
diff --git a/dev-python/humanize/Manifest b/dev-python/humanize/Manifest
index 8ac3410f15bd..0c554edb23b2 100644
--- a/dev-python/humanize/Manifest
+++ b/dev-python/humanize/Manifest
@@ -2,3 +2,4 @@ DIST humanize-4.1.0.tar.gz 73777 BLAKE2B fcbde90977ae9fcd706e423767b1d5617fd118a
DIST humanize-4.2.0.tar.gz 75169 BLAKE2B dc590d296362be20f607282686e18df73e1bb07aa37459431d7ec1f74ff6611497811da974b7eb62cd791536268018460d9171eb65ed958af6f12f668b3ae2a8 SHA512 ac0a067320d4dc236d97a69a3019cf01ce87efe2cb98e758f516f90986352fe87d03bfa497d66a2a75e61152a35fd8fac827bafd926d6bd84c8f0d2366e5beb7
DIST humanize-4.2.1.tar.gz 75327 BLAKE2B 1c36002a2a5d103bc1dae444d9d8a70c3983c778674d5c6aa3a76aa82dc9bd3bf39faefd1c3dcf8d0726b151dfb4f8d8247bb88fdc9af765f703edfb08226b8a SHA512 c84f797b01bb8bcc2e036496f0b727f9c21fe88148a6d90f73ddacd25f73059a46bbc60ef8c3bb81554db0c75f1ab9aa1e551d8473aecb40761e51b59580092a
DIST humanize-4.2.2.tar.gz 75336 BLAKE2B a95e9fe8536c9a2ecf5c4c40797810ac5825e99504386a8d55f8da0f7c16d4ac7f7aa36d8460e8357d05f34fd5fb6c30b15870b3ff792df7ba2d58080053ab3f SHA512 fa6606975629ef56a72528a543a3114acf17d65d684e868268fb9298f564aac8a1049b9318a4717c8b21f689570f1083fc32bc9eb17bc018c9c2e8e0ee06ec4f
+DIST humanize-4.2.3.tar.gz 75390 BLAKE2B b700c7f6da3ea94062ffb0b74fdd8940460c6017c30499b34678750d5f86b4669542c65291f7a8e1c57b446cfc43efa88324c680fc3f817b7bc5018c3e275e50 SHA512 008acdafd2b811da767fdff67c3b12f7ba333fc35b0d51c4b0edc0162659b8ac25dc54ba30f2a266f6a422990dc2522b6c9e017b9a73e8262ed414d63e0c4308
diff --git a/dev-python/humanize/humanize-4.2.3.ebuild b/dev-python/humanize/humanize-4.2.3.ebuild
new file mode 100644
index 000000000000..c95640b18f8b
--- /dev/null
+++ b/dev-python/humanize/humanize-4.2.3.ebuild
@@ -0,0 +1,29 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{7,8,9,10} pypy3 )
+
+inherit distutils-r1
+
+DESCRIPTION="Common humanization utilities"
+HOMEPAGE="
+ https://github.com/python-humanize/humanize/
+ https://pypi.org/project/humanize/
+"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+BDEPEND="
+ dev-python/setuptools_scm[${PYTHON_USEDEP}]
+ test? (
+ dev-python/freezegun[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
diff --git a/dev-python/hypothesis/hypothesis-6.48.2.ebuild b/dev-python/hypothesis/hypothesis-6.48.2.ebuild
index 99f39fc711ba..0f7f2e248952 100644
--- a/dev-python/hypothesis/hypothesis-6.48.2.ebuild
+++ b/dev-python/hypothesis/hypothesis-6.48.2.ebuild
@@ -25,7 +25,7 @@ S="${WORKDIR}/${MY_P}/hypothesis-python"
LICENSE="MPL-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~ppc ~ppc64 ~riscv ~sparc ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
IUSE="cli"
RDEPEND="
diff --git a/dev-python/mako/Manifest b/dev-python/mako/Manifest
index ecd482abd751..10beb76db047 100644
--- a/dev-python/mako/Manifest
+++ b/dev-python/mako/Manifest
@@ -1 +1,2 @@
DIST Mako-1.2.0.tar.gz 488603 BLAKE2B 30ef597e2dd500d52d02118e0ec8a40cfeeff00604eb9fec887df4aff794aed7d6a1d78b2defb6f985947f9429d912a083b9941ee30b1e53ef32890d19e94158 SHA512 ad608016d7785a735a28ea18f697be4882da747e3da32e4a7c7be4bf846d37e4d3374d78e62ef85607ae9f3f73ee35dc78b473347e4110c059a504be2c497c6e
+DIST Mako-1.2.1.tar.gz 489560 BLAKE2B c8006d5f7a814a1466ad6643200693f014c4a23f284701a9bea6a27246c196c87e5c4bf8e12ae0525563ce60c93944a58b1fa45afc6caf3362aa1d761148910a SHA512 02393054c9e3857ee412f494b01d702b5f367165d2f57a5ff9df34ba1a042b60c7b6c059ce2c53bcb91e3a4a21179eca884ee051bf5f5f3522c05253088d38a5
diff --git a/dev-python/mako/mako-1.2.1.ebuild b/dev-python/mako/mako-1.2.1.ebuild
new file mode 100644
index 000000000000..ac09dcb85bce
--- /dev/null
+++ b/dev-python/mako/mako-1.2.1.ebuild
@@ -0,0 +1,58 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{7,8,9,10} pypy3 )
+
+inherit distutils-r1
+
+MY_P=${P^}
+DESCRIPTION="A Python templating language"
+HOMEPAGE="
+ https://www.makotemplates.org/
+ https://github.com/sqlalchemy/mako/
+ https://pypi.org/project/Mako/
+"
+SRC_URI="mirror://pypi/${MY_P:0:1}/${PN^}/${MY_P}.tar.gz"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos"
+IUSE="doc"
+
+RDEPEND="
+ >=dev-python/markupsafe-0.9.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/Babel[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # change in pygments
+ test/test_exceptions.py::ExceptionsTest::test_format_exceptions_pygments
+ )
+ [[ ${EPYTHON} == pypy3 ]] && EPYTEST_DESELECT+=(
+ test/test_exceptions.py::ExceptionsTest::test_alternating_file_names
+ )
+ local EPYTEST_IGNORE=(
+ # lingua is not packaged in Gentoo and the skip is currently broken
+ # https://github.com/sqlalchemy/mako/pull/357
+ test/ext/test_linguaplugin.py
+ )
+ epytest
+}
+
+python_install_all() {
+ rm -r doc/build || die
+
+ use doc && local HTML_DOCS=( doc/. )
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/matplotlib/matplotlib-3.5.2-r3.ebuild b/dev-python/matplotlib/matplotlib-3.5.2-r3.ebuild
index ed34d2850d4b..c0bc507dbb3e 100644
--- a/dev-python/matplotlib/matplotlib-3.5.2-r3.ebuild
+++ b/dev-python/matplotlib/matplotlib-3.5.2-r3.ebuild
@@ -30,7 +30,7 @@ SRC_URI="
# Fonts: BitstreamVera, OFL-1.1
LICENSE="BitstreamVera BSD matplotlib MIT OFL-1.1"
SLOT="0"
-KEYWORDS="amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~riscv ~s390 sparc x86"
IUSE="cairo doc excel examples gtk3 latex qt5 tk webagg wxwidgets"
# internal copy of pycxx highly patched
diff --git a/dev-python/myst_parser/myst_parser-0.18.0.ebuild b/dev-python/myst_parser/myst_parser-0.18.0.ebuild
index 4af74fb00968..8a6442c7db49 100644
--- a/dev-python/myst_parser/myst_parser-0.18.0.ebuild
+++ b/dev-python/myst_parser/myst_parser-0.18.0.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~riscv ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~riscv ~s390 ~x86"
RDEPEND="
<dev-python/docutils-0.19[${PYTHON_USEDEP}]
diff --git a/dev-python/nuitka/Manifest b/dev-python/nuitka/Manifest
index c23601338341..867af6e8124f 100644
--- a/dev-python/nuitka/Manifest
+++ b/dev-python/nuitka/Manifest
@@ -1,3 +1,4 @@
DIST Nuitka-0.8.4.tar.gz 3828278 BLAKE2B dbd6abb945f66ab6a5a359b8370fd3d5d36fbdc2c232b5002356f59ffbfa531180b96467b67a2edbb7a779c75ebe58789e9ae0ff806b5649eea4a5b7d9c0934c SHA512 683918e60f2f65d22911f894c2e4fedeafd9d0ef0cacd48bb66422fa2077f225c7c861186b83b9c0fd50eb965b956a1b26342249b3db2af599250c16fe84a152
DIST Nuitka-0.9.1.tar.gz 3856232 BLAKE2B 61d92ce8eba7b6832cb8fab4e612f66cc6c26986e45c540f7bb07e806cffd70b0348d6c2e0163bfe046a16e2002355264dd8f1c43c8e1741d4c55ca84ade136c SHA512 b9dd496dd0239a954935a55bab95c4bdb5cf2943e7660983d4169f5d0fe53d62cb81ee814b04548ce594004eae658f388e85b675ccbdf3efca79376f13d59f66
+DIST Nuitka-0.9.2.tar.gz 3856931 BLAKE2B daeb80c4682b8cf86335e13d6441169ec342dbd2fd245819eedd91451e84f28de395014a899614c0129df61316583813670614be0054a36406f8172f90d45bd3 SHA512 42fedde68ece78d01d0c5ec891a7a189e895bb3da6e25f944971f081f3b13b23f6553fe99d02a45a90474bf0044d61921ae88a82c787a3e5db24ac1331ccf3ca
DIST Nuitka-0.9.tar.gz 3855240 BLAKE2B 59a508aabb04af0b841879a4de23fe9f9f8ea2588125127834319da21ef22ab530d8e39a2baba1b49043e9997dff9a20004fc548af5b09456b5eb3cd8f1d30a8 SHA512 ae2903e89233b7944e1ee1aa846897d30c352302bb8b064a31ab69237dc15ed0e451bba63db5530968e10f60b8da745bf7d7f1f130ff039d9aac2329f628f32f
diff --git a/dev-python/nuitka/nuitka-0.9.2.ebuild b/dev-python/nuitka/nuitka-0.9.2.ebuild
new file mode 100644
index 000000000000..3574a8ce15f5
--- /dev/null
+++ b/dev-python/nuitka/nuitka-0.9.2.ebuild
@@ -0,0 +1,49 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{7,8,9,10} )
+
+inherit distutils-r1 flag-o-matic optfeature
+
+DESCRIPTION="Python to native compiler"
+HOMEPAGE="https://www.nuitka.net"
+SRC_URI="https://nuitka.net/releases/${P^}.tar.gz"
+S="${WORKDIR}/${P^}"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~loong ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="dev-util/scons[${PYTHON_USEDEP}]"
+BDEPEND="
+ ${RDEPEND}
+ test? ( dev-util/ccache )
+"
+
+DOCS=( Changelog.pdf Developer_Manual.pdf README.pdf )
+
+distutils-r1_src_prepare() {
+ # remove vendored version of SCons that is Python2 only
+ # this should be removed when upstream removes support for Python2
+ rm -vR "${PN}/build/inline_copy/lib/scons-2.3.2/SCons" || die
+ eapply_user
+}
+
+python_install() {
+ distutils-r1_python_install
+ doman doc/nuitka3.1 doc/nuitka3-run.1
+}
+
+python_test() {
+ append-ldflags -Wl,--no-warn-search-mismatch
+ ./tests/basics/run_all.py search || die
+}
+
+pkg_postinst() {
+ optfeature "support for stand-alone executables" app-admin/chrpath
+}
diff --git a/dev-python/pika/Manifest b/dev-python/pika/Manifest
index 1dc78742df02..fbf8ea30e8d6 100644
--- a/dev-python/pika/Manifest
+++ b/dev-python/pika/Manifest
@@ -1 +1,2 @@
DIST pika-1.2.0.tar.gz 144945 BLAKE2B c8b163e4efeb4630da7f1901dfc087c2f3e53d5828eba7ee519e6f696d6c86d48d72c8c1ed98df9c3c0a6889265b072f5c709abec98522992ba699691e96acb1 SHA512 3ea4ecc3b2c722e8b1ec7d220e0cad7c7ed315a4800cbff6903d351885dc6a792318da1767f4bf1a4a40510be444ee18f3881f654c4ec84de8c3005aa2a404bf
+DIST pika-1.3.0.gh.tar.gz 316588 BLAKE2B 0d808b45aa72d7d01fde41d85fbe07c44f7c87dac0b5e6bd40f09264370eaec55bb8d003cae36b0b9835615ab6a94c6f227c499866db63f8fc1c8a4e9592d324 SHA512 ebc12faf2d180dbc226afa34a37492f121d3a01f8884b90bfb0f31972bfb14d8cbff3fa00c2350314f7da4471b34e261328e50f878cd9df67ab896478f28e731
diff --git a/dev-python/pika/pika-1.3.0.ebuild b/dev-python/pika/pika-1.3.0.ebuild
new file mode 100644
index 000000000000..cdd744ff4d01
--- /dev/null
+++ b/dev-python/pika/pika-1.3.0.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{7,8,9,10} )
+inherit distutils-r1
+
+DESCRIPTION="Pure-Python implementation of the AMQP"
+HOMEPAGE="
+ https://pika.readthedocs.io/
+ https://github.com/pika/pika/
+ https://pypi.org/project/pika/
+"
+SRC_URI="https://github.com/pika/pika/archive/${PV}.tar.gz -> ${P}.gh.tar.gz"
+
+LICENSE="MPL-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="test"
+RESTRICT="test !test? ( test )"
+PROPERTIES="test_network"
+
+BDEPEND="
+ test? (
+ dev-python/gevent[${PYTHON_USEDEP}]
+ dev-python/nose[${PYTHON_USEDEP}]
+ dev-python/nose2[${PYTHON_USEDEP}]
+ dev-python/twisted[${PYTHON_USEDEP}]
+ www-servers/tornado[${PYTHON_USEDEP}]
+ net-misc/rabbitmq-server
+ )
+"
+
+python_test() {
+ nose2 -v || die "Tests failed with ${EPYTHON}"
+}
+
+src_test() {
+ einfo "Starting rabbitmq"
+ local -x RABBITMQ_LOG_BASE="${T}/rabbitmq/log"
+ local -x RABBITMQ_MNESIA_BASE="${T}/rabbitmq/mnesia"
+ local -x RABBITMQ_LOGS="${T}/rabbitmq.log"
+ local -x RABBITMQ_PID_FILE="${T}/rabbitmq.pid"
+ local -x RABBITMQ_ENABLED_PLUGINS_FILE="${T}/rabbitmq/enabled_plugins"
+ /usr/libexec/rabbitmq/rabbitmq-server -p 5672:5672 &
+
+ einfo "Waiting for rabbitmq to fully load"
+ while ! { echo >/dev/tcp/localhost/5672 ; } &> /dev/null; do
+ sleep 1
+ done
+ einfo "rabbitmq is ready"
+
+ distutils-r1_src_test
+
+ einfo "Stopping rabbitmq"
+ kill "$(<"${RABBITMQ_PID_FILE}")" || die
+}
diff --git a/dev-python/pikepdf/Manifest b/dev-python/pikepdf/Manifest
index 28cc1462cb4a..08ee820e3f37 100644
--- a/dev-python/pikepdf/Manifest
+++ b/dev-python/pikepdf/Manifest
@@ -1,3 +1,4 @@
DIST pikepdf-5.1.3.tar.gz 2356111 BLAKE2B 5a9ec1d06f91be44b4eacc68d7d9449a2bb74b59214ce3d1b10d3cdf81533d38450a2150834d0008cf81475e07e4de241ea16e438450dff6dadd5c15da533223 SHA512 d38a6203b9a4150e4daf4980517b72b0e8e797c57bd82009d6f95a1275c0e6f767e415e14fe6d1614bd51edaf660febafd0f0b85cc46482125aeced8f6912285
DIST pikepdf-5.1.4.gh.tar.gz 2356865 BLAKE2B 7ebeedd7a2bb29371325b0cd6cb89cd56843eee1847cb26f0487d0114a3268e9a15171769abc16502c48684bb1bbe59050a2c692e17857f161ccd10a4663eeb0 SHA512 390c8f07bb5602715a061bf26b272cc8301dbb610ea06b8e5e5560282b7256c03e87717ab62a657c662ef51f549f5d52f0133f3806ff536451664ac93add625a
DIST pikepdf-5.1.5.gh.tar.gz 2356890 BLAKE2B e08f311ad2714f856eb29510e847ca2ddf2b3919cc372d4bedb59c7449be69574a32ea6cd23f51c34d56096bb8d2936f70c52a6a948d513277ff2a5d13e35725 SHA512 e6da0471abdd2a8133fb5789f72eb948e32eae24ee61956fb71f5e279151bc6df5d18ac9b6d73987fd9b891739892111df8c5f93c90ba8ae022dbb2821858350
+DIST pikepdf-5.2.0.gh.tar.gz 2359546 BLAKE2B 953a5268eb7dc52934967b593237bb3006ee35e7a1657c0721ef4cdc874c9c51d7920fbdb7e38f67e221b01536166b8811a95021668491e8c783f51a08f49144 SHA512 f36ec09017aeac547c2b4ef17de7513293e8bf243707cb9c0c03826973be266847d8514002be546ac958a735e29765df94efdaecde6ad5f901c329dadc3e9451
diff --git a/dev-python/pikepdf/pikepdf-5.2.0.ebuild b/dev-python/pikepdf/pikepdf-5.2.0.ebuild
new file mode 100644
index 000000000000..07b53e5bf4b4
--- /dev/null
+++ b/dev-python/pikepdf/pikepdf-5.2.0.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{7,8,9,10} )
+
+inherit distutils-r1
+
+MY_P=${P/_p/.post}
+DESCRIPTION="Python library to work with pdf files based on qpdf"
+HOMEPAGE="
+ https://github.com/pikepdf/pikepdf/
+ https://pypi.org/project/pikepdf/
+"
+SRC_URI="
+ https://github.com/${PN}/${PN}/archive/v${PV/_p/.post}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="MPL-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+DEPEND="
+ >=app-text/qpdf-10.6.2:0=
+"
+RDEPEND="
+ ${DEPEND}
+ >=dev-python/lxml-4.0[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ >=dev-python/pillow-9[${PYTHON_USEDEP}]
+ >=dev-python/pybind11-2.9.1[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ >=dev-python/pybind11-2.9.1[${PYTHON_USEDEP}]
+ >=dev-python/setuptools_scm-6.4[${PYTHON_USEDEP}]
+ dev-python/setuptools_scm_git_archive[${PYTHON_USEDEP}]
+ dev-python/tomli[${PYTHON_USEDEP}]
+ test? (
+ >=dev-python/attrs-20.2.0[${PYTHON_USEDEP}]
+ >=dev-python/hypothesis-5[${PYTHON_USEDEP}]
+ >=dev-python/pillow-5.0.0[${PYTHON_USEDEP},jpeg,lcms,tiff]
+ >=dev-python/psutil-5[${PYTHON_USEDEP}]
+ >=dev-python/pytest-6[${PYTHON_USEDEP}]
+ >=dev-python/pytest-timeout-1.4.2[${PYTHON_USEDEP}]
+ >=dev-python/python-dateutil-2.8.0[${PYTHON_USEDEP}]
+ >=dev-python/python-xmp-toolkit-2.0.1[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ sed -i -e '/-n auto/d' pyproject.toml || die
+ distutils-r1_src_prepare
+}
diff --git a/dev-python/pycapnp/Manifest b/dev-python/pycapnp/Manifest
deleted file mode 100644
index bd496a53f8ee..000000000000
--- a/dev-python/pycapnp/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST pycapnp-0.6.4.tar.gz 531404 BLAKE2B 035e0f37292275af8d5e292cb98f85f3d40ffe6284c0defecdb6d0c79afac97e4570e0042c0be6716a992ab904b844c9f046c5795b97cd8b7dd7625af1b2b219 SHA512 3f2c9d93bcf226fb39ef233b8b5fbc86af73d796986e82b897a571db5d8223fb4f65cc28a8bf4ed57b787b6e5defdca70388ac865f036daff48d6d6f93cbbfc3
diff --git a/dev-python/pycapnp/files/sdist.patch b/dev-python/pycapnp/files/sdist.patch
deleted file mode 100644
index e4ef16ec5699..000000000000
--- a/dev-python/pycapnp/files/sdist.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: pycapnp-0.6.4/setup.py
-===================================================================
---- pycapnp-0.6.4.orig/setup.py
-+++ pycapnp-0.6.4/setup.py
-@@ -49,7 +49,7 @@ try:
- changelog = '\nChangelog\n=============\n' + changelog
- long_description += changelog
- except (IOError, ImportError):
-- if sys.argv[2] == 'sdist':
-+ if len(sys.argv) > 2 and sys.argv[2] == 'sdist':
- raise
- long_description = ''
-
diff --git a/dev-python/pycapnp/metadata.xml b/dev-python/pycapnp/metadata.xml
deleted file mode 100644
index b24eabfb59cf..000000000000
--- a/dev-python/pycapnp/metadata.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
-<pkgmetadata>
- <maintainer type="person">
- <email>aballier@gentoo.org</email>
- <name>Alexis Ballier</name>
- <description>Python team can take the package if they wish.</description>
- </maintainer>
-
- <origin>gentoo-staging</origin>
-</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/pycapnp/pycapnp-0.6.4.ebuild b/dev-python/pycapnp/pycapnp-0.6.4.ebuild
deleted file mode 100644
index d68b7c6670d8..000000000000
--- a/dev-python/pycapnp/pycapnp-0.6.4.ebuild
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-PYTHON_COMPAT=( python3_{7,8,9,10} )
-
-inherit distutils-r1
-
-DESCRIPTION="Python wrapping of the Cap'n Proto library"
-HOMEPAGE="http://jparyani.github.io/pycapnp/ https://github.com/capnproto/pycapnp"
-SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64"
-IUSE=""
-
-RDEPEND=">=dev-libs/capnproto-0.6:="
-DEPEND="${RDEPEND}
- dev-python/cython[${PYTHON_USEDEP}]
-"
-PATCHES=( "${FILESDIR}/sdist.patch" )
-
-src_prepare() {
- distutils-r1_src_prepare
- # regen cython files
- rm -f capnp/lib/capnp.cpp || die
-
- # Need c++14 for capnp 0.7
- sed -e 's/std=c++11/std=c++14/g' \
- -i setup.py \
- -i buildutils/detect.py \
- -i capnp/*/* \
- || die
-}
diff --git a/dev-python/pyopenssl/pyopenssl-22.0.0.ebuild b/dev-python/pyopenssl/pyopenssl-22.0.0.ebuild
index 5ced33934aeb..692f1245227a 100644
--- a/dev-python/pyopenssl/pyopenssl-22.0.0.ebuild
+++ b/dev-python/pyopenssl/pyopenssl-22.0.0.ebuild
@@ -23,7 +23,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv x86"
+KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv ~s390 x86"
RDEPEND="
>=dev-python/cryptography-35.0[${PYTHON_USEDEP}]
diff --git a/dev-python/pypam/Manifest b/dev-python/pypam/Manifest
deleted file mode 100644
index 01642e48981b..000000000000
--- a/dev-python/pypam/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST PyPAM-0.5.0.tar.gz 105206 BLAKE2B 7778275cae11606ca8e522d2f99fb0558c55545cdaedb3ff7c55b4bb693ed3429e22566912f53c7795f73316bc45f1bfbdf5a53daec234dba87e1c141e2410f2 SHA512 9e0e919e34930d2283307cd6665c5287c664a76a5de56367bd975867ac26b376ae03d30cb3bc4a16390c977ca2690cfd2e90ac73dcc7886b8c999444da4a07e0
diff --git a/dev-python/pypam/files/PyPAM-0.5.0-dealloc.patch b/dev-python/pypam/files/PyPAM-0.5.0-dealloc.patch
deleted file mode 100644
index 596491c46bcd..000000000000
--- a/dev-python/pypam/files/PyPAM-0.5.0-dealloc.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-diff -up a/PAMmodule.c b/PAMmodule.c
---- a/PAMmodule.c
-+++ b/PAMmodule.c
-@@ -538,10 +538,11 @@ static void PyPAM_dealloc(PyPAMObject *s
- free(self->service);
- free(self->user);
- free(self->conv);
-- pam_end(self->pamh, PAM_SUCCESS);
-+ if (self->pamh)
-+ pam_end(self->pamh, PAM_SUCCESS);
- dlclose(self->dlh2);
- dlclose(self->dlh1);
-- PyMem_DEL(self);
-+ PyObject_Del(self);
- }
-
- static PyObject * PyPAM_getattr(PyPAMObject *self, char *name)
diff --git a/dev-python/pypam/files/PyPAM-0.5.0-memory-errors.patch b/dev-python/pypam/files/PyPAM-0.5.0-memory-errors.patch
deleted file mode 100644
index 6da3dd6eb7d6..000000000000
--- a/dev-python/pypam/files/PyPAM-0.5.0-memory-errors.patch
+++ /dev/null
@@ -1,128 +0,0 @@
-diff -up a/PAMmodule.c b/PAMmodule.c
---- a/PAMmodule.c
-+++ b/PAMmodule.c
-@@ -37,33 +37,48 @@ static void PyPAM_Err(PyPAMObject *self,
-
- err_msg = pam_strerror(self->pamh, result);
- error = Py_BuildValue("(si)", err_msg, result);
-- Py_INCREF(PyPAM_Error);
- PyErr_SetObject(PyPAM_Error, error);
-+ Py_XDECREF(error);
- }
-
- static int PyPAM_conv(int num_msg, const struct pam_message **msg,
- struct pam_response **resp, void *appdata_ptr)
- {
-- PyObject *args;
--
-+ PyObject *args, *msgList, *respList, *item;
-+ struct pam_response *response, *spr;
- PyPAMObject* self = (PyPAMObject *) appdata_ptr;
-+
- if (self->callback == NULL)
- return PAM_CONV_ERR;
-
- Py_INCREF(self);
-
-- PyObject* msgList = PyList_New(num_msg);
--
-+ msgList = PyList_New(num_msg);
-+ if (msgList == NULL) {
-+ Py_DECREF(self);
-+ return PAM_CONV_ERR;
-+ }
-+
- for (int i = 0; i < num_msg; i++) {
-- PyList_SetItem(msgList, i,
-- Py_BuildValue("(si)", msg[i]->msg, msg[i]->msg_style));
-+ item = Py_BuildValue("(si)", msg[i]->msg, msg[i]->msg_style);
-+ if (item == NULL) {
-+ Py_DECREF(msgList);
-+ Py_DECREF(self);
-+ return PAM_CONV_ERR;
-+ }
-+ PyList_SetItem(msgList, i, item);
- }
--
-+
- args = Py_BuildValue("(OO)", self, msgList);
-- PyObject* respList = PyEval_CallObject(self->callback, args);
-+ if (args == NULL) {
-+ Py_DECREF(self);
-+ Py_DECREF(msgList);
-+ return PAM_CONV_ERR;
-+ }
-+ respList = PyEval_CallObject(self->callback, args);
- Py_DECREF(args);
- Py_DECREF(self);
--
-+
- if (respList == NULL)
- return PAM_CONV_ERR;
-
-@@ -71,11 +86,15 @@ static int PyPAM_conv(int num_msg, const
- Py_DECREF(respList);
- return PAM_CONV_ERR;
- }
--
-- *resp = (struct pam_response *) malloc(
-+
-+ response = (struct pam_response *) malloc(
- PyList_Size(respList) * sizeof(struct pam_response));
-+ if (response == NULL) {
-+ Py_DECREF(respList);
-+ return PAM_CONV_ERR;
-+ }
-+ spr = response;
-
-- struct pam_response* spr = *resp;
- for (int i = 0; i < PyList_Size(respList); i++, spr++) {
- PyObject* respTuple = PyList_GetItem(respList, i);
- char* resp_text;
-@@ -85,7 +104,7 @@ static int PyPAM_conv(int num_msg, const
- free((--spr)->resp);
- --i;
- }
-- free(*resp);
-+ free(response);
- Py_DECREF(respList);
- return PAM_CONV_ERR;
- }
-@@ -95,7 +114,8 @@ static int PyPAM_conv(int num_msg, const
- }
-
- Py_DECREF(respList);
--
-+ *resp = response;
-+
- return PAM_SUCCESS;
- }
-
-@@ -122,7 +142,11 @@ static PyObject * PyPAM_pam(PyObject *se
- PyPAMObject_Type.ob_type = &PyType_Type;
- p = (PyPAMObject *) PyObject_NEW(PyPAMObject, &PyPAMObject_Type);
-
-+ if (p == NULL)
-+ return NULL;
-+
- if ((spc = (struct pam_conv *) malloc(sizeof(struct pam_conv))) == NULL) {
-+ Py_DECREF((PyObject *)p);
- PyErr_SetString(PyExc_MemoryError, "out of memory");
- return NULL;
- }
-@@ -455,9 +479,15 @@ static PyObject * PyPAM_getenvlist(PyObj
- }
-
- retval = PyList_New(0);
-+ if (retval == NULL)
-+ return NULL;
-
- while ((cp = *(result++)) != NULL) {
- entry = Py_BuildValue("s", cp);
-+ if (entry == NULL) {
-+ Py_DECREF(retval);
-+ return NULL;
-+ }
- PyList_Append(retval, entry);
- Py_DECREF(entry);
- }
diff --git a/dev-python/pypam/files/PyPAM-0.5.0-nofree.patch b/dev-python/pypam/files/PyPAM-0.5.0-nofree.patch
deleted file mode 100644
index f27e9d543d06..000000000000
--- a/dev-python/pypam/files/PyPAM-0.5.0-nofree.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-diff --git a/PAMmodule.c b/PAMmodule.c
-index 03cb799..a7ff8a5 100644
---- a/PAMmodule.c
-+++ b/PAMmodule.c
-@@ -24,8 +24,6 @@ typedef struct {
- char *service;
- char *user;
- PyObject *callback;
-- struct pam_response *response_data;
-- int response_len;
- PyObject *user_data;
- void *dlh1, *dlh2;
- } PyPAMObject;
-@@ -54,15 +52,6 @@ static int PyPAM_conv(int num_msg, const struct pam_message **msg,
-
- Py_INCREF(self);
-
-- if (NULL != self->response_data) {
-- for (int i = 0; i < self->response_len; i++) {
-- free(self->response_data[0].resp);
-- }
-- free(self->response_data);
-- self->response_data = NULL;
-- self->response_len = 0;
-- }
--
- PyObject* msgList = PyList_New(num_msg);
-
- for (int i = 0; i < num_msg; i++) {
-@@ -92,6 +81,10 @@ static int PyPAM_conv(int num_msg, const struct pam_message **msg,
- char* resp_text;
- int resp_retcode = 0;
- if (!PyArg_ParseTuple(respTuple, "si", &resp_text, &resp_retcode)) {
-+ while (i > 0) {
-+ free((--spr)->resp);
-+ --i;
-+ }
- free(*resp);
- Py_DECREF(respList);
- return PAM_CONV_ERR;
-@@ -100,10 +93,6 @@ static int PyPAM_conv(int num_msg, const struct pam_message **msg,
- spr->resp_retcode = resp_retcode;
- Py_DECREF(respTuple);
- }
--
-- // Save this so we can free it later.
-- self->response_data = *resp;
-- self->response_len = PyList_Size(respList);
-
- Py_DECREF(respList);
-
-@@ -144,8 +133,6 @@ static PyObject * PyPAM_pam(PyObject *self, PyObject *args)
- p->user = NULL;
- Py_INCREF(Py_None);
- p->callback = Py_None;
-- p->response_data = NULL;
-- p->response_len = 0;
- Py_INCREF(Py_None);
- p->user_data = Py_None;
-
diff --git a/dev-python/pypam/files/PyPAM-0.5.0-return-value.patch b/dev-python/pypam/files/PyPAM-0.5.0-return-value.patch
deleted file mode 100644
index 3773d6fafd20..000000000000
--- a/dev-python/pypam/files/PyPAM-0.5.0-return-value.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-diff -up a/PAMmodule.c b/PAMmodule.c
---- a/PAMmodule.c
-+++ b/PAMmodule.c
-@@ -248,7 +248,7 @@ static PyObject * PyPAM_setcred(PyObject
- result = pam_setcred(_self->pamh, flags);
-
- if (result != PAM_SUCCESS) {
-- PyErr_SetString(PyPAM_Error, "Not authenticated");
-+ PyPAM_Err(_self, result);
- return NULL;
- }
-
-@@ -270,7 +270,7 @@ static PyObject * PyPAM_acct_mgmt(PyObje
- result = pam_acct_mgmt(_self->pamh, flags);
-
- if (result != PAM_SUCCESS) {
-- PyErr_SetString(PyPAM_Error, "Not authenticated");
-+ PyPAM_Err(_self, result);
- return NULL;
- }
-
-@@ -292,7 +292,7 @@ static PyObject * PyPAM_chauthtok(PyObje
- result = pam_chauthtok(_self->pamh, flags);
-
- if (result != PAM_SUCCESS) {
-- PyErr_SetString(PyPAM_Error, "Not authenticated");
-+ PyPAM_Err(_self, result);
- return NULL;
- }
-
-@@ -314,7 +314,7 @@ static PyObject * PyPAM_open_session(PyO
- result = pam_open_session(_self->pamh, flags);
-
- if (result != PAM_SUCCESS) {
-- PyErr_SetString(PyPAM_Error, "Not authenticated");
-+ PyPAM_Err(_self, result);
- return NULL;
- }
-
-@@ -336,7 +336,7 @@ static PyObject * PyPAM_close_session(Py
- result = pam_close_session(_self->pamh, flags);
-
- if (result != PAM_SUCCESS) {
-- PyErr_SetString(PyPAM_Error, "Not authenticated");
-+ PyPAM_Err(_self, result);
- return NULL;
- }
-
-@@ -433,7 +433,7 @@ static PyObject * PyPAM_putenv(PyObject
- result = pam_putenv(_self->pamh, val);
-
- if (result != PAM_SUCCESS) {
-- PyErr_SetString(PyPAM_Error, "Not authenticated");
-+ PyPAM_Err(_self, result);
- return NULL;
- }
-
diff --git a/dev-python/pypam/files/PyPAM-python3-support.patch b/dev-python/pypam/files/PyPAM-python3-support.patch
deleted file mode 100644
index a4100953631f..000000000000
--- a/dev-python/pypam/files/PyPAM-python3-support.patch
+++ /dev/null
@@ -1,198 +0,0 @@
---- a/PAMmodule.c
-+++ b(PAMmodule.c
-@@ -15,6 +15,14 @@
- #include <stdio.h>
- #include <dlfcn.h>
-
-+#if PY_MAJOR_VERSION >= 3
-+#define IS_PY3K
-+#else
-+// include bytesobject.h to map PyBytes_* to PyString_*
-+#include <bytesobject.h>
-+#endif
-+
-+
- static PyObject *PyPAM_Error;
-
- typedef struct {
-@@ -28,7 +36,11 @@
- void *dlh1, *dlh2;
- } PyPAMObject;
-
-+#ifdef IS_PY3K
-+static PyTypeObject PyPAMObject_Type;
-+#else
- staticforward PyTypeObject PyPAMObject_Type;
-+#endif
-
- static void PyPAM_Err(PyPAMObject *self, int result)
- {
-@@ -139,7 +151,6 @@
- return NULL;
- }
-
-- PyPAMObject_Type.ob_type = &PyType_Type;
- p = (PyPAMObject *) PyObject_NEW(PyPAMObject, &PyPAMObject_Type);
-
- if (p == NULL)
-@@ -562,35 +573,44 @@
- PyObject_Del(self);
- }
-
--static PyObject * PyPAM_getattr(PyPAMObject *self, char *name)
--{
-- return Py_FindMethod(PyPAMObject_Methods, (PyObject *) self, name);
--}
--
- static PyObject * PyPAM_repr(PyPAMObject *self)
- {
- char buf[1024];
-
- snprintf(buf, 1024, "<pam object, service=\"%s\", user=\"%s\", conv=%p, pamh=%p>",
- self->service, self->user, self->conv, self->pamh);
-- return PyString_FromString(buf);
-+ return PyBytes_FromString(buf);
- }
-
- static PyTypeObject PyPAMObject_Type = {
-- PyObject_HEAD_INIT(0) /* Must fill in type value later */
-- 0,
-- "pam",
-- sizeof(PyPAMObject),
-- 0,
-- (destructor)PyPAM_dealloc, /*tp_dealloc*/
-- 0, /*tp_print*/
-- (getattrfunc)PyPAM_getattr, /*tp_getattr*/
-- 0, /*tp_setattr*/
-- 0, /*tp_compare*/
-- (reprfunc)PyPAM_repr, /*tp_repr*/
-- 0, /*tp_as_number*/
-- 0, /*tp_as_sequence*/
-- 0, /*tp_as_mapping*/
-+ PyVarObject_HEAD_INIT(NULL, 0) /* Must fill in type value later */
-+ "pam", /* tp_name */
-+ sizeof(PyPAMObject), /* tp_basicsize */
-+ 0, /* tp_itemsize */
-+ (destructor)PyPAM_dealloc, /* tp_dealloc */
-+ 0, /* tp_print */
-+ 0, /* tp_getattr */
-+ 0, /* tp_setattr */
-+ 0, /* tp_compare */
-+ (reprfunc)PyPAM_repr, /* tp_repr */
-+ 0, /* tp_as_number */
-+ 0, /* tp_as_sequence */
-+ 0, /* tp_as_mapping */
-+ 0, /* tp_hash */
-+ 0, /* tp_call */
-+ 0, /* tp_str */
-+ PyObject_GenericGetAttr, /* tp_getattro */
-+ 0, /* tp_setattro */
-+ 0, /* tp_as_buffer */
-+ Py_TPFLAGS_DEFAULT, /* tp_flags */
-+ "PyPAM", /* tp_doc */
-+ 0, /* tp_traverse */
-+ 0, /* tp_clear */
-+ 0, /* tp_richcompare */
-+ 0, /* tp_weaklistoffset */
-+ 0, /* tp_iter */
-+ 0, /* tp_iternext */
-+ PyPAMObject_Methods, /* tp_methods */
- };
-
- static PyMethodDef PyPAM_Methods[] = {
-@@ -607,7 +627,12 @@
- */
- static void insint(PyObject *d, char *name, int value)
- {
-- PyObject* v = PyInt_FromLong((long) value);
-+ PyObject* v;
-+#ifdef IS_PY3K
-+ v = PyLong_FromLong((long) value);
-+#else
-+ v = PyInt_FromLong((long) value);
-+#endif
-
- if (!v || PyDict_SetItemString(d, name, v))
- PyErr_Clear();
-@@ -615,19 +640,42 @@
- Py_XDECREF(v);
- }
-
-+#ifdef IS_PY3K
-+static struct PyModuleDef pamdef = {
-+ PyModuleDef_HEAD_INIT,
-+ "PAM",
-+ NULL,
-+ -1,
-+ PyPAM_Methods,
-+ NULL,
-+ NULL,
-+ NULL,
-+ NULL
-+};
-+
-+#define INITERROR return NULL
-+PyObject *PyInit_PAM(void)
-+
-+#else
-+#define INITERROR return
- void initPAM(void)
-+#endif
- {
- PyObject *m, *d;
-
-+#ifdef IS_PY3K
-+ m = PyModule_Create(&pamdef);
-+#else
- m = Py_InitModule("PAM", PyPAM_Methods);
-+#endif
- d = PyModule_GetDict(m);
-
- PyPAM_Error = PyErr_NewException("PAM.error", NULL, NULL);
- if (PyPAM_Error == NULL)
-- return;
-+ INITERROR;
- PyDict_SetItemString(d, "error", PyPAM_Error);
-
-- PyPAMObject_Type.ob_type = &PyType_Type;
-+ Py_TYPE(&PyPAMObject_Type) = &PyType_Type;
- PyPAMObject_Type.tp_doc = PyPAMObject_doc;
- Py_INCREF(&PyPAMObject_Type);
-
-@@ -692,4 +740,7 @@
- insint(d, "PAM_BINARY_PROMPT", PAM_BINARY_PROMPT);
- #endif
-
-+#ifdef IS_PY3K
-+ return m;
-+#endif
- }
---- a/setup.py
-+++ b/setup.py
-@@ -12,7 +12,7 @@
- license='LGPL',
- ext_modules=[
- Extension(
-- 'PAMmodule',
-+ 'PAM',
- ['PAMmodule.c'],
- libraries=['pam', 'pam_misc'],
- extra_compile_args = ['-std=c99'],
---- a/tests/PamTest.py
-+++ b/tests/PamTest.py
-@@ -41,13 +41,13 @@
- def test_userdata_default(self):
- """The default value for userdata is None."""
-
-- self.failUnless(self.pam.get_userdata() is None)
-+ self.assertTrue(self.pam.get_userdata() is None)
-
- def test_userdata(self):
- """The userdata getter and setter will store and return any data."""
-
- self.pam.set_userdata(1)
-- self.failUnless(self.pam.get_userdata() == 1)
-+ self.assertTrue(self.pam.get_userdata() == 1)
-
- def test_start(self):
- """pam.start() works as expected."""
diff --git a/dev-python/pypam/files/pypam-0.5.0-stricter.patch b/dev-python/pypam/files/pypam-0.5.0-stricter.patch
deleted file mode 100644
index 2ebe2d0af953..000000000000
--- a/dev-python/pypam/files/pypam-0.5.0-stricter.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-=== modified file 'PAMmodule.c'
---- a/PAMmodule.c
-+++ b/PAMmodule.c
-@@ -9,8 +9,9 @@
-
-+#include <Python.h>
- #include <security/pam_appl.h>
- #include <security/pam_misc.h>
--#include <Python.h>
- #include <stdio.h>
-+#include <string.h>
- #include <dlfcn.h>
-
- static PyObject *PyPAM_Error;
-
diff --git a/dev-python/pypam/metadata.xml b/dev-python/pypam/metadata.xml
deleted file mode 100644
index 83d00b14c8d4..000000000000
--- a/dev-python/pypam/metadata.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
-<pkgmetadata>
-
- <origin>gentoo-staging</origin>
-</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/pypam/pypam-0.5.0-r6.ebuild b/dev-python/pypam/pypam-0.5.0-r6.ebuild
deleted file mode 100644
index ee2be0816e98..000000000000
--- a/dev-python/pypam/pypam-0.5.0-r6.ebuild
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 1999-2021 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-DISTUTILS_USE_SETUPTOOLS=no
-MY_P="PyPAM-${PV}"
-PYTHON_COMPAT=( python3_{7,8,9,10} )
-inherit distutils-r1 flag-o-matic
-
-DESCRIPTION="Python Bindings for PAM (Pluggable Authentication Modules)"
-HOMEPAGE="http://www.pangalactic.org/PyPAM"
-SRC_URI="http://www.pangalactic.org/PyPAM/${MY_P}.tar.gz
- https://distfiles.gentoo.org/distfiles/ad/PyPAM-0.5.0.tar.gz"
-S="${WORKDIR}/${MY_P}"
-
-LICENSE="LGPL-2.1"
-SLOT="0"
-KEYWORDS="amd64 ~arm ~arm64 ~riscv x86"
-IUSE=""
-
-DEPEND=">=sys-libs/pam-0.64"
-RDEPEND="${DEPEND}"
-
-DOCS=( AUTHORS examples/pamtest.py )
-
-PATCHES=(
- # Pull patches from fedora.
- "${FILESDIR}/PyPAM-${PV}-dealloc.patch"
- "${FILESDIR}/PyPAM-${PV}-nofree.patch"
- "${FILESDIR}/PyPAM-${PV}-memory-errors.patch"
- "${FILESDIR}/PyPAM-${PV}-return-value.patch"
- "${FILESDIR}/PyPAM-python3-support.patch"
- # Fix a missing include.
- "${FILESDIR}/${P}-stricter.patch"
-)
-
-src_compile() {
- append-cflags -fno-strict-aliasing
- distutils-r1_src_compile
-}
-
-python_test() {
- "${PYTHON}" tests/PamTest.py
-}
diff --git a/dev-python/pypam/pypam-0.5.0-r7.ebuild b/dev-python/pypam/pypam-0.5.0-r7.ebuild
deleted file mode 100644
index 60ae93ba40e0..000000000000
--- a/dev-python/pypam/pypam-0.5.0-r7.ebuild
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 1999-2021 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_SETUPTOOLS=no
-MY_P="PyPAM-${PV}"
-PYTHON_COMPAT=( python3_{7,8,9,10} )
-inherit distutils-r1 flag-o-matic
-
-DESCRIPTION="Python Bindings for PAM (Pluggable Authentication Modules)"
-HOMEPAGE="http://www.pangalactic.org/PyPAM"
-SRC_URI="http://www.pangalactic.org/PyPAM/${MY_P}.tar.gz
- https://distfiles.gentoo.org/distfiles/ad/PyPAM-0.5.0.tar.gz"
-S="${WORKDIR}/${MY_P}"
-
-LICENSE="LGPL-2.1"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
-IUSE=""
-
-DEPEND=">=sys-libs/pam-0.64"
-RDEPEND="${DEPEND}"
-
-DOCS=( AUTHORS examples/pamtest.py )
-
-PATCHES=(
- # Pull patches from fedora.
- "${FILESDIR}/PyPAM-${PV}-dealloc.patch"
- "${FILESDIR}/PyPAM-${PV}-nofree.patch"
- "${FILESDIR}/PyPAM-${PV}-memory-errors.patch"
- "${FILESDIR}/PyPAM-${PV}-return-value.patch"
- "${FILESDIR}/PyPAM-python3-support.patch"
- # Fix a missing include.
- "${FILESDIR}/${P}-stricter.patch"
-)
-
-src_compile() {
- append-cflags -fno-strict-aliasing
- distutils-r1_src_compile
-}
-
-python_test() {
- "${PYTHON}" tests/PamTest.py || die
-}
diff --git a/dev-python/pypam/pypam-0.5.0-r8.ebuild b/dev-python/pypam/pypam-0.5.0-r8.ebuild
deleted file mode 100644
index d93dfde90116..000000000000
--- a/dev-python/pypam/pypam-0.5.0-r8.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-MY_P="PyPAM-${PV}"
-PYTHON_COMPAT=( python3_{7,8,9,10} )
-inherit distutils-r1
-
-DESCRIPTION="Python Bindings for PAM (Pluggable Authentication Modules)"
-HOMEPAGE="http://www.pangalactic.org/PyPAM"
-SRC_URI="http://www.pangalactic.org/PyPAM/${MY_P}.tar.gz
- https://distfiles.gentoo.org/distfiles/ad/PyPAM-0.5.0.tar.gz"
-S="${WORKDIR}/${MY_P}"
-
-LICENSE="LGPL-2.1"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
-IUSE=""
-
-DEPEND=">=sys-libs/pam-0.64"
-RDEPEND="${DEPEND}"
-
-DOCS=( AUTHORS examples/pamtest.py )
-
-PATCHES=(
- # Pull patches from fedora.
- "${FILESDIR}/PyPAM-${PV}-dealloc.patch"
- "${FILESDIR}/PyPAM-${PV}-nofree.patch"
- "${FILESDIR}/PyPAM-${PV}-memory-errors.patch"
- "${FILESDIR}/PyPAM-${PV}-return-value.patch"
- "${FILESDIR}/PyPAM-python3-support.patch"
- # Fix a missing include.
- "${FILESDIR}/${P}-stricter.patch"
-)
-
-python_test() {
- "${EPYTHON}" tests/PamTest.py || die
-}
diff --git a/dev-python/pypcap/Manifest b/dev-python/pypcap/Manifest
deleted file mode 100644
index 8ac8623068fe..000000000000
--- a/dev-python/pypcap/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST pypcap-1.2.3.tar.gz 151087 BLAKE2B c40e83d46b37deb4064877dfcf64582ff5da272a0d416b51faa43c4bd20625b473c624818aad70238f9429fac2455ae5b0516279faf1612f76f289b53d55417e SHA512 e4f701b6637fbcaf847d72eddc1ed344438008c2f8cbd334c9ce5fe17c9ec36f1f2cb1a146a218b8e464a7eb9a57217a8834a82a035ee96c3c1b56ec70e53bff
diff --git a/dev-python/pypcap/files/pypcap-1.2.3-mktemp.patch b/dev-python/pypcap/files/pypcap-1.2.3-mktemp.patch
deleted file mode 100644
index 8cf41ec28974..000000000000
--- a/dev-python/pypcap/files/pypcap-1.2.3-mktemp.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- a/pcap_ex.c
-+++ b/pcap_ex.c
-@@ -11,6 +11,7 @@
- # include <string.h>
- # include <signal.h>
- # include <unistd.h>
-+# include <stdlib.h>
- #endif
-
- #include <pcap.h>
-@@ -300,7 +300,7 @@
- char ebuf[PCAP_ERRBUF_SIZE];
- int ret = -1;
-
-- mktemp(path);
-+ mkstemp(path);
- if ((f = fopen(path, "w")) != NULL) {
- hdr.magic = 0xa1b2c3d4;
- hdr.version_major = PCAP_VERSION_MAJOR;
diff --git a/dev-python/pypcap/metadata.xml b/dev-python/pypcap/metadata.xml
deleted file mode 100644
index 0944828a52c8..000000000000
--- a/dev-python/pypcap/metadata.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
-<pkgmetadata>
- <maintainer type="project">
- <email>netmon@gentoo.org</email>
- <name>Gentoo network monitoring and analysis project</name>
- </maintainer>
- <maintainer type="project">
- <email>python@gentoo.org</email>
- <name>Python</name>
- </maintainer>
-
- <origin>gentoo-staging</origin>
-</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/pypcap/pypcap-1.2.3-r1.ebuild b/dev-python/pypcap/pypcap-1.2.3-r1.ebuild
deleted file mode 100644
index 8a31c6a24ec0..000000000000
--- a/dev-python/pypcap/pypcap-1.2.3-r1.ebuild
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 1999-2021 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-PYTHON_COMPAT=( python3_{7,8,9,10} )
-inherit distutils-r1
-
-DESCRIPTION="Simplified object-oriented Python extension module for libpcap"
-HOMEPAGE="https://github.com/pynetwork/pypcap https://pypi.org/project/pypcap/"
-SRC_URI="https://github.com/pynetwork/pypcap/archive/v${PV}.tar.gz -> ${P}.tar.gz"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~amd64 ~x86"
-
-BDEPEND="dev-python/cython[${PYTHON_USEDEP}]"
-RDEPEND="net-libs/libpcap"
-DEPEND="${RDEPEND}"
-
-PATCHES=(
- "${FILESDIR}"/${PN}-1.2.3-mktemp.patch
-)
-
-python_compile() {
- local -x CFLAGS="${CFLAGS} -fno-strict-aliasing"
-
- # Needed to gain Python 3.9 compatibility
- cython pcap.pyx || die "Failed to regenerate pcap.pyx"
-
- # Now build as usual
- distutils-r1_python_compile
-}
-
-python_test() {
- cd tests || die
- "${EPYTHON}" test.py || die
-}
diff --git a/dev-python/pyside2/files/pyside2-5.15.2-python311-fixups.patch b/dev-python/pyside2/files/pyside2-5.15.2-python311-fixups.patch
new file mode 100644
index 000000000000..d91b0b6806ca
--- /dev/null
+++ b/dev-python/pyside2/files/pyside2-5.15.2-python311-fixups.patch
@@ -0,0 +1,54 @@
+The Fedora / upstream fixes (shiboken2-5.15.2-python311.patch) end up breaking
+Python 3.8 compatibility (maybe 3.9 too, but didn't get that far).
+
+Wrap them with PY_VERSION_HEX for Python 3.11.
+--- a/libpyside/pysideqflags.cpp
++++ b/libpyside/pysideqflags.cpp
+@@ -187,7 +187,12 @@ namespace QFlags
+ }
+ newspec.slots = SbkNewQFlagsType_spec.slots;
+ PyTypeObject *type = (PyTypeObject *)SbkType_FromSpec(&newspec);
+- Py_SET_TYPE(type, &PyType_Type);
++
++ #if PY_VERSION_HEX < 0x030B00A1
++ Py_TYPE(type) = &PyType_Type;
++ #else
++ Py_SET_TYPE(type, &PyType_Type);
++ #endif
+
+ PySideQFlagsType *flagsType = reinterpret_cast<PySideQFlagsType *>(type);
+ PepType_PFTP(flagsType)->converterPtr = &PepType_PFTP(flagsType)->converter;
+--- a/libpyside/pysidesignal.cpp
++++ b/libpyside/pysidesignal.cpp
+@@ -162,7 +162,13 @@ PyTypeObject *PySideSignalTypeF(void)
+ if (!type) {
+ type = reinterpret_cast<PyTypeObject *>(SbkType_FromSpec(&PySideSignalType_spec));
+ PyTypeObject *hold = Py_TYPE(type);
+- Py_SET_TYPE(type, PySideMetaSignalTypeF());
++
++ #if PY_VERSION_HEX < 0x030B00A1
++ Py_TYPE(type) = PySideMetaSignalTypeF();
++ #else
++ Py_SET_TYPE(type, PySideMetaSignalTypeF());
++ #endif
++
+ Py_INCREF(Py_TYPE(type));
+ Py_DECREF(hold);
+ }
+--- a/libpyside/pysideweakref.cpp
++++ b/libpyside/pysideweakref.cpp
+@@ -90,7 +90,13 @@ PyObject *create(PyObject *obj, PySideWeakRefFunction func, void *userData)
+
+ if (Py_TYPE(PySideCallableObjectTypeF()) == 0)
+ {
+- Py_SET_TYPE(PySideCallableObjectTypeF(), &PyType_Type);
++
++ #if PY_VERSION_HEX < 0x030B00A1
++ Py_TYPE(PySideCallableObjectTypeF()) = &PyType_Type;
++ #else
++ Py_SET_TYPE(PySideCallableObjectTypeF(), &PyType_Type);
++ #endif
++
+ PyType_Ready(PySideCallableObjectTypeF());
+ }
+
diff --git a/dev-python/pyside2/files/pyside2-5.15.2-python311.patch b/dev-python/pyside2/files/pyside2-5.15.2-python311.patch
new file mode 100644
index 000000000000..70b07c4800fd
--- /dev/null
+++ b/dev-python/pyside2/files/pyside2-5.15.2-python311.patch
@@ -0,0 +1,41 @@
+https://src.fedoraproject.org/fork/pviktori/rpms/python-pyside2/raw/5da9902bd8732b49eb722d71f306d4ab197c84b8/f/python3.11.patch
+
+From 77fdd690ca14e97b4c800c4127362ca0c83a716a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
+Date: Thu, 9 Jun 2022 13:45:07 +0200
+Subject: [PATCH] Fix usage of Py_TYPE() for Python 3.11
+
+The macro was changed to a function, no longer allowing for assignment.
+--- a/libpyside/pysideqflags.cpp
++++ b/libpyside/pysideqflags.cpp
+@@ -187,7 +187,7 @@ namespace QFlags
+ }
+ newspec.slots = SbkNewQFlagsType_spec.slots;
+ PyTypeObject *type = (PyTypeObject *)SbkType_FromSpec(&newspec);
+- Py_TYPE(type) = &PyType_Type;
++ Py_SET_TYPE(type, &PyType_Type);
+
+ PySideQFlagsType *flagsType = reinterpret_cast<PySideQFlagsType *>(type);
+ PepType_PFTP(flagsType)->converterPtr = &PepType_PFTP(flagsType)->converter;
+--- a/libpyside/pysidesignal.cpp
++++ b/libpyside/pysidesignal.cpp
+@@ -162,7 +162,7 @@ PyTypeObject *PySideSignalTypeF(void)
+ if (!type) {
+ type = reinterpret_cast<PyTypeObject *>(SbkType_FromSpec(&PySideSignalType_spec));
+ PyTypeObject *hold = Py_TYPE(type);
+- Py_TYPE(type) = PySideMetaSignalTypeF();
++ Py_SET_TYPE(type, PySideMetaSignalTypeF());
+ Py_INCREF(Py_TYPE(type));
+ Py_DECREF(hold);
+ }
+--- a/libpyside/pysideweakref.cpp
++++ b/libpyside/pysideweakref.cpp
+@@ -90,7 +90,7 @@ PyObject *create(PyObject *obj, PySideWeakRefFunction func, void *userData)
+
+ if (Py_TYPE(PySideCallableObjectTypeF()) == 0)
+ {
+- Py_TYPE(PySideCallableObjectTypeF()) = &PyType_Type;
++ Py_SET_TYPE(PySideCallableObjectTypeF(), &PyType_Type);
+ PyType_Ready(PySideCallableObjectTypeF());
+ }
+
diff --git a/dev-python/pyside2/pyside2-5.15.2-r2.ebuild b/dev-python/pyside2/pyside2-5.15.2-r2.ebuild
new file mode 100644
index 000000000000..5e4bb9687a30
--- /dev/null
+++ b/dev-python/pyside2/pyside2-5.15.2-r2.ebuild
@@ -0,0 +1,216 @@
+# Copyright 1999-2022 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_{7,8,9,10} )
+
+inherit cmake 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 "PySide2/QtGui/CMakeLists.txt" and
+# "PySide2/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_P=pyside-setup-opensource-src-${PV}
+
+DESCRIPTION="Python bindings for the Qt framework"
+HOMEPAGE="https://wiki.qt.io/PySide2"
+SRC_URI="https://download.qt.io/official_releases/QtForPython/pyside2/PySide2-${PV}-src/${MY_P}.tar.xz"
+S="${WORKDIR}/${MY_P}/sources/pyside2"
+
+# See "sources/pyside2/PySide2/licensecomment.txt" for licensing details.
+LICENSE="|| ( GPL-2 GPL-3+ LGPL-3 )"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+IUSE="
+ 3d charts concurrent datavis designer gles2-only +gui help location
+ multimedia +network positioning printsupport qml quick script scripttools
+ scxml sensors speech sql svg test testlib webchannel webengine websockets
+ +widgets x11extras xml xmlpatterns
+"
+
+# Manually reextract these requirements on version bumps by running the
+# following one-liner from within "${S}":
+# $ grep 'set.*_deps' PySide2/Qt*/CMakeLists.txt
+# Note that the "designer" USE flag corresponds to the "Qt5UiTools" module.
+REQUIRED_USE="${PYTHON_REQUIRED_USE}
+ 3d? ( gui network )
+ charts? ( widgets )
+ datavis? ( gui )
+ designer? ( widgets xml )
+ gles2-only? ( gui )
+ help? ( widgets )
+ location? ( positioning )
+ multimedia? ( gui network )
+ printsupport? ( widgets )
+ qml? ( gui network )
+ quick? ( qml )
+ scripttools? ( gui script widgets )
+ speech? ( multimedia )
+ sql? ( widgets )
+ svg? ( widgets )
+ testlib? ( widgets )
+ webengine? (
+ location quick
+ widgets? ( gui network printsupport webchannel )
+ )
+ websockets? ( network )
+ widgets? ( gui )
+ x11extras? ( 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-2):5"
+
+RDEPEND="${PYTHON_DEPS}
+ >=dev-python/shiboken2-${PV}[${PYTHON_USEDEP}]
+ dev-qt/qtcore:5=
+ dev-qt/qtopengl:5=
+ dev-qt/qtserialport:5=
+ 3d? ( >=dev-qt/qt3d-${QT_PV}[qml?] )
+ charts? ( >=dev-qt/qtcharts-${QT_PV}[qml?] )
+ concurrent? ( >=dev-qt/qtconcurrent-${QT_PV} )
+ datavis? ( >=dev-qt/qtdatavis3d-${QT_PV}[qml?] )
+ designer? ( >=dev-qt/designer-${QT_PV} )
+ gui? ( >=dev-qt/qtgui-${QT_PV}[jpeg,gles2-only?] )
+ help? ( >=dev-qt/qthelp-${QT_PV} )
+ location? ( >=dev-qt/qtlocation-${QT_PV} )
+ multimedia? ( >=dev-qt/qtmultimedia-${QT_PV}[qml?,widgets?] )
+ network? ( >=dev-qt/qtnetwork-${QT_PV} )
+ positioning? ( >=dev-qt/qtpositioning-${QT_PV}[qml?] )
+ printsupport? ( >=dev-qt/qtprintsupport-${QT_PV} )
+ qml? ( >=dev-qt/qtdeclarative-${QT_PV}[widgets?] )
+ script? ( >=dev-qt/qtscript-${QT_PV} )
+ scxml? ( >=dev-qt/qtscxml-${QT_PV} )
+ sensors? ( >=dev-qt/qtsensors-${QT_PV}[qml?] )
+ speech? ( >=dev-qt/qtspeech-${QT_PV} )
+ sql? ( >=dev-qt/qtsql-${QT_PV} )
+ svg? ( >=dev-qt/qtsvg-${QT_PV} )
+ testlib? ( >=dev-qt/qttest-${QT_PV} )
+ webchannel? ( >=dev-qt/qtwebchannel-${QT_PV}[qml?] )
+ webengine? ( >=dev-qt/qtwebengine-${QT_PV}[widgets?] )
+ websockets? ( >=dev-qt/qtwebsockets-${QT_PV}[qml?] )
+ widgets? ( >=dev-qt/qtwidgets-${QT_PV} )
+ x11extras? ( >=dev-qt/qtx11extras-${QT_PV} )
+ xml? ( >=dev-qt/qtxml-${QT_PV} )
+ xmlpatterns? ( >=dev-qt/qtxmlpatterns-${QT_PV}[qml?] )
+"
+DEPEND="${RDEPEND}
+ test? ( x11-misc/xvfb-run )
+"
+
+PATCHES=(
+ "${FILESDIR}/${P}-python310.patch"
+ "${FILESDIR}/${P}-python311.patch"
+ "${FILESDIR}"/${PN}-5.15.2-python311-fixups.patch
+)
+
+src_configure() {
+ # See COLLECT_MODULE_IF_FOUND macros in CMakeLists.txt
+ local mycmakeargs=(
+ -DBUILD_TESTS=$(usex test)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt53DAnimation=$(usex !3d)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt53DCore=$(usex !3d)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt53DExtras=$(usex !3d)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt53DInput=$(usex !3d)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt53DLogic=$(usex !3d)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt53DRender=$(usex !3d)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5Charts=$(usex !charts)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5Concurrent=$(usex !concurrent)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5DataVisualization=$(usex !datavis)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5Designer=$(usex !designer)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5Gui=$(usex !gui)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5Help=$(usex !help)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5Location=$(usex !location)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5Multimedia=$(usex !multimedia)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5MultimediaWidgets=$(usex !multimedia yes $(usex !widgets))
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5Network=$(usex !network)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5Positioning=$(usex !positioning)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5PrintSupport=$(usex !printsupport)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5Qml=$(usex !qml)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5Quick=$(usex !quick)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5QuickWidgets=$(usex !quick yes $(usex !widgets))
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5Script=$(usex !script)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5ScriptTools=$(usex !scripttools)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5Scxml=$(usex !scxml)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5Sensors=$(usex !sensors)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5TextToSpeech=$(usex !speech)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5Sql=$(usex !sql)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5Svg=$(usex !svg)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5Test=$(usex !testlib)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5UiTools=$(usex !designer)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5WebChannel=$(usex !webchannel)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5WebEngine=$(usex !webengine)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5WebEngineCore=$(usex !webengine)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5WebEngineWidgets=$(usex !webengine yes $(usex !widgets))
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5WebSockets=$(usex !websockets)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5Widgets=$(usex !widgets)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5X11Extras=$(usex !x11extras)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5Xml=$(usex !xml)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5XmlPatterns=$(usex !xmlpatterns)
+ )
+
+ pyside2_configure() {
+ local mycmakeargs=(
+ "${mycmakeargs[@]}"
+ -DPYTHON_CONFIG_SUFFIX="-${EPYTHON}"
+ -DPYTHON_EXECUTABLE="${PYTHON}"
+ -DPYTHON_SITE_PACKAGES="$(python_get_sitedir)"
+ -DSHIBOKEN_PYTHON_SHARED_LIBRARY_SUFFIX="-${EPYTHON}"
+ )
+ cmake_src_configure
+ }
+ python_foreach_impl pyside2_configure
+}
+
+src_compile() {
+ python_foreach_impl cmake_src_compile
+}
+
+src_test() {
+ local -x PYTHONDONTWRITEBYTECODE
+ python_foreach_impl virtx cmake_src_test
+}
+
+src_install() {
+ pyside2_install() {
+ cmake_src_install
+ python_optimize
+
+ # Uniquify the shiboken2 pkgconfig dependency in the PySide2 pkgconfig
+ # file for the current Python target. See also:
+ # https://github.com/leycec/raiagent/issues/73
+ sed -i -e 's~^Requires: shiboken2$~&-'${EPYTHON}'~' \
+ "${ED}/usr/$(get_libdir)"/pkgconfig/${PN}.pc || die
+
+ # Uniquify the PySide2 pkgconfig file for the current Python target,
+ # preserving an unversioned "pyside2.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 pyside2_install
+
+ # CMakeLists.txt installs a "PySide2Targets-gentoo.cmake" file forcing
+ # downstream consumers (e.g., pyside2-tools) to target one
+ # "libpyside2-*.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~pyside2-python[[:digit:]]\+\.[[:digit:]]\+~pyside2${PYTHON_CONFIG_SUFFIX}~g' \
+ "${ED}/usr/$(get_libdir)/cmake/PySide2-${PV}/PySide2Targets-${CMAKE_BUILD_TYPE,,}.cmake" || die
+}
diff --git a/dev-python/shiboken2/files/shiboken2-5.15.2-python311-fixups.patch b/dev-python/shiboken2/files/shiboken2-5.15.2-python311-fixups.patch
new file mode 100644
index 000000000000..4ab435555591
--- /dev/null
+++ b/dev-python/shiboken2/files/shiboken2-5.15.2-python311-fixups.patch
@@ -0,0 +1,47 @@
+The Fedora / upstream fixes (shiboken2-5.15.2-python311.patch) end up breaking
+Python 3.8 compatibility (maybe 3.9 too, but didn't get that far).
+
+Wrap them with PY_VERSION_HEX for Python 3.11.
+--- a/libshiboken/basewrapper.cpp
++++ b/libshiboken/basewrapper.cpp
+@@ -366,7 +366,11 @@ SbkObjectType *SbkObject_TypeF(void)
+ static PyTypeObject *type = nullptr;
+ if (!type) {
+ type = reinterpret_cast<PyTypeObject *>(SbkType_FromSpec(&SbkObject_Type_spec));
+- Py_SET_TYPE(type, SbkObjectType_TypeF());
++ #if PY_VERSION_HEX < 0x030B00A1
++ Py_TYPE(type) = SbkObjectType_TypeF();
++ #else
++ Py_SET_TYPE(type, SbkObjectType_TypeF());
++ #endif
+ Py_INCREF(Py_TYPE(type));
+ type->tp_weaklistoffset = offsetof(SbkObject, weakreflist);
+ type->tp_dictoffset = offsetof(SbkObject, ob_dict);
+@@ -1110,7 +1114,11 @@ introduceWrapperType(PyObject *enclosingObject,
+ typeSpec->slots[0].pfunc = reinterpret_cast<void *>(baseType ? baseType : SbkObject_TypeF());
+
+ PyObject *heaptype = SbkType_FromSpecWithBases(typeSpec, baseTypes);
+- Py_SET_TYPE(heaptype, SbkObjectType_TypeF());
++ #if PY_VERSION_HEX < 0x030B00A1
++ Py_TYPE(heaptype) = SbkObjectType_TypeF();
++ #else
++ Py_SET_TYPE(heaptype, SbkObjectType_TypeF());
++ #endif
+ Py_INCREF(Py_TYPE(heaptype));
+ auto *type = reinterpret_cast<SbkObjectType *>(heaptype);
+ #if PY_VERSION_HEX < 0x03000000
+--- a/libshiboken/sbkenum.cpp
++++ b/libshiboken/sbkenum.cpp
+@@ -741,7 +741,11 @@ newTypeWithName(const char *name,
+ copyNumberMethods(numbers_fromFlag, newslots, &idx);
+ newspec.slots = newslots;
+ auto *type = reinterpret_cast<PyTypeObject *>(SbkType_FromSpec(&newspec));
+- Py_SET_TYPE(type, SbkEnumType_TypeF());
++ #if PY_VERSION_HEX < 0x030B00A1
++ Py_TYPE(type) = SbkEnumType_TypeF();
++ #else
++ Py_SET_TYPE(type, SbkEnumType_TypeF());
++ #endif
+
+ auto *enumType = reinterpret_cast<SbkEnumType *>(type);
+ PepType_SETP(enumType)->cppName = cppName;
diff --git a/dev-python/shiboken2/files/shiboken2-5.15.2-python311.patch b/dev-python/shiboken2/files/shiboken2-5.15.2-python311.patch
new file mode 100644
index 000000000000..063861a1cb1a
--- /dev/null
+++ b/dev-python/shiboken2/files/shiboken2-5.15.2-python311.patch
@@ -0,0 +1,125 @@
+https://src.fedoraproject.org/fork/pviktori/rpms/python-pyside2/raw/5da9902bd8732b49eb722d71f306d4ab197c84b8/f/python3.11.patch
+https://code.qt.io/cgit/pyside/pyside-setup.git/patch/?id=52df3b8f64
+https://code.qt.io/cgit/pyside/pyside-setup.git/patch/?id=73adefe22f
+https://code.qt.io/cgit/pyside/pyside-setup.git/patch/?id=a09a1db839
+
+From b64ad27d8dfeeecaaa8a98051252a32c9d998df4 Mon Sep 17 00:00:00 2001
+From: Friedemann Kleint <Friedemann.Kleint@qt.io>
+Date: Thu, 9 Jun 2022 16:50:41 +0200
+Subject: [PATCH] libshiboken: Fix a crash in Shiboken::Object::isValid() for
+ Python 3.11
+
+The function is passed type objects for class methods, which caused
+it to crash.
+
+The first clause did not catch this, and so it was cast to SbkObject
+below.
+
+Add a type check to prevent this.
+
+Pick-to: 6.3 6.2 5.15
+Task-number: PYSIDE-1960
+Change-Id: Icfdd6fefb7156ac5961444bd5395109849a1d66e
+Reviewed-by: Christian Tismer <tismer@stackless.com>
+Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
+--- a/libshiboken/basewrapper.cpp
++++ b/libshiboken/basewrapper.cpp
+@@ -1468,6 +1468,7 @@ bool setCppPointer(SbkObject *sbkObj, PyTypeObject *desiredType, void *cptr)
+ bool isValid(PyObject *pyObj)
+ {
+ if (!pyObj || pyObj == Py_None
++ || PyType_Check(pyObj) != 0
+ || Py_TYPE(Py_TYPE(pyObj)) != SbkObjectType_TypeF()) {
+ return true;
+ }
+--- a/libshiboken/basewrapper.cpp
++++ b/libshiboken/basewrapper.cpp
+@@ -366,7 +366,7 @@ SbkObjectType *SbkObject_TypeF(void)
+ static PyTypeObject *type = nullptr;
+ if (!type) {
+ type = reinterpret_cast<PyTypeObject *>(SbkType_FromSpec(&SbkObject_Type_spec));
+- Py_TYPE(type) = SbkObjectType_TypeF();
++ Py_SET_TYPE(type, SbkObjectType_TypeF());
+ Py_INCREF(Py_TYPE(type));
+ type->tp_weaklistoffset = offsetof(SbkObject, weakreflist);
+ type->tp_dictoffset = offsetof(SbkObject, ob_dict);
+@@ -1110,7 +1110,7 @@ introduceWrapperType(PyObject *enclosingObject,
+ typeSpec->slots[0].pfunc = reinterpret_cast<void *>(baseType ? baseType : SbkObject_TypeF());
+
+ PyObject *heaptype = SbkType_FromSpecWithBases(typeSpec, baseTypes);
+- Py_TYPE(heaptype) = SbkObjectType_TypeF();
++ Py_SET_TYPE(heaptype, SbkObjectType_TypeF());
+ Py_INCREF(Py_TYPE(heaptype));
+ auto *type = reinterpret_cast<SbkObjectType *>(heaptype);
+ #if PY_VERSION_HEX < 0x03000000
+--- a/libshiboken/sbkenum.cpp
++++ b/libshiboken/sbkenum.cpp
+@@ -741,7 +741,7 @@ newTypeWithName(const char *name,
+ copyNumberMethods(numbers_fromFlag, newslots, &idx);
+ newspec.slots = newslots;
+ auto *type = reinterpret_cast<PyTypeObject *>(SbkType_FromSpec(&newspec));
+- Py_TYPE(type) = SbkEnumType_TypeF();
++ Py_SET_TYPE(type, SbkEnumType_TypeF());
+
+ auto *enumType = reinterpret_cast<SbkEnumType *>(type);
+ PepType_SETP(enumType)->cppName = cppName;
+From a09a1db8391243e6bb290ee66bb6e3afbb114c61 Mon Sep 17 00:00:00 2001
+From: Friedemann Kleint <Friedemann.Kleint@qt.io>
+Date: Fri, 24 Jun 2022 09:22:01 +0200
+Subject: libshiboken: Fix crashes with static strings in Python 3.11
+
+In Python 3.11, some strings come with a refcount above decimal
+1000000000, apparently indicating that they are interned. Replace the
+mechanism by PyUnicode_InternFromString().
+
+Task-number: PYSIDE-1960
+Pick-to: 6.3 6.2 5.15
+Change-Id: I6436afee351f89da5814b5d6bc76970b1b508168
+Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
+Reviewed-by: Christian Tismer <tismer@stackless.com>
+Upstream: https://code.qt.io/cgit/pyside/pyside-setup.git/commit/?id=a09a1db8391243e6bb290ee66bb6e3afbb114c61
+
+--- a/libshiboken/sbkstring.cpp
++++ b/libshiboken/sbkstring.cpp
+@@ -5,8 +5,14 @@
+ #include "sbkstaticstrings_p.h"
+ #include "autodecref.h"
+
+-#include <vector>
+-#include <unordered_set>
++#if PY_VERSION_HEX >= 0x030B0000 || defined(Py_LIMITED_API)
++# define USE_INTERN_STRINGS
++#endif
++
++#ifndef USE_INTERN_STRINGS
++# include <vector>
++# include <unordered_set>
++#endif
+
+ namespace Shiboken
+ {
+@@ -179,6 +185,13 @@ Py_ssize_t len(PyObject *str)
+ // PyObject *attr = PyObject_GetAttr(obj, name());
+ //
+
++#ifdef USE_INTERN_STRINGS
++PyObject *createStaticString(const char *str)
++{
++ return PyUnicode_InternFromString(str);
++}
++#else
++
+ using StaticStrings = std::unordered_set<PyObject *>;
+
+ static void finalizeStaticStrings(); // forward
+@@ -225,6 +238,8 @@ PyObject *createStaticString(const char *str)
+ return result;
+ }
+
++#endif // !USE_INTERN_STRINGS
++
+ ///////////////////////////////////////////////////////////////////////
+ //
+ // PYSIDE-1019: Helper function for snake_case vs. camelCase names
+cgit v1.2.1
+
diff --git a/dev-python/shiboken2/shiboken2-5.15.2-r2.ebuild b/dev-python/shiboken2/shiboken2-5.15.2-r2.ebuild
new file mode 100644
index 000000000000..ef2bb49bbc6a
--- /dev/null
+++ b/dev-python/shiboken2/shiboken2-5.15.2-r2.ebuild
@@ -0,0 +1,172 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# TODO: Split the "/usr/bin/shiboken2" binding generator from the
+# "/usr/lib64/libshiboken2-*.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/shiboken2/faq.html#is-there-any-runtime-dependency-on-the-generated-binding
+# Once split, the PySide2 ebuild should be revised to require
+# "/usr/bin/shiboken2" at build time and "libshiboken2-*.so" at runtime.
+# TODO: Add PyPy once officially supported. See also:
+# https://bugreports.qt.io/browse/PYSIDE-535
+PYTHON_COMPAT=( python3_{7,8,9,10} )
+
+inherit cmake llvm python-r1 toolchain-funcs
+
+MY_P=pyside-setup-opensource-src-${PV}
+
+DESCRIPTION="Python binding generator for C++ libraries"
+HOMEPAGE="https://wiki.qt.io/PySide2"
+SRC_URI="https://download.qt.io/official_releases/QtForPython/pyside2/PySide2-${PV}-src/${MY_P}.tar.xz"
+S="${WORKDIR}/${MY_P}/sources/shiboken2"
+
+# The "sources/shiboken2/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 shiboken2 output to be
+# arbitrarily relicensed. (TODO)
+LICENSE="|| ( GPL-2 GPL-3+ LGPL-3 ) GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~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-2):5"
+
+# Since Clang is required at both build- and runtime, BDEPEND is omitted here.
+RDEPEND="${PYTHON_DEPS}
+ >=dev-qt/qtcore-${QT_PV}
+ sys-devel/clang:=
+ sys-devel/clang-runtime:=
+ docstrings? (
+ >=dev-libs/libxml2-2.6.32
+ >=dev-libs/libxslt-1.1.19
+ >=dev-qt/qtxml-${QT_PV}
+ >=dev-qt/qtxmlpatterns-${QT_PV}
+ )
+ numpy? ( dev-python/numpy[${PYTHON_USEDEP}] )
+ vulkan? ( dev-util/vulkan-headers )
+"
+DEPEND="${RDEPEND}
+ test? ( >=dev-qt/qttest-${QT_PV} )
+"
+
+DOCS=( AUTHORS )
+
+PATCHES=(
+ "${FILESDIR}/${P}-python310.patch"
+ "${FILESDIR}/${P}-numpy-1.23.patch"
+ "${FILESDIR}/${P}-python311.patch"
+ "${FILESDIR}"/${PN}-5.15.2-python311-fixups.patch
+)
+
+# Ensure the path returned by get_llvm_prefix() contains clang as well.
+llvm_check_deps() {
+ has_version "sys-devel/clang:${LLVM_SLOT}"
+}
+
+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
+
+ # Shiboken2 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
+
+ # Shiboken2 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.
+ # PySide2 does *NOT* care whether the end user has done so or not, as
+ # PySide2 unconditionally requires Clang in either case. See also:
+ # https://bugs.gentoo.org/619490
+ sed -i -e 's~(findClangBuiltInIncludesDir())~(QStringLiteral("'"${EPREFIX}"'/usr/lib/clang/'$(CPP=clang clang-fullversion)'/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)
+ )
+
+ shiboken2_configure() {
+ local mycmakeargs=(
+ "${mycmakeargs[@]}"
+ -DPYTHON_CONFIG_SUFFIX="-${EPYTHON}"
+ -DPYTHON_EXECUTABLE="${PYTHON}"
+ -DUSE_PYTHON_VERSION="${EPYTHON#python}"
+ )
+ # CMakeLists.txt expects LLVM_INSTALL_DIR as an environment variable.
+ local -x LLVM_INSTALL_DIR="$(get_llvm_prefix)"
+ cmake_src_configure
+ }
+ python_foreach_impl shiboken2_configure
+}
+
+src_compile() {
+ python_foreach_impl cmake_src_compile
+}
+
+src_test() {
+ python_foreach_impl cmake_src_test
+}
+
+src_install() {
+ shiboken2_install() {
+ cmake_src_install
+ python_optimize
+
+ # Uniquify the "shiboken2" executable for the current Python target,
+ # preserving an unversioned "shiboken2" file arbitrarily associated
+ # with the last Python target.
+ cp "${ED}"/usr/bin/${PN}{,-${EPYTHON}} || die
+
+ # Uniquify the Shiboken2 pkgconfig file for the current Python target,
+ # preserving an unversioned "shiboken2.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 shiboken2_install
+
+ # CMakeLists.txt installs a "Shiboken2Targets-gentoo.cmake" file forcing
+ # downstream consumers (e.g., PySide2) to target one "libshiboken2-*.so"
+ # library and one "shiboken2" 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~shiboken2-python[[:digit:]]\+\.[[:digit:]]\+~shiboken2${PYTHON_CONFIG_SUFFIX}~g' \
+ -e 's~/bin/shiboken2~/bin/shiboken2${PYTHON_CONFIG_SUFFIX}~g' \
+ "${ED}/usr/$(get_libdir)"/cmake/Shiboken2-${PV}/Shiboken2Targets-${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/sphinx-basic-ng/sphinx-basic-ng-0.0.1_alpha11.ebuild b/dev-python/sphinx-basic-ng/sphinx-basic-ng-0.0.1_alpha11.ebuild
index b880f36b34fa..e7caea89d1dc 100644
--- a/dev-python/sphinx-basic-ng/sphinx-basic-ng-0.0.1_alpha11.ebuild
+++ b/dev-python/sphinx-basic-ng/sphinx-basic-ng-0.0.1_alpha11.ebuild
@@ -22,7 +22,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~riscv ~x86"
+KEYWORDS="~amd64 ~ia64 ~riscv ~s390 ~x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/sphinx-pytest/sphinx-pytest-0.0.4.ebuild b/dev-python/sphinx-pytest/sphinx-pytest-0.0.4.ebuild
index 05d7d448b85e..3c936200e6d4 100644
--- a/dev-python/sphinx-pytest/sphinx-pytest-0.0.4.ebuild
+++ b/dev-python/sphinx-pytest/sphinx-pytest-0.0.4.ebuild
@@ -20,7 +20,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~riscv ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~riscv ~s390 ~x86"
RDEPEND="
dev-python/pytest[${PYTHON_USEDEP}]
diff --git a/dev-python/tempest/Manifest b/dev-python/tempest/Manifest
index af735d4eee9b..67f06a5a5fba 100644
--- a/dev-python/tempest/Manifest
+++ b/dev-python/tempest/Manifest
@@ -1,2 +1,3 @@
DIST tempest-30.1.0.tar.gz 1112219 BLAKE2B 864dbd01a843b9c480656788a3a673ea6c089af8bf67e66837fdb77ee46eef00f2caed3ee08722b113db45d1e39fee167dcb344676543ec82fe5f022ae8c713d SHA512 3c4469d5ab590fe2185dbe77cc1ca1179022b75b4da9f2fe0d43956b14598d56328dd4e62e8445197b25f93017c812edd75cb9fef2d81ae183aea478fd817b15
DIST tempest-31.0.0.tar.gz 1110051 BLAKE2B 9c3c87db902220e3e8de6e88e0d282eae07cb3b155eaa415156e83aff9d52523416fbfcae5b49a335eb81ae3488e4e2aa4cf86d10a35820aa3e24184466576d8 SHA512 9f8cfae192a5fe0fd5d6c1659ae42b5f2042392945e2c91b3bb96cecc412a1e6e582bc46ab481452012dc2440d13bc8298ca875587d5b1592dc95971d9adf4f0
+DIST tempest-31.1.0.tar.gz 1114805 BLAKE2B 29c0f55db6812a4da6bdbce1159a7e5b87ef0caf4b21e0810b6c941633182da12b72675d86ec0f9f2b844d91258439305c059f6f03ed09d45f7758426c6c096f SHA512 56726d5c0aa8d576e3dc200d30a370be08fec178f357381f00ca08883ab1ccf56fbfaa53ec9322a5f4eb5383e0572f25d8cd277848bc0c3a3d12e57722860a2b
diff --git a/dev-python/tempest/tempest-31.1.0.ebuild b/dev-python/tempest/tempest-31.1.0.ebuild
new file mode 100644
index 000000000000..717a16a2484c
--- /dev/null
+++ b/dev-python/tempest/tempest-31.1.0.ebuild
@@ -0,0 +1,73 @@
+# Copyright 2021-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{7,8,9,10} )
+
+inherit distutils-r1
+
+DESCRIPTION="OpenStack Integration Testing"
+HOMEPAGE="
+ https://pypi.org/project/tempest/
+ https://docs.openstack.org/tempest/latest/
+ https://launchpad.net/tempest/
+"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+
+RDEPEND="
+ >dev-python/pbr-2.1.0[${PYTHON_USEDEP}]
+ >dev-python/cliff-2.9.0[${PYTHON_USEDEP}]
+ >=dev-python/jsonschema-3.2.0[${PYTHON_USEDEP}]
+ >=dev-python/testtools-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/paramiko-2.7.0[${PYTHON_USEDEP}]
+ >=dev-python/netaddr-0.7.18[${PYTHON_USEDEP}]
+ >=dev-python/oslo-concurrency-3.26.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-config-5.2.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-log-3.36.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-utils-4.7.0[${PYTHON_USEDEP}]
+ >=dev-python/fixtures-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/pyyaml-3.12[${PYTHON_USEDEP}]
+ >=dev-python/subunit-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/stevedore-1.20.0[${PYTHON_USEDEP}]
+ >=dev-python/prettytable-0.7.1[${PYTHON_USEDEP}]
+ >=dev-python/urllib3-1.21.1[${PYTHON_USEDEP}]
+ >=dev-python/debtcollector-1.2.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ >dev-python/pbr-2.1.0[${PYTHON_USEDEP}]
+ test? (
+ >=dev-python/oslotest-3.2.0[${PYTHON_USEDEP}]
+ dev-python/stestr[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests unittest
+
+src_prepare() {
+ # Small subset of tests, which fail as result of not using specific
+ # testing environment. Others expect to run suite using stestr.
+ rm -r tempest/tests/lib/services/volume/v3/ || die
+ rm tempest/tests/test_list_tests.py || die
+ rm tempest/tests/lib/cmd/test_check_uuid.py || die
+
+ # remove dep on hacking
+ rm tempest/tests/test_hacking.py || die
+
+ distutils-r1_src_prepare
+}
+
+python_compile() {
+ distutils-r1_python_compile
+ mv "${BUILD_DIR}"/install/{usr/,}etc || die
+}
+
+python_test() {
+ local -x OS_LOG_CAPTURE=1 OS_STDOUT_CAPTURE=1 OS_STDERR_CAPTURE=1 OS_TEST_TIMEOUT=320
+ eunittest -b -s tempest/tests -t .
+}