diff --git a/acct-group/privacyidea/Manifest b/acct-group/privacyidea/Manifest
new file mode 100644
index 0000000..9255eee
--- /dev/null
+++ b/acct-group/privacyidea/Manifest
@@ -0,0 +1,2 @@
+EBUILD privacyidea-0.ebuild 200 BLAKE2B 1ce13a3a27ae58cbb366904dd7ea183075b127153fe37f447f86d9e3fd5d83ca4dec4a84c2026a909fc30b5cbbc7e25511374047f55e3d4916a42ed0252151df SHA512 01ecc188ef06a84ed841a53de91d12287c90eba815ca0367fe685e8b20d0b11dcd72a22050b58f7b1fdb61d9fbea959f8a0a2b5d62dcbf0d863e623f72ec3940
+MISC metadata.xml 168 BLAKE2B 2e0e000b4c3b6ca04c12903fdbe278415c05a822623c52e9aa95cbbf3d50bcb1246b7edbda7d2f6b559af8950c6374e6e0a69b76319964cfe686bf50b0604a57 SHA512 4dcf45d1809e8390a2d8155c8ebfe0dd610203e392aeab0ccd8a10f42cc8532a4925eff32b35e7a6c35598a4efd288229034ec0732299dbd8cfa0acff705fed3
diff --git a/acct-group/privacyidea/metadata.xml b/acct-group/privacyidea/metadata.xml
new file mode 100644
index 0000000..115e9d6
--- /dev/null
+++ b/acct-group/privacyidea/metadata.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/acct-group/privacyidea/privacyidea-0.ebuild b/acct-group/privacyidea/privacyidea-0.ebuild
new file mode 100644
index 0000000..72e921f
--- /dev/null
+++ b/acct-group/privacyidea/privacyidea-0.ebuild
@@ -0,0 +1,10 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit acct-group
+
+DESCRIPTION="A group for www-apps/privcyidea"
+
+ACCT_GROUP_ID="605"
diff --git a/acct-user/privacyidea/Manifest b/acct-user/privacyidea/Manifest
new file mode 100644
index 0000000..115046f
--- /dev/null
+++ b/acct-user/privacyidea/Manifest
@@ -0,0 +1,2 @@
+EBUILD privacyidea-0.ebuild 249 BLAKE2B 51ab25e79d7e3e89e06b24ef1deab7029b7f47d53e8e140f5e570d295fd38b4b688a775d94b29710ac3edbb8fa7e71b3e6ab779fe72a03a8ecf4caefe4c3a214 SHA512 e5d9fc055a544a005db08aabc54ee0905d8197cfc9ba2e7f9c08e23e039c63b9b4d250cc659db1a48e65983619b398fcba0db57cb5b55e73d1c23e1054e7cee2
+MISC metadata.xml 168 BLAKE2B 2e0e000b4c3b6ca04c12903fdbe278415c05a822623c52e9aa95cbbf3d50bcb1246b7edbda7d2f6b559af8950c6374e6e0a69b76319964cfe686bf50b0604a57 SHA512 4dcf45d1809e8390a2d8155c8ebfe0dd610203e392aeab0ccd8a10f42cc8532a4925eff32b35e7a6c35598a4efd288229034ec0732299dbd8cfa0acff705fed3
diff --git a/acct-user/privacyidea/metadata.xml b/acct-user/privacyidea/metadata.xml
new file mode 100644
index 0000000..115e9d6
--- /dev/null
+++ b/acct-user/privacyidea/metadata.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/acct-user/privacyidea/privacyidea-0.ebuild b/acct-user/privacyidea/privacyidea-0.ebuild
new file mode 100644
index 0000000..002cf56
--- /dev/null
+++ b/acct-user/privacyidea/privacyidea-0.ebuild
@@ -0,0 +1,12 @@
+# Copyright 2019-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit acct-user
+
+ACCT_USER_ID="605"
+ACCT_USER_GROUPS=( "privacyidea" )
+ACCT_USER_HOME="/var/lib/privacyidea/home"
+
+acct-user_add_deps
diff --git a/dev-python/click/Manifest b/dev-python/click/Manifest
new file mode 100644
index 0000000..397daed
--- /dev/null
+++ b/dev-python/click/Manifest
@@ -0,0 +1,2 @@
+DIST click-7.1.2.tar.gz 295757 BLAKE2B aea76d5378cfa49fe58a83132737d609d48b3d3a71ec65c0a8a144c7a0e244b5bdf0196ffe2150889b82edda20c3f1faa3c84a227fc9ef459a5a9646cff86129 SHA512 d0caf2fb0a258774a18a7b8f83bdfa73abeb70196a70b45a6cc35befaeb862d068d2f2cce4e27201ab2e3adcd02e7e2f099d6c37c497a507010eefa10ad16eba
+EBUILD click-7.1.2-r1.ebuild 764 BLAKE2B d1d38b50a150be24f89380cf98233f141ca96c91e6dbc64153c8cfd6326b98098a174fb7ee58fb120957509b85262a056d7837a9e9f61639abb10d6707f6845a SHA512 ac8ba661a0f1664960eaf8748cfa1118e851ee5b2a4cd924b37742d6d09009dc7e4eaef10b08f1d796d47cdce0ba3483fc2809eefe0717111339327b14585c22
diff --git a/dev-python/click/click-7.1.2-r1.ebuild b/dev-python/click/click-7.1.2-r1.ebuild
new file mode 100644
index 0000000..edce255
--- /dev/null
+++ b/dev-python/click/click-7.1.2-r1.ebuild
@@ -0,0 +1,27 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{7..10} pypy3 )
+
+inherit distutils-r1
+
+DESCRIPTION="A Python package for creating beautiful command line interfaces"
+SRC_URI="https://github.com/pallets/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+HOMEPAGE="https://palletsprojects.com/p/click/ https://pypi.org/project/click/"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos"
+IUSE="examples"
+
+distutils_enable_sphinx docs \
+ '>=dev-python/docutils-0.14' \
+ dev-python/pallets-sphinx-themes
+distutils_enable_tests pytest
+
+python_install_all() {
+ use examples && dodoc -r examples
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/flask-migrate/Manifest b/dev-python/flask-migrate/Manifest
new file mode 100644
index 0000000..d26db84
--- /dev/null
+++ b/dev-python/flask-migrate/Manifest
@@ -0,0 +1,4 @@
+DIST Flask-Migrate-2.6.0.tar.gz 12671 BLAKE2B d8d1ab6fc7c077cc9c6dfe5de26c7ab0f2bcb45455f28fdb1bc03b6ac23a063f5c4103d57050a3e0818debd59cd9927ed4833d1cd924a2147ae16f766c045d82 SHA512 91ce86079b8f438357e5bffa809dd737c26ca5cb553ac9bd315ce5039112842e2a52fbf3cec3f6548eb13def8d641be2a4e12dcbe01995b1ab073af989dbbb68
+DIST Flask-Migrate-2.7.0.tar.gz 12627 BLAKE2B 2ad252ef6338bd45c2df4cf95ebaa137e43b5cce7780ccafcc9a0d972473ab230acae03ca14c1dd1f500ceb4c5fa1d0ed6a892bf7e2317c9dfd530a59c025da3 SHA512 9d5f5845c3483bc2ab1271431312331bbc45aeac5bd9464f99898e16e32d9ba124cb11f11fae59a29bf1d6e3dba5f2ca922ae32c2548a5d67d9286ca17d475ab
+EBUILD flask-migrate-2.6.0.ebuild 768 BLAKE2B 40f6e764c9da95a698ecf939219c3d26d811caeb08421e3423a75e0f603aa613244ca3db06ea39b3e46d2ebbd4653bacaa30b82877de4b614b1ff5adbed10f2a SHA512 87adf4597b2a48653a04236a13df3dc48df7520d876fc5f2ecf9febce6e2443f7f4c0e6f8dec1ef1f5572b4d24e0ecee3edf50201c72e9250e24127b9cabe7c1
+EBUILD flask-migrate-2.7.0.ebuild 770 BLAKE2B 4fa4e3a5657edaebb9ecf2a602473837fca4f48e0c0a759c360c7c27e2262cdd2348e7facf6f6931edbbcde01d62591b248bab7ea75ec4ca9f89463def757322 SHA512 82e3f60dcae9b15e1bf8994ff66cb4363d259cffaa9ea1d5478a05621ef97a76196fe191d68788504feedc29cbaf1e2f4f31c0dd29f07237b57b6c663dde3ed1
diff --git a/dev-python/flask-migrate/flask-migrate-2.6.0.ebuild b/dev-python/flask-migrate/flask-migrate-2.6.0.ebuild
new file mode 100644
index 0000000..b32f840
--- /dev/null
+++ b/dev-python/flask-migrate/flask-migrate-2.6.0.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{7..11} )
+inherit distutils-r1
+
+MY_PN="Flask-Migrate"
+MY_P="${MY_PN}-${PV}"
+
+DESCRIPTION="SQLAlchemy database migrations for Flask applications using Alembic"
+HOMEPAGE="https://pypi.org/project/Flask-Migrate/"
+SRC_URI="mirror://pypi/${MY_P:0:1}/${MY_PN}/${MY_P}.tar.gz"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="amd64 x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/alembic-0.7[${PYTHON_USEDEP}]
+ >=dev-python/flask-0.9[${PYTHON_USEDEP}]
+ >=dev-python/flask-sqlalchemy-1.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? ( >=dev-python/flask-script-0.6[${PYTHON_USEDEP}] )
+"
+
+distutils_enable_tests setup.py
diff --git a/dev-python/flask-migrate/flask-migrate-2.7.0.ebuild b/dev-python/flask-migrate/flask-migrate-2.7.0.ebuild
new file mode 100644
index 0000000..34e5844
--- /dev/null
+++ b/dev-python/flask-migrate/flask-migrate-2.7.0.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{7..11} )
+inherit distutils-r1
+
+MY_PN="Flask-Migrate"
+MY_P="${MY_PN}-${PV}"
+
+DESCRIPTION="SQLAlchemy database migrations for Flask applications using Alembic"
+HOMEPAGE="https://pypi.org/project/Flask-Migrate/"
+SRC_URI="mirror://pypi/${MY_P:0:1}/${MY_PN}/${MY_P}.tar.gz"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/alembic-0.7[${PYTHON_USEDEP}]
+ >=dev-python/flask-0.9[${PYTHON_USEDEP}]
+ >=dev-python/flask-sqlalchemy-1.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? ( >=dev-python/flask-script-0.6[${PYTHON_USEDEP}] )
+"
+
+distutils_enable_tests setup.py
diff --git a/dev-python/flask-versioned/Manifest b/dev-python/flask-versioned/Manifest
index f7e02ce..543528e 100644
--- a/dev-python/flask-versioned/Manifest
+++ b/dev-python/flask-versioned/Manifest
@@ -1,2 +1,2 @@
DIST Flask-Versioned-0.9.4-20101221.tar.gz 2273 BLAKE2B 67f527fed308cf4514b8ea517d73e4b70d3e14551a90da3eee8da3e8e151af0cb69cb15435f3c45ad35f376c2f0baea44f789573c7d28edb17e115aa547517fc SHA512 465ea74e0b50e709e689adb4fbe413308f51aa1c3f5df33706030cfd9cd118e021e5ca3dbb419c5dcd3bfb39333e70cbece94dd910c873e507b7155500a01aa5
-EBUILD flask-versioned-0.9.4.ebuild 854 BLAKE2B f7e6924aecd0a6646c602fd049cad84d9090ff5b0471ca16ccbc5a5ec7e59cfc8889d4c73644e9003dc39e2b1454f52b0f5f114920b63879b30fe9cd8010ff06 SHA512 19b06620b516870303755cda3224d54365bb869d9d02289ba4515cabb987290ef5700b845c1ef92d28aebae14f9e6fda585651e367a4072eb884097c08527d10
+EBUILD flask-versioned-0.9.4.ebuild 887 BLAKE2B 279e9a8c4497f0932e1228d2692deae15a2826bcb65487a46efd12c8567e75066fbcf71a3c0aa4833afd928f6a615dbd1a7ba0aad702d85e8a0dded09b7e6c67 SHA512 70364b1747a09f3f06e2f2574c36d0991e215eb9f73b294ffd95ac631c27aca4d5b90e49d24da4a66387d830dcf99ead835d9a745bfc4b3b4bddfd3682e8a449
diff --git a/dev-python/flask-versioned/flask-versioned-0.9.4.ebuild b/dev-python/flask-versioned/flask-versioned-0.9.4.ebuild
index af70fee..ac1a107 100644
--- a/dev-python/flask-versioned/flask-versioned-0.9.4.ebuild
+++ b/dev-python/flask-versioned/flask-versioned-0.9.4.ebuild
@@ -1,9 +1,11 @@
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
-EAPI=7
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8..11} )
-PYTHON_COMPAT=( python3_{6,7,8} )
inherit distutils-r1
MY_PN="Flask-Versioned"
diff --git a/dev-python/flask/Manifest b/dev-python/flask/Manifest
new file mode 100644
index 0000000..b4035b7
--- /dev/null
+++ b/dev-python/flask/Manifest
@@ -0,0 +1,2 @@
+DIST Flask-1.1.4.tar.gz 635920 BLAKE2B c1f19e7449177ecf6e901d5932ad25cbe866ff53b9323f717541922b1ea5b10203ff07630fcf3eabaedd9b6a24ef031ad2aaa2e2f759925363bebfa7e5d967da SHA512 6f427a1264921b8560446afacee2757d16de0dc22d6ed249b7bc5d6f50f3af50c89b79ce900d75b41af4befc53910f2b532c2e280de42837e2133acb6b1bd80d
+EBUILD flask-1.1.4.ebuild 1331 BLAKE2B fb28733820d76464498d0bb61e42951342356c6956a2df5f426ca5559750c67f56f3d04b2b371517be6c0aa11027191d7fad8f165382af5b44f665f6bca7f120 SHA512 f8bde0e7632f9e04c550cf6b6bb0eb1c7c8aa990483ed18774b244eec3bab919c5112a6da6344cb03c8381689cb6452298adc7ffe5c4ed1b93f85e5f38eb6216
diff --git a/dev-python/flask/flask-1.1.4.ebuild b/dev-python/flask/flask-1.1.4.ebuild
new file mode 100644
index 0000000..bbfd892
--- /dev/null
+++ b/dev-python/flask/flask-1.1.4.ebuild
@@ -0,0 +1,50 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{7..11} pypy3 )
+inherit distutils-r1
+
+DESCRIPTION="A microframework based on Werkzeug, Jinja2 and good intentions"
+HOMEPAGE="https://github.com/pallets/flask/"
+MY_PN="Flask"
+MY_P="${MY_PN}-${PV}"
+if [[ ${PV} == *9999* ]]; then
+ EGIT_REPO_URI="https://github.com/mitsuhiko/flask.git"
+ inherit git-r3
+else
+ SRC_URI="mirror://pypi/${MY_P:0:1}/${MY_PN}/${MY_P}.tar.gz"
+ KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos"
+ S="${WORKDIR}/${MY_P}"
+fi
+
+LICENSE="BSD"
+SLOT="0"
+IUSE="examples test"
+RESTRICT="!test? ( test )"
+
+RDEPEND=" ${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris"
+IUSE="examples"
+
+RDEPEND="
+ ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="amd64 x86"
+
+BDEPEND="test? ( dev-python/mock[${PYTHON_USEDEP}] )"
+
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # Remove pytest plugin usage
+ sed -i '/addopts/,+8d' setup.cfg \
+ || die "sed failed for setup.cfg"
+
+ distutils-r1_python_prepare_all
+}
diff --git a/dev-python/pyrad/Manifest b/dev-python/pyrad/Manifest
index ded759a..2db8347 100644
--- a/dev-python/pyrad/Manifest
+++ b/dev-python/pyrad/Manifest
@@ -1,4 +1,6 @@
DIST pyrad-2.1.tar.gz 32353 BLAKE2B 2e79f23c757f42a3e98e4a290b76dd5793efe48a8428f2b6326f8f7a25d3876dad60c04c3d60818884d929fb710af5e68cc74fa7513b7a80ed516a78d0278f5e SHA512 1ccc070bfd1e0673e5d3cb6d0f64194d301d9c2c89eaf307d2c74393e9ea22a5e0149cbeac6bdcb3f03e46e4a5c07f807bfc84d235e95c603d5b39b88882073b
DIST pyrad-2.3.tar.gz 46412 BLAKE2B 9ce9f3bc04de65f4d52dde0ad93b366ad2216469f77ee9f01d9c9e1e1f2c6bce664a935e92e6a5bf907f3f1490dd815558639be4f4dca0031155acc32015f952 SHA512 a3703a6c1cb79735e8c55656e6472461504b4e8cf493caa69cb088e17f8f442184c51123a81ac42a8d94f439bcb164a230da91a377175eb1d35b979055e37359
-EBUILD pyrad-2.1.ebuild 510 BLAKE2B fd09cc7b07143f8a0ce73be212030a087895276c0819591e227fabd42dc0467a8381e09514237984c951d983f9e74ad4b72c40057f03d3acdd19e5f33e3047e4 SHA512 100fc0d9f60d08aa8cbe1a12c69a904341b5bc96d3d3d4c8d66f8434c1c17e9609b6e7de09ea2a8e2eab05447b5db1e869bfbafab997851a30a2120f248bc061
-EBUILD pyrad-2.3.ebuild 522 BLAKE2B 75496b26e92f707b370e37c00c8752793f30aa04fb33837b76079effdb018697a9a856b258788818e1533ea22636e8e227a5dc0c4b14fc2ef63dab3ed4020d51 SHA512 6fdc13a7da1ed797c17e4c7c1bc68c9045a671f6088991171a5089968b5bf698e1bc2838626f71242ca64dcdd395f0a6dff5b6370c3f529e624d69e565bbc8a3
+DIST pyrad-2.4.tar.gz 27952 BLAKE2B fe520b270f9dfe59314b23c00c4ebb0c0edf9dbe98c710a5819ad823febf59e389a6eaf821a885999cbfd3bc8bb4e072b5a5c288bf2858c754fa9b91fa601ff6 SHA512 56cae34fcb4ab076bf7819ede828592c25b336452e72543a7df78028be1e962f370d9ba09287fd5966c43a1d55214f16212785027c2a9972454ced1bcddddca4
+EBUILD pyrad-2.1.ebuild 512 BLAKE2B c56facd8c5f9d0e377b2246bfb97048d6b00d4be3722014767a659f442dd8f83ea81f464e9232bf45027d4e73ff74c7524b9b6f4d6252145dc7700f75995d652 SHA512 3b93ce633b6444ca818e58b29e37b86f62ccccbe5bcb1fb1145ba31b083f28e057a50e22a2129ddb4d97a9ae6744772f20e375ec71a7f1fa5d238de74f550a0c
+EBUILD pyrad-2.3.ebuild 522 BLAKE2B 362da86a59de820052a919b335814b2eac2cfc84b6794d0b83a53e9f7c3e7c75a98909286c8a5eedd24f8cd2335177ead980c0459d44572f86e753226048f1ce SHA512 13691cd0410f365bc0db41eec50be94b2f403a4f8660f6cd2ef267aecdafbbfaaf15f145c06c04e052736cb8e1f0848eea8e7995cdba821f655ab539c6db0ec1
+EBUILD pyrad-2.4.ebuild 538 BLAKE2B ece4583afa0c3e88fb18fa1e8caa266e167faae64ec0373dec2d86cacae6df7011e953dbb279c24be4d57549877779d6f0e4edad52116f3062d04dbf72d18055 SHA512 636b3416152e2111245eab26e40df59cb572781644ace32aad429d17dcf23b077dd991cd5a96f32c8d8635911883bd31e17a75266487893bca0c4717717b84fd
diff --git a/dev-python/pyrad/pyrad-2.1.ebuild b/dev-python/pyrad/pyrad-2.1.ebuild
index 709e691..409ad24 100644
--- a/dev-python/pyrad/pyrad-2.1.ebuild
+++ b/dev-python/pyrad/pyrad-2.1.ebuild
@@ -2,9 +2,9 @@
# Distributed under the terms of the GNU General Public License v2
# $Header: $
-EAPI=5
+EAPI=6
-PYTHON_COMPAT=( python2_7 python3_{5,6,7} )
+PYTHON_COMPAT=( python2_7 python3_{5,6,7,8} )
inherit distutils-r1
diff --git a/dev-python/pyrad/pyrad-2.3.ebuild b/dev-python/pyrad/pyrad-2.3.ebuild
index 626c570..1e210c4 100644
--- a/dev-python/pyrad/pyrad-2.3.ebuild
+++ b/dev-python/pyrad/pyrad-2.3.ebuild
@@ -2,7 +2,7 @@
# Distributed under the terms of the GNU General Public License v2
# $Header: $
-EAPI=5
+EAPI=6
PYTHON_COMPAT=( python2_7 python3_{5,6,7,8} )
diff --git a/dev-python/pyrad/pyrad-2.4.ebuild b/dev-python/pyrad/pyrad-2.4.ebuild
new file mode 100644
index 0000000..f451d1b
--- /dev/null
+++ b/dev-python/pyrad/pyrad-2.4.ebuild
@@ -0,0 +1,22 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=poetry
+PYTHON_COMPAT=( python3_{8..11} )
+
+inherit distutils-r1
+
+DESCRIPTION="pyrad is an implementation of a RADIUS client as described in RFC2865"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+HOMEPAGE="https://github.com/pyradius/pyrad"
+
+IUSE=""
+SLOT="0"
+LICENSE="LGPL-2"
+KEYWORDS="x86 amd64"
+
+RDEPEND="dev-python/setuptools[${PYTHON_USEDEP}]"
+DEPEND="${RDEPEND} dev-lang/python"
diff --git a/dev-python/python-yubico/Manifest b/dev-python/python-yubico/Manifest
index ea9dfaa..b3e3874 100644
--- a/dev-python/python-yubico/Manifest
+++ b/dev-python/python-yubico/Manifest
@@ -1,2 +1,2 @@
DIST python-yubico-1.3.3.tar.gz 41154 BLAKE2B 450f26b445cfb6af15c6277129471cf3dfbd1605e993c5589a0ad66833cb6aa39280728fe8e376d0b2c42a9549b358a6d8ac3825a22b820edaf63a7d0e2091ec SHA512 8e0b585b1dd457a86bd0238d770330321962cc8e394ed67ba62f40f04e084584c7578681bdcbf3368a53cdf593a0172afbead89e8ce5dd484b9bae6c6ba5f526
-EBUILD python-yubico-1.3.3.ebuild 522 BLAKE2B 7d32b5d101714e9a0ff9846dc46449c12f36a456c4bb1fe6d246a8c37e5152dcb57684c6956605ecd12515170011514f9939298fc717413f51bbbd8d7b7a1119 SHA512 1d3d8cc0a7ea3f4004c56b539a5d10bba837fbfda096e7b5b458ebf05f04ab38d9afe4ac583caf88a75f2adfea94279c02ec4045c42862f73b019648d1c686d4
+EBUILD python-yubico-1.3.3.ebuild 542 BLAKE2B 00f3b9c046548f7ee30bc40005c5b2d50cb6c5cda97c687f976fc079447ec10f742c2f81a9bb0f96301444a520b2ba36379d529078e9591154d1c57bc8589fe8 SHA512 3724da7ec75a7e33c9dc879d5b68de1b89e7a78214f4e1f97a37cc7c9f4498f26d3cdce5d058b59950d53a283715ac86b8e22ba3ce8df776c5ebc019725075c5
diff --git a/dev-python/python-yubico/python-yubico-1.3.3.ebuild b/dev-python/python-yubico/python-yubico-1.3.3.ebuild
index c2c7e61..a8878be 100644
--- a/dev-python/python-yubico/python-yubico-1.3.3.ebuild
+++ b/dev-python/python-yubico/python-yubico-1.3.3.ebuild
@@ -2,9 +2,10 @@
# Distributed under the terms of the GNU General Public License v2
# $Header: $
-EAPI=5
+EAPI=8
-PYTHON_COMPAT=( python2_7 python3_{5,6,7,8} )
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8..11} )
inherit distutils-r1
diff --git a/dev-python/smpplib/Manifest b/dev-python/smpplib/Manifest
index 88764fa..9b16e6b 100644
--- a/dev-python/smpplib/Manifest
+++ b/dev-python/smpplib/Manifest
@@ -1,4 +1,4 @@
DIST smpplib-2.0.1.tar.gz 19623 BLAKE2B 73d1e44ca1444b9f4c4a330a7ae323088ec81fade7a2dea757af9657807ced15b694c8621c48699429b598501126d5c7ad2d90f455aeedbd784c845e82c03571 SHA512 277810bc19440dbca0886c707a6280d672ba197e0f0efb8d5914263fdc0175a9fe593611efbddf0010f88e44ab00f1c9d17579f5b7a172844f1e0358ab40e6e4
DIST smpplib-2.1.0.tar.gz 20712 BLAKE2B 873fcddc5396a3d335a0d5c585d94b02f892e54fc5228362d48ef37d4ed3745c2cb01f7327fe7ea99fab88914544bf3f4d6a27b8dc5fc56c92f14c1e0bc7274a SHA512 5d2c137c6fe3147b18ddef51ebc9832debac8b79f8180ad63b555f914e2697c93f8260115414bbfeaca5b8d655434e31a254144a932b33ef7a6d1f76b4ee1784
-EBUILD smpplib-2.0.1.ebuild 750 BLAKE2B ebc667efdf4d0e0b18561ea5ebaa725af22fa8e885458cc5cf46cb6fb9f712e89e2bd99a6184ef3d279050f9df4b7b586730745c5c86beec7f2da28dbe4cfac0 SHA512 8c09a612975866e773a20608b7b2a7f5b9c94d6c13026928e3a3553b0b039dc4c9f5a4d46c15aa0d91f0ffd9d54e3da460d06a755d79725a28b372f951ab74fb
-EBUILD smpplib-2.1.0.ebuild 752 BLAKE2B 75a316849027c771d255104de50760c1cacee9d115ba89c64d9d41841ccb4bbf44c7fe6c72fe4f72be3467c07e618b28160619a9f45a703dc20afce036bcb114 SHA512 fe66638ecb919ed5947bcfafac8575855b85a7c203819bd8ca603bac1ebb7f014fbbb0be1d31a1ea62bf881cef01ff944e2d56a0346f60bb9bee3298c6a3cc1a
+EBUILD smpplib-2.0.1.ebuild 752 BLAKE2B 75a316849027c771d255104de50760c1cacee9d115ba89c64d9d41841ccb4bbf44c7fe6c72fe4f72be3467c07e618b28160619a9f45a703dc20afce036bcb114 SHA512 fe66638ecb919ed5947bcfafac8575855b85a7c203819bd8ca603bac1ebb7f014fbbb0be1d31a1ea62bf881cef01ff944e2d56a0346f60bb9bee3298c6a3cc1a
+EBUILD smpplib-2.1.0.ebuild 772 BLAKE2B 49f7742b59248ce550a8f0b4120258b786e128d242e6220d29bcb2f08f2ae62fa5f2f377d8b639321348e3b80683616567f774f82c0b1c9dd62f0de2ef6df6fd SHA512 ef11c94eadd9cbadba2dad281b3e0f70e6007214d3215e9540a52f723111e06e144412f02d775a6348b896d0582aea9f4b33ff8202d58fda72f0fd0962bbcaf0
diff --git a/dev-python/smpplib/smpplib-2.0.1.ebuild b/dev-python/smpplib/smpplib-2.0.1.ebuild
index e9d5242..b719e33 100644
--- a/dev-python/smpplib/smpplib-2.0.1.ebuild
+++ b/dev-python/smpplib/smpplib-2.0.1.ebuild
@@ -3,7 +3,7 @@
EAPI=6
-PYTHON_COMPAT=( python2_7 python3_{5,6,7} )
+PYTHON_COMPAT=( python2_7 python3_{5,6,7,8} )
inherit distutils-r1
diff --git a/dev-python/smpplib/smpplib-2.1.0.ebuild b/dev-python/smpplib/smpplib-2.1.0.ebuild
index b719e33..504f41e 100644
--- a/dev-python/smpplib/smpplib-2.1.0.ebuild
+++ b/dev-python/smpplib/smpplib-2.1.0.ebuild
@@ -1,9 +1,10 @@
# Copyright 1999-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-EAPI=6
+EAPI=8
-PYTHON_COMPAT=( python2_7 python3_{5,6,7,8} )
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8..11} )
inherit distutils-r1
diff --git a/dev-python/sqlalchemy/Manifest b/dev-python/sqlalchemy/Manifest
new file mode 100644
index 0000000..37917b0
--- /dev/null
+++ b/dev-python/sqlalchemy/Manifest
@@ -0,0 +1,3 @@
+AUX sqlalchemy-1.3.20-pypy3.patch 7321 BLAKE2B 706ff7da1f25a667784f462effb85593e8ad9a3fe893000866e487ec32328a571f4440ce4dcce61e2b5f1ded5c8145f5cd12a141c40f4bb64e87135aa18a8274 SHA512 40944c59cc6cb17f512d0df1e2cf50626dfa6a53e2e8b182c0ccb4007c2338d8058459a9158e9e72ee6aa89394275cf818f0c7572b249175d3acd52f5a1c2827
+DIST SQLAlchemy-1.3.24.tar.gz 6353598 BLAKE2B 6eb92b20fa3412a1f1398e18e902e3338320973287afa4a37477ec28d47e7422a19c3a60e6290a6da7b23512c0d818a26400958d02097def778c917f098bb3db SHA512 4f5f0a23e80e1cebe541f8748a7e794e8964d986252803b3289a7cea732ad22557e00221775332e2766b6ff16ad5d9069223f441f8880ca6d0c47011f15fee5b
+EBUILD sqlalchemy-1.3.24.ebuild 1818 BLAKE2B 27c08b83b5ffa74aa245a7f9279a03295bccc5494db34996e3a3bf9509de9fc340fd4dae84528542471df3ca74b1283db43e7dae05386feffb0849b66af5a4c7 SHA512 1905b77db984b35201d9aafeaa4c5bc95a152ff137f619295f9664da3d96416d42c41440e7c86b8db04501fb7a6ebbdce946fff6539020314b74693d130596fd
diff --git a/dev-python/sqlalchemy/files/sqlalchemy-1.3.20-pypy3.patch b/dev-python/sqlalchemy/files/sqlalchemy-1.3.20-pypy3.patch
new file mode 100644
index 0000000..3455534
--- /dev/null
+++ b/dev-python/sqlalchemy/files/sqlalchemy-1.3.20-pypy3.patch
@@ -0,0 +1,188 @@
+commit 1607c5c19f8ef362be7182b0ee0fddc6a3d3140e
+Author: Federico Caselli
+Date: Sat Apr 18 18:10:59 2020 +0200
+
+ Enable pypy tests on github workflow
+
+ Fixes: #5223
+ Change-Id: I0952e54ed9af2952ea340be1945311376ffc1ad2
+
+diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py
+index 6f3170a9e..0427eeac5 100644
+--- a/lib/sqlalchemy/orm/mapper.py
++++ b/lib/sqlalchemy/orm/mapper.py
+@@ -1326,7 +1326,7 @@ class Mapper(InspectionAttr):
+ if key == "__init__" and hasattr(method, "_sa_original_init"):
+ method = method._sa_original_init
+ if isinstance(method, types.MethodType):
+- method = method.im_func
++ method = method.__func__
+ if isinstance(method, types.FunctionType):
+ if hasattr(method, "__sa_reconstructor__"):
+ self._reconstructor = method
+diff --git a/lib/sqlalchemy/testing/plugin/pytestplugin.py b/lib/sqlalchemy/testing/plugin/pytestplugin.py
+index ad4ebb656..dc47f671e 100644
+--- a/lib/sqlalchemy/testing/plugin/pytestplugin.py
++++ b/lib/sqlalchemy/testing/plugin/pytestplugin.py
+@@ -340,7 +340,7 @@ def %(name)s(%(args)s):
+ code, {"target": target, "fn": fn}, fn.__name__
+ )
+ if not add_positional_parameters:
+- decorated.__defaults__ = getattr(fn, "im_func", fn).__defaults__
++ decorated.__defaults__ = getattr(fn, "__func__", fn).__defaults__
+ decorated.__wrapped__ = fn
+ return update_wrapper(decorated, fn)
+ else:
+diff --git a/lib/sqlalchemy/util/langhelpers.py b/lib/sqlalchemy/util/langhelpers.py
+index 7de16bcdf..e256d7764 100644
+--- a/lib/sqlalchemy/util/langhelpers.py
++++ b/lib/sqlalchemy/util/langhelpers.py
+@@ -151,7 +151,7 @@ def %(name)s(%(args)s):
+ decorated = _exec_code_in_env(
+ code, {targ_name: target, fn_name: fn}, fn.__name__
+ )
+- decorated.__defaults__ = getattr(fn, "im_func", fn).__defaults__
++ decorated.__defaults__ = getattr(fn, "__func__", fn).__defaults__
+ decorated.__wrapped__ = fn
+ return update_wrapper(decorated, fn)
+
+@@ -751,7 +751,7 @@ def monkeypatch_proxied_specials(
+ fn = getattr(from_cls, method)
+ if not hasattr(fn, "__call__"):
+ continue
+- fn = getattr(fn, "im_func", fn)
++ fn = getattr(fn, "__func__", fn)
+ except AttributeError:
+ continue
+ try:
+diff --git a/test/base/test_utils.py b/test/base/test_utils.py
+index 8356de61b..c04dea7cd 100644
+--- a/test/base/test_utils.py
++++ b/test/base/test_utils.py
+@@ -411,7 +411,8 @@ class WrapCallableTest(fixtures.TestBase):
+ lambda: my_functools_default(), my_functools_default
+ )
+ eq_(c.__name__, "partial")
+- eq_(c.__doc__, my_functools_default.__call__.__doc__)
++ if not compat.pypy: # pypy fails this check
++ eq_(c.__doc__, my_functools_default.__call__.__doc__)
+ eq_(c(), 5)
+
+
+diff --git a/test/engine/test_logging.py b/test/engine/test_logging.py
+index fe4ff44a7..e14c3a37d 100644
+--- a/test/engine/test_logging.py
++++ b/test/engine/test_logging.py
+@@ -8,6 +8,7 @@ from sqlalchemy import or_
+ from sqlalchemy import select
+ from sqlalchemy import String
+ from sqlalchemy import Table
++from sqlalchemy import testing
+ from sqlalchemy import util
+ from sqlalchemy.sql import util as sql_util
+ from sqlalchemy.testing import assert_raises_message
+@@ -460,10 +461,12 @@ class PoolLoggingTest(fixtures.TestBase):
+ q = self._stpool_logging_fixture()
+ self._test_queuepool(q, False)
+
++ @testing.requires.predictable_gc
+ def test_queuepool_echo(self):
+ q = self._queuepool_echo_fixture()
+ self._test_queuepool(q)
+
++ @testing.requires.predictable_gc
+ def test_queuepool_logging(self):
+ q = self._queuepool_logging_fixture()
+ self._test_queuepool(q)
+diff --git a/test/engine/test_pool.py b/test/engine/test_pool.py
+index 3b989959e..c8cd89555 100644
+--- a/test/engine/test_pool.py
++++ b/test/engine/test_pool.py
+@@ -608,6 +608,7 @@ class PoolEventsTest(PoolTestBase):
+ assert canary.call_args_list[0][0][0] is dbapi_con
+ assert canary.call_args_list[0][0][2] is exc
+
++ @testing.requires.predictable_gc
+ def test_checkin_event_gc(self):
+ p, canary = self._checkin_event_fixture()
+
+diff --git a/test/orm/test_deferred.py b/test/orm/test_deferred.py
+index f8817bbd7..2bf466c15 100644
+--- a/test/orm/test_deferred.py
++++ b/test/orm/test_deferred.py
+@@ -1700,6 +1700,8 @@ class WithExpressionTest(fixtures.DeclarativeMappedTest):
+ c1 = s.query(C).order_by(C.id)
+ eq_(c1.all(), [C(c_expr=1), C(c_expr=1)])
+
++ s.expunge_all()
++
+ c2 = (
+ s.query(C)
+ .options(with_expression(C.c_expr, C.x * 2))
+
+commit 8d3ac81a8794bdd3532ad07427edf9f48493919d
+Date: Wed Oct 14 18:25:45 2020 +0200
+
+ Skip a failing test that got removed in master
+
+ https://github.com/sqlalchemy/sqlalchemy/commit/a9b068ae564e5e775e312373088545b75aeaa1b0
+
+diff --git a/test/orm/test_deprecations.py b/test/orm/test_deprecations.py
+index 156898f..0d6dc72 100644
+--- a/test/orm/test_deprecations.py
++++ b/test/orm/test_deprecations.py
+@@ -560,7 +560,7 @@ class StrongIdentityMapTest(_fixtures.FixtureTest):
+ def test_prune_imap(self):
+ self._test_prune(self._strong_ident_fixture)
+
+- def test_prune_events(self):
++ def _test_prune_events(self):
+ self._test_prune(self._event_fixture)
+
+ @testing.fails_if(lambda: pypy, "pypy has a real GC")
+
+commit 1a1cc0e623698a75274f1525d2d14464ff738b86
+Date: Wed Oct 14 18:28:56 2020 +0200
+
+ Fix PyPy-related tests
+
+ Partial backport of https://github.com/sqlalchemy/sqlalchemy/commit/9e31fc74089cf565df5f275d22eb8ae5414d6e45
+
+diff --git a/test/base/test_utils.py b/test/base/test_utils.py
+diff --git a/test/base/test_utils.py b/test/base/test_utils.py
+index 8356de61b..c3d25b824 100644
+--- a/test/base/test_utils.py
++++ b/test/base/test_utils.py
+@@ -1725,7 +1725,7 @@ class ArgInspectionTest(fixtures.TestBase):
+
+ assert_raises(TypeError, get_callable_argspec, datetime.datetime.now)
+
+- @fails_if(lambda: util.pypy, "pypy returns plain *arg, **kw")
++ @testing.requires.cpython
+ def test_callable_argspec_obj_init(self):
+ assert_raises(TypeError, get_callable_argspec, object)
+
+@@ -2154,10 +2154,7 @@ class TestFormatArgspec(_Py3KFixtures, fixtures.TestBase):
+ grouped=False,
+ )
+
+- @testing.fails_if(
+- lambda: util.pypy,
+- "pypy doesn't report Obj.__init__ as object.__init__",
+- )
++ @testing.requires.cpython
+ def test_init_grouped(self):
+ object_spec = {
+ "args": "(self)",
+@@ -2181,10 +2178,7 @@ class TestFormatArgspec(_Py3KFixtures, fixtures.TestBase):
+ self._test_init(None, object_spec, wrapper_spec, custom_spec)
+ self._test_init(True, object_spec, wrapper_spec, custom_spec)
+
+- @testing.fails_if(
+- lambda: util.pypy,
+- "pypy doesn't report Obj.__init__ as object.__init__",
+- )
++ @testing.requires.cpython
+ def test_init_bare(self):
+ object_spec = {
+ "args": "self",
diff --git a/dev-python/sqlalchemy/sqlalchemy-1.3.24.ebuild b/dev-python/sqlalchemy/sqlalchemy-1.3.24.ebuild
new file mode 100644
index 0000000..4ab9645
--- /dev/null
+++ b/dev-python/sqlalchemy/sqlalchemy-1.3.24.ebuild
@@ -0,0 +1,62 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( pypy3 python3_{7..11} )
+PYTHON_REQ_USE="sqlite?"
+
+inherit distutils-r1 multiprocessing optfeature
+
+MY_PN="SQLAlchemy"
+MY_P="${MY_PN}-${PV/_beta/b}"
+
+DESCRIPTION="Python SQL toolkit and Object Relational Mapper"
+HOMEPAGE="https://www.sqlalchemy.org/ https://pypi.org/project/SQLAlchemy/"
+SRC_URI="mirror://pypi/${MY_P:0:1}/${MY_PN}/${MY_P}.tar.gz"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~mips ppc ppc64 ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
+IUSE="examples +sqlite test"
+
+# Use pytest-xdist to speed up tests
+BDEPEND="
+ test? (
+ $(python_gen_impl_dep sqlite)
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ )
+"
+
+PATCHES=(
+ # Ported part of those commits to fix failing tests:
+ # https://github.com/sqlalchemy/sqlalchemy/commit/c68f9fb87868c45fcadcc942ce4a35f10ff2f7ea
+ # https://github.com/sqlalchemy/sqlalchemy/commit/a9b068ae564e5e775e312373088545b75aeaa1b0
+ # https://github.com/sqlalchemy/sqlalchemy/commit/9e31fc74089cf565df5f275d22eb8ae5414d6e45
+ "${FILESDIR}/sqlalchemy-1.3.20-pypy3.patch"
+)
+
+distutils_enable_tests pytest
+
+python_test() {
+ # Disable tests hardcoding function call counts specific to Python versions.
+ epytest --ignore test/aaa_profiling \
+ -n "$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")"
+}
+
+python_install_all() {
+ if use examples; then
+ docompress -x "/usr/share/doc/${PF}/examples"
+ dodoc -r examples
+ fi
+
+ distutils-r1_python_install_all
+}
+
+pkg_postinst() {
+ optfeature "MySQL support" dev-python/mysqlclient dev-python/pymysql \
+ dev-python/mysql-connector-python
+ optfeature "mssql support" dev-python/pymssql
+ optfeature "postgresql support" dev-python/psycopg:2
+}
diff --git a/dev-python/sqlsoup/Manifest b/dev-python/sqlsoup/Manifest
index 53ce855..5926dd3 100644
--- a/dev-python/sqlsoup/Manifest
+++ b/dev-python/sqlsoup/Manifest
@@ -1,2 +1,2 @@
DIST sqlsoup-0.9.1.tar.gz 20622 BLAKE2B 4356f935192423ea196e6d29e4e1d520667fe4a55add7b91d7930e19d6470c97e296e6373ae4dc539ca5487c75360592073b91d714acfb54439c2e155d862d4c SHA512 a6fee93bf7be24545c785ab995e345374ae947714c5233ede6aaf7a263e75f88987c8a875903891f35088eebdba789467ada3bcfc030cc77a65afc63aae069d7
-EBUILD sqlsoup-0.9.1.ebuild 517 BLAKE2B e67395d0a097996874a509990811a6d25f2cbef71c78a9bfb1dc3ed902eae4344ecc9b985ab5bef8ce25f252c06f791c86b079019ff3ca740567a117477a792e SHA512 c46e94211b588358525976c39f8b01819f1f3621ebd7e0491022564e1a304a13c2b27f279914d4287bb987c247f54ef6eb411c331c655473f095f7eb8b255483
+EBUILD sqlsoup-0.9.1.ebuild 592 BLAKE2B 73714de0cb388cb21baf2f18c2b58e760fbf1820ab5e5312a7115192e0a47bb32b554fd64691e84f791291c196145f2465d9a175bdb867344dd3c5fec5fd3106 SHA512 052e674d668851209a6b4b301bd208d06b3ee884306bbff72ba75523e41791ffda4aca51d1eaf1f70679c7e182d1b6fa1cd3fa261f4bc681cca0b525f16d4a0b
diff --git a/dev-python/sqlsoup/sqlsoup-0.9.1.ebuild b/dev-python/sqlsoup/sqlsoup-0.9.1.ebuild
index 7ce2bbf..5fccf99 100644
--- a/dev-python/sqlsoup/sqlsoup-0.9.1.ebuild
+++ b/dev-python/sqlsoup/sqlsoup-0.9.1.ebuild
@@ -2,9 +2,10 @@
# Distributed under the terms of the GNU General Public License v2
# $Header: $
-EAPI=5
+EAPI=8
-PYTHON_COMPAT=( python2_7 python3_{5,6,7,8} )
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8..11} )
inherit distutils-r1
@@ -17,5 +18,7 @@ SLOT="0"
LICENSE="LGPL-2"
KEYWORDS="x86 amd64"
-RDEPEND="dev-python/setuptools[${PYTHON_USEDEP}]"
+RDEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
+ ${P}.gh.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+
+RDEPEND="dev-python/simplejson[${PYTHON_USEDEP}]"
+DEPEND="
+ test? (
+ dev-python/click[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/pytest-timeout[${PYTHON_USEDEP}]
+ dev-python/pytest-xprocess[${PYTHON_USEDEP}]
+ !alpha? ( !hppa? ( !ia64? (
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ ) ) )
+ )"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ # this test is very unreliable; it may fail randomly depending
+ # on installed packages
+ sed -i -e 's:test_no_memory_leak_from_Rule_builder:_&:' \
+ tests/test_routing.py || die
+
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ pytest -vv -x -p no:httpbin tests/test_routing.py || die "Tests fail with ${EPYTHON}"
+}
diff --git a/www-apps/privacyidea/Manifest b/www-apps/privacyidea/Manifest
index af544d4..ffce711 100644
--- a/www-apps/privacyidea/Manifest
+++ b/www-apps/privacyidea/Manifest
@@ -1,8 +1,11 @@
-DIST privacyidea-3.2.2.tar.gz 6784639 BLAKE2B 23030f250c46be8ab704a367caa5eb96ea332ba015eaec0cc3daadb6e8fa9daaa713d6878cf7b299baf7c10031b985d95e20b8b174cad4bdbdfff4046bf1104f SHA512 eab03bf1a9e8326b77a90b1e0fcc7339a2e5e20b2d8bbf367395728e1b21455bcdc44a188e10d7927baf6f42e4078f2456feb9ef5634002639daaa0a31ebf57e
+AUX logging.yaml 804 BLAKE2B 45e9101edc94758e135033fc651fd3578b6696eb1d2a06dee5a5c1dec0f5715ebf45eee7af4f5fc65cd632e38420d5a9dd6f3b76b6bacba2683f217ab4441e24 SHA512 b1b038fac9897d202b3002688b6513f4e425675d99d59ac9c645d9712f8abfa5884284748b0db90b3c9afefdd2bef328d65cf7e9b63191478f97acba72e53140
DIST privacyidea-3.4.tar.gz 8548152 BLAKE2B e5d655f694a4697635814b3a2533321b68cac61d58f308c9a7108f7eea1f186f0750e802d4e3eb10e307d5eb4d46e5a2c599fe16c158ed6b9f13c16c29052b50 SHA512 7706e0c2d0213facf5cc3a9717ada76130450f03ec03235bf9e6a9511f05a6faa0173edaf7cc43dd8ca6c9b86148dd16e8bfbac8abaa3efe49175880871fc36c
-DIST privacyidea-FreeRADIUS-3.2.tar.gz 14519 BLAKE2B 6388b239aaed3299a5caa829963922c509e0b3a8555ae947df1f90db0f6df8c2b5fbf9d85c6e9c4c04cd916b126cdb79974c1c1e3e7033475976b807f8693268 SHA512 ebebc5d4c98f835f0ad08cec8a74b1b311dcbbc65ef2480af38caad99f15a5a40652a3cde60cb4d299d6b43fcaaf9e207642d181ab8c2edbd56961d097942a7c
+DIST privacyidea-3.6.2.tar.gz 9004815 BLAKE2B 86d76b127d79ccda1c35cc718c7c0d3945d08e0293c039c59f639b93a40a4ec864fd13a0941c0de15841dfa94914b8ef34cf99d3b54988ddfadd176d533cfe3c SHA512 c2884fdaff2feb1f554c60aa0c71aeb9ddd7e633d6dd948bad33fdb8ec86d6fe55b8e351471bca232ad7605a1e4318b23baec8f1682e0aab8e8fef067559e302
+DIST privacyidea-3.7.3.tar.gz 9478925 BLAKE2B f10abac67c32619c6dc0866096c9dd49e19a9a8ab7f9cfc450ed9f9e84e148dd75c653b231c34d413894006b378af5fc0955e01600319b36cd25400e67ca6e2f SHA512 c069fc4907149640ab188dc5c6153e30afda45bbb66e7b539b11825b6e1c183f155d6aa7d92c12a4ad6f3299aa97d797702573c5a1645e8d5d437624a48dc2a3
+DIST privacyidea-FreeRADIUS-3.4.1.tar.gz 15526 BLAKE2B c90e409c1dcc583072b5cfeeaefa023b186928bb0f6e4cea1098b35377191279cdecf9fe4c285e0a2313e32f0c0e187b5e41eb43ede09706b78a635b6c0321f2 SHA512 b472cb36a43e4bb63ff06161ca01a7222c3bb301c001769551e54b8d02929c4a871a1fac27d679ad680d625fc9b5423382202770937229f115a0e8191e314f6a
+DIST privacyidea-FreeRADIUS-3.4.2.tar.gz 16146 BLAKE2B 407e391f3d34d1976c6306465e4e254471a766b97de715e01456a58f7c3f98e966d800edf2b52796324f645f33aa5fda61c30f779ac8f1ec7755c3e9568cb782 SHA512 21c8f4617db330cce3b24b4a9d5074817cab706490aa9d8c2f49953e53faf555136e37bf7c629ea1ae53c6a3a1dbfd26d284d595a8caecbb979fabb30f8d647c
DIST privacyidea-FreeRADIUS-3.4.tar.gz 15222 BLAKE2B 2058f1be8a8f5e7ba41f8f166f9ae1846947c16c0518729a8edf02791c47d1572a5715facd839e3dc66e290d3e5dd352e9804ebe5e34d889c932daa9559834c3 SHA512 6e22b82b5ad7d99fae68a435ba3249a6c127b9d2c49925005ac289873916f18837d9814153667b1085c59e3ce31bfc3bc3a8bb2c2ce927589bf3aa5b47976bc7
DIST v0.1.0.tar.gz 17714 BLAKE2B d08cad8597a87f4a3ad77d33f06df77acf3902d95ca2f40c272270505350462e3ff30709a93e1595af73f3370e9e2bf2ac66c41f7e0214894a59a6a6f4d35e98 SHA512 0bcd69c8bc9bec35d965ef4c4638bad7ad15c91b115743a4546df2f2661202249df9cee47483a400c257d293033703bcaa7c29e83e05f901aa2cf78cd5ee1755
-EBUILD privacyidea-3.2.2.ebuild 3759 BLAKE2B ee9663ed9cc963a44687f6802ee611d66365810778b4471af10e36eea66f323e00c4c011634e41e9656326d00e5c78e5579913d32e2439ec7bd1927f8bf4d36f SHA512 cd0186b0bbf50d86723948a3683f2ceb5af43571b69ba208753a438c197b89067529100854ad809876fa4bbe0777143df0354b6bf88ca2555d2dc82a519b37c3
EBUILD privacyidea-3.4-r1.ebuild 4624 BLAKE2B 12b0fb5122059f19469c9630db1731b442252c559a59f0caf186a5596b0a88bb123af9c1df723efaec5c7f9be533c603d5c78ac27fe3ef029feb218c4507db1b SHA512 ee09d817e552776517db0ed31b244f342bf21da35883cedbd74ff6c3b538f13cfa9f6a934b28741dd8eecda1bdb27198a7db870f1683b755e8b1cc699d469b2d
-EBUILD privacyidea-3.4.ebuild 4325 BLAKE2B 6649a2e7436513d677bf2193b9c56ad56f82be1d4d3ce226dc8217e3797952f0e8059c6c63d8f6c746d2598624fd9531523e260d63bb82afc483fe43a4a925e0 SHA512 fd268e721c96575e264b3570adac953d6ca753a262206824898add1b1160ab1694c00b21993142bb647421d3e89fc42a6d54f00ab265b6e91c4eb530b2819944
+EBUILD privacyidea-3.6.2.ebuild 4401 BLAKE2B 3a3626aeec024f9944aa32a31ef977857bf928b3b90db5747e6cf977c6fc6fe55a084ca7eaa749ed4a7171c29a54aba10ebd67d29471b2e27b8e9a15a8ea4106 SHA512 1df72ef3c12768275637980a4516a7698ddbf358dc6db935a38587d8dcc8039b960f84d55619a6b23cc46e0f5e35e6554eed2902107ec7dcd66e4e9dbb654e63
+EBUILD privacyidea-3.7.3.ebuild 4550 BLAKE2B 6284dc9bf05e7fbe6fe6a08ea8769c30bd48420c695fe4b5a76ee675579dc8d1d4256fb57ca25716c66d530ff7af979b83788a86da8b52bcf3b17f6061fba885 SHA512 aef22249b05b6627a2c53816bc4680f1c6361d2d34c0f8d3a893803e6169a00219e9ccd2b2e96c4c3d6219c98880d7192e297635813e9024a6ce67bafc555f1f
diff --git a/www-apps/privacyidea/files/logging.yaml b/www-apps/privacyidea/files/logging.yaml
new file mode 100644
index 0000000..0437df7
--- /dev/null
+++ b/www-apps/privacyidea/files/logging.yaml
@@ -0,0 +1,34 @@
+version: 1
+formatters:
+ detail:
+ class: privacyidea.lib.log.SecureFormatter
+ format: '[%(asctime)s][%(process)d][%(thread)d][%(levelname)s][%(name)s:%(lineno)d] %(message)s'
+
+handlers:
+# mail:
+# class: logging.handlers.SMTPHandler
+# mailhost: mail.example.com
+# fromaddr: privacyidea@example.com
+# toaddrs:
+# - admin1@example.com
+# - admin2@example.com
+# subject: PI Error
+# formatter: detail
+# level: ERROR
+ file:
+ # Rollover the logfile at midnight
+ class: logging.handlers.RotatingFileHandler
+ backupCount: 5
+ maxBytes: 1000000
+ formatter: detail
+ level: INFO
+ filename: /var/log/privacyidea/privacyidea.log
+loggers:
+ # The logger name is the qualname
+ privacyidea:
+ handlers:
+ - file
+# - mail
+ level: INFO
+root:
+ level: WARNING
diff --git a/www-apps/privacyidea/privacyidea-3.4.ebuild b/www-apps/privacyidea/privacyidea-3.6.2.ebuild
similarity index 90%
rename from www-apps/privacyidea/privacyidea-3.4.ebuild
rename to www-apps/privacyidea/privacyidea-3.6.2.ebuild
index 5977deb..2c08833 100644
--- a/www-apps/privacyidea/privacyidea-3.4.ebuild
+++ b/www-apps/privacyidea/privacyidea-3.6.2.ebuild
@@ -2,13 +2,13 @@
# Distributed under the terms of the GNU General Public License v2
# $Id$
-EAPI=6
+EAPI=7
-PYTHON_COMPAT=( python2_7 python3_{5,6,7,8,9} )
+PYTHON_COMPAT=( python3_{7,8,9} )
inherit distutils-r1 user
-VRADIUS="3.4"
+VRADIUS="3.4.1"
VWEBAUTHN="0.1.0"
DESCRIPTION="privacyIDEA is a modular authentication system"
@@ -34,8 +34,11 @@ RDEPEND="
dev-perl/Data-Dump
dev-perl/JSON
dev-perl/Net-SSLeay
+ virtual/perl-Time-HiRes
dev-perl/Try-Tiny
+ dev-perl/URI-Encode
dev-perl/libwww-perl
+ dev-python/argon2-cffi[${PYTHON_USEDEP}]
dev-python/bcrypt[${PYTHON_USEDEP}]
dev-python/beautifulsoup:4[${PYTHON_USEDEP}]
dev-python/cbor2[${PYTHON_USEDEP}]
@@ -43,17 +46,20 @@ RDEPEND="
dev-python/croniter[${PYTHON_USEDEP}]
dev-python/defusedxml[${PYTHON_USEDEP}]
dev-python/docutils[${PYTHON_USEDEP}]
- dev-python/ecdsa[${PYTHON_USEDEP}]
+ > /$D/etc/privacyidea/pi.cfg
doins deploy/privacyidea/NetKnights.pem
doins deploy/privacyidea/enckey
doins deploy/privacyidea/private.pem
@@ -109,16 +127,10 @@ python_install_all() {
insinto /usr/share/privacyidea/freeradius
doins ../FreeRADIUS-${VRADIUS}/privacyidea_radius.pm
-## insinto /etc/privacyidea/CA
-## doins deploy/debian/openssl.cnf
-
fowners -R ${PN}:root /etc/privacyidea
fperms 600 /etc/privacyidea/enckey \
/etc/privacyidea/private.pem
-## insinto /etc/logrotate.d
-## newins "${FILESDIR}/${PN}.logrotate" ${PN}
-
diropts -o privacyidea -g root
keepdir /var/log/privacyidea
diff --git a/www-apps/privacyideaadm/Manifest b/www-apps/privacyideaadm/Manifest
index f2eb0c7..6a48b0c 100644
--- a/www-apps/privacyideaadm/Manifest
+++ b/www-apps/privacyideaadm/Manifest
@@ -1,4 +1,4 @@
DIST privacyideaadm-2.23.5.tar.gz 59034 BLAKE2B b23b297e9d182760cf1e977f42b16b528cb2eff29b72687250b78fa69d266275dd82ebd1e0d8eddb499ecf9693976f5ba9aeabbac1d9b7049144bfac869a9003 SHA512 cbad4380335cb1f9c572cec4c9f9764bdbdcb6e5b537aaff5732e4fa49ed41e8f65ec1e6b67cbf514e7a0f41737fcf6170cf272723d645c4cf9f4cd3c4b5ce6e
DIST privacyideaadm-3.0.tar.gz 62895 BLAKE2B edf74ff8f2892aaeab8fa6b6c2c0a2b6ca79f19b2b33b712b30c5a452b658ed581ea322d29ac933ea5f160e0d50646203e9adc9c806200ad3130d5f668399854 SHA512 fad29d008cd87e6806a04ceeae42663c544d68c358361c3e9ae1e61abf249792809d4eb2f4cf0030f29681b44ad1336a772aa81e924a409bcb58bbafb0e54f30
-EBUILD privacyideaadm-2.23.5.ebuild 1006 BLAKE2B 606034b8d09b321abf75a8db7282b9eba1f8beee7475a530da24c2915babf230481acb9ae44a8a23bfb3db46a344eccf616f3c39ca00039734996a75fd3c624f SHA512 2ab47be98daeffa43c7651bebc045d819aea42375a2bff30e09f545080cf7f1337d4e38a9108077499c9cdbee1eb310c574b640b043be9631eb7fabc8c41261c
-EBUILD privacyideaadm-3.0.ebuild 1008 BLAKE2B f13708941d6e125723d99ef2c25bf4e3ba019b6687687a2ebf245518da0c0f6f4fe0e5321f2f713173c41b121279daefb172bb9542fd0d8e816240f825d99a50 SHA512 d0f45c84f9debea87f0bc91383b5caee6fed8ef7b61d5b077030fcedbb37bcf3b0732adf7b2cdc30a61771985e5b323dd33b2f6931c71bb70e5033e2b2fa430f
+EBUILD privacyideaadm-2.23.5.ebuild 1008 BLAKE2B f04e42b205fc2d2c84306f4d3c15b5ef09e1df9fca55d66ccc43afb78b1d2b1921d1c785d390c02c3ada6c36ec173eb972d1ce22b194e7acd5cb1bf5c096430a SHA512 bb5126702f949ac2e25953f9aa1c9c347fc2ba4169d1ffab4078db9ece1c16931737506f453780856ef06bc8078028a1a3431957863005c4db24a31dbc4e45ff
+EBUILD privacyideaadm-3.0.ebuild 1038 BLAKE2B c77b647f6d7bd860323551bc6ca7c8d58b86cc372cc354e332300ddcb3d2b43a1edbd25eb30cd53e1ead393a4c8e5669d7b6eabb130cc89a25b704d486265e2a SHA512 c527d74d133918e8770f92f5cca08aa8230f9ae64f0321dd389571a41d784057f5524161422215c37f38056e2f067882dbbcb15a826a7f4deccf51808271a7c7
diff --git a/www-apps/privacyideaadm/privacyideaadm-2.23.5.ebuild b/www-apps/privacyideaadm/privacyideaadm-2.23.5.ebuild
index def6cd2..a5451c1 100644
--- a/www-apps/privacyideaadm/privacyideaadm-2.23.5.ebuild
+++ b/www-apps/privacyideaadm/privacyideaadm-2.23.5.ebuild
@@ -4,7 +4,7 @@
EAPI=6
-PYTHON_COMPAT=( python3_{5,6,7} )
+PYTHON_COMPAT=( python3_{5,6,7,8} )
PV_COMMIT="c92f510520ffb32374dc35298e2c865644f1d691"
diff --git a/www-apps/privacyideaadm/privacyideaadm-3.0.ebuild b/www-apps/privacyideaadm/privacyideaadm-3.0.ebuild
index 8e40a67..8028261 100644
--- a/www-apps/privacyideaadm/privacyideaadm-3.0.ebuild
+++ b/www-apps/privacyideaadm/privacyideaadm-3.0.ebuild
@@ -2,9 +2,10 @@
# Distributed under the terms of the GNU General Public License v2
# $Id$
-EAPI=6
+EAPI=8
-PYTHON_COMPAT=( python3_{5,6,7,8} )
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8..11} )
PV_COMMIT="96eadf89893d73de480b6fe6a06dcf88c69cb7f6"