summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/asgiref/asgiref-3.4.1-r1.ebuild2
-rw-r--r--dev-python/coverage/Manifest2
-rw-r--r--dev-python/coverage/coverage-6.0.2.ebuild54
-rw-r--r--dev-python/coverage/coverage-6.1.1.ebuild54
-rw-r--r--dev-python/coverage/coverage-6.1.2.ebuild2
-rw-r--r--dev-python/css-parser/css-parser-1.0.6.ebuild2
-rw-r--r--dev-python/dnspython/dnspython-2.1.0.ebuild2
-rw-r--r--dev-python/fonttools/Manifest1
-rw-r--r--dev-python/fonttools/fonttools-4.28.3.ebuild54
-rw-r--r--dev-python/h11/h11-0.12.0.ebuild2
-rw-r--r--dev-python/httpcore/Manifest2
-rw-r--r--dev-python/httpcore/httpcore-0.13.3.ebuild64
-rw-r--r--dev-python/httpcore/httpcore-0.13.6.ebuild66
-rw-r--r--dev-python/httpcore/httpcore-0.13.7.ebuild2
-rw-r--r--dev-python/ioflo/files/ioflo-2.0.2-py310.patch51
-rw-r--r--dev-python/ioflo/files/ioflo-2.0.2-tests.patch29
-rw-r--r--dev-python/ioflo/ioflo-2.0.2-r1.ebuild40
-rw-r--r--dev-python/openstacksdk/Manifest1
-rw-r--r--dev-python/openstacksdk/openstacksdk-0.61.0.ebuild78
-rw-r--r--dev-python/precis-i18n/precis-i18n-1.0.3.ebuild2
-rw-r--r--dev-python/pylama/Manifest1
-rw-r--r--dev-python/pylama/pylama-8.3.3.ebuild40
-rw-r--r--dev-python/pytest-salt-factories/Manifest1
-rw-r--r--dev-python/pytest-salt-factories/files/pytest-salt-factories-0.911.0-tests.patch469
-rw-r--r--dev-python/pytest-salt-factories/pytest-salt-factories-0.911.0.ebuild70
-rw-r--r--dev-python/python-axolotl-curve25519/python-axolotl-curve25519-0.4.1_p2-r1.ebuild2
-rw-r--r--dev-python/python-axolotl/python-axolotl-0.2.3-r1.ebuild2
-rw-r--r--dev-python/python-dotenv/python-dotenv-0.19.2.ebuild2
-rw-r--r--dev-python/python-email-validator/python-email-validator-1.1.3.ebuild2
-rw-r--r--dev-python/python-nbxmpp/python-nbxmpp-2.0.4.ebuild2
-rw-r--r--dev-python/raet/files/raet-0.6.8-py310.patch69
-rw-r--r--dev-python/raet/raet-0.6.8-r3.ebuild40
-rw-r--r--dev-python/scrypt/Manifest2
-rw-r--r--dev-python/scrypt/scrypt-0.8.19.ebuild (renamed from dev-python/scrypt/scrypt-0.8.17.ebuild)2
-rw-r--r--dev-python/sh/sh-1.14.2.ebuild2
-rw-r--r--dev-python/statsmodels/statsmodels-0.13.1.ebuild2
-rw-r--r--dev-python/uvloop/uvloop-0.16.0.ebuild2
-rw-r--r--dev-python/watchgod/watchgod-0.7.ebuild12
-rw-r--r--dev-python/websockets/Manifest2
-rw-r--r--dev-python/websockets/websockets-10.0.ebuild2
-rw-r--r--dev-python/websockets/websockets-9.1-r1.ebuild38
-rw-r--r--dev-python/wsproto/wsproto-1.0.0.ebuild2
42 files changed, 975 insertions, 301 deletions
diff --git a/dev-python/asgiref/asgiref-3.4.1-r1.ebuild b/dev-python/asgiref/asgiref-3.4.1-r1.ebuild
index b26de6c4faa6..196760467291 100644
--- a/dev-python/asgiref/asgiref-3.4.1-r1.ebuild
+++ b/dev-python/asgiref/asgiref-3.4.1-r1.ebuild
@@ -15,7 +15,7 @@ SRC_URI="mirror://pypi/${PN::1}/${PN}/${P}.tar.gz"
LICENSE="BSD"
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"
BDEPEND="
test? ( dev-python/pytest-asyncio[${PYTHON_USEDEP}] )"
diff --git a/dev-python/coverage/Manifest b/dev-python/coverage/Manifest
index c2b7e6492080..9214bd7ed5b3 100644
--- a/dev-python/coverage/Manifest
+++ b/dev-python/coverage/Manifest
@@ -1,4 +1,2 @@
-DIST coverage-6.0.2.tar.gz 722511 BLAKE2B 43a860610921fd0df106cbe26ba094e5a11bf1137a795a15bc22d82d0f813e8dc67bfe660757d325f15f719429b480ca625ebe66569489ed8c4c477bac23c393 SHA512 a43a312d4668846b6f72eebac1a289d0a603303cd32624c3308cce8934f693c7d3786b36da5cea3ff1cce60f93110a2ded168304e1ca9a79053f0886b7f1bf17
-DIST coverage-6.1.1.tar.gz 715305 BLAKE2B fbd7c8e7e1737bc8be8acf0f10c66fa333a027520b5f54869080ea9e31951230442d0d7f5a5ec11201b7ca3ba65ee92c906a373c18123920abe0d3dee5a8e040 SHA512 c029ab4e0d16e4b0a395e63e96d7a8f24bdb3a46a97fbc223d59dafaa52b8522e924a13d88777f862d69e1f30d015b00e0740530e719b6a94065d285cd3dd03a
DIST coverage-6.1.2.tar.gz 677391 BLAKE2B eb9b129282446ed536765fcbd8b31f863be315c8eb27087473608b1412014e5807a26b8bcbdeea98f7a89481198bb7475dc775e68fee53ca297d16332edb7ea8 SHA512 41b5bc881eba97308ff702024dd1873fe527c941fe1b45c36a6210819e0b6b9e6dcdf0ad31659e88ea25a3ebd84e90858694f54d2d7585c61b319edb9afbf07e
DIST coverage-6.2.tar.gz 678664 BLAKE2B 98fe2e5d85db042d95a791838b121a4aeb0edc09f15e5454943d6d1ca3cafdbf0127e8683ddcb5c1f6372b18205bf92e24a803533f19d1bdd5e0477b669cf99f SHA512 e8ef5f2483b2e6d12f0f9801d63a0cd0b81395ea0c88b3cdaf6f6758e1fc1b381f803b0f58345c94007de175d0c2a24559dec93f51db8786f801a2a2d48d6b8f
diff --git a/dev-python/coverage/coverage-6.0.2.ebuild b/dev-python/coverage/coverage-6.0.2.ebuild
deleted file mode 100644
index e32ed8012f48..000000000000
--- a/dev-python/coverage/coverage-6.0.2.ebuild
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright 1999-2021 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{6,7,8,9,10} pypy3 )
-PYTHON_REQ_USE="threads(+),sqlite(+)"
-inherit distutils-r1
-
-DESCRIPTION="Code coverage measurement for Python"
-HOMEPAGE="https://coverage.readthedocs.io/en/latest/ https://pypi.org/project/coverage/"
-SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos"
-#IUSE="test"
-# The tests are impossible to appease. Please run them externally
-# via tox. Or fix the ebuild if you have hours of time to spend
-# on something utterly useless.
-RESTRICT="test"
-
-#BDEPEND="
-# test? (
-# dev-python/PyContracts[${PYTHON_USEDEP}]
-# dev-python/flaky[${PYTHON_USEDEP}]
-# dev-python/hypothesis[${PYTHON_USEDEP}]
-# dev-python/mock[${PYTHON_USEDEP}]
-# dev-python/pytest[${PYTHON_USEDEP}]
-# >=dev-python/unittest-mixins-1.4[${PYTHON_USEDEP}]
-# )
-#"
-
-src_prepare() {
- # avoid the dep on xdist, run tests verbosely
- sed -i -e '/^addopts/s:-n3:-v:' setup.cfg || die
- distutils-r1_src_prepare
-}
-
-python_test() {
- distutils_install_for_testing
-
- "${EPYTHON}" igor.py zip_mods || die
- "${EPYTHON}" igor.py test_with_tracer py || die
-
- # No C extensions under pypy
- if [[ ${EPYTHON} != pypy* ]]; then
- cp -l -- "${TEST_DIR}"/lib/*/coverage/*.so coverage/ || die
- "${EPYTHON}" igor.py test_with_tracer c || die
- fi
-
- # clean up leftover "egg1" directory
- rm -rf build/lib/egg1 || die
-}
diff --git a/dev-python/coverage/coverage-6.1.1.ebuild b/dev-python/coverage/coverage-6.1.1.ebuild
deleted file mode 100644
index 4d180441af18..000000000000
--- a/dev-python/coverage/coverage-6.1.1.ebuild
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright 1999-2021 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{6,7,8,9,10} pypy3 )
-PYTHON_REQ_USE="threads(+),sqlite(+)"
-inherit distutils-r1
-
-DESCRIPTION="Code coverage measurement for Python"
-HOMEPAGE="https://coverage.readthedocs.io/en/latest/ https://pypi.org/project/coverage/"
-SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
-#IUSE="test"
-# The tests are impossible to appease. Please run them externally
-# via tox. Or fix the ebuild if you have hours of time to spend
-# on something utterly useless.
-RESTRICT="test"
-
-#BDEPEND="
-# test? (
-# dev-python/PyContracts[${PYTHON_USEDEP}]
-# dev-python/flaky[${PYTHON_USEDEP}]
-# dev-python/hypothesis[${PYTHON_USEDEP}]
-# dev-python/mock[${PYTHON_USEDEP}]
-# dev-python/pytest[${PYTHON_USEDEP}]
-# >=dev-python/unittest-mixins-1.4[${PYTHON_USEDEP}]
-# )
-#"
-
-src_prepare() {
- # avoid the dep on xdist, run tests verbosely
- sed -i -e '/^addopts/s:-n3:-v:' setup.cfg || die
- distutils-r1_src_prepare
-}
-
-python_test() {
- distutils_install_for_testing
-
- "${EPYTHON}" igor.py zip_mods || die
- "${EPYTHON}" igor.py test_with_tracer py || die
-
- # No C extensions under pypy
- if [[ ${EPYTHON} != pypy* ]]; then
- cp -l -- "${TEST_DIR}"/lib/*/coverage/*.so coverage/ || die
- "${EPYTHON}" igor.py test_with_tracer c || die
- fi
-
- # clean up leftover "egg1" directory
- rm -rf build/lib/egg1 || die
-}
diff --git a/dev-python/coverage/coverage-6.1.2.ebuild b/dev-python/coverage/coverage-6.1.2.ebuild
index 51eaa011a63e..e32ed8012f48 100644
--- a/dev-python/coverage/coverage-6.1.2.ebuild
+++ b/dev-python/coverage/coverage-6.1.2.ebuild
@@ -13,7 +13,7 @@ SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos"
#IUSE="test"
# The tests are impossible to appease. Please run them externally
# via tox. Or fix the ebuild if you have hours of time to spend
diff --git a/dev-python/css-parser/css-parser-1.0.6.ebuild b/dev-python/css-parser/css-parser-1.0.6.ebuild
index 2b15878fd8ba..c61e5abb3ff6 100644
--- a/dev-python/css-parser/css-parser-1.0.6.ebuild
+++ b/dev-python/css-parser/css-parser-1.0.6.ebuild
@@ -13,7 +13,7 @@ SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
LICENSE="LGPL-2.1+"
SLOT="0"
-KEYWORDS="amd64 ~arm ~riscv x86"
+KEYWORDS="amd64 ~arm ~arm64 ~riscv x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/dnspython/dnspython-2.1.0.ebuild b/dev-python/dnspython/dnspython-2.1.0.ebuild
index aaf05d9e672b..3e05c40cebed 100644
--- a/dev-python/dnspython/dnspython-2.1.0.ebuild
+++ b/dev-python/dnspython/dnspython-2.1.0.ebuild
@@ -14,7 +14,7 @@ SRC_URI="https://github.com/rthalley/dnspython/archive/v${PV}.tar.gz -> ${P}.tar
LICENSE="ISC"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-solaris"
+KEYWORDS="~alpha amd64 arm arm64 hppa ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-solaris"
IUSE="examples"
RDEPEND="
diff --git a/dev-python/fonttools/Manifest b/dev-python/fonttools/Manifest
index cd3dc815738f..2b681805a12d 100644
--- a/dev-python/fonttools/Manifest
+++ b/dev-python/fonttools/Manifest
@@ -2,3 +2,4 @@ DIST fonttools-4.26.2.tar.gz 2579391 BLAKE2B 35a2533a336498aa1d5b9c2a61c1de6af03
DIST fonttools-4.28.0.tar.gz 2654535 BLAKE2B 2bdde1a5c9184574e220bf3fa5dea04ae0e4ab8bb85bb8893e38e96cd028dc6cdcb88b21a9d12429292fe9cb282a90ce7b3abf4f17dea95df52165f5f4d0da0c SHA512 6fddef1d065001afd63147fc474c49f7799895aafddb37b3c94e981fa86e829b39865a40c61e3bf1e64f64a40cf4d5ae02fa98fcf7c89d3f893a2588d213427d
DIST fonttools-4.28.1.tar.gz 2654329 BLAKE2B 4d1f2f5caea6ee3ae73a7791ad34da0c49353ef8b8f834c29e990c3c937b05bfdbf32474a4279c9f32f9fce78b4935ba9ba8434576b318b70736c1e14763eb70 SHA512 abcc8b182436feae8e1cfe263488c87f2351079d25a2211529ccf3401a9533f5322a7028d20ba0e31405ec3acad369b46d3b07bf8b4dfe16e43f48859fc5a29f
DIST fonttools-4.28.2.tar.gz 2940111 BLAKE2B 32f67f2c270520d9e2091052242e504b9a8e459a87f233e22f50bfe3d17309a09a3c7ad5da20a3411df1c7c58b790dd395535407fdeddb02e7391c28d8d08fa3 SHA512 0295c571e92e71f6467b06bd89afacae76861e374147a2051fe3f5323176c3f3458b977ba2ed25cadcdba9e55b325b6febc50bc9c539d8806471730a15faed47
+DIST fonttools-4.28.3.tar.gz 2944993 BLAKE2B bac7408759ae2854023d5e6f840eb34d431daf0e14ec9fd8d4ac2ecc4ea8e473456611c3531b9131035164f69ba2363a3835206d068b71d4a2ae6ec179d2a32d SHA512 b90d05cedbd06f476c210f2961ebd11c64043785ef43fda2b81fd22126b12642ab63e51363bc22524bb18ee781fa9a8a71edb187b6c69fbf838e0c20f3c9ba0b
diff --git a/dev-python/fonttools/fonttools-4.28.3.ebuild b/dev-python/fonttools/fonttools-4.28.3.ebuild
new file mode 100644
index 000000000000..280f5b4947c7
--- /dev/null
+++ b/dev-python/fonttools/fonttools-4.28.3.ebuild
@@ -0,0 +1,54 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{6,7,8,9,10} )
+PYTHON_REQ_USE="xml(+)"
+
+inherit distutils-r1 virtualx
+
+DESCRIPTION="Library for manipulating TrueType, OpenType, AFM and Type1 fonts"
+HOMEPAGE="https://github.com/fonttools/fonttools/"
+SRC_URI="https://github.com/fonttools/fonttools/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~ppc ~ppc64 ~riscv ~sparc ~x86 ~x64-macos"
+
+RDEPEND=">=dev-python/fs-2.4.9[${PYTHON_USEDEP}]"
+BDEPEND="
+ ${RDEPEND}
+ dev-python/cython[${PYTHON_USEDEP}]
+ test? (
+ app-arch/brotli[python,${PYTHON_USEDEP}]
+ app-arch/zopfli
+ )"
+
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # When dev-python/pytest-shutil is installed, we get weird import errors.
+ # This is due to incomplete nesting in the Tests/ tree:
+ #
+ # Tests/feaLib/__init__.py
+ # Tests/ufoLib/__init__.py
+ # Tests/svgLib/path/__init__.py
+ # Tests/otlLib/__init__.py
+ # Tests/varLib/__init__.py
+ #
+ # This tree requires an __init__.py in Tests/svgLib/ too, bug #701148.
+ touch Tests/svgLib/__init__.py || die
+
+ distutils-r1_python_prepare_all
+}
+
+src_configure() {
+ DISTUTILS_ARGS=( --with-cython )
+}
+
+python_test() {
+ distutils_install_for_testing
+ # virtualx used when matplotlib is installed causing plot module tests to run
+ virtx epytest Tests fontTools
+}
diff --git a/dev-python/h11/h11-0.12.0.ebuild b/dev-python/h11/h11-0.12.0.ebuild
index ee1f97967b0e..d350583bd5d0 100644
--- a/dev-python/h11/h11-0.12.0.ebuild
+++ b/dev-python/h11/h11-0.12.0.ebuild
@@ -13,6 +13,6 @@ SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~hppa ppc ppc64 sparc x86"
+KEYWORDS="amd64 arm arm64 hppa ppc ppc64 sparc x86"
distutils_enable_tests pytest
diff --git a/dev-python/httpcore/Manifest b/dev-python/httpcore/Manifest
index 8bd60a2b8957..484d518c7e83 100644
--- a/dev-python/httpcore/Manifest
+++ b/dev-python/httpcore/Manifest
@@ -1,3 +1 @@
-DIST httpcore-0.13.3.tar.gz 64246 BLAKE2B afc43122a5502770b6efe7052846926e25fa678dcbd5c8ddbcd806df36dcf684d94df12571efaab0ff1b657fef14d5d71dd902be5cbec12c61db13004d7fe5a9 SHA512 7ba6c2cb77c082bcdb8cdfad2bc17646ccc9348f49760150ec1070429f94913b2fb9eae6d3407b404581b48670b866bf11696453325dd70610bd700e94990450
-DIST httpcore-0.13.6.tar.gz 64716 BLAKE2B 6eadcaac626d4561dec2e41bdbde21836727f10870093890469e6b5a4af2aa276361044d08b5e25e3bf760092e5537edff9d0c99acb1ddf6ab0a17343bcd9af2 SHA512 52b6189763755dbbd762ad26fef0107ad50949c1dd4865db788317ce981079cc095161e543f1a455ce84138b51f89806d8c55267378574feced107675f6cde47
DIST httpcore-0.13.7.tar.gz 64734 BLAKE2B e6c4b1720ce4bf62689995d3e1c648c4702bb416f3b3586eb8dd2f0cfd2155046e64181c4c04e65f721a5f0fcbc23b5ffd01c2930c7c69d37ee4c36e37b7d0d4 SHA512 0cc48828d0710066b3ef89998ec85975285763ac63a8b59106952ef2dac5a02dac71e7e106c4b6ea1022eb4d06a9cb5ee3e634eb564bad49c5508beff75279d6
diff --git a/dev-python/httpcore/httpcore-0.13.3.ebuild b/dev-python/httpcore/httpcore-0.13.3.ebuild
deleted file mode 100644
index 1a0f6cc21160..000000000000
--- a/dev-python/httpcore/httpcore-0.13.3.ebuild
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright 1999-2021 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-PYTHON_COMPAT=( python3_{6,7,8,9,10} )
-
-inherit distutils-r1
-
-DESCRIPTION="A minimal low-level HTTP client"
-HOMEPAGE="https://www.encode.io/httpcore/"
-SRC_URI="https://github.com/encode/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="amd64 arm arm64 ppc ppc64 sparc x86"
-
-RDEPEND="
- <dev-python/h11-0.13[${PYTHON_USEDEP}]
- <dev-python/h2-5[${PYTHON_USEDEP}]
- =dev-python/sniffio-1*[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/pytest-asyncio[${PYTHON_USEDEP}]
- dev-python/trustme[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-
-python_prepare_all() {
- # anyio and trio are not in the tree
- sed -i 's/^@pytest.mark.\(anyio\|trio\)/@pytest.mark.skip/' \
- tests/async_tests/test_*.py || die
- sed -i '/^import trio/d' tests/utils.py || die
- # pproxy is not in the tree, the associated fixture
- # must be disabled to prevent errors during test setup
- sed -i 's/def proxy_server().*/&\n pytest.skip()/' \
- tests/conftest.py || die
- distutils-r1_python_prepare_all
-}
-
-python_test() {
- local skipped_tests=(
- # Require Internet access or hypercorn (not in the tree)
- tests/test_threadsafety.py::test_threadsafe_basic
- tests/sync_tests/test_interfaces.py::test_http_request
- tests/sync_tests/test_interfaces.py::test_https_request
- tests/sync_tests/test_interfaces.py::test_http2_request
- tests/sync_tests/test_interfaces.py::test_closing_http_request
- tests/sync_tests/test_interfaces.py::test_connection_pool_get_connection_info
- tests/sync_tests/test_interfaces.py::test_max_keepalive_connections_handled_correctly
- tests/sync_tests/test_interfaces.py::test_explicit_backend_name
- tests/sync_tests/test_interfaces.py::test_connection_timeout_tcp
- tests/sync_tests/test_interfaces.py::test_broken_socket_detection_many_open_files
- tests/sync_tests/test_retries.py::test_no_retries
- tests/sync_tests/test_retries.py::test_retries_exceeded
- tests/sync_tests/test_retries.py::test_retries_enabled
- # Require hypercorn
- tests/sync_tests/test_interfaces.py::test_connection_timeout_uds
- )
- epytest ${skipped_tests[@]/#/--deselect }
-}
diff --git a/dev-python/httpcore/httpcore-0.13.6.ebuild b/dev-python/httpcore/httpcore-0.13.6.ebuild
deleted file mode 100644
index 272937cbd9c9..000000000000
--- a/dev-python/httpcore/httpcore-0.13.6.ebuild
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright 1999-2021 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-PYTHON_COMPAT=( python3_{6,7,8,9,10} )
-
-inherit distutils-r1
-
-DESCRIPTION="A minimal low-level HTTP client"
-HOMEPAGE="https://www.encode.io/httpcore/"
-SRC_URI="https://github.com/encode/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="amd64 arm ~arm64 ppc ~ppc64 sparc x86"
-
-RDEPEND="
- =dev-python/anyio-3*[${PYTHON_USEDEP}]
- <dev-python/h11-0.13[${PYTHON_USEDEP}]
- <dev-python/h2-5[${PYTHON_USEDEP}]
- =dev-python/sniffio-1*[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/pytest-asyncio[${PYTHON_USEDEP}]
- dev-python/trustme[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-
-python_prepare_all() {
- # trio is not in the tree, anyio is causing tons of test failures
- # (probably insisting on using trio)
- sed -i 's/^@pytest.mark.\(anyio\|trio\)/@pytest.mark.skip/' \
- tests/async_tests/test_*.py || die
- sed -i '/^import trio/d' tests/utils.py || die
- # pproxy is not in the tree, the associated fixture
- # must be disabled to prevent errors during test setup
- sed -i 's/def proxy_server().*/&\n pytest.skip()/' \
- tests/conftest.py || die
- distutils-r1_python_prepare_all
-}
-
-python_test() {
- local skipped_tests=(
- # Require Internet access or hypercorn (not in the tree)
- tests/test_threadsafety.py::test_threadsafe_basic
- tests/sync_tests/test_interfaces.py::test_http_request
- tests/sync_tests/test_interfaces.py::test_https_request
- tests/sync_tests/test_interfaces.py::test_http2_request
- tests/sync_tests/test_interfaces.py::test_closing_http_request
- tests/sync_tests/test_interfaces.py::test_connection_pool_get_connection_info
- tests/sync_tests/test_interfaces.py::test_max_keepalive_connections_handled_correctly
- tests/sync_tests/test_interfaces.py::test_explicit_backend_name
- tests/sync_tests/test_interfaces.py::test_connection_timeout_tcp
- tests/sync_tests/test_interfaces.py::test_broken_socket_detection_many_open_files
- tests/sync_tests/test_retries.py::test_no_retries
- tests/sync_tests/test_retries.py::test_retries_exceeded
- tests/sync_tests/test_retries.py::test_retries_enabled
- # Require hypercorn
- tests/sync_tests/test_interfaces.py::test_connection_timeout_uds
- )
- epytest ${skipped_tests[@]/#/--deselect }
-}
diff --git a/dev-python/httpcore/httpcore-0.13.7.ebuild b/dev-python/httpcore/httpcore-0.13.7.ebuild
index 7694dd0e6f96..7504c9af31be 100644
--- a/dev-python/httpcore/httpcore-0.13.7.ebuild
+++ b/dev-python/httpcore/httpcore-0.13.7.ebuild
@@ -12,7 +12,7 @@ SRC_URI="https://github.com/encode/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~hppa ppc ppc64 sparc ~x86"
+KEYWORDS="amd64 arm arm64 ~hppa ppc ppc64 sparc x86"
RDEPEND="
=dev-python/anyio-3*[${PYTHON_USEDEP}]
diff --git a/dev-python/ioflo/files/ioflo-2.0.2-py310.patch b/dev-python/ioflo/files/ioflo-2.0.2-py310.patch
new file mode 100644
index 000000000000..7effeeb57811
--- /dev/null
+++ b/dev-python/ioflo/files/ioflo-2.0.2-py310.patch
@@ -0,0 +1,51 @@
+commit 2961d846dd250334b8fc52c2ef4c00ebc36ed510
+Author: Felix Yan <felixonmars@archlinux.org>
+Date: Fri Nov 20 04:42:02 2020 +0800
+
+ Fix compatibility with Python 3.9
+
+ json.loads() removed encoding parameter
+ (https://bugs.python.org/issue39377)
+ It was a no-op since 3.1.
+
+diff --git a/ioflo/aio/http/clienting.py b/ioflo/aio/http/clienting.py
+index 11132e3..967570e 100644
+--- a/ioflo/aio/http/clienting.py
++++ b/ioflo/aio/http/clienting.py
+@@ -268,13 +268,13 @@ class Requester(object):
+ '\r\n{2}'.format(boundary, key, val))
+ formParts.append('\r\n--{0}--'.format(boundary))
+ form = "".join(formParts)
+- body = form.encode(encoding='utf-8')
++ body = form.encode('utf-8')
+ self.headers[u'content-type'] = u'multipart/form-data; boundary={0}'.format(boundary)
+ else:
+ formParts = [u"{0}={1}".format(key, val) for key, val in self.fargs.items()]
+ form = u'&'.join(formParts)
+ form = quote_plus(form, '&=')
+- body = form.encode(encoding='utf-8')
++ body = form.encode('utf-8')
+ self.headers[u'content-type'] = u'application/x-www-form-urlencoded; charset=utf-8'
+ else: # body last in precendence
+ body = self.body
+diff --git a/ioflo/aio/http/httping.py b/ioflo/aio/http/httping.py
+index ba604e7..a22cc84 100644
+--- a/ioflo/aio/http/httping.py
++++ b/ioflo/aio/http/httping.py
+@@ -746,7 +746,7 @@ class EventSource(object):
+ if edata: # data so dispatch event by appending to .events
+ if self.dictable:
+ try:
+- ejson = json.loads(edata, encoding='utf-8', object_pairs_hook=odict)
++ ejson = json.loads(edata, object_pairs_hook=odict)
+ except ValueError as ex:
+ ejson = None
+ else: # valid json set edata to ejson
+@@ -1058,7 +1058,6 @@ class Parsent(object):
+ if self.jsoned or self.dictable: # attempt to deserialize json
+ try:
+ self.data = json.loads(self.body.decode('utf-8'),
+- encoding='utf-8',
+ object_pairs_hook=odict)
+ except ValueError as ex:
+ self.data = None
diff --git a/dev-python/ioflo/files/ioflo-2.0.2-tests.patch b/dev-python/ioflo/files/ioflo-2.0.2-tests.patch
new file mode 100644
index 000000000000..6003cb374f0d
--- /dev/null
+++ b/dev-python/ioflo/files/ioflo-2.0.2-tests.patch
@@ -0,0 +1,29 @@
+diff --git a/ioflo/aio/tcp/test/test_tcping.py b/ioflo/aio/tcp/test/test_tcping.py
+index f78d43f..ea9cc26 100644
+--- a/ioflo/aio/tcp/test/test_tcping.py
++++ b/ioflo/aio/tcp/test/test_tcping.py
+@@ -12,6 +12,8 @@ import shutil
+ import socket
+ import errno
+
++import pytest
++
+ from ioflo.aid.sixing import *
+ from ioflo.aid.consoling import getConsole
+ from ioflo.aio import wiring
+@@ -966,6 +968,7 @@ class BasicTestCase(unittest.TestCase):
+ wireLogBeta.close()
+ console.reinit(verbosity=console.Wordage.concise)
+
++ @pytest.mark.skip("Broken on modern python versions")
+ def testTLSConnectionVerifyNeither(self):
+ """
+ Test TLS client server connection with neither verify certs
+@@ -1490,6 +1493,7 @@ class BasicTestCase(unittest.TestCase):
+ wireLogBeta.close()
+ console.reinit(verbosity=console.Wordage.concise)
+
++ @pytest.mark.skip("Broken on modern python versions")
+ def testTLSConnectionVerifyBothTLSv1(self):
+ """
+ Test TLS client server connection with neither verify certs
diff --git a/dev-python/ioflo/ioflo-2.0.2-r1.ebuild b/dev-python/ioflo/ioflo-2.0.2-r1.ebuild
new file mode 100644
index 000000000000..46a8667073e3
--- /dev/null
+++ b/dev-python/ioflo/ioflo-2.0.2-r1.ebuild
@@ -0,0 +1,40 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{6,7,8,9,10} )
+inherit distutils-r1
+
+DESCRIPTION="Automated Reasoning Engine and Flow Based Programming Framework"
+HOMEPAGE="https://github.com/ioflo/ioflo/"
+SRC_URI="https://github.com/${PN}/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+IUSE="test"
+
+RDEPEND="
+ $(python_gen_cond_dep '>=dev-lang/python-3.7.4' python3_7)
+"
+BDEPEND="${RDEPEND}
+ test? (
+ dev-python/pytest-salt-factories[${PYTHON_USEDEP}]
+ app-admin/salt[${PYTHON_USEDEP}]
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}/ioflo-1.7.8-network-test.patch"
+ "${FILESDIR}/ioflo-2.0.2-python39.patch"
+ "${FILESDIR}/ioflo-2.0.2-tests.patch"
+ "${FILESDIR}/ioflo-2.0.2-py310.patch"
+)
+
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ sed -e 's:"setuptools_git[^"]*",::' -i setup.py || die
+ distutils-r1_python_prepare_all
+}
diff --git a/dev-python/openstacksdk/Manifest b/dev-python/openstacksdk/Manifest
index 66c5143fd3d4..99ab4001fc8a 100644
--- a/dev-python/openstacksdk/Manifest
+++ b/dev-python/openstacksdk/Manifest
@@ -1,2 +1,3 @@
DIST openstacksdk-0.59.0.tar.gz 1021995 BLAKE2B be57afcdc707547e2cd69774de1b7d0dc4b84ffe58bdaa4f063b85996e8ee08ded60004d3211f827d7b4a5239d1420485ce2fae92b550722c959274a18ed2753 SHA512 02f8f8f174896417f0cf4ce1c65c87ea705664fa7a1c6383ad1791f5d94cb818b5b0bfee331bd0d07d724df59859ccef91c507b0c39522115f9549d6258a3eb7
DIST openstacksdk-0.60.0.tar.gz 1023829 BLAKE2B 4c3734665126934d0906b3b3356dc195da77191d735c3051664fe48cbb9a0d8b0c5707bd5dd2ad648b9e0d6cf8e6df0cebbe36e411b9a139b52450212fe30837 SHA512 3c7240492e1a93045ea9b8ac55d8ddd3ebe4260a161849e281e3be4e3f1185ab7840a284fc1ab64dee20b99cd06c4ddd445bd8bd28c79d2c36655d554a037ff9
+DIST openstacksdk-0.61.0.tar.gz 1029483 BLAKE2B 5add768f12bc42562bcdaddf0379e1f59af80b34c5a7f808aaa7469788a685b093b47a4c2a8a771f6cf426f6ac11e188fca0843aaa5173266f3c69a0ac69c4f9 SHA512 6f02486b9de8c540cf43f49f55b67dede34a24a96229d42b43aa215f6286566579f726b53732a9b3b952cee5df1fa8d3cf2f6ccc7c0ca7f9a1a96888640ff734
diff --git a/dev-python/openstacksdk/openstacksdk-0.61.0.ebuild b/dev-python/openstacksdk/openstacksdk-0.61.0.ebuild
new file mode 100644
index 000000000000..89f733dd4c30
--- /dev/null
+++ b/dev-python/openstacksdk/openstacksdk-0.61.0.ebuild
@@ -0,0 +1,78 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{6,7,8,9,10} )
+inherit distutils-r1
+
+DESCRIPTION="A collection of libraries for building applications to work with OpenStack."
+HOMEPAGE="https://github.com/openstack/python-openstacksdk"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+
+CDEPEND=">dev-python/pbr-2.1.0[${PYTHON_USEDEP}]"
+RDEPEND="${CDEPEND}
+ >=dev-python/pyyaml-3.13[${PYTHON_USEDEP}]
+ >=dev-python/appdirs-1.3.0[${PYTHON_USEDEP}]
+ >=dev-python/requestsexceptions-1.2.0[${PYTHON_USEDEP}]
+ >dev-python/jsonpatch-1.20[${PYTHON_USEDEP}]
+ >=dev-python/os-service-types-1.7.0[${PYTHON_USEDEP}]
+ >=dev-python/keystoneauth-3.18.0[${PYTHON_USEDEP}]
+ >=dev-python/munch-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/decorator-4.4.1[${PYTHON_USEDEP}]
+ >=dev-python/jmespath-0.9.0[${PYTHON_USEDEP}]
+ >=dev-python/iso8601-0.1.11[${PYTHON_USEDEP}]
+ >=dev-python/netifaces-0.10.4[${PYTHON_USEDEP}]
+ >=dev-python/dogpile-cache-0.6.5[${PYTHON_USEDEP}]
+ >=dev-python/cryptography-2.7.0[${PYTHON_USEDEP}]
+ dev-python/importlib_metadata[${PYTHON_USEDEP}]
+"
+BDEPEND="${CDEPEND}
+ test? (
+ >=dev-python/ddt-1.0.1[${PYTHON_USEDEP}]
+ >=dev-python/fixtures-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/jsonschema-3.2.0[${PYTHON_USEDEP}]
+ dev-python/hacking[${PYTHON_USEDEP}]
+ >=dev-python/prometheus_client-0.4.2[${PYTHON_USEDEP}]
+ >=dev-python/oslo-config-6.1.0[${PYTHON_USEDEP}]
+ >=dev-python/oslotest-3.2.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-mock-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/statsd-3.3.0[${PYTHON_USEDEP}]
+ >=dev-python/testscenarios-0.4[${PYTHON_USEDEP}]
+ >=dev-python/testtools-2.2.0[${PYTHON_USEDEP}]
+ )"
+
+distutils_enable_tests unittest
+
+src_prepare() {
+ # Internet?
+ sed -e 's:test_create_dynamic_large_object:_&:' \
+ -i openstack/tests/unit/cloud/test_object.py || die
+
+ # TODO
+ sed -e 's:test_generate_form:_&:' \
+ -e 's:test_create_static_large_object:_&:' \
+ -e 's:test_object_segment_retries:_&:' \
+ -e 's:test_object_segment_retry_failure:_&:' \
+ -e 's:test_slo_manifest_retry:_&:' \
+ -i openstack/tests/unit/cloud/test_object.py || die
+
+ # unhappy about paths due to test runner
+ sed -e 's:test_method_not_supported:_&:' \
+ -i openstack/tests/unit/test_exceptions.py || die
+ sed -e 's:test_repr:_&:' \
+ -i openstack/tests/unit/test_resource.py || die
+
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ distutils_install_for_testing
+
+ # functional tests require cloud instance access
+ eunittest -b openstack/tests/unit
+}
diff --git a/dev-python/precis-i18n/precis-i18n-1.0.3.ebuild b/dev-python/precis-i18n/precis-i18n-1.0.3.ebuild
index baaf8b179726..5acb765ed750 100644
--- a/dev-python/precis-i18n/precis-i18n-1.0.3.ebuild
+++ b/dev-python/precis-i18n/precis-i18n-1.0.3.ebuild
@@ -16,6 +16,6 @@ S="${WORKDIR}/${MY_P}"
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 ~arm ~ppc ~ppc64 ~riscv x86"
+KEYWORDS="amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv x86"
distutils_enable_tests setup.py
diff --git a/dev-python/pylama/Manifest b/dev-python/pylama/Manifest
index cd4f2f652077..24ec02ee8b54 100644
--- a/dev-python/pylama/Manifest
+++ b/dev-python/pylama/Manifest
@@ -1,3 +1,4 @@
DIST pylama-7.7.1.tar.gz 34740 BLAKE2B a4bd5aed40c2c4e7bdb9f9968030f0954f0309cff80567b2252ee9576fdb4598714286bda63c22676789d4919662430ef2729089faa70b5cb590784eb47ef1f0 SHA512 298fabffcdf38e3e868e3965de87a0e761bc9dfcfe33320b53057c4e05598bcc22045481ec16ccb8df27f49ea41d6fef82b69fe7327905f93ce74d9350682cf0
DIST pylama-8.0.4.tar.gz 34064 BLAKE2B e6ec937b7716d8a64c19e71b370e557a30d04d908ed2d1859df380c381a7eea93956ec4b58ca779e6029119a017ffce268a5528424783b33e815827dacb79b5d SHA512 c2ad152cadfaed14a6035eb49361439b8f80c7c633b5e1b185dd5dad140a4148f6d4445928e08cb8e92b205739ef75df6d49c66e4ad3cd002512cc2a8aba859b
DIST pylama-8.0.6.tar.gz 34223 BLAKE2B 690a0a1197f6512e9511083aa079843f2ca99c9bdb5d74756531db79f7d39e8e0f60a0955b24bc7739edce0376eb79821a796978fb2365789a97628f03f240f8 SHA512 5bc75e5b2a0b141dbe2ca993d13833914980c735b84f3df766bf750909af1eeaba0d554845d8c09f0d8186ff48c8330d9ffa5b565a577ef6506f32672a2c9209
+DIST pylama-8.3.3.tar.gz 36292 BLAKE2B e9ed2156c90af1ef33b8a3875dffbe6ee939e70b3a35e0bd9c6f29d5de6ef929e73cf7eda773f6693fdce96e763e81f336fc983a32f9cfa8d124441d5d34b060 SHA512 57db11480752a650dc2871bd8be139492cd5273c3770aefab160855d601e524a24754cf3b4e60973ce00072c1025749c7f9d9d39a5447ca27ab60979e743a72d
diff --git a/dev-python/pylama/pylama-8.3.3.ebuild b/dev-python/pylama/pylama-8.3.3.ebuild
new file mode 100644
index 000000000000..ce2fa8f0c208
--- /dev/null
+++ b/dev-python/pylama/pylama-8.3.3.ebuild
@@ -0,0 +1,40 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{6,7,8,9,10} )
+inherit distutils-r1
+
+DESCRIPTION="Code audit tool for python"
+HOMEPAGE="https://github.com/klen/pylama"
+SRC_URI="https://github.com/klen/pylama/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ >=dev-python/mccabe-0.6.1[${PYTHON_USEDEP}]
+ >=dev-python/pycodestyle-2.8.0[${PYTHON_USEDEP}]
+ >=dev-python/pydocstyle-6.1.1[${PYTHON_USEDEP}]
+ >=dev-python/pyflakes-2.4.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/eradicate[${PYTHON_USEDEP}]
+ dev-python/mypy[${PYTHON_USEDEP}]
+ dev-python/pylint[${PYTHON_USEDEP}]
+ dev-python/radon[${PYTHON_USEDEP}]
+ dev-vcs/git
+ )
+"
+
+distutils_enable_sphinx docs
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # not packaged
+ tests/test_linters.py::test_quotes
+ tests/test_linters.py::test_vulture
+)
diff --git a/dev-python/pytest-salt-factories/Manifest b/dev-python/pytest-salt-factories/Manifest
index 810b7bb0d87c..2a5ad00fdc45 100644
--- a/dev-python/pytest-salt-factories/Manifest
+++ b/dev-python/pytest-salt-factories/Manifest
@@ -1 +1,2 @@
DIST pytest-salt-factories-0.121.1.tar.gz 102121 BLAKE2B 92cd5953b11377f1646f01b86a677a50216d16bcb944235a3f04176aecbb005974c415adcbf23cc391aab41b1ee9596984516ab61ecdd8c944d4ce707c39ab00 SHA512 32252695c6e8b17ef17d3330c4b0b38bdce89201d5573b4efa3531a72e826ee1fb26fea3ad0408401dec867cee405f21031804c32eb8fe6ceaa00925b17725a1
+DIST pytest-salt-factories-0.911.0.tar.gz 161682 BLAKE2B b5a827c9a9acc55c53bc4152b648f96845f513e2d1c8425cbde0862909996a653df4debbf798a3d7461da4fc221acd5fc8e6052e123f3e64e0c8f4345557f141 SHA512 bada21cfe990ccb10b0e298cb05a7f3842d0fe24e2c8664352ae991363d0094dd1ff877adea5fcc0c1040e3f20f82ba616607c595511cade93ebadddd336a26b
diff --git a/dev-python/pytest-salt-factories/files/pytest-salt-factories-0.911.0-tests.patch b/dev-python/pytest-salt-factories/files/pytest-salt-factories-0.911.0-tests.patch
new file mode 100644
index 000000000000..687b6a41b901
--- /dev/null
+++ b/dev-python/pytest-salt-factories/files/pytest-salt-factories-0.911.0-tests.patch
@@ -0,0 +1,469 @@
+diff --git a/src/saltfactories/plugins/__init__.py b/src/saltfactories/plugins/__init__.py
+index 679acad..ea6f23f 100644
+--- a/src/saltfactories/plugins/__init__.py
++++ b/src/saltfactories/plugins/__init__.py
+@@ -27,7 +27,7 @@ def pytest_tempdir_temproot():
+ tempdir = "/tmp"
+ else:
+ tempdir = os.environ.get("TMPDIR") or tempfile.gettempdir()
+- return os.path.abspath(os.path.realpath(tempdir))
++ return tempdir
+
+
+ def pytest_tempdir_basename():
+diff --git a/tests/functional/factories/base/test_salt_daemon_factory.py b/tests/functional/factories/base/test_salt_daemon_factory.py
+index 813e36c..2b2b3d8 100644
+--- a/tests/functional/factories/base/test_salt_daemon_factory.py
++++ b/tests/functional/factories/base/test_salt_daemon_factory.py
+@@ -35,7 +35,7 @@ def test_extra_cli_arguments_after_first_failure(
+ This test asserts that after the first start failure, the extra_cli_arguments_after_first_start_failure
+ arguments are added
+ """
+- output_file = tmp_path.joinpath("output.txt").resolve()
++ output_file = tmp_path.joinpath("output.txt")
+ config = {"conf_file": config_file, "id": master_id}
+ script = tempfiles.makepyfile(
+ r"""
+diff --git a/tests/functional/markers/test_requires_network.py b/tests/functional/markers/test_requires_network.py
+index 0b21ede..70343fb 100644
+--- a/tests/functional/markers/test_requires_network.py
++++ b/tests/functional/markers/test_requires_network.py
+@@ -9,7 +9,9 @@ from unittest import mock
+ from saltfactories.utils import ports
+ from saltfactories.utils import socket
+
++import pytest
+
++@pytest.mark.skip("Incompatible with network-sandbox")
+ def test_has_local_network(pytester):
+ pytester.makepyfile(
+ """
+diff --git a/tests/functional/markers/test_requires_salt_modules.py b/tests/functional/markers/test_requires_salt_modules.py
+index 034d5e6..6e50a22 100644
+--- a/tests/functional/markers/test_requires_salt_modules.py
++++ b/tests/functional/markers/test_requires_salt_modules.py
+@@ -4,9 +4,11 @@
+
+ Test the ``@pytest.mark.requires_salt_modules`` marker
+ """
++import sys
+ import pytest
+
+
++@pytest.mark.skipif(sys.version_info >= (3, 10), reason="test broken on python 3.10")
+ @pytest.mark.parametrize(
+ "modules",
+ [
+@@ -31,6 +33,7 @@ def test_has_required_salt_module(pytester, modules):
+ res.stdout.no_fnmatch_line("*PytestUnknownMarkWarning*")
+
+
++@pytest.mark.skipif(sys.version_info >= (3, 10), reason="test broken on python 3.10")
+ @pytest.mark.parametrize(
+ "modules",
+ [
+@@ -55,6 +58,7 @@ def test_missing_required_salt_module(pytester, modules):
+ res.stdout.no_fnmatch_line("*PytestUnknownMarkWarning*")
+
+
++@pytest.mark.skipif(sys.version_info >= (3, 10), reason="test broken on python 3.10")
+ def test_has_required_custom_salt_module(pytester):
+ pytester.makepyfile(
+ r"""
+diff --git a/tests/functional/markers/test_requires_salt_states.py b/tests/functional/markers/test_requires_salt_states.py
+index 6ec469d..79d9052 100644
+--- a/tests/functional/markers/test_requires_salt_states.py
++++ b/tests/functional/markers/test_requires_salt_states.py
+@@ -4,9 +4,11 @@
+
+ Test the ``@pytest.mark.requires_salt_states`` marker
+ """
++import sys
+ import pytest
+
+
++@pytest.mark.skipif(sys.version_info >= (3, 10), reason="test broken on python 3.10")
+ @pytest.mark.parametrize(
+ "modules",
+ [
+@@ -31,6 +33,7 @@ def test_has_required_salt_state(pytester, modules):
+ res.stdout.no_fnmatch_line("*PytestUnknownMarkWarning*")
+
+
++@pytest.mark.skipif(sys.version_info >= (3, 10), reason="test broken on python 3.10")
+ @pytest.mark.parametrize(
+ "modules",
+ [
+@@ -55,6 +58,7 @@ def test_missing_required_salt_state(pytester, modules):
+ res.stdout.no_fnmatch_line("*PytestUnknownMarkWarning*")
+
+
++@pytest.mark.skipif(sys.version_info >= (3, 10), reason="test broken on python 3.10")
+ def test_has_required_custom_salt_state(pytester):
+ pytester.makepyfile(
+ r"""
+diff --git a/tests/functional/test_sys_info.py b/tests/functional/test_sys_info.py
+index 61963e0..e1e7531 100644
+--- a/tests/functional/test_sys_info.py
++++ b/tests/functional/test_sys_info.py
+@@ -4,9 +4,11 @@
+
+ Tests related to system information reports enabled by the `--sys-info` flag.
+ """
++import sys
+ import pytest
+
+
++@pytest.mark.skipif(sys.version_info >= (3, 10), reason="test broken on python 3.10")
+ @pytest.mark.parametrize("flag", ["--sysinfo", "--sys-info"])
+ def test_sysinfo(pytester, flag):
+ pytester.makepyfile(
+@@ -30,6 +32,7 @@ def test_sysinfo(pytester, flag):
+ )
+
+
++@pytest.mark.skipif(sys.version_info >= (3, 10), reason="test broken on python 3.10")
+ def test_no_sysinfo(pytester):
+ pytester.makepyfile(
+ """
+diff --git a/tests/integration/factories/cli/test_salt.py b/tests/integration/factories/cli/test_salt.py
+index 91babb9..bc9e854 100644
+--- a/tests/integration/factories/cli/test_salt.py
++++ b/tests/integration/factories/cli/test_salt.py
+@@ -17,6 +17,7 @@ def salt_minion_2(salt_master, salt_minion):
+ yield factory
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_merged_json_out(salt_cli, salt_minion, salt_minion_2):
+ ret = salt_cli.run("test.ping", minion_tgt="*")
+ assert ret.exitcode == 0, ret
+@@ -27,6 +28,7 @@ def test_merged_json_out(salt_cli, salt_minion, salt_minion_2):
+ assert ret.json[salt_minion_2.id] is True
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_merged_json_out_disabled(salt_cli, salt_minion, salt_minion_2):
+ ret = salt_cli.run("test.ping", minion_tgt="*", merge_json_output=False)
+ assert ret.exitcode == 0, ret
+diff --git a/tests/integration/factories/daemons/api/test_api.py b/tests/integration/factories/daemons/api/test_api.py
+index 8202585..0e57d98 100644
+--- a/tests/integration/factories/daemons/api/test_api.py
++++ b/tests/integration/factories/daemons/api/test_api.py
+@@ -19,5 +19,6 @@ def salt_api(master):
+ yield factory
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_api(salt_api):
+ assert salt_api.is_running()
+diff --git a/tests/integration/factories/daemons/api/test_restarts.py b/tests/integration/factories/daemons/api/test_restarts.py
+index 7b91c33..7cd633a 100644
+--- a/tests/integration/factories/daemons/api/test_restarts.py
++++ b/tests/integration/factories/daemons/api/test_restarts.py
+@@ -12,6 +12,7 @@ def master(salt_factories):
+ yield factory
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_multiple_start_stops(master):
+ factory = master.salt_api_daemon()
+ assert factory.is_running() is False
+diff --git a/tests/integration/factories/daemons/master/test_master.py b/tests/integration/factories/daemons/master/test_master.py
+index e3c20e4..9be3631 100644
+--- a/tests/integration/factories/daemons/master/test_master.py
++++ b/tests/integration/factories/daemons/master/test_master.py
+@@ -1,4 +1,5 @@
+ import os
++import sys
+ import tempfile
+
+ import pytest
+@@ -51,10 +52,12 @@ def salt_call(minion):
+ return minion.salt_call_cli()
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_master(master):
+ assert master.is_running()
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_salt_run(master, salt_run):
+ max_open_files_config_value = master.config["max_open_files"]
+ ret = salt_run.run("config.get", "max_open_files")
+@@ -62,6 +65,7 @@ def test_salt_run(master, salt_run):
+ assert ret.json == max_open_files_config_value
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_salt_cp(master, minion, salt_cp, tempfiles):
+ """
+ Test copying a file from the master to the minion
+@@ -103,6 +107,7 @@ def test_salt_cp(master, minion, salt_cp, tempfiles):
+ os.unlink(dest)
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_salt_cp_no_match(master, minion, salt_cp, tempfiles):
+ assert master.is_running()
+ assert minion.is_running()
+@@ -124,6 +129,7 @@ def test_salt_cp_no_match(master, minion, salt_cp, tempfiles):
+ os.unlink(dest)
+
+
++@pytest.mark.skip("not compatible with sandbox")
+ @pytest.mark.skip_on_salt_system_install
+ def test_salt_key(master, minion, minion_3, salt_key):
+ ret = salt_key.run("--list-all")
+@@ -138,6 +144,7 @@ def test_salt_key(master, minion, minion_3, salt_key):
+
+ @pytest.mark.skip_on_windows
+ @pytest.mark.skip_on_salt_system_install
++@pytest.mark.skipif(sys.version_info >= (3, 10), reason="test broken on python 3.10")
+ def test_exit_status_unknown_user(salt_factories):
+ master = salt_factories.salt_master_daemon("set-exitcodes", overrides={"user": "unknown-user"})
+ with pytest.raises(FactoryNotStarted) as exc:
+@@ -147,6 +154,7 @@ def test_exit_status_unknown_user(salt_factories):
+ assert "The user is not available." in exc.value.stderr, str(exc.value)
+
+
++@pytest.mark.skip("not compatible with sandbox")
+ def test_state_tree(master, salt_call):
+ sls_contents = """
+ test:
+diff --git a/tests/integration/factories/daemons/master/test_restarts.py b/tests/integration/factories/daemons/master/test_restarts.py
+index 683970a..443dcfb 100644
+--- a/tests/integration/factories/daemons/master/test_restarts.py
++++ b/tests/integration/factories/daemons/master/test_restarts.py
+@@ -11,6 +11,7 @@ def master(salt_factories):
+ return factory
+
+
++@pytest.mark.skip("not compatible with network")
+ def test_multiple_start_stops(master):
+ assert master.is_running() is False
+ pid = None
+diff --git a/tests/integration/factories/daemons/minion/test_event_forwarder_engine.py b/tests/integration/factories/daemons/minion/test_event_forwarder_engine.py
+index 7983e29..ac1085d 100644
+--- a/tests/integration/factories/daemons/minion/test_event_forwarder_engine.py
++++ b/tests/integration/factories/daemons/minion/test_event_forwarder_engine.py
+@@ -28,6 +28,7 @@ def salt_call_cli(minion):
+ return minion.salt_call_cli()
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_event_listener_engine(minion, salt_call_cli, event_listener):
+ """
+ There are some events which the minion fires internally that never reach the master.
+diff --git a/tests/integration/factories/daemons/minion/test_minion.py b/tests/integration/factories/daemons/minion/test_minion.py
+index 8e73efc..4501f9d 100644
+--- a/tests/integration/factories/daemons/minion/test_minion.py
++++ b/tests/integration/factories/daemons/minion/test_minion.py
+@@ -27,6 +27,7 @@ def salt_call_cli(minion):
+ return minion.salt_call_cli()
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_minion(minion, salt_cli):
+ assert minion.is_running()
+ ret = salt_cli.run("test.ping", minion_tgt=minion.id)
+@@ -34,6 +35,7 @@ def test_minion(minion, salt_cli):
+ assert ret.json is True
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_no_match(minion, salt_cli):
+ assert minion.is_running()
+ ret = salt_cli.run("test.ping", minion_tgt="minion-2")
+@@ -41,6 +43,7 @@ def test_no_match(minion, salt_cli):
+ assert not ret.json
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_show_jid(minion, salt_cli):
+ assert minion.is_running()
+ ret = salt_cli.run("--show-jid", "test.ping", minion_tgt=minion.id)
+@@ -48,6 +51,7 @@ def test_show_jid(minion, salt_cli):
+ assert ret.json is True
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_minion_salt_call(minion, salt_call_cli):
+ assert minion.is_running()
+ ret = salt_call_cli.run("test.ping")
+@@ -59,6 +63,7 @@ def test_minion_salt_call(minion, salt_call_cli):
+ assert ret.json is True
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_salt_call_exception_handling_doesnt_timeout(minion, salt_call_cli):
+ ret = salt_call_cli.run(
+ "test.raise_exception", "OSError", "2", "No such file or directory", "/tmp/foo.txt"
+@@ -66,6 +71,7 @@ def test_salt_call_exception_handling_doesnt_timeout(minion, salt_call_cli):
+ assert ret.exitcode == 1, ret
+
+
++@pytest.mark.skip("not compatible with sandbox")
+ def test_state_tree(minion, salt_call_cli):
+ sls_contents = """
+ test:
+diff --git a/tests/integration/factories/daemons/minion/test_restarts.py b/tests/integration/factories/daemons/minion/test_restarts.py
+index ab1f044..4ac417d 100644
+--- a/tests/integration/factories/daemons/minion/test_restarts.py
++++ b/tests/integration/factories/daemons/minion/test_restarts.py
+@@ -10,6 +10,7 @@ def master(salt_factories):
+ yield factory
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_multiple_start_stops(master):
+ factory = master.salt_minion_daemon(random_string("minion-"))
+ assert factory.is_running() is False
+diff --git a/tests/integration/factories/daemons/proxy/test_proxy_minion.py b/tests/integration/factories/daemons/proxy/test_proxy_minion.py
+index 926e6ac..f30c986 100644
+--- a/tests/integration/factories/daemons/proxy/test_proxy_minion.py
++++ b/tests/integration/factories/daemons/proxy/test_proxy_minion.py
+@@ -35,6 +35,7 @@ def salt_call_cli(proxy_minion):
+ return proxy_minion.salt_call_cli()
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_proxy_minion(proxy_minion, salt_cli):
+ assert proxy_minion.is_running()
+ ret = salt_cli.run("test.ping", minion_tgt=proxy_minion.id)
+@@ -42,6 +43,7 @@ def test_proxy_minion(proxy_minion, salt_cli):
+ assert ret.json is True
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_no_match(proxy_minion, salt_cli):
+ assert proxy_minion.is_running()
+ ret = salt_cli.run("test.ping", minion_tgt="proxy-minion-2")
+@@ -49,6 +51,7 @@ def test_no_match(proxy_minion, salt_cli):
+ assert not ret.json
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_show_jid(proxy_minion, salt_cli):
+ if platform.is_darwin() and sys.version_info[:2] == (3, 7):
+ pytest.skip(
+@@ -61,6 +64,7 @@ def test_show_jid(proxy_minion, salt_cli):
+ assert ret.json is True
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_proxy_minion_salt_call(proxy_minion, salt_call_cli):
+ assert proxy_minion.is_running()
+ ret = salt_call_cli.run("test.ping")
+@@ -72,6 +76,7 @@ def test_proxy_minion_salt_call(proxy_minion, salt_call_cli):
+ assert ret.json is True
+
+
++@pytest.mark.skip("not compatible with sandbox")
+ def test_state_tree(proxy_minion, salt_call_cli):
+ sls_contents = """
+ test:
+diff --git a/tests/integration/factories/daemons/proxy/test_restarts.py b/tests/integration/factories/daemons/proxy/test_restarts.py
+index 22ef97d..c781059 100644
+--- a/tests/integration/factories/daemons/proxy/test_restarts.py
++++ b/tests/integration/factories/daemons/proxy/test_restarts.py
+@@ -17,6 +17,7 @@ def master(salt_factories):
+ yield factory
+
+
++@pytest.mark.skip("not compatible with sandbox")
+ def test_multiple_start_stops(master):
+ factory = master.salt_proxy_minion_daemon(random_string("proxy-minion-"))
+ assert factory.is_running() is False
+diff --git a/tests/integration/factories/daemons/ssh/test_salt_ssh.py b/tests/integration/factories/daemons/ssh/test_salt_ssh.py
+index e74471a..a288b6b 100644
+--- a/tests/integration/factories/daemons/ssh/test_salt_ssh.py
++++ b/tests/integration/factories/daemons/ssh/test_salt_ssh.py
+@@ -51,6 +51,7 @@ def salt_ssh_cli(sshd, salt_factories, master):
+
+
+ @pytest.mark.skip_on_windows
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_salt_ssh(salt_ssh_cli):
+ ret = salt_ssh_cli.run("--ignore-host-keys", "test.echo", "It Works!", minion_tgt="localhost")
+ assert ret.exitcode == 0
+diff --git a/tests/integration/factories/daemons/sshd/test_sshd.py b/tests/integration/factories/daemons/sshd/test_sshd.py
+index 3b425fc..3e03636 100644
+--- a/tests/integration/factories/daemons/sshd/test_sshd.py
++++ b/tests/integration/factories/daemons/sshd/test_sshd.py
+@@ -5,6 +5,7 @@ import pytest
+
+ @pytest.fixture(scope="module")
+ @pytest.mark.skip_if_binaries_missing("sshd", "ssh-keygen")
++@pytest.mark.skip("not compatible with network-sandbox")
+ def sshd(salt_factories):
+ # Set StrictModes to no because our config directory lives in /tmp and those permissions
+ # are not acceptable by sshd strict paranoia.
+@@ -15,12 +16,14 @@ def sshd(salt_factories):
+
+
+ @pytest.mark.skip_on_windows
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_sshd(sshd):
+ assert sshd.is_running()
+
+
+ @pytest.mark.skip_on_windows
+ @pytest.mark.skip_if_binaries_missing("ssh")
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_connect(sshd):
+ cmd = subprocess.run(
+ [
+diff --git a/tests/integration/utils/saltext/test_log_handlers.py b/tests/integration/utils/saltext/test_log_handlers.py
+index 96ad66d..118062b 100644
+--- a/tests/integration/utils/saltext/test_log_handlers.py
++++ b/tests/integration/utils/saltext/test_log_handlers.py
+@@ -24,6 +24,7 @@ def salt_cli(master):
+ return master.salt_cli()
+
+
++@pytest.mark.skip("Not compatible with sandbox")
+ def test_logs_forwarded_from_sub_processes(salt_cli, minion, caplog):
+ assert minion.is_running()
+
+diff --git a/tests/scenarios/examples/test_echoext.py b/tests/scenarios/examples/test_echoext.py
+index 3d5ce65..5fd503f 100644
+--- a/tests/scenarios/examples/test_echoext.py
++++ b/tests/scenarios/examples/test_echoext.py
+@@ -1,6 +1,8 @@
+ from saltfactories import CODE_ROOT_DIR
+
++import pytest
+
++@pytest.mark.skip("Incompatible with sandbox")
+ def test_echoext(extension_venv):
+ extension_path = CODE_ROOT_DIR.parent.parent / "examples" / "echo-extension"
+ with extension_venv(extension_path) as venv:
+diff --git a/tests/unit/utils/markers/test_skip_if_no_remote_network.py b/tests/unit/utils/markers/test_skip_if_no_remote_network.py
+index 1aa72dc..c4d079e 100644
+--- a/tests/unit/utils/markers/test_skip_if_no_remote_network.py
++++ b/tests/unit/utils/markers/test_skip_if_no_remote_network.py
+@@ -9,7 +9,10 @@ from unittest import mock
+ import saltfactories.utils.markers as markers
+ from saltfactories.utils import socket
+
++import pytest
+
++
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_has_remote_network():
+ assert markers.skip_if_no_remote_network() is None
+
+diff --git a/tests/unit/utils/test_platform.py b/tests/unit/utils/test_platform.py
+index 28dac0c..b28bcbb 100644
+--- a/tests/unit/utils/test_platform.py
++++ b/tests/unit/utils/test_platform.py
+@@ -120,6 +120,7 @@ def test_is_not_aix():
+ assert saltfactories.utils.platform.is_aix() is return_value
+
+
++@pytest.mark.skip("Doesn't work with salt-3004")
+ def test_is_aarch64():
+ return_value = True
+ with mock.patch("sys.platform", "aarch64"):
diff --git a/dev-python/pytest-salt-factories/pytest-salt-factories-0.911.0.ebuild b/dev-python/pytest-salt-factories/pytest-salt-factories-0.911.0.ebuild
new file mode 100644
index 000000000000..f9eb77cacc5c
--- /dev/null
+++ b/dev-python/pytest-salt-factories/pytest-salt-factories-0.911.0.ebuild
@@ -0,0 +1,70 @@
+# Copyright 2020-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{6,7,8,9,10} )
+inherit distutils-r1
+
+DESCRIPTION="The new generation of the pytest-salt Plugin"
+HOMEPAGE="https://github.com/saltstack/pytest-salt-factories"
+SRC_URI="https://github.com/saltstack/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+IUSE="test"
+
+RDEPEND="
+ dev-python/attrs[${PYTHON_USEDEP}]
+ dev-python/pytest-tempdir[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ >=dev-python/pytest-6.0.0[${PYTHON_USEDEP}]
+ dev-python/pytest-helpers-namespace[${PYTHON_USEDEP}]
+ dev-python/pyzmq[${PYTHON_USEDEP}]
+ dev-python/msgpack[${PYTHON_USEDEP}]
+ >=app-admin/salt-3001.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ ${RDEPEND}
+ test? (
+ dev-python/pyfakefs[${PYTHON_USEDEP}]
+ dev-python/pytest-subtests[${PYTHON_USEDEP}]
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}/pytest-salt-factories-0.911.0-tests.patch"
+)
+
+distutils_enable_tests --install pytest
+
+python_prepare_all() {
+ sed -r -e "s:use_scm_version=True:version='${PV}', name='${PN//-/.}':" -i setup.py || die
+ sed -r -e '/(setuptools|setup_requires)/ d' -i setup.cfg || die
+
+ sed -i 's:tool.setuptools_scm:tool.disabled:' pyproject.toml || die
+ printf '__version__ = "%s"\n' "${PV}" > src/saltfactories/version.py || die
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ local tempdir
+
+ # ${T} is too long a path for the tests to work
+ tempdir="$(mktemp -du --tmpdir=/tmp salt-XXX)"
+ mkdir "${T}/$(basename "${tempdir}")"
+
+ addwrite "${tempdir}"
+ ln -s "$(realpath --relative-to=/tmp "${T}/$(basename "${tempdir}")")" "${tempdir}" || die
+
+ distutils_install_for_testing --via-root
+
+ (
+ cleanup() { rm -f "${tempdir}" || die; }
+
+ trap cleanup EXIT
+ env SHELL="/bin/bash" TMPDIR="${tempdir}" \
+ pytest -vv || die "Tests failed with ${EPYTHON}"
+ )
+}
diff --git a/dev-python/python-axolotl-curve25519/python-axolotl-curve25519-0.4.1_p2-r1.ebuild b/dev-python/python-axolotl-curve25519/python-axolotl-curve25519-0.4.1_p2-r1.ebuild
index 6645c74e8a8e..07484405f06b 100644
--- a/dev-python/python-axolotl-curve25519/python-axolotl-curve25519-0.4.1_p2-r1.ebuild
+++ b/dev-python/python-axolotl-curve25519/python-axolotl-curve25519-0.4.1_p2-r1.ebuild
@@ -17,4 +17,4 @@ S="${WORKDIR}/${PN}-${MY_PV}"
LICENSE="BSD GPL-3"
SLOT="0"
-KEYWORDS="amd64 ~riscv x86"
+KEYWORDS="amd64 ~arm64 ~riscv x86"
diff --git a/dev-python/python-axolotl/python-axolotl-0.2.3-r1.ebuild b/dev-python/python-axolotl/python-axolotl-0.2.3-r1.ebuild
index 34a4131b139f..858091b341db 100644
--- a/dev-python/python-axolotl/python-axolotl-0.2.3-r1.ebuild
+++ b/dev-python/python-axolotl/python-axolotl-0.2.3-r1.ebuild
@@ -14,7 +14,7 @@ SRC_URI="https://github.com/tgalal/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="GPL-3"
SLOT="0"
-KEYWORDS="amd64 ~riscv x86"
+KEYWORDS="amd64 ~arm64 ~riscv x86"
RDEPEND="
dev-python/cryptography[${PYTHON_USEDEP}]
diff --git a/dev-python/python-dotenv/python-dotenv-0.19.2.ebuild b/dev-python/python-dotenv/python-dotenv-0.19.2.ebuild
index b5a3300a9e2c..b09e21d6c36f 100644
--- a/dev-python/python-dotenv/python-dotenv-0.19.2.ebuild
+++ b/dev-python/python-dotenv/python-dotenv-0.19.2.ebuild
@@ -12,7 +12,7 @@ SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~hppa ppc ppc64 sparc x86"
+KEYWORDS="amd64 arm arm64 hppa ppc ppc64 sparc x86"
DEPEND="
test? (
diff --git a/dev-python/python-email-validator/python-email-validator-1.1.3.ebuild b/dev-python/python-email-validator/python-email-validator-1.1.3.ebuild
index 4d752ef37bc0..1f47f0bc0dbc 100644
--- a/dev-python/python-email-validator/python-email-validator-1.1.3.ebuild
+++ b/dev-python/python-email-validator/python-email-validator-1.1.3.ebuild
@@ -11,7 +11,7 @@ HOMEPAGE="https://github.com/JoshData/python-email-validator"
SRC_URI="https://github.com/JoshData/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="CC0-1.0"
-KEYWORDS="amd64 arm arm64 ~hppa ppc ppc64 sparc x86"
+KEYWORDS="amd64 arm arm64 hppa ppc ppc64 sparc x86"
SLOT="0"
RDEPEND="
diff --git a/dev-python/python-nbxmpp/python-nbxmpp-2.0.4.ebuild b/dev-python/python-nbxmpp/python-nbxmpp-2.0.4.ebuild
index 4856d6c984b9..e9e9c1e1b3bd 100644
--- a/dev-python/python-nbxmpp/python-nbxmpp-2.0.4.ebuild
+++ b/dev-python/python-nbxmpp/python-nbxmpp-2.0.4.ebuild
@@ -14,7 +14,7 @@ S=${WORKDIR}/${MY_P}
SLOT="0"
LICENSE="GPL-3"
-KEYWORDS="amd64 ~riscv x86"
+KEYWORDS="amd64 ~arm64 ~riscv x86"
RDEPEND="
dev-libs/gobject-introspection
diff --git a/dev-python/raet/files/raet-0.6.8-py310.patch b/dev-python/raet/files/raet-0.6.8-py310.patch
new file mode 100644
index 000000000000..94e5287db0b6
--- /dev/null
+++ b/dev-python/raet/files/raet-0.6.8-py310.patch
@@ -0,0 +1,69 @@
+diff --git a/raet/lane/paging.py b/raet/lane/paging.py
+index 5a2f480..e33d95c 100644
+--- a/raet/lane/paging.py
++++ b/raet/lane/paging.py
+@@ -6,7 +6,7 @@ paging module provides classes for RAET UXD messaging management
+ '''
+
+ # Import python libs
+-from collections import Mapping
++from collections.abc import Mapping
+ try:
+ import simplejson as json
+ except ImportError:
+diff --git a/raet/lane/stacking.py b/raet/lane/stacking.py
+index 3969cd9..be88111 100644
+--- a/raet/lane/stacking.py
++++ b/raet/lane/stacking.py
+@@ -11,7 +11,8 @@ import sys
+ import os
+ import errno
+
+-from collections import deque, Mapping
++from collections import deque
++from collections.abc import Mapping
+ try:
+ import simplejson as json
+ except ImportError:
+diff --git a/raet/road/packeting.py b/raet/road/packeting.py
+index 0675912..078d76d 100644
+--- a/raet/road/packeting.py
++++ b/raet/road/packeting.py
+@@ -6,7 +6,8 @@ packeting module provides classes for Raet packets
+ '''
+
+ # Import python libs
+-from collections import Mapping, deque
++from collections import deque
++from collections.abc import Mapping
+ try:
+ import simplejson as json
+ except ImportError:
+diff --git a/raet/road/stacking.py b/raet/road/stacking.py
+index 924ae52..4d8670b 100644
+--- a/raet/road/stacking.py
++++ b/raet/road/stacking.py
+@@ -10,7 +10,8 @@ import socket
+ import os
+ import errno
+
+-from collections import deque, Mapping
++from collections import deque
++from collections.abc import Mapping
+ try:
+ import simplejson as json
+ except ImportError:
+diff --git a/raet/stacking.py b/raet/stacking.py
+index 0a1743a..9244b66 100644
+--- a/raet/stacking.py
++++ b/raet/stacking.py
+@@ -13,7 +13,8 @@ import sys
+ if sys.version_info > (3,):
+ long = int
+
+-from collections import deque, Mapping
++from collections import deque
++from collections.abc import Mapping
+ try:
+ import simplejson as json
+ except ImportError:
diff --git a/dev-python/raet/raet-0.6.8-r3.ebuild b/dev-python/raet/raet-0.6.8-r3.ebuild
new file mode 100644
index 000000000000..8ea358857518
--- /dev/null
+++ b/dev-python/raet/raet-0.6.8-r3.ebuild
@@ -0,0 +1,40 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+PYTHON_COMPAT=( python3_{6,7,8,9,10} )
+inherit distutils-r1
+
+DESCRIPTION="Reliable Asynchronous Event Transport Protocol"
+HOMEPAGE="https://github.com/RaetProtocol/raet"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND=">=dev-python/six-1.6.1[${PYTHON_USEDEP}]
+ >=dev-python/libnacl-1.4.3[${PYTHON_USEDEP}]
+ >=dev-python/ioflo-2.0[${PYTHON_USEDEP}]"
+BDEPEND="${RDEPEND}
+ test? (
+ >=dev-python/msgpack-1.0.0[${PYTHON_USEDEP}]
+ )"
+
+PATCHES=(
+ "${FILESDIR}/raet-0.6.8-msgpack-1.0.patch"
+ "${FILESDIR}/raet-0.6.8-py310.patch"
+)
+
+python_prepare_all() {
+ distutils-r1_python_prepare_all
+ sed -e "/setuptools_git/d" -i setup.py || die
+}
+
+python_test() {
+ pushd "${BUILD_DIR}"/lib || die
+ ${EPYTHON} ${PN}/test/__init__.py || die "tests failed for ${EPYTHON}"
+ popd || die
+}
diff --git a/dev-python/scrypt/Manifest b/dev-python/scrypt/Manifest
index 913083247d4a..f8ec8e3a6068 100644
--- a/dev-python/scrypt/Manifest
+++ b/dev-python/scrypt/Manifest
@@ -1,2 +1,2 @@
-DIST scrypt-0.8.17.tar.gz 56638 BLAKE2B 521a2408ac09b02735eaa2a7ca25a279495ecd85a4ea2d5597cf67ed95c4b491b71bcf24d57c15e410757fe87e5aea64eba631879e507126adff6d2c8c4b4c8e SHA512 262c44251314bf365dfb59587394eab15c732443ed4bf0c989939c759b8a42c1ef00ff42c08da07e0e1a7a9b41f6831bd298e845c95eb7c6c80244740c70a1ab
DIST scrypt-0.8.18.tar.gz 56651 BLAKE2B d0e71e0677ab5f159da829eaf8e794fab9fa9290ff3688e525c4f2e9c60fda532d1c302fe4088bd8e88e06e926ef95d06bad145697e8a13e2662eda7027479b7 SHA512 b033203f65dd63c1e915eeff6232c01f806eb01d3ce18e753b6161ae667555095fe775585dd0d4e15ae228f2d4862860093c1a18d5b810b438d032df9fb24d81
+DIST scrypt-0.8.19.tar.gz 54770 BLAKE2B cf4cc0343f661466394a012ecba61b85431ed4c4552d976ebe1e435d9b97a29ad584e5ab1e01d2387c61562cdbb5cdfacfc5da0b3e70ea0570221e85c31139b3 SHA512 26503aa5c06b4c47a25f7a8c1b4c9a81986ffef5816f11851b2db755b13eed11c0fade9e00942b389204089547718de05db540da91196c3a37ce219ff1a601f8
diff --git a/dev-python/scrypt/scrypt-0.8.17.ebuild b/dev-python/scrypt/scrypt-0.8.19.ebuild
index 6464739b2c60..07f6dfde1360 100644
--- a/dev-python/scrypt/scrypt-0.8.17.ebuild
+++ b/dev-python/scrypt/scrypt-0.8.19.ebuild
@@ -1,6 +1,6 @@
# Copyright 2021 Liguros Authors
# Distributed under the terms of the GNU General Public License v2
-EAPI=7
+EAPI=8
PYTHON_COMPAT=( python3_{6,7,8,9,10} pypy3 )
diff --git a/dev-python/sh/sh-1.14.2.ebuild b/dev-python/sh/sh-1.14.2.ebuild
index d41db55b9d56..6987423c5f97 100644
--- a/dev-python/sh/sh-1.14.2.ebuild
+++ b/dev-python/sh/sh-1.14.2.ebuild
@@ -13,7 +13,7 @@ SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~hppa ppc ppc64 sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="amd64 arm arm64 hppa ppc ppc64 sparc x86 ~amd64-linux ~x86-linux"
PATCHES=(
"${FILESDIR}/sh-1.12.14-skip-unreliable-test.patch"
diff --git a/dev-python/statsmodels/statsmodels-0.13.1.ebuild b/dev-python/statsmodels/statsmodels-0.13.1.ebuild
index 1f60506d1aa2..b26ea6ee8c9b 100644
--- a/dev-python/statsmodels/statsmodels-0.13.1.ebuild
+++ b/dev-python/statsmodels/statsmodels-0.13.1.ebuild
@@ -13,7 +13,7 @@ SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~ia64 ~ppc ~ppc64 ~riscv ~s390 ~x86 ~amd64-linux ~x86-linux"
+KEYWORDS="amd64 ~arm arm64 ~ia64 ~ppc ~ppc64 ~riscv ~s390 x86 ~amd64-linux ~x86-linux"
IUSE="examples"
DEPEND="
diff --git a/dev-python/uvloop/uvloop-0.16.0.ebuild b/dev-python/uvloop/uvloop-0.16.0.ebuild
index 2423a45753ea..e455238e68ab 100644
--- a/dev-python/uvloop/uvloop-0.16.0.ebuild
+++ b/dev-python/uvloop/uvloop-0.16.0.ebuild
@@ -10,7 +10,7 @@ DESCRIPTION="Ultra-fast implementation of asyncio event loop on top of libuv"
HOMEPAGE="https://github.com/magicstack/uvloop"
SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
-KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ppc ~ppc64 -riscv sparc ~x86"
+KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ppc ~ppc64 -riscv sparc x86"
LICENSE="MIT"
SLOT="0"
IUSE="doc examples"
diff --git a/dev-python/watchgod/watchgod-0.7.ebuild b/dev-python/watchgod/watchgod-0.7.ebuild
index 8873845c1424..bae7ff7dcbbc 100644
--- a/dev-python/watchgod/watchgod-0.7.ebuild
+++ b/dev-python/watchgod/watchgod-0.7.ebuild
@@ -27,3 +27,15 @@ BDEPEND="
"
distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # flaky test on slow systems, https://github.com/samuelcolvin/watchgod/issues/84
+ tests/test_watch.py::test_awatch_log
+)
+
+src_prepare() {
+ # increase timeout
+ sed -e '/sleep/s/0.01/1.0/' -i tests/test_watch.py || die
+
+ distutils-r1_src_prepare
+}
diff --git a/dev-python/websockets/Manifest b/dev-python/websockets/Manifest
index 84a8b95eb32a..de724b503ed6 100644
--- a/dev-python/websockets/Manifest
+++ b/dev-python/websockets/Manifest
@@ -1,4 +1,2 @@
DIST websockets-10.0-src.tar.gz 276231 BLAKE2B 6170f0540bc33be3d9a71f596ffee58e6e43c2173239a8fffe4f0c2a7555f8ce26849d85ed7865a5df6a4401f01bb0c928a341598916487cc79152a5031e9bbc SHA512 532289dc411d11cffc6e5aa07013cdad9655f124fbbd5dbdfe92985caf554644976a521466b1d3cbe124de11809e395b5e83195eac87495585779591b189c4d7
DIST websockets-10.1-src.tar.gz 299315 BLAKE2B 425e7c8597f081874127ac75003aed11ebb2cf647ce9fed9e17c955e485a7a59c95d1112524d3f0d747b796b0cc41972258661c9fc9c7972f68aaebe3223b596 SHA512 c284ec92bc133c7083a72d4f364d9ace13d3eb6d7355ae46084d8097c137cdec3933cae9d5ab72d8a517af38328cea6c39877f747f5386df54a7362271cc7e7b
-DIST websockets-9.1-python-3.10-support.patch.gz 6940 BLAKE2B e4835c7d5efaf956d07b884c85e0b95f26674bf36164fa8362d1c1a564a959bde761d25e747333c58864f74a5ea1b199f228a46ec6a1647c5495ea032020c179 SHA512 7fb4b298a9167c8d913e293fa7549b21d5acb333a5b97e0624a22cb83548ef548b819ac23750c40295140b6f83a701c73a81fdcaed3ab8e704dbee8e17d22f1d
-DIST websockets-9.1-src.tar.gz 191813 BLAKE2B cb3807f01e1a4c22a40bf5150d1e8b21ca786dc5bc4da8f3e6602971f3f7c79b57092f5ddfe3ee52ec00e7fd15f3a992fdbb94b5e26599f2621a7f51434ba6dd SHA512 ff2907a913ff0b8ced6dda72b6fc6512a2ece3ffded2e2dcb8ff6805de9ad504430cc1871c1f6e02ab8069e7b96b2e7609afaf3c9c25f9271b28e2daa72bd3ac
diff --git a/dev-python/websockets/websockets-10.0.ebuild b/dev-python/websockets/websockets-10.0.ebuild
index 4fdd85c4835a..a2248baa3966 100644
--- a/dev-python/websockets/websockets-10.0.ebuild
+++ b/dev-python/websockets/websockets-10.0.ebuild
@@ -15,7 +15,7 @@ SRC_URI="
LICENSE="BSD"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~hppa ppc ppc64 ~riscv sparc x86"
+KEYWORDS="amd64 arm arm64 hppa ppc ppc64 ~riscv sparc x86"
distutils_enable_tests unittest
diff --git a/dev-python/websockets/websockets-9.1-r1.ebuild b/dev-python/websockets/websockets-9.1-r1.ebuild
deleted file mode 100644
index a24cb80f9b34..000000000000
--- a/dev-python/websockets/websockets-9.1-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=8
-
-PYTHON_COMPAT=( python3_{6,7,8,9,10} )
-
-inherit distutils-r1
-
-DESCRIPTION="Library for building WebSocket servers and clients in Python"
-HOMEPAGE="https://websockets.readthedocs.io/"
-SRC_URI="
- https://github.com/aaugustin/${PN}/archive/${PV}.tar.gz -> ${P}-src.tar.gz
- https://dev.gentoo.org/~sbraz/${P}-python-3.10-support.patch.gz
-"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="amd64 arm arm64 ppc ppc64 ~riscv sparc x86"
-
-distutils_enable_tests unittest
-
-PATCHES=(
- # https://github.com/aaugustin/websockets/commit/08d8011132ba038b3f6c4d591189b57af4c9f147
- "${WORKDIR}/${P}-python-3.10-support.patch"
-)
-
-src_prepare() {
- # these fail due to timeouts on slower hardware
- sed -e 's:test_keepalive_ping_with_no_ping_timeout:_&:' \
- -e 's:test_keepalive_ping(:_&:' \
- -i tests/legacy/test_protocol.py || die
-
- distutils-r1_src_prepare
-}
-
-# Be more tolerant with time-sensitive tests for slow systems.
-export WEBSOCKETS_TESTS_TIMEOUT_FACTOR=100
diff --git a/dev-python/wsproto/wsproto-1.0.0.ebuild b/dev-python/wsproto/wsproto-1.0.0.ebuild
index fb3eb212aca4..eaf1b0e8ada3 100644
--- a/dev-python/wsproto/wsproto-1.0.0.ebuild
+++ b/dev-python/wsproto/wsproto-1.0.0.ebuild
@@ -15,7 +15,7 @@ SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~hppa ppc ppc64 sparc x86"
+KEYWORDS="amd64 arm arm64 hppa ppc ppc64 sparc x86"
RDEPEND=">=dev-python/h11-0.9[${PYTHON_USEDEP}]"