summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2021-05-15 13:40:45 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2021-05-15 13:40:45 +0000
commit4fdc4365dce1f56156fc587f23704578b357eaba (patch)
tree9d18587311a929af94911d8180617f4c69209ac8 /dev-python
parent3911cd499e81458093f7ac17c39a4b5cd7fcb861 (diff)
downloadbaldeagleos-repo-4fdc4365dce1f56156fc587f23704578b357eaba.tar.gz
baldeagleos-repo-4fdc4365dce1f56156fc587f23704578b357eaba.tar.xz
baldeagleos-repo-4fdc4365dce1f56156fc587f23704578b357eaba.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/aiodns/Manifest1
-rw-r--r--dev-python/aiodns/aiodns-3.0.0.ebuild25
-rw-r--r--dev-python/asyncstdlib/Manifest1
-rw-r--r--dev-python/asyncstdlib/asyncstdlib-3.9.2.ebuild27
-rw-r--r--dev-python/boto3/Manifest1
-rw-r--r--dev-python/boto3/boto3-1.17.73.ebuild56
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.20.73.ebuild59
-rw-r--r--dev-python/cython/cython-0.29.23.ebuild2
-rw-r--r--dev-python/cython/files/cython-0.29.23-test_exceptions-py310.patch14
-rw-r--r--dev-python/cython/files/cython-0.29.23-tracing-py310.patch213
-rw-r--r--dev-python/dask/Manifest1
-rw-r--r--dev-python/dask/dask-2021.5.0.ebuild42
-rw-r--r--dev-python/dnspython/dnspython-1.16.0-r2.ebuild (renamed from dev-python/dnspython/dnspython-1.16.0-r1.ebuild)7
-rw-r--r--dev-python/dnspython/files/dnspython-1.16.0-py310.patch13
-rw-r--r--dev-python/fsspec/Manifest1
-rw-r--r--dev-python/fsspec/fsspec-2021.05.0.ebuild47
-rw-r--r--dev-python/gmpy/Manifest1
-rw-r--r--dev-python/gmpy/files/gmpy-2.1.0_beta5-failed-tests.patch132
-rw-r--r--dev-python/gmpy/files/gmpy-2.1.0_beta5-pyhash-nan.patch17
-rw-r--r--dev-python/gmpy/files/gmpy-2.1.0_beta5-test-input.patch12
-rw-r--r--dev-python/gmpy/gmpy-2.1.0_beta5.ebuild53
-rw-r--r--dev-python/google-auth/google-auth-1.30.0.ebuild2
-rw-r--r--dev-python/h11/h11-0.12.0.ebuild2
-rw-r--r--dev-python/httpcore/httpcore-0.13.3.ebuild2
-rw-r--r--dev-python/httpretty/httpretty-1.1.1.ebuild2
-rw-r--r--dev-python/httpx/httpx-0.18.1.ebuild2
-rw-r--r--dev-python/pulsectl/Manifest2
-rw-r--r--dev-python/pulsectl/metadata.xml18
-rw-r--r--dev-python/pulsectl/pulsectl-21.5.14.ebuild20
-rw-r--r--dev-python/pulsectl/pulsectl-21.5.17.ebuild20
-rw-r--r--dev-python/pytest-cov/Manifest1
-rw-r--r--dev-python/pytest-cov/pytest-cov-2.12.0.ebuild49
-rw-r--r--dev-python/pytools/pytools-9999.ebuild2
-rw-r--r--dev-python/pyu2f/pyu2f-0.1.4-r1.ebuild4
-rw-r--r--dev-python/sh/Manifest1
-rw-r--r--dev-python/sh/sh-1.14.2.ebuild25
-rw-r--r--dev-python/sniffio/sniffio-1.2.0.ebuild2
-rw-r--r--dev-python/uvicorn/uvicorn-0.13.4.ebuild2
-rw-r--r--dev-python/wsproto/wsproto-1.0.0.ebuild2
40 files changed, 872 insertions, 12 deletions
diff --git a/dev-python/aiodns/Manifest b/dev-python/aiodns/Manifest
index e13432e4f1a8..9f41ab2f6a22 100644
--- a/dev-python/aiodns/Manifest
+++ b/dev-python/aiodns/Manifest
@@ -1 +1,2 @@
DIST aiodns-2.0.0.tar.gz 5948 BLAKE2B 70944ffbfa3fa1c591c5aab6ce2c4c59564a7665fd2eda1b544616a4481e58464f918081dfb21f74db08ebe4c7e43eebd17e0dc314cf79423835a182a257cd11 SHA512 d80b8f7641234c4d367e4554b10c5a66265e75ee82c58adf2a36f9e369bb1dbf4341dd6459f10540b771de3f102454511ca81eddf3082733e88c09bbdf125fe0
+DIST aiodns-3.0.0.tar.gz 6743 BLAKE2B 2a3c61156069fa598df58191b35383da3e054396cdeb1bc8916cc0414bb6efc89d45789883a5b4f33e3a08a6ee544356b02d6c697c096deae3398f0ff4d3c316 SHA512 8c1016f3b0cb461e70e9a55034f9ad3b3db705a845bf20bb6503c7a5d592b4c5d2e8ddc60b375c5fafdc559dc4566736f4c93f26710be2dcbd181284ef039825
diff --git a/dev-python/aiodns/aiodns-3.0.0.ebuild b/dev-python/aiodns/aiodns-3.0.0.ebuild
new file mode 100644
index 000000000000..b525f06b411f
--- /dev/null
+++ b/dev-python/aiodns/aiodns-3.0.0.ebuild
@@ -0,0 +1,25 @@
+# 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="Simple DNS resolver for asyncio"
+HOMEPAGE="https://github.com/saghul/aiodns/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE=""
+# Tests fail with network-sandbox, since they try to resolve google.com
+RESTRICT="test"
+
+RDEPEND=">=dev-python/pycares-3[${PYTHON_USEDEP}]"
+DEPEND="${RDEPEND}"
+
+python_test() {
+ "${EPYTHON}" tests.py -v || die
+}
diff --git a/dev-python/asyncstdlib/Manifest b/dev-python/asyncstdlib/Manifest
index 9899598eb5fb..33b3fa606274 100644
--- a/dev-python/asyncstdlib/Manifest
+++ b/dev-python/asyncstdlib/Manifest
@@ -1 +1,2 @@
DIST asyncstdlib-3.9.1.gh.tar.gz 40224 BLAKE2B 8d1e564c9f5ac10c7f05dfa3933f695ae458685550fb67401f3bd0d1294ef0b170f5b385cdcf63c0096854538219a0dea77d4d80bd801f1a9b15f5ad3f2c562a SHA512 de7860d84cee7bfdc974a0677cc231323c86238bcb0bfd2f32a62b7356042aad647ee8d627393be35c5a134855d5f76967143ad8347df9d6258f46bc2b43a62a
+DIST asyncstdlib-3.9.2.gh.tar.gz 41963 BLAKE2B da40c23bacc58c1347aca94107e3026829d9b27645eddc47fc46a96cab4be7baa9ed3c31f6f0045b884130d4316394d6a0b6b44818b42b6e6c512c641847d556 SHA512 f5268451325b48b967747b5e1ffe4e773a5aae82c6d481781e6c95f483d972da2b3806c1117067256d22efaba1238787898667a6a50ac4b2512dac4b5343d2a2
diff --git a/dev-python/asyncstdlib/asyncstdlib-3.9.2.ebuild b/dev-python/asyncstdlib/asyncstdlib-3.9.2.ebuild
new file mode 100644
index 000000000000..8897723b62ee
--- /dev/null
+++ b/dev-python/asyncstdlib/asyncstdlib-3.9.2.ebuild
@@ -0,0 +1,27 @@
+# Copyright 2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DISTUTILS_USE_SETUPTOOLS=pyproject.toml
+PYTHON_COMPAT=( python3_{6,7,8,9,10} )
+inherit distutils-r1
+
+DESCRIPTION="The missing async toolbox"
+HOMEPAGE="
+ https://github.com/maxfischer2781/asyncstdlib/
+ https://pypi.org/project/asyncstdlib/"
+SRC_URI="
+ https://github.com/maxfischer2781/asyncstdlib/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ $(python_gen_cond_dep '
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+ ' python3_7)"
+
+distutils_enable_tests pytest
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index 0d8c9fa880d4..7309911995a4 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -8,3 +8,4 @@ DIST boto3-1.17.69.tar.gz 369006 BLAKE2B 6ad2e9ccb71872c5936f63b786b4b7addd5ff6f
DIST boto3-1.17.70.tar.gz 369851 BLAKE2B 31416aed68f340842962dca12f77e169f87f2f2a63fa5189c298678d0672f1edf349e0884856624faa971dd2e1c248e320c92dc8189fc63612cce24680971e5c SHA512 fa0bbcdc9027f09007780f75d3a41aef7656c934bc10f710f5787fd7cd7a7124475437e62e7d507e24f773668102a75c4b3b5cfffa5d2834f75fa930894ce227
DIST boto3-1.17.71.tar.gz 370105 BLAKE2B d0ea164459e7f79f5d9124af1917eb1a6ef9743792cd13daf58f8c70c852e537392ae8e3fb7ddaf5cea75e914ebb44c205f865f1b896827322b0be8500dc4a4f SHA512 b934ee87fbbced5a6c180517eb2b304b0d097dabc7f9831ebd4945d1b69919e3701955d92b4cfa5cd00da42f32fce731b70dfb3f69b5583eba0a032b4ef3505d
DIST boto3-1.17.72.tar.gz 370275 BLAKE2B 2a6923fb9ca0a67e9096844cf66a3dbf74e77eb1b4ade6f17fc248dff5249b467bf07bfe51779a65dcc9d41f20597419418cb7aca04cf03b3ab7c6556772b685 SHA512 c185c05c590d6e7d61db6ea88082a1520229fb9384eb04e0d0c19108cb3cbab53714dcc46b0de064e11e8989036e782f21d687dc12312a019717dbf082febe35
+DIST boto3-1.17.73.tar.gz 371093 BLAKE2B 1259a4c8ad0c87cae66c6f30c70ea785927669f82ba3fe196db30e7dd8c92f940928a25c4cb263d3b9f0c9944a4dbf8d0cd4dc52770d60286a50ca4830d3129a SHA512 582ced34557e3ce20628a5093c80f7a9231e010da4a9c4f7669b7c04f1eae8c4edf050b75fc00675f03d4e9fbb3dbd97441cd9a99c7e050a3914f072810a8aeb
diff --git a/dev-python/boto3/boto3-1.17.73.ebuild b/dev-python/boto3/boto3-1.17.73.ebuild
new file mode 100644
index 000000000000..2df16964cdb0
--- /dev/null
+++ b/dev-python/boto3/boto3-1.17.73.ebuild
@@ -0,0 +1,56 @@
+# 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} )
+DISTUTILS_USE_SETUPTOOLS=bdepend
+inherit distutils-r1
+
+DESCRIPTION="The AWS SDK for Python"
+HOMEPAGE="https://github.com/boto/boto3"
+LICENSE="Apache-2.0"
+SLOT="0"
+
+if [[ "${PV}" == "9999" ]]; then
+ EGIT_REPO_URI="https://github.com/boto/boto3"
+ inherit git-r3
+ BOTOCORE_PV=${PV}
+else
+ SRC_URI="https://github.com/boto/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~arm ~arm64 ~x86 ~amd64-linux ~x86-linux"
+
+ # botocore is x.(y+3).z
+ BOTOCORE_PV="$(ver_cut 1).$(( $(ver_cut 2) + 3)).$(ver_cut 3-)"
+fi
+
+RDEPEND="
+ >=dev-python/botocore-${BOTOCORE_PV}[${PYTHON_USEDEP}]
+ >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
+ >=dev-python/s3transfer-0.3.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/mock[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_sphinx docs/source \
+ 'dev-python/guzzle_sphinx_theme'
+distutils_enable_tests nose
+
+python_prepare_all() {
+ # don't lock versions to narrow ranges
+ sed -e '/botocore/ d' \
+ -e '/jmespath/ d' \
+ -e '/s3transfer/ d' \
+ -i setup.py || die
+
+ # prevent an infinite loop
+ rm tests/functional/docs/test_smoke.py || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ nosetests -v tests/unit/ tests/functional/ || die "test failed under ${EPYTHON}"
+}
diff --git a/dev-python/botocore/Manifest b/dev-python/botocore/Manifest
index 2945a6bb6185..9e1d3936fa7a 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -8,3 +8,4 @@ DIST botocore-1.20.69.tar.gz 7695769 BLAKE2B 994e5415c278a0c021deb1749c59ee5c654
DIST botocore-1.20.70.tar.gz 7700136 BLAKE2B ab7ea88763dd4637754a5d9eb955e0947efd9c5fa87856276056d6eaac341f57d5edd43ca830dd35c1283c6f41de43be2f9b06e8f328a8900cde41ec5953bf9d SHA512 d992b88df31a77b153fd3110119d1523587e98d56e4b80ac14d0c5351d76b3e4c188295fbbeafcd8efd3f414a1c0af0d78f21555b2d3285d6f8e88eefab282dc
DIST botocore-1.20.71.tar.gz 7720081 BLAKE2B 4f5d4f237222a034d2102cb637722c7d63ac34549ca582fce8d7b02a93345cc48067b195f339010a0dd47fa04a53ee4dde5f98eb58a1db3b0d4c958066717063 SHA512 7a9154efeeedc90dd9089641798494095cca9f1967e3615131af154e718081e2ce85e37fea1a729e7d7cd42d2fd6a9f79cae9409ff32aa18674a40a0e2fd0fe1
DIST botocore-1.20.72.tar.gz 7719833 BLAKE2B 23bdce05a95ebcc162e26e91923999ba50910f2fd1d78830c64ee4cb685b2f58e0f14b71c22d34973e2588590fa8af35868f696bbe7719f710baad49d7d1753d SHA512 d46cf353c1df60e24e8e3def8ccf4821bbc36366d25c073330133e4d6ebf83491c5d82dd708c14df65ebbcc08c7705fd3d1d37339742719bdaf58678e04d7824
+DIST botocore-1.20.73.tar.gz 7725102 BLAKE2B ccb41513630d8016718cba5e7cc172efb985688f8537dd7f434707f05f9222f486a42c3c84cf25edb437836f04d5ae024292a15a2e784c600bbdebf7dc34d9e3 SHA512 7b1fadcc4e337f0c7498b46cbc0779f20ceb864e2b3974c15a947f18925691ecaaf455bfd7de153d26632a2035a1f922c64320887d06203285947b4310f07e10
diff --git a/dev-python/botocore/botocore-1.20.73.ebuild b/dev-python/botocore/botocore-1.20.73.ebuild
new file mode 100644
index 000000000000..9d681f87244c
--- /dev/null
+++ b/dev-python/botocore/botocore-1.20.73.ebuild
@@ -0,0 +1,59 @@
+# 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="Low-level, data-driven core of boto 3"
+HOMEPAGE="https://github.com/boto/botocore"
+LICENSE="Apache-2.0"
+SLOT="0"
+
+if [[ "${PV}" == "9999" ]]; then
+ EGIT_REPO_URI="https://github.com/boto/botocore"
+ inherit git-r3
+else
+ SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+ KEYWORDS="~amd64 ~arm ~arm64 ~x86 ~amd64-linux ~x86-linux"
+fi
+
+RDEPEND="
+ dev-python/six[${PYTHON_USEDEP}]
+ dev-python/jmespath[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ >=dev-python/urllib3-1.25.4[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/mock[${PYTHON_USEDEP}]
+ dev-python/jsonschema[${PYTHON_USEDEP}]
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}/1.8.6-tests-pass-all-env-vars-to-cmd-runner.patch"
+)
+
+distutils_enable_sphinx docs/source \
+ 'dev-python/guzzle_sphinx_theme'
+distutils_enable_tests nose
+
+src_prepare() {
+ # unpin deps
+ sed -i -e "s:>=.*':':" setup.py || die
+ # very unstable
+ sed -i -e 's:test_stress_test_token_bucket:_&:' \
+ tests/functional/retries/test_bucket.py || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ # note: suites need to be run separately as one of the unit tests
+ # seems to be leaking mocks and breaking a few functional tests
+ nosetests -v tests/unit ||
+ die "unit tests failed under ${EPYTHON}"
+ nosetests -v tests/functional ||
+ die "functional tests failed under ${EPYTHON}"
+}
diff --git a/dev-python/cython/cython-0.29.23.ebuild b/dev-python/cython/cython-0.29.23.ebuild
index e67ae3d183c7..197380d6ad06 100644
--- a/dev-python/cython/cython-0.29.23.ebuild
+++ b/dev-python/cython/cython-0.29.23.ebuild
@@ -32,6 +32,8 @@ BDEPEND="${RDEPEND}
PATCHES=(
"${FILESDIR}/${PN}-0.29.14-sphinx-update.patch"
"${FILESDIR}/${PN}-0.29.22-spawn-multiprocessing.patch"
+ "${FILESDIR}/${PN}-0.29.23-test_exceptions-py310.patch"
+ "${FILESDIR}/${PN}-0.29.23-tracing-py310.patch"
)
SITEFILE=50cython-gentoo.el
diff --git a/dev-python/cython/files/cython-0.29.23-test_exceptions-py310.patch b/dev-python/cython/files/cython-0.29.23-test_exceptions-py310.patch
new file mode 100644
index 000000000000..0c9fb2c9ea56
--- /dev/null
+++ b/dev-python/cython/files/cython-0.29.23-test_exceptions-py310.patch
@@ -0,0 +1,14 @@
+--- a/tests/run/test_exceptions.pyx
++++ b/tests/run/test_exceptions.pyx
+@@ -188,7 +188,10 @@
+
+ # should not apply to subclasses, see issue #31161
+ s = '''if True:\nprint "No indent"'''
+- ckmsg(s, "expected an indented block", IndentationError)
++ if sys.version_info >= (3, 10):
++ ckmsg(s, "expected an indented block after 'if' statement on line 1", IndentationError)
++ else:
++ ckmsg(s, "expected an indented block", IndentationError)
+
+ s = '''if True:\n print()\n\texec "mixed tabs and spaces"'''
+ ckmsg(s, "inconsistent use of tabs and spaces in indentation", TabError)
diff --git a/dev-python/cython/files/cython-0.29.23-tracing-py310.patch b/dev-python/cython/files/cython-0.29.23-tracing-py310.patch
new file mode 100644
index 000000000000..ff0e45a646dc
--- /dev/null
+++ b/dev-python/cython/files/cython-0.29.23-tracing-py310.patch
@@ -0,0 +1,213 @@
+From c9cccfeaf3f0e20c2bb14fc234e86f4fc8e4fe81 Mon Sep 17 00:00:00 2001
+From: Stefan Behnel <stefan_ml@behnel.de>
+Date: Fri, 14 May 2021 19:39:58 +0200
+Subject: [PATCH] Adapt tracing code to Py3.10 beta 1.
+
+---
+ Cython/Utility/Profile.c | 79 +++++++++++++++++++++++++---------------
+ 1 file changed, 49 insertions(+), 30 deletions(-)
+
+diff --git a/Cython/Utility/Profile.c b/Cython/Utility/Profile.c
+index 15ceb41cc2..2cd9af9da7 100644
+--- a/Cython/Utility/Profile.c
++++ b/Cython/Utility/Profile.c
+@@ -47,13 +47,32 @@
+ #define CYTHON_FRAME_DEL(frame) Py_CLEAR(frame)
+ #endif
+
+- #define __Pyx_TraceDeclarations \
+- static PyCodeObject *$frame_code_cname = NULL; \
+- CYTHON_FRAME_MODIFIER PyFrameObject *$frame_cname = NULL; \
+- int __Pyx_use_tracing = 0;
++ #define __Pyx_TraceDeclarations \
++ static PyCodeObject *$frame_code_cname = NULL; \
++ CYTHON_FRAME_MODIFIER PyFrameObject *$frame_cname = NULL; \
++ int __Pyx_use_tracing = 0;
+
+- #define __Pyx_TraceFrameInit(codeobj) \
+- if (codeobj) $frame_code_cname = (PyCodeObject*) codeobj;
++ #define __Pyx_TraceFrameInit(codeobj) \
++ if (codeobj) $frame_code_cname = (PyCodeObject*) codeobj;
++
++#if PY_VERSION_HEX >= 0x030a00b1
++ #define __Pyx_IsTracing(tstate, check_tracing, check_funcs) \
++ (unlikely(tstate->cframe->use_tracing) && \
++ (!(check_tracing) || !tstate->tracing) && \
++ (!(check_funcs) || tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc)))
++
++ #define __Pyx_SetTracing(tstate, enable) \
++ (tstate)->cframe->use_tracing = (enable)
++
++#else
++ #define __Pyx_IsTracing(tstate, check_tracing, check_funcs) \
++ (unlikely(tstate->use_tracing) && \
++ (!(check_tracing) || !tstate->tracing) && \
++ (!(check_funcs) || tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc)))
++
++ #define __Pyx_SetTracing(tstate, enable) \
++ (tstate)->use_tracing = (enable)
++#endif
+
+ #ifdef WITH_THREAD
+ #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error) \
+@@ -62,8 +81,7 @@
+ PyThreadState *tstate; \
+ PyGILState_STATE state = PyGILState_Ensure(); \
+ tstate = __Pyx_PyThreadState_Current; \
+- if (unlikely(tstate->use_tracing) && !tstate->tracing && \
+- (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) { \
++ if (__Pyx_IsTracing(tstate, 1, 1)) { \
+ __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&$frame_code_cname, &$frame_cname, tstate, funcname, srcfile, firstlineno); \
+ } \
+ PyGILState_Release(state); \
+@@ -71,8 +89,7 @@
+ } \
+ } else { \
+ PyThreadState* tstate = PyThreadState_GET(); \
+- if (unlikely(tstate->use_tracing) && !tstate->tracing && \
+- (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) { \
++ if (__Pyx_IsTracing(tstate, 1, 1)) { \
+ __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&$frame_code_cname, &$frame_cname, tstate, funcname, srcfile, firstlineno); \
+ if (unlikely(__Pyx_use_tracing < 0)) goto_error; \
+ } \
+@@ -80,8 +97,7 @@
+ #else
+ #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error) \
+ { PyThreadState* tstate = PyThreadState_GET(); \
+- if (unlikely(tstate->use_tracing) && !tstate->tracing && \
+- (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) { \
++ if (__Pyx_IsTracing(tstate, 1, 1)) { \
+ __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&$frame_code_cname, &$frame_cname, tstate, funcname, srcfile, firstlineno); \
+ if (unlikely(__Pyx_use_tracing < 0)) goto_error; \
+ } \
+@@ -91,10 +107,9 @@
+ #define __Pyx_TraceException() \
+ if (likely(!__Pyx_use_tracing)); else { \
+ PyThreadState* tstate = __Pyx_PyThreadState_Current; \
+- if (tstate->use_tracing && \
+- (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) { \
++ if (__Pyx_IsTracing(tstate, 0, 1)) { \
+ tstate->tracing++; \
+- tstate->use_tracing = 0; \
++ __Pyx_SetTracing(tstate, 0); \
+ PyObject *exc_info = __Pyx_GetExceptionTuple(tstate); \
+ if (exc_info) { \
+ if (CYTHON_TRACE && tstate->c_tracefunc) \
+@@ -104,7 +119,7 @@
+ tstate->c_profileobj, $frame_cname, PyTrace_EXCEPTION, exc_info); \
+ Py_DECREF(exc_info); \
+ } \
+- tstate->use_tracing = 1; \
++ __Pyx_SetTracing(tstate, 1); \
+ tstate->tracing--; \
+ } \
+ }
+@@ -113,13 +128,13 @@
+ PyObject *type, *value, *traceback;
+ __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
+ tstate->tracing++;
+- tstate->use_tracing = 0;
++ __Pyx_SetTracing(tstate, 0);
+ if (CYTHON_TRACE && tstate->c_tracefunc)
+ tstate->c_tracefunc(tstate->c_traceobj, frame, PyTrace_RETURN, result);
+ if (tstate->c_profilefunc)
+ tstate->c_profilefunc(tstate->c_profileobj, frame, PyTrace_RETURN, result);
+ CYTHON_FRAME_DEL(frame);
+- tstate->use_tracing = 1;
++ __Pyx_SetTracing(tstate, 1);
+ tstate->tracing--;
+ __Pyx_ErrRestoreInState(tstate, type, value, traceback);
+ }
+@@ -132,14 +147,14 @@
+ PyThreadState *tstate; \
+ PyGILState_STATE state = PyGILState_Ensure(); \
+ tstate = __Pyx_PyThreadState_Current; \
+- if (tstate->use_tracing) { \
++ if (__Pyx_IsTracing(tstate, 0, 0)) { \
+ __Pyx_call_return_trace_func(tstate, $frame_cname, (PyObject*)result); \
+ } \
+ PyGILState_Release(state); \
+ } \
+ } else { \
+ PyThreadState* tstate = __Pyx_PyThreadState_Current; \
+- if (tstate->use_tracing) { \
++ if (__Pyx_IsTracing(tstate, 0, 0)) { \
+ __Pyx_call_return_trace_func(tstate, $frame_cname, (PyObject*)result); \
+ } \
+ } \
+@@ -148,7 +163,7 @@
+ #define __Pyx_TraceReturn(result, nogil) \
+ if (likely(!__Pyx_use_tracing)); else { \
+ PyThreadState* tstate = __Pyx_PyThreadState_Current; \
+- if (tstate->use_tracing) { \
++ if (__Pyx_IsTracing(tstate, 0, 0)) { \
+ __Pyx_call_return_trace_func(tstate, $frame_cname, (PyObject*)result); \
+ } \
+ }
+@@ -176,9 +191,11 @@
+ __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
+ __Pyx_PyFrame_SetLineNumber(frame, lineno);
+ tstate->tracing++;
+- tstate->use_tracing = 0;
++ __Pyx_SetTracing(tstate, 0);
++
+ ret = tstate->c_tracefunc(tstate->c_traceobj, frame, PyTrace_LINE, NULL);
+- tstate->use_tracing = 1;
++
++ __Pyx_SetTracing(tstate, 1);
+ tstate->tracing--;
+ if (likely(!ret)) {
+ __Pyx_ErrRestoreInState(tstate, type, value, traceback);
+@@ -199,7 +216,7 @@
+ PyThreadState *tstate; \
+ PyGILState_STATE state = __Pyx_PyGILState_Ensure(); \
+ tstate = __Pyx_PyThreadState_Current; \
+- if (unlikely(tstate->use_tracing && tstate->c_tracefunc && $frame_cname->f_trace)) { \
++ if (__Pyx_IsTracing(tstate, 0, 0) && tstate->c_tracefunc && $frame_cname->f_trace) { \
+ ret = __Pyx_call_line_trace_func(tstate, $frame_cname, lineno); \
+ } \
+ __Pyx_PyGILState_Release(state); \
+@@ -207,7 +224,7 @@
+ } \
+ } else { \
+ PyThreadState* tstate = __Pyx_PyThreadState_Current; \
+- if (unlikely(tstate->use_tracing && tstate->c_tracefunc && $frame_cname->f_trace)) { \
++ if (__Pyx_IsTracing(tstate, 0, 0) && tstate->c_tracefunc && $frame_cname->f_trace) { \
+ int ret = __Pyx_call_line_trace_func(tstate, $frame_cname, lineno); \
+ if (unlikely(ret)) goto_error; \
+ } \
+@@ -217,7 +234,7 @@
+ #define __Pyx_TraceLine(lineno, nogil, goto_error) \
+ if (likely(!__Pyx_use_tracing)); else { \
+ PyThreadState* tstate = __Pyx_PyThreadState_Current; \
+- if (unlikely(tstate->use_tracing && tstate->c_tracefunc && $frame_cname->f_trace)) { \
++ if (__Pyx_IsTracing(tstate, 0, 0) && tstate->c_tracefunc && $frame_cname->f_trace) { \
+ int ret = __Pyx_call_line_trace_func(tstate, $frame_cname, lineno); \
+ if (unlikely(ret)) goto_error; \
+ } \
+@@ -263,19 +280,21 @@ static int __Pyx_TraceSetupAndCall(PyCodeObject** code,
+ (*frame)->f_tstate = tstate;
+ #endif
+ }
+- __Pyx_PyFrame_SetLineNumber(*frame, firstlineno);
++ __Pyx_PyFrame_SetLineNumber(*frame, firstlineno);
++
+ retval = 1;
+ tstate->tracing++;
+- tstate->use_tracing = 0;
++ __Pyx_SetTracing(tstate, 0);
+ __Pyx_ErrFetchInState(tstate, &type, &value, &traceback);
++
+ #if CYTHON_TRACE
+ if (tstate->c_tracefunc)
+ retval = tstate->c_tracefunc(tstate->c_traceobj, *frame, PyTrace_CALL, NULL) == 0;
+ if (retval && tstate->c_profilefunc)
+ #endif
+ retval = tstate->c_profilefunc(tstate->c_profileobj, *frame, PyTrace_CALL, NULL) == 0;
+- tstate->use_tracing = (tstate->c_profilefunc ||
+- (CYTHON_TRACE && tstate->c_tracefunc));
++
++ __Pyx_SetTracing(tstate, (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc)));
+ tstate->tracing--;
+ if (retval) {
+ __Pyx_ErrRestoreInState(tstate, type, value, traceback);
diff --git a/dev-python/dask/Manifest b/dev-python/dask/Manifest
index 06aa463cfc7d..3883e0c2fc9b 100644
--- a/dev-python/dask/Manifest
+++ b/dev-python/dask/Manifest
@@ -1,2 +1,3 @@
DIST dask-2021.3.0.tar.gz 3672035 BLAKE2B 17b3e808603b8524e96273ad33b69689605707a1c187b32c8ed67f054e7f242525365956800017ad5685e0c306dcd21bcfb3dbb3f9920446f03553ceb0fdd9a8 SHA512 ba5b62dd51dad29a106a4fe38a5015f7e1d7ad11eaa21a524b7c8b7d916873b9e447d065c9009e8100662aa3b1f64718b164369f173fc84f5f085a1e369e091a
DIST dask-2021.4.1.tar.gz 3702584 BLAKE2B d6c630349f26378c1c6d15de38c112ef330bec6422664b6e5737b7a023800f1705be163cefd79cf76c1213ca6b773ee19e2dc7e3f22eb60edc23e6fd4c153e16 SHA512 55d8d3a1a3eb76ac68eed5092075301ca88ff311f6729952928fde49f90a1b9a825dc085fb38b07a0138b87a109a5913f26d683c5fd22476539f3a8f36397c32
+DIST dask-2021.5.0.tar.gz 3710206 BLAKE2B d02bd280a704cf03fb403c58567be33c414171ef3ee1eed2f788cf2b3026c2aa3806c19a8e9f239c93a0eb8ab2474f14fa80b8e1057ae0db1c0ce4a68f0cedad SHA512 bfc2c870df02f1879907621cb9abdce8bf03d07fea2823acea68b220ed414ee146036b73eb50c92608140ed18566e7a53807dcc1fdf534876920467979908592
diff --git a/dev-python/dask/dask-2021.5.0.ebuild b/dev-python/dask/dask-2021.5.0.ebuild
new file mode 100644
index 000000000000..9a86e0660c7e
--- /dev/null
+++ b/dev-python/dask/dask-2021.5.0.ebuild
@@ -0,0 +1,42 @@
+# 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="Task scheduling and blocked algorithms for parallel processing"
+HOMEPAGE="https://dask.org/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ >=dev-python/cloudpickle-0.2.2[${PYTHON_USEDEP}]
+ >=dev-python/fsspec-0.6.0[${PYTHON_USEDEP}]
+ >=dev-python/numpy-1.15.1[${PYTHON_USEDEP}]
+ >=dev-python/pandas-0.25.0[${PYTHON_USEDEP}]
+ >=dev-python/partd-0.3.10[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ >=dev-python/toolz-0.8.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/toolz[${PYTHON_USEDEP}]
+ test? (
+ dev-python/moto[${PYTHON_USEDEP}]
+ dev-python/numexpr[${PYTHON_USEDEP}]
+ dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+ dev-python/scipy[${PYTHON_USEDEP}]
+ <dev-python/sqlalchemy-1.4[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ epytest -p no:flaky -m "not network"
+}
diff --git a/dev-python/dnspython/dnspython-1.16.0-r1.ebuild b/dev-python/dnspython/dnspython-1.16.0-r2.ebuild
index 82dceb0120e3..363b62098b9f 100644
--- a/dev-python/dnspython/dnspython-1.16.0-r1.ebuild
+++ b/dev-python/dnspython/dnspython-1.16.0-r2.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Gentoo Authors
+# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
@@ -23,6 +23,11 @@ RDEPEND="dev-python/pycryptodome[${PYTHON_USEDEP}]
!dev-python/dnspython:py2
!dev-python/dnspython:py3"
+PATCHES=(
+ # Mutable mapping was moved to a different module in 3.10 and removed from the old one
+ "${FILESDIR}"/${P}-py310.patch
+)
+
src_prepare() {
sed -i -e '/network_avail/s:True:False:' \
tests/test_resolver.py || die
diff --git a/dev-python/dnspython/files/dnspython-1.16.0-py310.patch b/dev-python/dnspython/files/dnspython-1.16.0-py310.patch
new file mode 100644
index 000000000000..ad6fa929e5e2
--- /dev/null
+++ b/dev-python/dnspython/files/dnspython-1.16.0-py310.patch
@@ -0,0 +1,13 @@
+diff --git a/dns/namedict.py b/dns/namedict.py
+index 37a1310..7d52668 100644
+--- a/dns/namedict.py
++++ b/dns/namedict.py
+@@ -32,7 +32,7 @@ import dns.name
+ from ._compat import xrange
+
+
+-class NameDict(collections.MutableMapping):
++class NameDict(collections.abc.MutableMapping):
+ """A dictionary whose keys are dns.name.Name objects.
+
+ In addition to being like a regular Python dictionary, this
diff --git a/dev-python/fsspec/Manifest b/dev-python/fsspec/Manifest
index 34d4148f0f37..5feda806d546 100644
--- a/dev-python/fsspec/Manifest
+++ b/dev-python/fsspec/Manifest
@@ -1 +1,2 @@
DIST filesystem_spec-2021.04.0.tar.gz 288179 BLAKE2B 896982345533fef9593f393209202e0a90473e9826ced9d69854dca20c66c64b85e1b1c44413dda718cdd1af7f41ac821b4d67b600536b32a873a4f73ab32801 SHA512 6806d6fbae89b514955a309346f19b2d199db10aecece728d117798368c311e3fbb38161fd5a54ea4a60ee7e656d2e50fdf8c4444ec3d6bdd761229b4a6341f2
+DIST filesystem_spec-2021.05.0.tar.gz 292796 BLAKE2B 5d56d860ced1a72c27d2031b7d257a4bcbd52f6b2fed5275fbcbf7088375fde26652f0a003e919ebd3948d5e9833d802304234282ca858a7a2a19bfa11f66aa8 SHA512 7c27a1ad4e21efdcc0f31f91a9929e4c09db7b9421e7bf8d2f485e961f6887a4a5c083f38f8d7b09005a4cf11f55c93cce4617e3dc6c2b241ed20f7847ad711e
diff --git a/dev-python/fsspec/fsspec-2021.05.0.ebuild b/dev-python/fsspec/fsspec-2021.05.0.ebuild
new file mode 100644
index 000000000000..0264e4aa640c
--- /dev/null
+++ b/dev-python/fsspec/fsspec-2021.05.0.ebuild
@@ -0,0 +1,47 @@
+# Copyright 2020-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
+
+MY_P=filesystem_spec-${PV}
+
+DESCRIPTION="A specification that python filesystems should adhere to"
+HOMEPAGE="https://github.com/intake/filesystem_spec/
+ https://pypi.org/project/fsspec/"
+SRC_URI="
+ https://github.com/intake/filesystem_spec/archive/${PV}.tar.gz
+ -> ${MY_P}.tar.gz"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+
+BDEPEND="
+ dev-python/versioneer[${PYTHON_USEDEP}]
+ test? (
+ dev-python/aiohttp[${PYTHON_USEDEP}]
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-vcs/git
+ )"
+
+distutils_enable_tests pytest
+
+src_test() {
+ git config --global user.email "you@example.com" || die
+ git config --global user.name "Your Name" || die
+ distutils-r1_src_test
+}
+
+python_test() {
+ # sftp and smb require server started via docker
+ epytest \
+ --deselect fsspec/tests/test_spec.py::test_find \
+ --ignore fsspec/implementations/tests/test_dbfs.py \
+ --ignore fsspec/implementations/tests/test_sftp.py \
+ --ignore fsspec/implementations/tests/test_smb.py
+}
diff --git a/dev-python/gmpy/Manifest b/dev-python/gmpy/Manifest
index 16c5bf2552d3..9c4717014955 100644
--- a/dev-python/gmpy/Manifest
+++ b/dev-python/gmpy/Manifest
@@ -1 +1,2 @@
DIST gmpy2-2.0.8.zip 280551 BLAKE2B b73c48b739ae6972231672ad28598c09e00db6348cd281d190c6dfcf49b0e977563baabe84825658d78bf1e2ac4927ad1882787b6d4efd19f28a4f7fd6a061b4 SHA512 090f449641f378c73eb166831b1d956c6cee3da83e42fde8741f18aa0fa687e37927fc3b045d4b35e3a3b75570e6b1074150d8bc29d16119ab5c717bcfcf9fb4
+DIST gmpy2-2.1.0b5.tar.gz 264742 BLAKE2B 1dd6dc66f9ec8cb2738f449112aa44feb40ba983f6da5f7a0760016e79ffed19037d77d47c0c0b816f9088725207e50ba3bd423349ed4c744ff03059c4c6a19a SHA512 7dc647642d7b61af77258881a7b91ab967dd11a86ba88ff5b7fd41cd4c999d2bb4cfe586511e79cc5f21f0f00d0823bbd2620d69df051c8cead15090423a657a
diff --git a/dev-python/gmpy/files/gmpy-2.1.0_beta5-failed-tests.patch b/dev-python/gmpy/files/gmpy-2.1.0_beta5-failed-tests.patch
new file mode 100644
index 000000000000..38a98579409a
--- /dev/null
+++ b/dev-python/gmpy/files/gmpy-2.1.0_beta5-failed-tests.patch
@@ -0,0 +1,132 @@
+diff --git a/src/gmpy2_mpz.c b/src/gmpy2_mpz.c
+index e5087fa..66a297a 100644
+--- a/src/gmpy2_mpz.c
++++ b/src/gmpy2_mpz.c
+@@ -69,7 +69,7 @@ static PyNumberMethods GMPy_MPZ_number_methods =
+ (binaryfunc) GMPy_MPZ_ISub_Slot, /* nb_inplace_subtract */
+ (binaryfunc) GMPy_MPZ_IMul_Slot, /* nb_inplace_multiply */
+ (binaryfunc) GMPy_MPZ_IRem_Slot, /* nb_inplace_remainder */
+- (ternaryfunc) GMPy_MPZ_IPow_Slot, /* nb_inplace_power */
++ 0, /* nb_inplace_power */
+ (binaryfunc) GMPy_MPZ_ILshift_Slot, /* nb_inplace_lshift */
+ (binaryfunc) GMPy_MPZ_IRshift_Slot, /* nb_inplace_rshift */
+ 0, /* nb_inplace_and */
+@@ -113,7 +113,7 @@ static PyNumberMethods GMPy_MPZ_number_methods =
+ (binaryfunc) GMPy_MPZ_IMul_Slot, /* nb_inplace_multiply */
+ 0, /* nb_inplace_divide */
+ (binaryfunc) GMPy_MPZ_IRem_Slot, /* nb_inplace_remainder */
+- (ternaryfunc) GMPy_MPZ_IPow_Slot, /* nb_inplace_power */
++ 0, /* nb_inplace_power */
+ (binaryfunc) GMPy_MPZ_ILshift_Slot, /* nb_inplace_lshift */
+ (binaryfunc) GMPy_MPZ_IRshift_Slot, /* nb_inplace_rshift */
+ 0, /* nb_inplace_and */
+@@ -229,4 +229,3 @@ static PyTypeObject MPZ_Type =
+ GMPy_MPZ_NewInit, /* tp_new */
+ 0, /* tp_free */
+ };
+-
+diff --git a/src/gmpy2_pow.c b/src/gmpy2_pow.c
+index ddcb43a..cf96470 100644
+--- a/src/gmpy2_pow.c
++++ b/src/gmpy2_pow.c
+@@ -98,8 +98,11 @@ GMPy_Integer_Pow(PyObject *b, PyObject *e, PyObject *m, CTXT_Object *context)
+ unsigned long el;
+
+ if (mpz_sgn(tempe->z) < 0) {
+- VALUE_ERROR("pow() exponent cannot be negative");
+- goto err;
++ Py_DECREF((PyObject*)result);
++ Py_DECREF((PyObject*)tempb);
++ Py_DECREF((PyObject*)tempe);
++
++ return GMPy_Real_Pow(b, e, m, context);
+ }
+
+ /* Catch -1, 0, 1 getting raised to large exponents. */
+diff --git a/src/gmpy2_xmpz_inplace.c b/src/gmpy2_xmpz_inplace.c
+index bbcd977..e5bbf09 100644
+--- a/src/gmpy2_xmpz_inplace.c
++++ b/src/gmpy2_xmpz_inplace.c
+@@ -271,14 +271,14 @@ GMPy_XMPZ_IPow_Slot(PyObject *self, PyObject *other, PyObject *mod)
+ mp_bitcnt_t exp;
+
+ exp = mp_bitcnt_t_From_Integer(other);
+- if (exp == (mp_bitcnt_t)(-1) && PyErr_Occurred()) {
+- PyErr_Clear();
+- Py_RETURN_NOTIMPLEMENTED;
+- }
++ if (exp == (mp_bitcnt_t)(-1) && PyErr_Occurred())
++ return NULL;
+
+ mpz_pow_ui(MPZ(self), MPZ(self), exp);
+ Py_INCREF((PyObject*)self);
+ return (PyObject*)self;
++
++ Py_RETURN_NOTIMPLEMENTED;
+ }
+
+ /* Inplace xmpz and.
+@@ -346,4 +346,3 @@ GMPy_XMPZ_IIor_Slot(PyObject *self, PyObject *other)
+
+ Py_RETURN_NOTIMPLEMENTED;
+ }
+-
+diff --git a/test/test_gmpy2_mpz_inplace.txt b/test/test_gmpy2_mpz_inplace.txt
+index e7a8b96..147118c 100644
+--- a/test/test_gmpy2_mpz_inplace.txt
++++ b/test/test_gmpy2_mpz_inplace.txt
+@@ -147,18 +147,16 @@ Test ipow operator
+ mpz(25)
+ >>> x **= xmpz(2); x
+ mpz(625)
+->>> x **= -2
+-Traceback (most recent call last):
+- File "<stdin>", line 1, in <module>
+-TypeError: unsupported operand type(s) for ** or pow(): 'mpz' and 'int'
++>>> x **= -2; x
++mpfr('2.5600000000000001e-06')
++>>> x = mpz(625)
+ >>> x **= 2; x
+ mpz(390625)
+->>> x **= mpfr(2)
+-Traceback (most recent call last):
+- File "<stdin>", line 1, in <module>
+-TypeError: unsupported operand type(s) for ** or pow(): 'mpz' and 'mpfr'
+->>> 1
+-1
++>>> x **= mpfr(2); x
++mpfr('152587890625.0')
++>>> x = mpz(390625)
++>>> x **= mpfr(-2); x
++mpfr('6.5535999999999999e-12')
+
+ Test iand operator
+ ------------------
+diff --git a/test/test_gmpy2_pow.txt b/test/test_gmpy2_pow.txt
+index 89bd876..d5b1f45 100644
+--- a/test/test_gmpy2_pow.txt
++++ b/test/test_gmpy2_pow.txt
+@@ -15,9 +15,7 @@ mpz(25)
+ >>> ctx.pow(z1, z2)
+ mpz(25)
+ >>> z1 ** -z2
+-Traceback (most recent call last):
+- File "<stdin>", line 1, in <module>
+-ValueError: pow() exponent cannot be negative
++mpfr('0.040000000000000001')
+ >>> z1 ** 0
+ mpz(1)
+ >>> mpz(0) ** 32
+diff --git a/test/test_gmpy2_xmpz_inplace.txt b/test/test_gmpy2_xmpz_inplace.txt
+index 94f86b7..c02f966 100644
+--- a/test/test_gmpy2_xmpz_inplace.txt
++++ b/test/test_gmpy2_xmpz_inplace.txt
+@@ -135,7 +135,7 @@ xmpz(625)
+ >>> x **= -2
+ Traceback (most recent call last):
+ File "<stdin>", line 1, in <module>
+-TypeError: unsupported operand type(s) for ** or pow(): 'xmpz' and 'int'
++ValueError: a non-negative value is required
+ >>> x **= 2; x
+ xmpz(390625)
+ >>> x **= mpfr(2)
diff --git a/dev-python/gmpy/files/gmpy-2.1.0_beta5-pyhash-nan.patch b/dev-python/gmpy/files/gmpy-2.1.0_beta5-pyhash-nan.patch
new file mode 100644
index 000000000000..9f59a6096fcd
--- /dev/null
+++ b/dev-python/gmpy/files/gmpy-2.1.0_beta5-pyhash-nan.patch
@@ -0,0 +1,17 @@
+diff --git a/src/gmpy2_hash.c b/src/gmpy2_hash.c
+index f276a42..1d2bfd1 100644
+--- a/src/gmpy2_hash.c
++++ b/src/gmpy2_hash.c
+@@ -147,7 +147,12 @@ _mpfr_hash(mpfr_t f)
+ }
+ }
+ else {
++#if PY_VERSION_HEX >= 0x030A00A0
++ // Python 3.10
++ return _Py_HashPointer(f);
++#else
+ return _PyHASH_NAN;
++#endif
+ }
+ }
+
diff --git a/dev-python/gmpy/files/gmpy-2.1.0_beta5-test-input.patch b/dev-python/gmpy/files/gmpy-2.1.0_beta5-test-input.patch
new file mode 100644
index 000000000000..16705d917c93
--- /dev/null
+++ b/dev-python/gmpy/files/gmpy-2.1.0_beta5-test-input.patch
@@ -0,0 +1,12 @@
+diff --git a/test/runtests.py b/test/runtests.py
+index 5e5842d..7d64e52 100644
+--- a/test/runtests.py
++++ b/test/runtests.py
+@@ -81,7 +81,6 @@ if sys.version.startswith('3.1.'):
+ print("with Python 3.1. The doctest module in Python 3.2 and later does not")
+ print("have this issue.")
+ print()
+- input("Press ENTER to continue.. ")
+ print()
+
+ mpz_doctests = ["test_mpz_create.txt", "test_mpz.txt", "test_mpz_io.txt",
diff --git a/dev-python/gmpy/gmpy-2.1.0_beta5.ebuild b/dev-python/gmpy/gmpy-2.1.0_beta5.ebuild
new file mode 100644
index 000000000000..9bee2e967d29
--- /dev/null
+++ b/dev-python/gmpy/gmpy-2.1.0_beta5.ebuild
@@ -0,0 +1,53 @@
+# 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
+
+MY_PN="${PN}2"
+MY_P="${MY_PN}-${PV/_beta/b}"
+
+DESCRIPTION="Python bindings for GMP, MPC, MPFR and MPIR libraries"
+HOMEPAGE="https://github.com/aleaxit/gmpy"
+SRC_URI="mirror://pypi/${PN:0:1}/${MY_PN}/${MY_P}.tar.gz"
+S="${WORKDIR}"/${MY_P}
+
+LICENSE="LGPL-3+"
+SLOT="2"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+IUSE="mpir"
+
+RDEPEND="
+ >=dev-libs/mpc-1.0.2:=
+ >=dev-libs/mpfr-3.1.2:=
+ !mpir? ( dev-libs/gmp:0= )
+ mpir? ( sci-libs/mpir:= )"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+ # In python 3.10 _PyHASH_NAN was removed and its usage replaced with _Py_HashPointer
+ # see https://github.com/python/cpython/blob/3.10/Python/pyhash.c
+ # https://github.com/aleaxit/gmpy/pull/297
+ "${FILESDIR}"/${P}-pyhash-nan.patch
+ # The tests program asks for input when running, disable that
+ "${FILESDIR}"/${P}-test-input.patch
+ # Based on this commit:
+ # https://github.com/aleaxit/gmpy/commit/db7ce2ef46fab84e7b9c32b05725e9b02e8cf206
+ "${FILESDIR}"/${P}-failed-tests.patch
+)
+
+distutils_enable_sphinx docs
+
+python_configure_all() {
+ mydistutilsargs=(
+ # GMP is the default, add mpir if the USE flag is set
+ $(usex mpir --mpir "")
+ )
+}
+
+python_test() {
+ cd test || die
+ "${EPYTHON}" runtests.py || die "tests failed under ${EPYTHON}"
+}
diff --git a/dev-python/google-auth/google-auth-1.30.0.ebuild b/dev-python/google-auth/google-auth-1.30.0.ebuild
index acb15b9634c5..490439987838 100644
--- a/dev-python/google-auth/google-auth-1.30.0.ebuild
+++ b/dev-python/google-auth/google-auth-1.30.0.ebuild
@@ -16,7 +16,7 @@ SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
RDEPEND="
dev-python/namespace-google[${PYTHON_USEDEP}]
diff --git a/dev-python/h11/h11-0.12.0.ebuild b/dev-python/h11/h11-0.12.0.ebuild
index 549cc48fa558..cab843af350c 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 ~arm64 ~x86"
+KEYWORDS="amd64 ~arm ~arm64 ~x86"
distutils_enable_tests pytest
diff --git a/dev-python/httpcore/httpcore-0.13.3.ebuild b/dev-python/httpcore/httpcore-0.13.3.ebuild
index 7195dca81ee2..f43297db2903 100644
--- a/dev-python/httpcore/httpcore-0.13.3.ebuild
+++ b/dev-python/httpcore/httpcore-0.13.3.ebuild
@@ -13,7 +13,7 @@ SRC_URI="https://github.com/encode/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
RDEPEND="
<dev-python/h11-0.13[${PYTHON_USEDEP}]
diff --git a/dev-python/httpretty/httpretty-1.1.1.ebuild b/dev-python/httpretty/httpretty-1.1.1.ebuild
index 4411f639da14..6414dfd29302 100644
--- a/dev-python/httpretty/httpretty-1.1.1.ebuild
+++ b/dev-python/httpretty/httpretty-1.1.1.ebuild
@@ -13,7 +13,7 @@ SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
SLOT="0"
LICENSE="MIT"
-KEYWORDS="~amd64 ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
RDEPEND="
dev-python/urllib3[${PYTHON_USEDEP}]"
diff --git a/dev-python/httpx/httpx-0.18.1.ebuild b/dev-python/httpx/httpx-0.18.1.ebuild
index a177d6474378..f6b9254d1d2f 100644
--- a/dev-python/httpx/httpx-0.18.1.ebuild
+++ b/dev-python/httpx/httpx-0.18.1.ebuild
@@ -13,7 +13,7 @@ SRC_URI="https://github.com/encode/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
RDEPEND="
dev-python/certifi[${PYTHON_USEDEP}]
diff --git a/dev-python/pulsectl/Manifest b/dev-python/pulsectl/Manifest
new file mode 100644
index 000000000000..abaa199fdf7a
--- /dev/null
+++ b/dev-python/pulsectl/Manifest
@@ -0,0 +1,2 @@
+DIST pulsectl-21.5.14.tar.gz 41357 BLAKE2B e88953b07b49de2e33762bb85e4bcb2a4e5555970127e6395e3374094dc1c87627f2bd4779ac9fb79c5ccc531c23ea76ead4dca7317313881ed495aeae9b17ee SHA512 b9a9ffa33c31281c6d0dc3084cbdc342b2d45cac713a1d928e106162fa412d80718c8f6443369b67b6c6af9d6b2dc6dbfb85d137ae693ab916ac08e19f048ba1
+DIST pulsectl-21.5.17.tar.gz 41487 BLAKE2B d4e547a140a9843107bac70a0a98ab230018b6457875b395528c3c1c1e7f20df4c4e6db569334c98f62be549930ab8e8f07927a54396554f1aaabc9a6eb46d7a SHA512 fdfceea8833955880326c04c536e6b2d63a260a851b98d7a76bb3637f30f414c2b2f4bd50c493f86edde76983e0a0f83c39839fa39646d8f1f2a4e93229d42fe
diff --git a/dev-python/pulsectl/metadata.xml b/dev-python/pulsectl/metadata.xml
new file mode 100644
index 000000000000..0f7f9e95523a
--- /dev/null
+++ b/dev-python/pulsectl/metadata.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>sbraz@gentoo.org</email>
+ <name>Louis Sautier</name>
+ </maintainer>
+ <maintainer type="project">
+ <email>python@gentoo.org</email>
+ <name>Python</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="pypi">pulsectl</remote-id>
+ <remote-id type="github">mk-fg/python-pulse-control</remote-id>
+ <bugs-to>https://github.com/mk-fg/python-pulse-control/issues</bugs-to>
+ </upstream>
+ <origin>gentoo-staging</origin>
+</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/pulsectl/pulsectl-21.5.14.ebuild b/dev-python/pulsectl/pulsectl-21.5.14.ebuild
new file mode 100644
index 000000000000..faa621fb11f8
--- /dev/null
+++ b/dev-python/pulsectl/pulsectl-21.5.14.ebuild
@@ -0,0 +1,20 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( pypy3 python3_{8..10} )
+
+inherit distutils-r1
+
+DESCRIPTION="Python high-level interface and ctypes-based bindings for PulseAudio (libpulse)"
+HOMEPAGE="https://github.com/mk-fg/python-pulse-control"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="media-sound/pulseaudio"
+
+distutils_enable_tests unittest
diff --git a/dev-python/pulsectl/pulsectl-21.5.17.ebuild b/dev-python/pulsectl/pulsectl-21.5.17.ebuild
new file mode 100644
index 000000000000..faa621fb11f8
--- /dev/null
+++ b/dev-python/pulsectl/pulsectl-21.5.17.ebuild
@@ -0,0 +1,20 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( pypy3 python3_{8..10} )
+
+inherit distutils-r1
+
+DESCRIPTION="Python high-level interface and ctypes-based bindings for PulseAudio (libpulse)"
+HOMEPAGE="https://github.com/mk-fg/python-pulse-control"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="media-sound/pulseaudio"
+
+distutils_enable_tests unittest
diff --git a/dev-python/pytest-cov/Manifest b/dev-python/pytest-cov/Manifest
index 368a96d8db11..0d2d2dba61a0 100644
--- a/dev-python/pytest-cov/Manifest
+++ b/dev-python/pytest-cov/Manifest
@@ -1 +1,2 @@
DIST pytest-cov-2.11.1.tar.gz 59143 BLAKE2B 21aeffbc9ccbe6a7c69a08fe3f0013204eb039c6dc9ddbb364a74ad10764e16ce7be0154e27beaab2c8f9b2a972131c4c2421c4aa4557efc18318556056a421b SHA512 19c465f5972ee0ee3b9a2f1a656fdf5457622cb449f73a6f707d377a617807dadda997a6875f0c081bc4c4f7039559c6e7ce820b818db42dfd053c016e1c3b4e
+DIST pytest-cov-2.12.0.tar.gz 59596 BLAKE2B 6eef2c062b687899009fdf7b4ef8825b3eeabc7be09fac897315cb99acb9176d11bf0d7f3704108caac1bddc32d158b88ddc69a5bd4815c1877cc238684abc3d SHA512 fc94abd8c38ff4015bad4f9f23ee4691f376d436c16f4951021afadfb94dd359a46924d3c7c43dc3193641943f88e0eab04429aa57d26a65bc95622e512639e1
diff --git a/dev-python/pytest-cov/pytest-cov-2.12.0.ebuild b/dev-python/pytest-cov/pytest-cov-2.12.0.ebuild
new file mode 100644
index 000000000000..59ccdeee9e6e
--- /dev/null
+++ b/dev-python/pytest-cov/pytest-cov-2.12.0.ebuild
@@ -0,0 +1,49 @@
+# 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} pypy3 )
+
+inherit distutils-r1
+
+DESCRIPTION="py.test plugin for coverage reporting"
+HOMEPAGE="https://github.com/pytest-dev/pytest-cov https://pypi.org/project/pytest-cov/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/py-1.4.22[${PYTHON_USEDEP}]
+ >=dev-python/pytest-3.6[${PYTHON_USEDEP}]
+ >=dev-python/coverage-4.4[${PYTHON_USEDEP}]
+ dev-python/toml[${PYTHON_USEDEP}]
+"
+# TODO: figure out how to make tests work without pytest-cov installed
+# first
+BDEPEND="
+ test? (
+ ${RDEPEND}
+ ~dev-python/pytest-cov-${PV}[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ dev-python/fields[${PYTHON_USEDEP}]
+ >=dev-python/process-tests-2.0.2[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_sphinx docs \
+ dev-python/sphinx-py3doc-enhanced-theme
+
+python_test() {
+ local deselect=(
+ # attempts to install packages via pip (network)
+ tests/test_pytest_cov.py::test_dist_missing_data
+ )
+
+ epytest ${deselect[@]/#/--deselect }
+}
diff --git a/dev-python/pytools/pytools-9999.ebuild b/dev-python/pytools/pytools-9999.ebuild
index baf7d66073e6..a3a421b30eeb 100644
--- a/dev-python/pytools/pytools-9999.ebuild
+++ b/dev-python/pytools/pytools-9999.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Gentoo Authors
+# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
diff --git a/dev-python/pyu2f/pyu2f-0.1.4-r1.ebuild b/dev-python/pyu2f/pyu2f-0.1.4-r1.ebuild
index 0188aa06f7b5..f4f79287c169 100644
--- a/dev-python/pyu2f/pyu2f-0.1.4-r1.ebuild
+++ b/dev-python/pyu2f/pyu2f-0.1.4-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Gentoo Authors
+# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
@@ -13,7 +13,7 @@ SRC_URI="https://github.com/google/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
IUSE="test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/sh/Manifest b/dev-python/sh/Manifest
index 1d4acecd50c1..d161642fcd2d 100644
--- a/dev-python/sh/Manifest
+++ b/dev-python/sh/Manifest
@@ -1 +1,2 @@
DIST sh-1.14.1.tar.gz 63317 BLAKE2B e4439a54d4bf2c106ae5217b55d6fa19f2bc369fb63e8515954a017fd2e98eca88fce07ea3efa70b3c427826bec657aa75c057a09c88de76c1595ef89465ee32 SHA512 9a4d9b841e81ae465b036f3fbf5e8ca277b090ffada660b17e9c2c457e09f7dbb0038b687fc0c0f4a6d575a55deb451c572a60f92f8c8d18ea65d6d902abb9b4
+DIST sh-1.14.2.tar.gz 63779 BLAKE2B adc9004334a53f3704e22c318df6b4f60fd9ca2d31f5a9601f84abfaf0fe2ded06938b165e10b1a977ed38fcad7d0fa08799f2f552fc2c6b9b4c2a6476477115 SHA512 b7917504ae85606e1986b681274077777ad3011639bfe933d4133c3ed16f930842e03b572caa396ca4d58f41fd5594bef776cc16c4b0fbd1242e57c6aad19e62
diff --git a/dev-python/sh/sh-1.14.2.ebuild b/dev-python/sh/sh-1.14.2.ebuild
new file mode 100644
index 000000000000..1e56a3d8a688
--- /dev/null
+++ b/dev-python/sh/sh-1.14.2.ebuild
@@ -0,0 +1,25 @@
+# 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} pypy3 )
+
+inherit distutils-r1
+
+DESCRIPTION="Python subprocess interface"
+HOMEPAGE="https://github.com/amoffat/sh"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86 ~amd64-linux ~x86-linux"
+
+PATCHES=(
+ "${FILESDIR}/sh-1.12.14-skip-unreliable-test.patch"
+ "${FILESDIR}/sh-1.14.0-skip-unreliable-test.patch"
+)
+
+python_test() {
+ "${EPYTHON}" test.py || die "Tests fail with ${EPYTHON}"
+}
diff --git a/dev-python/sniffio/sniffio-1.2.0.ebuild b/dev-python/sniffio/sniffio-1.2.0.ebuild
index 5a709c51bf7d..cd8e1bd24f99 100644
--- a/dev-python/sniffio/sniffio-1.2.0.ebuild
+++ b/dev-python/sniffio/sniffio-1.2.0.ebuild
@@ -16,7 +16,7 @@ SRC_URI="
LICENSE="|| ( Apache-2.0 MIT )"
SLOT="0"
-KEYWORDS="~amd64 ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
distutils_enable_tests pytest
diff --git a/dev-python/uvicorn/uvicorn-0.13.4.ebuild b/dev-python/uvicorn/uvicorn-0.13.4.ebuild
index a738c7dd333d..d08d9041bfc2 100644
--- a/dev-python/uvicorn/uvicorn-0.13.4.ebuild
+++ b/dev-python/uvicorn/uvicorn-0.13.4.ebuild
@@ -15,7 +15,7 @@ SRC_URI="https://github.com/encode/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
RDEPEND="
=dev-python/click-7*[${PYTHON_USEDEP}]
diff --git a/dev-python/wsproto/wsproto-1.0.0.ebuild b/dev-python/wsproto/wsproto-1.0.0.ebuild
index f6e93ca0da55..66a620a32eca 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 ~arm64 ~x86"
+KEYWORDS="amd64 ~arm ~arm64 ~x86"
RDEPEND=">=dev-python/h11-0.9[${PYTHON_USEDEP}]"