summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/PyQt5/PyQt5-5.15.2.ebuild4
-rw-r--r--dev-python/PyQtWebEngine/PyQtWebEngine-5.15.2.ebuild4
-rw-r--r--dev-python/alembic/Manifest1
-rw-r--r--dev-python/alembic/alembic-1.5.1.ebuild33
-rw-r--r--dev-python/blosc/Manifest1
-rw-r--r--dev-python/blosc/blosc-1.10.2.ebuild46
-rw-r--r--dev-python/boto/boto-2.49.0-r4.ebuild60
-rw-r--r--dev-python/boto/files/boto-2.49.0-py3-httplib-strict.patch35
-rw-r--r--dev-python/boto/files/boto-2.49.0-py3-server-port.patch42
-rw-r--r--dev-python/boto/files/boto-2.49.0-py3-socket-binary.patch59
-rw-r--r--dev-python/boto/files/boto-2.49.0-try-to-add-SNI-support-v3.patch104
-rw-r--r--dev-python/boto/files/boto-2.49.0-unbundle-six.patch28
-rw-r--r--dev-python/boto3/Manifest1
-rw-r--r--dev-python/boto3/boto3-1.16.57.ebuild56
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.19.57.ebuild59
-rw-r--r--dev-python/cfn-python-lint/Manifest1
-rw-r--r--dev-python/cfn-python-lint/cfn-python-lint-0.44.4.ebuild49
-rw-r--r--dev-python/croniter/Manifest1
-rw-r--r--dev-python/croniter/croniter-1.0.2.ebuild27
-rw-r--r--dev-python/croniter/metadata.xml4
-rw-r--r--dev-python/eventlet/eventlet-0.30.0.ebuild2
-rw-r--r--dev-python/flask-migrate/Manifest1
-rw-r--r--dev-python/flask-migrate/flask-migrate-2.6.0.ebuild32
-rw-r--r--dev-python/freezegun/Manifest1
-rw-r--r--dev-python/freezegun/freezegun-1.1.0.ebuild27
-rw-r--r--dev-python/fsspec/Manifest1
-rw-r--r--dev-python/fsspec/fsspec-0.8.2.ebuild50
-rw-r--r--dev-python/fsspec/fsspec-0.8.5.ebuild4
-rw-r--r--dev-python/google-api-core/Manifest1
-rw-r--r--dev-python/google-api-core/google-api-core-1.17.0.ebuild46
-rw-r--r--dev-python/google-api-core/google-api-core-1.24.0.ebuild4
-rw-r--r--dev-python/locket/Manifest1
-rw-r--r--dev-python/locket/locket-0.2.1.ebuild24
-rw-r--r--dev-python/lz4/Manifest1
-rw-r--r--dev-python/lz4/lz4-3.1.3.ebuild28
-rw-r--r--dev-python/pygresql/pygresql-5.2.2.ebuild2
-rw-r--r--dev-python/pyls-spyder/pyls-spyder-0.3.0.ebuild4
-rw-r--r--dev-python/pyusb/Manifest1
-rw-r--r--dev-python/pyusb/pyusb-1.1.1.ebuild28
-rw-r--r--dev-python/pyyaml/Manifest1
-rw-r--r--dev-python/pyyaml/pyyaml-5.4.ebuild49
-rw-r--r--dev-python/readthedocs-sphinx-ext/Manifest1
-rw-r--r--dev-python/readthedocs-sphinx-ext/readthedocs-sphinx-ext-2.1.3.ebuild27
-rw-r--r--dev-python/tox/Manifest1
-rw-r--r--dev-python/tox/tox-3.21.2.ebuild76
-rw-r--r--dev-python/virtualenv/Manifest1
-rw-r--r--dev-python/virtualenv/virtualenv-20.4.0.ebuild99
48 files changed, 1019 insertions, 110 deletions
diff --git a/dev-python/PyQt5/PyQt5-5.15.2.ebuild b/dev-python/PyQt5/PyQt5-5.15.2.ebuild
index b6e197e26f6c..41b5d5ccd2b5 100644
--- a/dev-python/PyQt5/PyQt5-5.15.2.ebuild
+++ b/dev-python/PyQt5/PyQt5-5.15.2.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
@@ -18,7 +18,7 @@ fi
LICENSE="GPL-3"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86"
+KEYWORDS="amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86"
# TODO: QtNfc, QtQuick3D, QtRemoteObjects, QtTextToSpeech
IUSE="bluetooth dbus debug declarative designer examples gles2-only gui help location
diff --git a/dev-python/PyQtWebEngine/PyQtWebEngine-5.15.2.ebuild b/dev-python/PyQtWebEngine/PyQtWebEngine-5.15.2.ebuild
index d7213068cc24..7492c3a5965f 100644
--- a/dev-python/PyQtWebEngine/PyQtWebEngine-5.15.2.ebuild
+++ b/dev-python/PyQtWebEngine/PyQtWebEngine-5.15.2.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
@@ -18,7 +18,7 @@ fi
LICENSE="GPL-3"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+KEYWORDS="amd64 ~arm ~arm64 ~x86"
IUSE="debug"
REQUIRED_USE="
diff --git a/dev-python/alembic/Manifest b/dev-python/alembic/Manifest
index df91474bd950..4b28a7f7e09a 100644
--- a/dev-python/alembic/Manifest
+++ b/dev-python/alembic/Manifest
@@ -1,2 +1,3 @@
DIST alembic-1.4.3.tar.gz 1108131 BLAKE2B d9c8b6d6aebce7a45194dd6c654f4a2627714a5c1f7cb7a1cf80ed8c3fe861e3bb7857811128787ddd6c093b4370784b40cddb385cfbd30f6134d537fe949d2d SHA512 925d8957fd9008d041737a9e79ec8d7a4c5deba1976e980362d355a75348c1638d783d9d48234a5bc3b2dc3f2f09dcb281d0c80ae0f0c5bc32e176c3dfa05463
DIST alembic-1.5.0.tar.gz 1128073 BLAKE2B 067ebe7a8ee9b14fc782e0f5268990b07a8ae91ab8ae89daee119bb64f30b8cb966ff22ce71c67e476fafce7ae418952f253645b0f5b5b8a1abbf7f562794138 SHA512 a667e5b176770061c27ea7fdaafdbcdad64d968e22e729083fadd8e002530cc43909a955c3ccaa04329c393ab3f27ec5b944b03ba0ae5d29609b940e7cfb8ad5
+DIST alembic-1.5.1.tar.gz 1128404 BLAKE2B 70a2ce16adcf317c9376f77d8fa88e9eef3aa4090de5f933187f47df9fe6ac40a25df75d6c74c50c3be23dd3cef13d465eb2ddae4ea83558d01ebffd8effe241 SHA512 2fe490c46c253123333f0496fe28b59956efc78924f145b69ba95e5cb1cc091a72047c1aa5f8a85924ec59ad0aba2bfa143b9cad475dedc6f849c38695c08601
diff --git a/dev-python/alembic/alembic-1.5.1.ebuild b/dev-python/alembic/alembic-1.5.1.ebuild
new file mode 100644
index 000000000000..8b64ac35c093
--- /dev/null
+++ b/dev-python/alembic/alembic-1.5.1.ebuild
@@ -0,0 +1,33 @@
+# 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 )
+DISTUTILS_USE_SETUPTOOLS=rdepend
+
+inherit distutils-r1
+
+DESCRIPTION="database migrations tool, written by the author of SQLAlchemy"
+HOMEPAGE="https://github.com/sqlalchemy/alembic"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="doc"
+
+RDEPEND="
+ >=dev-python/sqlalchemy-1.1.0[${PYTHON_USEDEP}]
+ dev-python/mako[${PYTHON_USEDEP}]
+ >=dev-python/python-editor-0.3[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests pytest
+
+python_install_all() {
+ use doc && local HTML_DOCS=( docs/. )
+
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/blosc/Manifest b/dev-python/blosc/Manifest
index 9cbd9400b124..527dee909a82 100644
--- a/dev-python/blosc/Manifest
+++ b/dev-python/blosc/Manifest
@@ -1,3 +1,4 @@
DIST blosc-1.10.0.tar.gz 845312 BLAKE2B 15f367f1420f56e64ec01e74d7320adc194db11d15bd26a2b78c59c88a6127f1d2b5fc7bd53e02a6d0cad785c87cf79bb909dec62982b5ee8620c92ccdd80249 SHA512 f071d131966acd74cf71f8688ae9830091ee12a92399e8736f2b2cc2243bc022f9fd194c60493e912aef87a54202813a67a8f9bddd90c1c44631205d58c3f3e3
DIST blosc-1.10.1.tar.gz 858162 BLAKE2B 768ae6d438d9fe05589460dcaeea77dbf2e0212bbc67388c6df1b9fc6bd1921e8cd79da2039cd4300cd91923d7988f8c4741ea1dbd5ebfa13e48f3ade678ac09 SHA512 06e393efa3fc7060205a483787eb4c5befe75dfdd6321b37c43ed7830dccf4d622bd88451e97da663ed9dc9302c30d7486315de9aff6351721862e2eceddd9a3
+DIST blosc-1.10.2.tar.gz 858096 BLAKE2B ff314011e1afc2d972c2445df9ad25c245494479201ddd0944ddf5f14aa0aa772c9da1e117eb5395f5488e7238aefe1236d9a5579b4d03be2b041790de9575e8 SHA512 82dab50a49ddd45d8276fd43999233f41b507e35af5897ed4945565fde8f56be0855b0dd926d254bd77904ec7a13ad3f024007159510b677769d97599b731222
DIST blosc-1.9.2.tar.gz 816897 BLAKE2B 7d1a2d925500c8ddb93975dd785c03b91dec2716a438915d5dfdb739c650de8a47ed80eb25fc55357e69b586c446c5af61212e0a4fba8158839a66849309f478 SHA512 a8f53afb7fb1bb742e2daa03015b636d4dbb1fd073be079022364ec67035c9e6ee372ab07f7ce06579b85d9fcaedd2a11f30b9cf5b2bd1d1ea62cf32a8aa3c1f
diff --git a/dev-python/blosc/blosc-1.10.2.ebuild b/dev-python/blosc/blosc-1.10.2.ebuild
new file mode 100644
index 000000000000..976d1dd18db6
--- /dev/null
+++ b/dev-python/blosc/blosc-1.10.2.ebuild
@@ -0,0 +1,46 @@
+# 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="High performance compressor optimized for binary data"
+HOMEPAGE="https://python-blosc.blosc.org"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+SLOT="0"
+LICENSE="MIT"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND=">=dev-libs/c-blosc-1.19.0:="
+DEPEND="${RDEPEND}"
+BDEPEND="
+ dev-python/scikit-build[${PYTHON_USEDEP}]
+ test? (
+ dev-python/numpy[${PYTHON_USEDEP}]
+ )
+"
+
+DOCS=( ANNOUNCE.rst README.rst RELEASE_NOTES.rst )
+PATCHES=(
+ "${FILESDIR}"/blosc-1.10.0-unbundle.patch
+)
+
+python_prepare_all() {
+ export BLOSC_DIR="${EPREFIX}/usr"
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ "${EPYTHON}" -m blosc.test -v || die
+}
+
+python_install() {
+ distutils-r1_python_install
+ python_optimize
+}
diff --git a/dev-python/boto/boto-2.49.0-r4.ebuild b/dev-python/boto/boto-2.49.0-r4.ebuild
new file mode 100644
index 000000000000..a3ee8497a379
--- /dev/null
+++ b/dev-python/boto/boto-2.49.0-r4.ebuild
@@ -0,0 +1,60 @@
+# 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="Amazon Web Services API"
+HOMEPAGE="https://github.com/boto/boto https://pypi.org/project/boto/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+
+PATCHES=(
+ # taken from https://bugs.debian.org/909545
+ "${FILESDIR}"/${P}-try-to-add-SNI-support-v3.patch
+ "${FILESDIR}"/${P}-py38.patch
+ "${FILESDIR}"/${P}-py3-socket-binary.patch
+ "${FILESDIR}"/${P}-py3-httplib-strict.patch
+ "${FILESDIR}"/${P}-py3-server-port.patch
+ "${FILESDIR}"/${P}-unbundle-six.patch
+)
+
+RDEPEND=">=dev-python/six-1.12.0[${PYTHON_USEDEP}]"
+
+BDEPEND="
+ test? (
+ dev-python/httpretty[${PYTHON_USEDEP}]
+ dev-python/keyring[${PYTHON_USEDEP}]
+ dev-python/lxml[${PYTHON_USEDEP}]
+ dev-python/mock[${PYTHON_USEDEP}]
+ dev-python/paramiko[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/rsa[${PYTHON_USEDEP}]
+ dev-python/selenium[${PYTHON_USEDEP}]
+ )"
+
+distutils_enable_tests nose
+
+src_prepare() {
+ # remove bundled libs.
+ rm -f "${S}"/boto/vendored/six.py || die
+ # broken, not worth fixing
+ rm tests/unit/cloudfront/test_signed_urls.py || die
+ # fix tests
+ mkdir -p "${HOME}"/.ssh || die
+ : > "${HOME}"/.ssh/known_hosts || die
+
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ nosetests -v tests/unit ||
+ die "Tests fail with ${EPYTHON}"
+}
diff --git a/dev-python/boto/files/boto-2.49.0-py3-httplib-strict.patch b/dev-python/boto/files/boto-2.49.0-py3-httplib-strict.patch
new file mode 100644
index 000000000000..209b01aa74a0
--- /dev/null
+++ b/dev-python/boto/files/boto-2.49.0-py3-httplib-strict.patch
@@ -0,0 +1,35 @@
+https://github.com/boto/boto/commit/4f4dcb31fe852c05ce19b44eb9d5b5d747e36f7c
+https://github.com/boto/boto/pull/2718
+
+From 4f4dcb31fe852c05ce19b44eb9d5b5d747e36f7c Mon Sep 17 00:00:00 2001
+From: Lee Ball <43632885+catleeball@users.noreply.github.com>
+Date: Mon, 10 Jun 2019 16:02:53 -0700
+Subject: [PATCH] Remove `strict=True` from http_client (#6)
+
+In Python 3.4, the `strict` kwarg was removed[1]. We are removing it
+here too.
+
+Alternatively, we can leave in `strict=True` for 2.x, but I chose to
+remove it entirely to maintain consistent behavior across versions.
+
+[1]: https://docs.python.org/3/library/http.client.html
+---
+ boto/connection.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/boto/connection.py b/boto/connection.py
+index c731173bb4eb..54e26fb2de16 100644
+--- a/boto/connection.py
++++ b/boto/connection.py
+@@ -807,7 +807,7 @@ class AWSAuthConnection(object):
+ sock.sendall(six.ensure_binary("\r\n"))
+ else:
+ sock.sendall(six.ensure_binary("\r\n"))
+- resp = http_client.HTTPResponse(sock, strict=True, debuglevel=self.debug)
++ resp = http_client.HTTPResponse(sock, debuglevel=self.debug)
+ resp.begin()
+
+ if resp.status != 200:
+--
+2.28.0
+
diff --git a/dev-python/boto/files/boto-2.49.0-py3-server-port.patch b/dev-python/boto/files/boto-2.49.0-py3-server-port.patch
new file mode 100644
index 000000000000..62e331921980
--- /dev/null
+++ b/dev-python/boto/files/boto-2.49.0-py3-server-port.patch
@@ -0,0 +1,42 @@
+https://github.com/boto/boto/commit/b9f6cb0ab717ea76e2780c7fddd1cd36b3bf7d63
+
+From b9f6cb0ab717ea76e2780c7fddd1cd36b3bf7d63 Mon Sep 17 00:00:00 2001
+From: Matt Houglum <houglum@google.com>
+Date: Fri, 21 Jun 2019 15:09:11 -0700
+Subject: [PATCH] Make server_name() behave correctly for PY3
+
+...because Python-2.6-or-newer doesn't just include Python 2.6 and 2.7.
+---
+ boto/connection.py | 14 +++++---------
+ 1 file changed, 5 insertions(+), 9 deletions(-)
+
+diff --git a/boto/connection.py b/boto/connection.py
+index 54e26fb2de16..bbb25d8fb842 100644
+--- a/boto/connection.py
++++ b/boto/connection.py
+@@ -650,17 +650,13 @@ class AWSAuthConnection(object):
+ if port == 80:
+ signature_host = self.host
+ else:
+- # This unfortunate little hack can be attributed to
+- # a difference in the 2.6 version of http_client. In old
+- # versions, it would append ":443" to the hostname sent
+- # in the Host header and so we needed to make sure we
+- # did the same when calculating the V2 signature. In 2.6
+- # (and higher!)
+- # it no longer does that. Hence, this kludge.
+- if ((ON_APP_ENGINE and sys.version[:3] == '2.5') or
+- sys.version[:3] in ('2.6', '2.7')) and port == 443:
++ ver_int = sys.version_info[0] * 10 + sys.version_info[1]
++ if port == 443 and ver_int >= 26: # Py >= 2.6
+ signature_host = self.host
+ else:
++ # In versions < 2.6, Python's http_client would append ":443"
++ # to the hostname sent in the Host header and so we needed to
++ # make sure we did the same when calculating the V2 signature.
+ signature_host = '%s:%d' % (self.host, port)
+ return signature_host
+
+--
+2.28.0
+
diff --git a/dev-python/boto/files/boto-2.49.0-py3-socket-binary.patch b/dev-python/boto/files/boto-2.49.0-py3-socket-binary.patch
new file mode 100644
index 000000000000..1d109a3f4995
--- /dev/null
+++ b/dev-python/boto/files/boto-2.49.0-py3-socket-binary.patch
@@ -0,0 +1,59 @@
+https://github.com/boto/boto/commit/d2cb697b32c297858ecc36701a5a4176818ab36d
+https://github.com/boto/boto/pull/2718
+https://github.com/boto/boto/pull/2893
+https://github.com/boto/boto/pull/3699
+
+From d2cb697b32c297858ecc36701a5a4176818ab36d Mon Sep 17 00:00:00 2001
+From: Cat Lee Ball <cball@google.com>
+Date: Mon, 10 Jun 2019 13:31:11 -0700
+Subject: [PATCH] Ensure binary strings sent to socket
+
+When running pre-release tests with proxied connections, it appeared a
+few spots in connection.py would fail under Python 3 since the
+socket.sendall method expects binary strings rather than unicode.
+---
+ boto/connection.py | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
+
+diff --git a/boto/connection.py b/boto/connection.py
+index a0d89a51f49c..d084d1f881fb 100644
+--- a/boto/connection.py
++++ b/boto/connection.py
+@@ -796,17 +796,17 @@ class AWSAuthConnection(object):
+ else:
+ sock = socket.create_connection((self.proxy, int(self.proxy_port)))
+ boto.log.debug("Proxy connection: CONNECT %s HTTP/1.0\r\n", host)
+- sock.sendall("CONNECT %s HTTP/1.0\r\n" % host)
+- sock.sendall("User-Agent: %s\r\n" % UserAgent)
++ sock.sendall(six.ensure_binary("CONNECT %s HTTP/1.0\r\n" % host))
++ sock.sendall(six.ensure_binary("User-Agent: %s\r\n" % UserAgent))
+ if self.proxy_user and self.proxy_pass:
+ for k, v in self.get_proxy_auth_header().items():
+- sock.sendall("%s: %s\r\n" % (k, v))
++ sock.sendall(six.ensure_binary("%s: %s\r\n" % (k, v)))
+ # See discussion about this config option at
+ # https://groups.google.com/forum/?fromgroups#!topic/boto-dev/teenFvOq2Cc
+ if config.getbool('Boto', 'send_crlf_after_proxy_auth_headers', False):
+- sock.sendall("\r\n")
++ sock.sendall(six.ensure_binary("\r\n"))
+ else:
+- sock.sendall("\r\n")
++ sock.sendall(six.ensure_binary("\r\n"))
+ resp = http_client.HTTPResponse(sock, strict=True, debuglevel=self.debug)
+ resp.begin()
+
+@@ -814,9 +814,10 @@ class AWSAuthConnection(object):
+ # Fake a socket error, use a code that make it obvious it hasn't
+ # been generated by the socket library
+ raise socket.error(-71,
++ six.ensure_binary(
+ "Error talking to HTTP proxy %s:%s: %s (%s)" %
+ (self.proxy, self.proxy_port,
+- resp.status, resp.reason))
++ resp.status, resp.reason)))
+
+ # We can safely close the response, it duped the original socket
+ resp.close()
+--
+2.28.0
+
diff --git a/dev-python/boto/files/boto-2.49.0-try-to-add-SNI-support-v3.patch b/dev-python/boto/files/boto-2.49.0-try-to-add-SNI-support-v3.patch
new file mode 100644
index 000000000000..11d346a2199e
--- /dev/null
+++ b/dev-python/boto/files/boto-2.49.0-try-to-add-SNI-support-v3.patch
@@ -0,0 +1,104 @@
+From f5e7f6c98b46ff622f60a4661ffc9ce07216d109 Mon Sep 17 00:00:00 2001
+From: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
+Date: Sat, 29 Sep 2018 21:47:11 +0200
+Subject: [PATCH] boto: try to add SNI support
+
+Add SNI support. Newer OpenSSL (with TLS1.3) fail to connect if the
+hostname is missing.
+
+Link: https://bugs.debian.org/bug=909545
+Tested-by: Witold Baryluk <witold.baryluk@gmail.com>
+Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
+---
+ boto/connection.py | 19 ++++++++++---------
+ boto/https_connection.py | 22 +++++++++++-----------
+ 2 files changed, 21 insertions(+), 20 deletions(-)
+
+diff --git a/boto/connection.py b/boto/connection.py
+index 34b428f101df7..b4867a7657465 100644
+--- a/boto/connection.py
++++ b/boto/connection.py
+@@ -778,8 +778,10 @@
+
+ def proxy_ssl(self, host=None, port=None):
+ if host and port:
++ cert_host = host
+ host = '%s:%d' % (host, port)
+ else:
++ cert_host = self.host
+ host = '%s:%d' % (self.host, self.port)
+ # Seems properly to use timeout for connect too
+ timeout = self.http_connection_kwargs.get("timeout")
+@@ -824,23 +824,24 @@ DEFAULT_CA_CERTS_FILE = os.path.join(os.path.dirname(os.path.abspath(boto.cacert
+ h = http_client.HTTPConnection(host)
+
+ if self.https_validate_certificates and HAVE_HTTPS_CONNECTION:
++ context = ssl.create_default_context()
++ context.verify_mode = ssl.CERT_REQUIRED
++ context.check_hostname = True
++
+ msg = "wrapping ssl socket for proxied connection; "
+ if self.ca_certificates_file:
+ msg += "CA certificate file=%s" % self.ca_certificates_file
++ context.load_verify_locations(cafile=self.ca_certificates_file)
+ else:
+ msg += "using system provided SSL certs"
++ context.load_default_certs()
+ boto.log.debug(msg)
+ key_file = self.http_connection_kwargs.get('key_file', None)
+ cert_file = self.http_connection_kwargs.get('cert_file', None)
+- sslSock = ssl.wrap_socket(sock, keyfile=key_file,
+- certfile=cert_file,
+- cert_reqs=ssl.CERT_REQUIRED,
+- ca_certs=self.ca_certificates_file)
+- cert = sslSock.getpeercert()
+- hostname = self.host.split(':', 0)[0]
+- if not https_connection.ValidateCertificateHostname(cert, hostname):
+- raise https_connection.InvalidCertificateException(
+- hostname, cert, 'hostname mismatch')
++ if key_file:
++ context.load_cert_chain(certfile=cert_file, keyfile=key_file)
++
++ sslSock = context.wrap_socket(sock, server_hostname=cert_host)
+ else:
+ # Fallback for old Python without ssl.wrap_socket
+ if hasattr(http_client, 'ssl'):
+diff --git a/boto/https_connection.py b/boto/https_connection.py
+index ddc31a152292e..a5076f6f9b261 100644
+--- a/boto/https_connection.py
++++ b/boto/https_connection.py
+@@ -119,20 +119,20 @@ from boto.compat import six, http_client
+ sock = socket.create_connection((self.host, self.port), self.timeout)
+ else:
+ sock = socket.create_connection((self.host, self.port))
++
++ context = ssl.create_default_context()
++ context.verify_mode = ssl.CERT_REQUIRED
++ context.check_hostname = True
++ if self.key_file:
++ context.load_cert_chain(certfile=self.cert_file, keyfile=self.key_file)
++
+ msg = "wrapping ssl socket; "
+ if self.ca_certs:
+ msg += "CA certificate file=%s" % self.ca_certs
++ context.load_verify_locations(cafile=self.ca_certs)
+ else:
+ msg += "using system provided SSL certs"
++ context.load_default_certs()
+ boto.log.debug(msg)
+- self.sock = ssl.wrap_socket(sock, keyfile=self.key_file,
+- certfile=self.cert_file,
+- cert_reqs=ssl.CERT_REQUIRED,
+- ca_certs=self.ca_certs)
+- cert = self.sock.getpeercert()
+- hostname = self.host.split(':', 0)[0]
+- if not ValidateCertificateHostname(cert, hostname):
+- raise InvalidCertificateException(hostname,
+- cert,
+- 'remote hostname "%s" does not match '
+- 'certificate' % hostname)
++
++ self.sock = context.wrap_socket(sock, server_hostname=self.host)
+--
+2.19.0
+
diff --git a/dev-python/boto/files/boto-2.49.0-unbundle-six.patch b/dev-python/boto/files/boto-2.49.0-unbundle-six.patch
new file mode 100644
index 000000000000..188dae7eb6fd
--- /dev/null
+++ b/dev-python/boto/files/boto-2.49.0-unbundle-six.patch
@@ -0,0 +1,28 @@
+use the system copy of six
+
+--- a/boto/compat.py
++++ b/boto/compat.py
+@@ -46,16 +46,16 @@ except (AttributeError, ImportError):
+ # This is probably running on App Engine.
+ expanduser = (lambda x: x)
+
+-from boto.vendored import six
++import six
+
+-from boto.vendored.six import BytesIO, StringIO
+-from boto.vendored.six.moves import filter, http_client, map, _thread, \
++from six import BytesIO, StringIO
++from six.moves import filter, http_client, map, _thread, \
+ urllib, zip
+-from boto.vendored.six.moves.queue import Queue
+-from boto.vendored.six.moves.urllib.parse import parse_qs, quote, unquote, \
++from six.moves.queue import Queue
++from six.moves.urllib.parse import parse_qs, quote, unquote, \
+ urlparse, urlsplit
+-from boto.vendored.six.moves.urllib.parse import unquote_plus
+-from boto.vendored.six.moves.urllib.request import urlopen
++from six.moves.urllib.parse import unquote_plus
++from six.moves.urllib.request import urlopen
+
+ if six.PY3:
+ # StandardError was removed, so use the base exception type instead
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index b458905191cc..784c4f8fca20 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -2,3 +2,4 @@ DIST boto3-1.16.36.tar.gz 341458 BLAKE2B 7e4cf667cd59caa8433226eb6914412370bfa4c
DIST boto3-1.16.43.tar.gz 342444 BLAKE2B 1a367fa252eab6738533c7bec2bc370dcc206f25c4290ea34632ef82a0e308aa4521af7bd2e9755782b3b66b438c528e67f55f7238183ffff2318bfb7361e924 SHA512 1cd757a2751e48b9075f99724a9980d882751542f5a7794a4cbddc46f82a1bbf00b8e0908e0cd2db16726636750d591aee26b00004a454c35d24ab79de9c80b9
DIST boto3-1.16.50.tar.gz 342744 BLAKE2B a6581acbdb07f2d8ce21ddf384b471d281d58910366dee0669f0f726118eabd52de8a4fe129915b9044bd484950155c32fa4f4941e1ef6ce55249213ba29f2f3 SHA512 de483be833917a2c478c0fe651ffe4143dc6c742e259711a955be41a8b76197353b295526695ca800bb860b95e0378dc461119bfa163c4be0faa3b6c2ccfc097
DIST boto3-1.16.56.tar.gz 344547 BLAKE2B da32affd031a7efd7f55ec390f657d02caaf37d5c226ed811934e101dee1fcdc6df8b678ddaa181cdec140ad70525ff0a462885eee21f924040b1f2051d0f1f0 SHA512 2f35d4331db005ecb8dca5c780ebb2347242564f541e5b9585f0645e113255aeb8dff2210ecc42a2768f2b58c6731d59d6cb5eb7ac143e7aafd2bf21eae7d7ab
+DIST boto3-1.16.57.tar.gz 344712 BLAKE2B 572a70f9afad3502d9f2bbaa5950654e45d40269bbb995e96d94573b423d4e182d314e36de97435c93f9608c780b79e073da79fcd4dd699899a83b60d864907d SHA512 a588ebdd03d189b63999523a2f68c0f1021b82299bf9875f7aebc3120b8db61afd9d784fb65885c87efe9e8ebe416f3c601ddd9615965a61a5910bb1f8e89e9f
diff --git a/dev-python/boto3/boto3-1.16.57.ebuild b/dev-python/boto3/boto3-1.16.57.ebuild
new file mode 100644
index 000000000000..2df16964cdb0
--- /dev/null
+++ b/dev-python/boto3/boto3-1.16.57.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 2290a1fe00b4..3349a4139fbd 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -2,3 +2,4 @@ DIST botocore-1.19.36.tar.gz 7291325 BLAKE2B d1f79298a0f47d704418cac8390a5d500b1
DIST botocore-1.19.43.tar.gz 7374325 BLAKE2B 7def5221bee4774a6b8a33e6499e499588ff18f8b144e669bdf9b01ae4a3e370e3aed5a3a960360123e57299da9b0293aa8da9108fe114f8ae34521b2920f479 SHA512 a1b97cbb779d8c8fe3495dd18d3d635e38c5c49e5b5fb31b7764029cf3063a7fda44711defc45783b3afb844bead46e686705af57472a7ff27af8b7e21645ad5
DIST botocore-1.19.50.tar.gz 7382888 BLAKE2B 7de2ef7a7d051427191b13cdd47d3ebd9b4de505e3e17aa7dfb42de9a5eebffa2f06317a559631d219acc4380cc68c7dcfa1d6b0dc9cb123b2fa0315dd81df4e SHA512 7d1a8ff53e22fc265d8ac6492c0607f8948c9aa5862abaded93c605c3a3e4e98e535308e5ec1500a480636e03dbc3d849ec2b1dbf0efb22dffa841ce1cb551f9
DIST botocore-1.19.56.tar.gz 7390812 BLAKE2B 3bec12ce19f39f12a72f7f59f226568cb5af59d6f9a40447a7a1fdc0f27eea06d0cfe5a5b12d2152189b700ddaa016592e95059fa42208c590cb698c568c2d63 SHA512 76988a7ddc588dba48f2444a99159247a0f178c67378fcb6eac51e3f5cfd0ab385960f0fb68bbc483f79e74c9b891070d34a39e9566eb8c24ce903b9ae24dfa5
+DIST botocore-1.19.57.tar.gz 7393040 BLAKE2B 1eb29dbf95a373fc516febfe2222129f42f2c82fc37a5a6c8e1519b3f5fe63e760c0b4440573c7eb86c94a1463ecddc3046c024cc0415fe53e1a76e9362edc71 SHA512 da4cc5009a755f3be975169ba5226586f4de425f3bed2ea6eda3235bd4fc4591155715a410f47073afa7f606b290f371e776643b0d8d43a00313599630f7390a
diff --git a/dev-python/botocore/botocore-1.19.57.ebuild b/dev-python/botocore/botocore-1.19.57.ebuild
new file mode 100644
index 000000000000..9d681f87244c
--- /dev/null
+++ b/dev-python/botocore/botocore-1.19.57.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/cfn-python-lint/Manifest b/dev-python/cfn-python-lint/Manifest
index 961392a00831..97d19f4e9652 100644
--- a/dev-python/cfn-python-lint/Manifest
+++ b/dev-python/cfn-python-lint/Manifest
@@ -1,3 +1,4 @@
DIST cfn-python-lint-0.44.1.tar.gz 5339578 BLAKE2B 7982cba9fe422a8323c6ea270bd7ff5f41800cc16ceaa39d9fc01c2929cda5cca3b19c45de50ca8338a56aad001c834e16bfbd0ab59140381b5189e28965ba38 SHA512 b7f9ad598411d89979334aa79c7b4667ede28eef82b0b546977ba10f33f57e89366d1448e8ceeb3f28a2e53b33a409c439c3faf7d10f53fc5819f6b8693e117d
DIST cfn-python-lint-0.44.2.tar.gz 5515542 BLAKE2B 9da951dc7faa000d2abd1610595e463045079e5a2e73ad59779fb715f32fca39c1cef189484d62de3bc57a48b7776f5cebcc21c39948b7d73e394b89a4cebba9 SHA512 ca0cba19f930960711676ec285b10e0b60ff36359326098d5040bd2fd8f7ca6cfee985544c4bf94770baefa0e50eecead45c4d769ff3587031c3bf463f26355f
DIST cfn-python-lint-0.44.3.tar.gz 5591470 BLAKE2B 7d8f6763023a86d528f132b36b9b860b726241576037a1dd92a296f4b5ec5389ffe24e4a41a8f504ae8351b9dafc166d96ae3b17b90ac23062af2159baa36220 SHA512 a3c5fa435ed9afce32336d01cfc6c94d1965dc5c296601aba75064fdaecda9df5bfaf2976837729b56f00bc3e8cea7fe8cd5141c58335091a35dbec31a630b69
+DIST cfn-python-lint-0.44.4.tar.gz 5632477 BLAKE2B 3520cb016f926e180bb1547b4e467d6fb5251ca5e2ef0ceaaed487f40f10b58f5b6700a5f1995d4a764b53e83ba8a4ab7a9e67fe9803557bef54df3036e691ee SHA512 39e244963109953b92cc9e9fd84e33ede157c9e752854f685dd81d2a3e09ea88ec402addc8f2c12f044f0f7ab8e0bbf53486153be9517b76f0a89fed3ff94a14
diff --git a/dev-python/cfn-python-lint/cfn-python-lint-0.44.4.ebuild b/dev-python/cfn-python-lint/cfn-python-lint-0.44.4.ebuild
new file mode 100644
index 000000000000..b0cefcddd0c5
--- /dev/null
+++ b/dev-python/cfn-python-lint/cfn-python-lint-0.44.4.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} )
+DISTUTILS_USE_SETUPTOOLS=rdepend
+inherit distutils-r1
+
+DESCRIPTION="CloudFormation Linter"
+HOMEPAGE="https://pypi.org/project/cfn-lint/ https://github.com/aws-cloudformation/cfn-python-lint"
+SRC_URI="https://github.com/aws-cloudformation/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+
+RDEPEND="
+ >=dev-python/aws-sam-translator-1.25.0[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/importlib_resources[${PYTHON_USEDEP}]
+ ' python3_6)
+ dev-python/jsonpatch[${PYTHON_USEDEP}]
+ >=dev-python/jsonschema-3.0[${PYTHON_USEDEP}]
+ dev-python/junit-xml[${PYTHON_USEDEP}]
+ dev-python/networkx[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.15.0[${PYTHON_USEDEP}]
+ >=dev-python/six-1.11[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/mock[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests --install unittest
+
+PATCHES=(
+ "${FILESDIR}/cfn-python-lint-0.30.1-tests.patch"
+)
+
+src_prepare() {
+ # unpin the deps
+ sed -e 's:~=[0-9.]*::' -i setup.py || die
+ # requires git checkout
+ sed -e 's:test_update_docs:_&:' \
+ -i test/unit/module/maintenance/test_update_documentation.py || die
+ distutils-r1_src_prepare
+}
diff --git a/dev-python/croniter/Manifest b/dev-python/croniter/Manifest
index d19450f06cb1..e469f31a46f4 100644
--- a/dev-python/croniter/Manifest
+++ b/dev-python/croniter/Manifest
@@ -1,3 +1,4 @@
DIST croniter-0.3.30.tar.gz 18122 BLAKE2B d15e19167eabf935ca12ad2b277b9b97459248c3a47982346070b4500b45f8296beeabf76c5ceb9bbff579ab2d713392c82446b234a6f4b4f6e8317adc67613d SHA512 1e7f5da56991281a16919abbb386a20a8437604bbe0e57d12726d5f19c1c038e9b320a900471b1d4dad9f5dfd0eeb85ced17232a4907e50025592a293a5a8ad1
DIST croniter-0.3.37.tar.gz 29607 BLAKE2B dfa466f8557e47c282cf7a7399b1364dd272a313d40b4c9a57e60de9e4bd174312cec24126679994ddce3c320b24d89db4b4395736e344e2a3df5fd13188f7b2 SHA512 733412d6263d5261e05139861465602016925716abe04b82218b370e82ca7cdf7418113d911fe693fc7242fdb686580970b60609de28b3b7f4330a91c721a551
DIST croniter-1.0.1.tar.gz 29720 BLAKE2B 74583e170bc2bcd504ea323a50f0421157dd2e064a8ffa6a3dd0098084f3d4fe86427373cfc851d8d859a08473e9ff1ae4b3c38a46fad5886534a9638cf1a2bb SHA512 2ea3e4f13c8b95c15249ae95c3295e80983cd1713a4d89b931da7f6f712809e4625916c231418d30f419b69caf9f0465cf3f0b5acc3d5468e8a43e1029cdf6cb
+DIST croniter-1.0.2.tar.gz 29809 BLAKE2B d7e5b668f97f98efdf992de4dd92bbddd8197275557364516af5d74b8376260967b249723dfda1d835c60dd185612a45f6ed6447609c593ad108ae1b738cefc7 SHA512 6e4b593dbbb5e3e1ce9a25ad709a1970f22feb1d0a2bf7fa97b8cc3eb43fbe896a842f74b3fc3cd08e3d414767cc661bf5c5307a206c42e1f0de5776b2b24310
diff --git a/dev-python/croniter/croniter-1.0.2.ebuild b/dev-python/croniter/croniter-1.0.2.ebuild
new file mode 100644
index 000000000000..21e43494945e
--- /dev/null
+++ b/dev-python/croniter/croniter-1.0.2.ebuild
@@ -0,0 +1,27 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{6,7,8,9,10} )
+
+inherit distutils-r1
+
+DESCRIPTION="Python module to provide iteration for datetime object"
+HOMEPAGE="https://github.com/kiorky/croniter https://pypi.org/project/croniter/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ dev-python/natsort[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]"
+BDEPEND="
+ test? (
+ dev-python/pytz[${PYTHON_USEDEP}]
+ dev-python/tzlocal[${PYTHON_USEDEP}]
+ )"
+
+distutils_enable_tests pytest
diff --git a/dev-python/croniter/metadata.xml b/dev-python/croniter/metadata.xml
index 04029a92259a..13c8b9a30d07 100644
--- a/dev-python/croniter/metadata.xml
+++ b/dev-python/croniter/metadata.xml
@@ -9,5 +9,9 @@
<maintainer type="person">
<email>zmedico@gentoo.org</email>
</maintainer>
+ <maintainer type="project">
+ <email>python@gentoo.org</email>
+ <name>Python</name>
+ </maintainer>
<origin>gentoo-staging</origin>
</pkgmetadata>
diff --git a/dev-python/eventlet/eventlet-0.30.0.ebuild b/dev-python/eventlet/eventlet-0.30.0.ebuild
index ecce52f2167d..0086e8fe8c54 100644
--- a/dev-python/eventlet/eventlet-0.30.0.ebuild
+++ b/dev-python/eventlet/eventlet-0.30.0.ebuild
@@ -12,7 +12,7 @@ SRC_URI="mirror://pypi/e/${PN}/${P}.tar.gz"
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ppc ~ppc64 ~s390 sparc ~x86"
+KEYWORDS="amd64 ~arm ~arm64 ppc ~ppc64 ~s390 sparc ~x86"
IUSE="doc examples test"
RDEPEND="
diff --git a/dev-python/flask-migrate/Manifest b/dev-python/flask-migrate/Manifest
index 9cf3ed1324f2..bbeabc5ca821 100644
--- a/dev-python/flask-migrate/Manifest
+++ b/dev-python/flask-migrate/Manifest
@@ -1,2 +1,3 @@
DIST Flask-Migrate-2.5.2.tar.gz 12127 BLAKE2B 4c30cd5a3e59c890b0b3e397845cfd1424cdbdec1340793f406fb2e77cc3dc1c7eda777498d75e2250d09a310f28aea1b6ff5248df1ea151ff62bd7c7acabe72 SHA512 9c20fef77c1e0cd2a3ff14bdac48117e3d1610fe9417c928e111fa9c5761a63e67154dedbe83247bbea0f62796203bac61f4193478431607e26bdb253ee0892b
DIST Flask-Migrate-2.5.3.tar.gz 12652 BLAKE2B 4a43cb3849ffa31afa00031ffbdfc130d07a8282184ca43c58a9b49fe94c456ee46a735fd6df9f9e3fa00ae0c82c1688852a68f2bf278afc5b08d64b31a473e7 SHA512 f26db1c6ceddceb635cce4259b4508ecc8dc26dbfa67397205668883129835840050d909337a73712d3b1ff3e0bbfab74f5ac94c2ac472ec64f86e64789107ac
+DIST Flask-Migrate-2.6.0.tar.gz 12671 BLAKE2B d8d1ab6fc7c077cc9c6dfe5de26c7ab0f2bcb45455f28fdb1bc03b6ac23a063f5c4103d57050a3e0818debd59cd9927ed4833d1cd924a2147ae16f766c045d82 SHA512 91ce86079b8f438357e5bffa809dd737c26ca5cb553ac9bd315ce5039112842e2a52fbf3cec3f6548eb13def8d641be2a4e12dcbe01995b1ab073af989dbbb68
diff --git a/dev-python/flask-migrate/flask-migrate-2.6.0.ebuild b/dev-python/flask-migrate/flask-migrate-2.6.0.ebuild
new file mode 100644
index 000000000000..f137f640e234
--- /dev/null
+++ b/dev-python/flask-migrate/flask-migrate-2.6.0.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{6,7,8,9,10} )
+inherit distutils-r1
+
+MY_PN="Flask-Migrate"
+MY_P="${MY_PN}-${PV}"
+
+DESCRIPTION="SQLAlchemy database migrations for Flask applications using Alembic"
+HOMEPAGE="https://pypi.org/project/Flask-Migrate/"
+SRC_URI="mirror://pypi/${MY_P:0:1}/${MY_PN}/${MY_P}.tar.gz"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/alembic-0.7[${PYTHON_USEDEP}]
+ >=dev-python/flask-0.9[${PYTHON_USEDEP}]
+ >=dev-python/flask-sqlalchemy-1.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? ( >=dev-python/flask-script-0.6[${PYTHON_USEDEP}] )
+"
+
+distutils_enable_tests setup.py
diff --git a/dev-python/freezegun/Manifest b/dev-python/freezegun/Manifest
index 0672dba6dfb4..71c242cbf8bd 100644
--- a/dev-python/freezegun/Manifest
+++ b/dev-python/freezegun/Manifest
@@ -1 +1,2 @@
DIST freezegun-1.0.0.tar.gz 27426 BLAKE2B ebbe77d50f71cd10ad77dd9010fbc3dd9411a781300a5d196f4f86a76a374a8416980f8779705a943c4638ffdf99250640afe577695203b87e77e2daa1be8b38 SHA512 b6e19cf7799c0689eb756f6ce922797f2f0622f03d13aaf81c62d777d00b660b6619cff996f7a89c54b2e9f33641401e04e72a455a03ba0c7dfca09b64cfecb0
+DIST freezegun-1.1.0.tar.gz 29923 BLAKE2B 8a49bcb2e2e89e09ab14b6b48f90c145ddba2a7e0d005e33a002316c01b29899766b0b011e47f510be737011752044a7cc5967fdff3e0e14dc77da92f5bb5b27 SHA512 41d2bd18c5115416679602c53aff10891dd8e97402f641eeb3819a3b84d34351c238dece8e68fe267d572693ea08b421510726b6d7c9fdb1d6d70ddc96954d54
diff --git a/dev-python/freezegun/freezegun-1.1.0.ebuild b/dev-python/freezegun/freezegun-1.1.0.ebuild
new file mode 100644
index 000000000000..c64aef65374c
--- /dev/null
+++ b/dev-python/freezegun/freezegun-1.1.0.ebuild
@@ -0,0 +1,27 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+PYTHON_COMPAT=( python3_{6,7,8,9,10} pypy3 )
+
+inherit distutils-r1
+
+DESCRIPTION="Let your Python tests travel through time"
+HOMEPAGE="https://github.com/spulec/freezegun"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+
+RDEPEND="
+ >dev-python/python-dateutil-2.7[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ $(python_gen_impl_dep sqlite)
+ dev-python/nose[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
diff --git a/dev-python/fsspec/Manifest b/dev-python/fsspec/Manifest
index 068df8d26c89..ad2029a828e1 100644
--- a/dev-python/fsspec/Manifest
+++ b/dev-python/fsspec/Manifest
@@ -1,2 +1 @@
-DIST filesystem_spec-0.8.2.tar.gz 238399 BLAKE2B f64f153dd303bd3ec44e5010507704b5cbb50a89ad4a7a2e50b38b139219896be543bcff0fe0a99e06f015450f4b0334a641fabeeeb23583b14665ef8f089159 SHA512 e30badc56871ef20cf4b2ce0f6353b4125632d9e253f68d4b08535c9e1ac5fe428745315cee89a9536bfd1b308a28cc65fff555a7b9d9511225357bf790b9aac
DIST filesystem_spec-0.8.5.tar.gz 255904 BLAKE2B df400276dbc53a453e9e9a00acb2e93a86a5f239237533bab036a16bd48d6d709f68241febe75f6f72281162ba4a563a087405a1064e18805ce2501095d778fb SHA512 20001fd02348f15e764a9e20eab98267f6746bd7e86187914d3db3098061aa62cb296595c3519696ae1e99ef896d49df0fcec846aaf6e5c281dd1a344ef6c393
diff --git a/dev-python/fsspec/fsspec-0.8.2.ebuild b/dev-python/fsspec/fsspec-0.8.2.ebuild
deleted file mode 100644
index 8739553cf731..000000000000
--- a/dev-python/fsspec/fsspec-0.8.2.ebuild
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright 2020 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
-
-PATCHES=(
- "${FILESDIR}"/fsspec-0.8.2-test-cleanup.patch
-)
-
-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
- pytest -vv \
- --ignore fsspec/implementations/tests/test_sftp.py \
- --ignore fsspec/implementations/tests/test_smb.py ||
- die "Tests failed with ${EPYTHON}"
-}
diff --git a/dev-python/fsspec/fsspec-0.8.5.ebuild b/dev-python/fsspec/fsspec-0.8.5.ebuild
index 208198fba4b9..6dad2333ccde 100644
--- a/dev-python/fsspec/fsspec-0.8.5.ebuild
+++ b/dev-python/fsspec/fsspec-0.8.5.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2020 Gentoo Authors
+# Copyright 2020-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
@@ -18,7 +18,7 @@ S=${WORKDIR}/${MY_P}
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+KEYWORDS="amd64 ~arm ~arm64 x86"
BDEPEND="
dev-python/versioneer[${PYTHON_USEDEP}]
diff --git a/dev-python/google-api-core/Manifest b/dev-python/google-api-core/Manifest
index 19b5e349d597..32fe914de2f6 100644
--- a/dev-python/google-api-core/Manifest
+++ b/dev-python/google-api-core/Manifest
@@ -1,3 +1,2 @@
-DIST google-api-core-1.17.0.tar.gz 98660 BLAKE2B 7959f429dbbfd8de658b11d0ee5be253cb53d930f8b37a140dbdc89a0d25ecdc640fc91476138471603efbe1e6078d668bc3f0e06c1fb1481960970a6f5632dc SHA512 fd609ce85bde22b09653bf46dd7bcc504ed93b19f8832c28f1d26ecb38a01e00380bd715191152a8d109e8c3235951b60525d4692fb4ba0eccb11a3b1df58cd2
DIST google-api-core-1.24.0.tar.gz 129718 BLAKE2B 08bb8aef03d5f5cbc96c06c01d103e1e569f15bad5084ba24a5e13f732b10d9d97a299fe22db7dfdaea73809e9458b811de87a028f77dcb00ca62fc069af63b1 SHA512 9517e86389edb824fe178128003fa245857de47f4b2416e0a345b66e02fe5fb109b7a72f2e9adfd52478862165548ce6945761a5a2ca02eda4a0187ca608760b
DIST google-api-core-1.25.0.tar.gz 130928 BLAKE2B be7864046b2d04ecbbcf368803e77eb472a06cbb0f1601e8c95209bbdbeff6a335a5cc7f75fd89e8e9a91b566aa5d50a9b06ebad4c65c59f54de9d5c7a2951e7 SHA512 d8a1f973ad5bece84fe413528491a37d89ca39d9638a8508ec0cf8359cc238ea62c76e2563cb5ef995e4d0997dd3e4aa1feda7d0e48c21f85851a50f7f90404c
diff --git a/dev-python/google-api-core/google-api-core-1.17.0.ebuild b/dev-python/google-api-core/google-api-core-1.17.0.ebuild
deleted file mode 100644
index 0bbb0b43e659..000000000000
--- a/dev-python/google-api-core/google-api-core-1.17.0.ebuild
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright 2020 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="Core Library for Google Client Libraries"
-HOMEPAGE="https://github.com/googleapis/python-api-core
- https://googleapis.dev/python/google-api-core/latest"
-SRC_URI="https://github.com/googleapis/${PN//google/python}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
-S="${WORKDIR}/${P//google/python}"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="amd64 ~arm ~arm64 x86"
-
-RDEPEND="
- dev-python/namespace-google[${PYTHON_USEDEP}]
- dev-python/protobuf-python[${PYTHON_USEDEP}]
- dev-python/googleapis-common-protos[${PYTHON_USEDEP}]
- >=dev-python/google-auth-1.14.0[${PYTHON_USEDEP}]
- >=dev-python/requests-2.18.0[${PYTHON_USEDEP}]
- <dev-python/requests-3[${PYTHON_USEDEP}]
- dev-python/six[${PYTHON_USEDEP}]
- dev-python/pytz[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/grpcio[${PYTHON_USEDEP}]
- dev-python/rsa[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-
-python_test() {
- distutils_install_for_testing
- pytest -vv || die "tests fail with ${EPYTHON}"
-}
-
-python_install_all() {
- distutils-r1_python_install_all
- find "${D}" -name '*.pth' -delete || die
-}
diff --git a/dev-python/google-api-core/google-api-core-1.24.0.ebuild b/dev-python/google-api-core/google-api-core-1.24.0.ebuild
index 8abac9c5dc56..395dcf2508ba 100644
--- a/dev-python/google-api-core/google-api-core-1.24.0.ebuild
+++ b/dev-python/google-api-core/google-api-core-1.24.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2020 Gentoo Authors
+# Copyright 2020-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
@@ -15,7 +15,7 @@ S="${WORKDIR}/${P//google/python}"
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+KEYWORDS="amd64 ~arm ~arm64 x86"
RDEPEND="
dev-python/namespace-google[${PYTHON_USEDEP}]
diff --git a/dev-python/locket/Manifest b/dev-python/locket/Manifest
index e2eebd981c7e..fdff951378df 100644
--- a/dev-python/locket/Manifest
+++ b/dev-python/locket/Manifest
@@ -1 +1,2 @@
DIST locket.py-0.2.0.gh.tar.gz 5598 BLAKE2B 9b8a1b3d4c3fed3e9ab8f37a1e7bd9d0aa65e618985368691802b1b66d0dbdeb7a1635ff72efec8a7351ce31ffc00413d5ee388e520057bf181a18a39ef46f0a SHA512 e5e5d34daf5c36b0ac4871ce0dec50c67b504be16755e38d7721e40c4f2c385c022c305ac1a9bd641ba9eaf45a2693a4a77b6fa6e95d6ae5ab34947e4ac30393
+DIST locket.py-0.2.1.gh.tar.gz 5988 BLAKE2B e50ef1794a49494434c730580510a4283685e924f6f3efb95067db7d566fa4808409fc339f3c8e3276ddf09f622cb165e9dde90094f764f662558ea32f85516e SHA512 517c580a3420283f945d28607fc765c571edb2c0fab52d5c76f24226d2ec85727d1ffe0c03c5f87f6ce6204e7db4d3c8f6e408d767a389bd93d34cc0de3e8bf7
diff --git a/dev-python/locket/locket-0.2.1.ebuild b/dev-python/locket/locket-0.2.1.ebuild
new file mode 100644
index 000000000000..a3d4a06315d5
--- /dev/null
+++ b/dev-python/locket/locket-0.2.1.ebuild
@@ -0,0 +1,24 @@
+# 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_P=locket.py-${PV}
+DESCRIPTION="File-based locks for Python"
+HOMEPAGE="https://github.com/mwilliamson/locket.py"
+SRC_URI="
+ https://github.com/mwilliamson/locket.py/archive/${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86 ~amd64-linux ~x86-linux"
+
+BDEPEND="
+ test? ( dev-python/spur[${PYTHON_USEDEP}] )"
+
+distutils_enable_tests nose
diff --git a/dev-python/lz4/Manifest b/dev-python/lz4/Manifest
index a135dc9c4ed7..1865ef79a683 100644
--- a/dev-python/lz4/Manifest
+++ b/dev-python/lz4/Manifest
@@ -1,2 +1,3 @@
DIST lz4-3.1.1.tar.gz 154325 BLAKE2B 2d40728087aea735aeac4d39c415edf94f9aca83c77e4a36fe53f6f32f6c1595c0b1ad97c11f6e58cacafb95e0e12d29336d9f072d4f0d47f2d522f552a368bf SHA512 b6ddcabcb323b88eeff1fa9cb91d379d6435ab51b2b51e080138892fbce57d92c8175e2ae1ef72e8a2f95429aaa4be66a5e8cd9d4dbc5bcd6b44ec26b7df96db
DIST lz4-3.1.2.tar.gz 153729 BLAKE2B f7d8b1b6dd4ee59d07eb4c2108516f939041bb1f131c62925986c2ad49406222c3eeac5232528979d6277aa5c1a950999f7bb3e984ffe26788e9d92a7eccf2e8 SHA512 bd277baf83a4d7819c2deee64e053fc030c5ccff8d5ea91762bfad2c38d5922f5305f8435b060821e86480be06716fa826cd05f407188077cc20637122e7c397
+DIST lz4-3.1.3.tar.gz 159016 BLAKE2B 2ab86799cbd37b96550ebb5d0e1a3c301cbcee2a42c6da189f5ae0fee4eb9c5614860dd044363e2c9312e3ab275eb527a116210604a72bd74354f49589d6567b SHA512 170b5330a8ec0eb4d69f3692c54eaa384fd4de78a7e7db95721d2f1e521ae9558f814e63bbb31db2775a81f7cd7eaea1420ad2c96406cff95d25bc5d30811aba
diff --git a/dev-python/lz4/lz4-3.1.3.ebuild b/dev-python/lz4/lz4-3.1.3.ebuild
new file mode 100644
index 000000000000..8fdd45e9a0b7
--- /dev/null
+++ b/dev-python/lz4/lz4-3.1.3.ebuild
@@ -0,0 +1,28 @@
+# 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="LZ4 Bindings for Python"
+HOMEPAGE="https://pypi.org/project/lz4/ https://github.com/python-lz4/python-lz4"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+SLOT="0"
+LICENSE="BSD"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="app-arch/lz4:="
+DEPEND=${RDEPEND}
+BDEPEND="
+ dev-python/setuptools_scm[${PYTHON_USEDEP}]
+ dev-python/pkgconfig[${PYTHON_USEDEP}]
+ test? (
+ dev-python/psutil[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
diff --git a/dev-python/pygresql/pygresql-5.2.2.ebuild b/dev-python/pygresql/pygresql-5.2.2.ebuild
index 4b3b1e177a20..945e93957745 100644
--- a/dev-python/pygresql/pygresql-5.2.2.ebuild
+++ b/dev-python/pygresql/pygresql-5.2.2.ebuild
@@ -16,7 +16,7 @@ SRC_URI="mirror://pypi/P/PyGreSQL/${MY_P}.tar.gz"
LICENSE="POSTGRESQL"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~hppa ~ia64 ppc ~sparc ~x86"
+KEYWORDS="~alpha amd64 ~hppa ~ia64 ppc ~sparc ~x86"
DEPEND="${POSTGRES_DEP}"
RDEPEND="${DEPEND}"
diff --git a/dev-python/pyls-spyder/pyls-spyder-0.3.0.ebuild b/dev-python/pyls-spyder/pyls-spyder-0.3.0.ebuild
index 41375e0abec0..11e41ce98c05 100644
--- a/dev-python/pyls-spyder/pyls-spyder-0.3.0.ebuild
+++ b/dev-python/pyls-spyder/pyls-spyder-0.3.0.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
@@ -14,7 +14,7 @@ SRC_URI="https://github.com/spyder-ide/${PN}/archive/v${PV}.tar.gz -> ${P}-gh.ta
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~x86"
+KEYWORDS="amd64 ~x86"
RDEPEND=">=dev-python/python-language-server-0.36.2[${PYTHON_USEDEP}]"
BDEPEND="test? ( dev-python/mock )"
diff --git a/dev-python/pyusb/Manifest b/dev-python/pyusb/Manifest
index e2c488bba2b9..412b55c67a9a 100644
--- a/dev-python/pyusb/Manifest
+++ b/dev-python/pyusb/Manifest
@@ -1 +1,2 @@
DIST pyusb-1.1.0.tar.gz 78752 BLAKE2B ee541afedca7d5dca345c6addee2702ccb7408bb9a2d8b23fe1eb47f067a93309599894e364c0bdcef3e5348bd13cc39f240257efd4664679017f61b87853217 SHA512 0769670e6ebd8b31f2494258eca5d6e470ad3cb17663cc14b8b3a8136ea24caa23f86d81c60c501b88a9bc94b0de6a45aac43c6c5f140e65fd03a589b4d18179
+DIST pyusb-1.1.1.tar.gz 74746 BLAKE2B 795acafae3193e1a415baeb634554c8fdec3f4baa45a61a3eac9e1af4a84634cc540d421b7d8ad20142912fbef6ba53684e2e5b008e48f3e89406a493918ab20 SHA512 19aa82dcb9421d536063a975414855d1474f44b33dc4039e9a001be795061dbd60ed576acb605ae6bab7a0fe10834e5507408757546c7edcd50b43687a65a287
diff --git a/dev-python/pyusb/pyusb-1.1.1.ebuild b/dev-python/pyusb/pyusb-1.1.1.ebuild
new file mode 100644
index 000000000000..58e53304eb1f
--- /dev/null
+++ b/dev-python/pyusb/pyusb-1.1.1.ebuild
@@ -0,0 +1,28 @@
+# 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="USB support for Python"
+HOMEPAGE="https://pyusb.github.io/pyusb/ https://pypi.org/project/pyusb/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86"
+
+### This version is compatible with both 0.X and 1.X versions of libusb
+DEPEND="virtual/libusb:="
+RDEPEND="${DEPEND}"
+
+DOCS=( README.rst docs/tutorial.rst )
+
+python_test() {
+ cd tests || die
+ "${EPYTHON}" testall.py || die "Tests failed with ${EPYTHON}"
+}
diff --git a/dev-python/pyyaml/Manifest b/dev-python/pyyaml/Manifest
index 360375ff2813..78896f1cf487 100644
--- a/dev-python/pyyaml/Manifest
+++ b/dev-python/pyyaml/Manifest
@@ -1 +1,2 @@
DIST pyyaml-5.3.1.gh.tar.gz 168044 BLAKE2B 2acc62ecc7448925eb340c2555001c8a74bd883d720b992d6deaea890b4eac435e4ae02eb129db3a6778c0be21a231fa9d96ee8ae59a4a39bc49961e5fb0d6ab SHA512 27d97e8493c7660c7c0c471e20a8aa46c85431e4559a98bcbdafc2bd89a67fd04c6f2090e54ff6b206c868b33635ef8be68070a4c25d17a25c97fd5ad3549556
+DIST pyyaml-5.4.gh.tar.gz 173140 BLAKE2B 2ff298cce44442b8431197b9222c2fba18d4f0aaf600fe636174864096f49f1392c3e965155b36c94ad0cf659402ffbd660cea5719b509bf90e9f316c1893248 SHA512 a76f9cf1838380b2e509bf1d5251f175cca1b413aadc511517de5fb3b4743747918f94abc1cf1976171731a1ba67596def3cb0652d08e1e3af3235cf7c0a610f
diff --git a/dev-python/pyyaml/pyyaml-5.4.ebuild b/dev-python/pyyaml/pyyaml-5.4.ebuild
new file mode 100644
index 000000000000..ff677e57a82a
--- /dev/null
+++ b/dev-python/pyyaml/pyyaml-5.4.ebuild
@@ -0,0 +1,49 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DISTUTILS_USE_SETUPTOOLS=no
+PYTHON_COMPAT=( python3_{6,7,8,9,10} pypy3 )
+
+inherit distutils-r1
+
+DESCRIPTION="YAML parser and emitter for Python"
+HOMEPAGE="https://pyyaml.org/wiki/PyYAML
+ https://pypi.org/project/PyYAML/
+ https://github.com/yaml/pyyaml"
+SRC_URI="https://github.com/yaml/pyyaml/archive/${PV}.tar.gz -> ${P}.gh.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris ~x86-solaris"
+IUSE="examples +libyaml"
+
+BDEPEND="
+ libyaml? (
+ $(python_gen_cond_dep '
+ dev-python/cython[${PYTHON_USEDEP}]
+ ' 'python*')
+ )
+"
+RDEPEND="libyaml? ( dev-libs/libyaml:= )"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+ # bug #659348
+ "${FILESDIR}/pyyaml-5.1-cve-2017-18342.patch"
+)
+
+distutils_enable_tests setup.py
+
+python_configure_all() {
+ mydistutilsargs=( $(use_with libyaml) )
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+ if use examples; then
+ dodoc -r examples
+ docompress -x /usr/share/doc/${PF}
+ fi
+}
diff --git a/dev-python/readthedocs-sphinx-ext/Manifest b/dev-python/readthedocs-sphinx-ext/Manifest
index c1383fc5248a..f6457656af17 100644
--- a/dev-python/readthedocs-sphinx-ext/Manifest
+++ b/dev-python/readthedocs-sphinx-ext/Manifest
@@ -1,2 +1,3 @@
DIST readthedocs-sphinx-ext-2.1.1.tar.gz 10181 BLAKE2B 01ca34befd0f18bb747d7f843e0cc394e19db4fe471f2bb21617b6dbdf4c1ad9721047185561f9bfbd8f770e1fefd5b560e65d7c5e2675c1bc8d74e08252eeb1 SHA512 5594e375133477ecdc1d22a78c0d4dac73c5e8c1715f4309a9674497ef860b07e8872bb4ba471fbffacd8bd22bc49741b8df54ad9ca9bb474acd9cdee72c8969
DIST readthedocs-sphinx-ext-2.1.2.tar.gz 11709 BLAKE2B 9386d9c849c4287a0f52ce054e33d22afed0426b5d775a03c90b7c18021f2a2a9429334dc0231ec8d28d3b4437dcf4e3faf57a0c1e46cfb4690893b96560fa3a SHA512 c1fa8a2c1b1d50aa5039c0592a0960b1162c31f58769754a7fdbe4d85557428f3e0a3a509012077210d30d79a28463ab0624855036ffb45d0977e9e0e666622a
+DIST readthedocs-sphinx-ext-2.1.3.tar.gz 12261 BLAKE2B 3121b75c2a157a61727f4bc5b15b7a5d0aa23a177593fd7208d558de4ea9d89c48c788a843af833ab9dc79b05baa32231086ca6e4ea4c69ba793fb5001becb12 SHA512 f9b03de7a5ef8e6707960cb05b1be8115a55292820fe3fd43efc6d7843b9e55c8c537a53653967e1879ff27c5856ca66f145fc6e8f98891fc1f2682e425e2faf
diff --git a/dev-python/readthedocs-sphinx-ext/readthedocs-sphinx-ext-2.1.3.ebuild b/dev-python/readthedocs-sphinx-ext/readthedocs-sphinx-ext-2.1.3.ebuild
new file mode 100644
index 000000000000..88610c3aacf5
--- /dev/null
+++ b/dev-python/readthedocs-sphinx-ext/readthedocs-sphinx-ext-2.1.3.ebuild
@@ -0,0 +1,27 @@
+# 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} pypy3 )
+inherit distutils-r1
+
+DESCRIPTION="Code specific for Read the Docs and Sphinx"
+HOMEPAGE="https://github.com/readthedocs/readthedocs-sphinx-ext"
+SRC_URI="mirror://pypi/${PN::1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/jinja-2.9[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]"
+PDEPEND="
+ dev-python/sphinx[${PYTHON_USEDEP}]"
+BDEPEND="
+ test? ( ${PDEPEND} )"
+
+# unittest should be sufficient but tests are very verbose, so pytest's
+# output capture is most welcome
+distutils_enable_tests pytest
diff --git a/dev-python/tox/Manifest b/dev-python/tox/Manifest
index 72f28f52cbb5..7cb7de763aac 100644
--- a/dev-python/tox/Manifest
+++ b/dev-python/tox/Manifest
@@ -1,3 +1,4 @@
DIST tox-3.20.1.tar.gz 297516 BLAKE2B 2a13059bce229f30670e247b17ffd03d4b0d907b2fa7eb7d2f6848ada8d81e1a0aad983748c4346dfa61877f88edd22e4616ed20efcbd15da34fdc1c87b4439a SHA512 0989cc3dfd25eb3d1236d973d490f12c81273c93e84140b54342217eb73dd944f446c7ce9fe228b644d764b94300f1c6ccaf94e442d0e34835d05de84cccabd6
DIST tox-3.21.0.tar.gz 300962 BLAKE2B 360aedb86ef1f918e73f726af238d8fdb20c3217b45ef068ec833b14e17af018c1115a2df43b441b9a4af802c4aee2fcaa9bac8f519028dd05b112902c47b2ce SHA512 50041660839cc081d491f867db74c6e95c93b81b2264785b3ccf7b80fbf3a1250028755ddc4243a285ebd005e12f897001d6ea7efd45d0278ce3cb14f7021572
DIST tox-3.21.1.tar.gz 301387 BLAKE2B 3b15a17cfa8f2df1c8c3558cacde81d818cbc72b3dd0c4e4868d2fedace61c85ed484ad08e8abec10c0bef4062e623c75e4bf1122b4d15151b741057ea90fba3 SHA512 c3feaf1832db2b16df444d52ea774602c9a68eabd379c86483d33716f414df901b5e95ea9d63dd7c2f4338227cb5d9ee521a56f2dbb0d9c7d21221f49d1fc335
+DIST tox-3.21.2.tar.gz 301587 BLAKE2B 81d19e45a1d53000a2e9f956ed7b934f0f1926b4270ddced997ddc8b77a1f05388e0907d379dbabaafd5e6fdcd7031d5e87f206fff385759318a89a5f3eebf58 SHA512 beb551f49af1f8661931f241cf73fa77a37a8061ade7d41b415a2fcecd4d5dd1ba7d3e3add248d3bc14627468fa896f3f4f532305bbc36d112d226b1961fd191
diff --git a/dev-python/tox/tox-3.21.2.ebuild b/dev-python/tox/tox-3.21.2.ebuild
new file mode 100644
index 000000000000..1ed45c6fdaaf
--- /dev/null
+++ b/dev-python/tox/tox-3.21.2.ebuild
@@ -0,0 +1,76 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DISTUTILS_USE_SETUPTOOLS=rdepend
+PYTHON_COMPAT=( python3_{6,7,8,9,10} pypy3 )
+
+inherit distutils-r1
+
+DESCRIPTION="virtualenv-based automation of test activities"
+HOMEPAGE="https://tox.readthedocs.io https://github.com/tox-dev/tox https://pypi.org/project/tox/"
+SRC_URI="https://github.com/tox-dev/tox/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~ppc ~ppc64 ~sparc ~x86"
+# doc disabled because of missing deps in tree
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ dev-python/filelock[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/importlib_metadata-1.1[${PYTHON_USEDEP}]
+ ' python3_{5,6,7} pypy3)
+ dev-python/packaging[${PYTHON_USEDEP}]
+ >=dev-python/pluggy-0.12[${PYTHON_USEDEP}]
+ dev-python/pip[${PYTHON_USEDEP}]
+ dev-python/py[${PYTHON_USEDEP}]
+ >=dev-python/six-1.14[${PYTHON_USEDEP}]
+ dev-python/toml[${PYTHON_USEDEP}]
+ >=dev-python/virtualenv-16.0.0[${PYTHON_USEDEP}]"
+# TODO: figure out how to make tests work without the package being
+# installed first.
+BDEPEND="
+ dev-python/setuptools_scm[${PYTHON_USEDEP}]
+ test? (
+ ${RDEPEND}
+ >=dev-python/flaky-3.4.0[${PYTHON_USEDEP}]
+ >=dev-python/freezegun-0.3.11[${PYTHON_USEDEP}]
+ >=dev-python/pytest-4.0.0[${PYTHON_USEDEP}]
+ dev-python/pytest-mock[${PYTHON_USEDEP}]
+ )"
+
+src_configure() {
+ export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
+}
+
+python_test() {
+ local deselect=(
+ # broken without Internet
+ tests/unit/session/test_provision.py::test_provision_non_canonical_dep
+ tests/integration/test_provision_int.py::test_provision_interrupt_child
+
+ # expects python2 to exist
+ tests/unit/interpreters/test_interpreters.py::test_tox_get_python_executable
+
+ # broken without tox installed first
+ # TODO: figure out how to make importlib_metadata work
+ tests/unit/test_z_cmdline.py::test_tox_console_script
+ tests/unit/test_z_cmdline.py::test_tox_quickstart_script
+ )
+
+ [[ ${EPYTHON} != pypy3 ]] && deselect+=(
+ # TODO?
+ tests/unit/interpreters/test_interpreters.py::test_find_alias_on_path
+
+ # broken without tox installed first
+ # TODO: why it can't import itself?
+ tests/integration/test_parallel_interrupt.py::test_parallel_interrupt
+ )
+
+ distutils_install_for_testing --via-root
+ pytest -vv --no-network ${deselect[@]/#/--deselect } || die "Testsuite failed under ${EPYTHON}"
+}
diff --git a/dev-python/virtualenv/Manifest b/dev-python/virtualenv/Manifest
index 34c02a68feaa..32ee6cc64689 100644
--- a/dev-python/virtualenv/Manifest
+++ b/dev-python/virtualenv/Manifest
@@ -2,3 +2,4 @@ DIST virtualenv-16.7.10.tar.gz 5116776 BLAKE2B 42f0a4b4330850b504f8febd991ef6ecd
DIST virtualenv-20.2.1.tar.gz 8286055 BLAKE2B da77c51b352e979f05515107df49101a70f97da01862ae92aff0e185065edf1d6d517ee68057f1f2efe5ee999dd9dec24c0f2967b1f10130b446e83e478ccbd1 SHA512 e7877a9766bc47f47a07219258201ad8457ca587a04d61119a0516da43016dda4b5cfeaf725dd0b06f1f896ac8af0f3d7a2ceed3d3f35ac7a4b6ecc607c84118
DIST virtualenv-20.3.0.tar.gz 9074217 BLAKE2B a5a00e39e31beff84e28e66d1cf6693804861ec0a3c0d0ee5c042e39a8edf894e89d6e78093fe1a4fecaf8b43bceff82e47a1ef7b8a92a1d2bc58d61411575b9 SHA512 5703a934d373d88670092febf26782f65303c65de93cffdd1a2ca06d6f2de4868378421f3ad96e3857eb99d0b60e7a77b0a2dbcf10561918efcbadb29a4ebf3b
DIST virtualenv-20.3.1.tar.gz 9077527 BLAKE2B 9932c75ffd42c2448a3f5dc49aa8b31f7cd169cc671e225a97fa75fabc3339728d0b280abec9616c11fc869dc696bfd17da05bf911c6f8a14947d710ade86897 SHA512 ee95e851e9e3597fd1691086d1d4dc72a41d6a143e9644be208cadbc1dfe7c8e562cd506a657ba1f77161d8d80a9f6f648b345e6533265b0e989c7ad39cc7680
+DIST virtualenv-20.4.0.tar.gz 9079287 BLAKE2B a3c97537b9c35b463a0077e6020fd087a1cf7c22302ab9f57a7df951bd68d3b0e1bc323cdf12a71ca0fdba938364dbd970467d4f9f768ee688a5d9709949b08a SHA512 4dcc141441626ca2a565c1b51453ef0b7a05016037c44ae1017269e5b2ea98fb7fb29fb9cf3f8909a377824b5e52c5b40d2592e40931d8ad63ad850b8e5f23ac
diff --git a/dev-python/virtualenv/virtualenv-20.4.0.ebuild b/dev-python/virtualenv/virtualenv-20.4.0.ebuild
new file mode 100644
index 000000000000..7a01fa9ad8dc
--- /dev/null
+++ b/dev-python/virtualenv/virtualenv-20.4.0.ebuild
@@ -0,0 +1,99 @@
+# 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 )
+DISTUTILS_USE_SETUPTOOLS=manual
+
+inherit distutils-r1
+
+DESCRIPTION="Virtual Python Environment builder"
+HOMEPAGE="
+ https://virtualenv.pypa.io/en/stable/
+ https://pypi.org/project/virtualenv/
+ https://github.com/pypa/virtualenv/
+"
+SRC_URI="mirror://pypi/${PN::1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+SLOT="0"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-python/appdirs-1.4.3[${PYTHON_USEDEP}]
+ >=dev-python/distlib-0.3.1[${PYTHON_USEDEP}]
+ >=dev-python/filelock-3[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-41[${PYTHON_USEDEP}]
+ >=dev-python/six-1.9.0[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/importlib_metadata-0.12[${PYTHON_USEDEP}]
+ ' python3_{6,7} pypy3)
+ $(python_gen_cond_dep '
+ >=dev-python/importlib_resources-1.0[${PYTHON_USEDEP}]
+ ' python3_6 pypy3)"
+# coverage is used somehow magically in virtualenv, maybe it actually
+# tests something useful
+BDEPEND="
+ dev-python/setuptools_scm[${PYTHON_USEDEP}]
+ test? (
+ ${RDEPEND}
+ $(python_gen_cond_dep '
+ dev-python/coverage[${PYTHON_USEDEP}]
+ dev-python/flaky[${PYTHON_USEDEP}]
+ >=dev-python/pip-20.0.2[${PYTHON_USEDEP}]
+ >=dev-python/pytest-5[${PYTHON_USEDEP}]
+ >=dev-python/pytest-freezegun-0.4.1[${PYTHON_USEDEP}]
+ >=dev-python/pytest-mock-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/pytest-timeout-1.3.4[${PYTHON_USEDEP}]
+ dev-python/wheel[${PYTHON_USEDEP}]
+ >=dev-python/packaging-20.0[${PYTHON_USEDEP}]
+ ' 'python3*')
+ )"
+
+distutils_enable_sphinx docs \
+ dev-python/sphinx_rtd_theme \
+ dev-python/towncrier
+
+src_configure() {
+ export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
+}
+
+python_test() {
+ local deselect=(
+ tests/unit/activation/test_xonsh.py
+ tests/unit/seed/embed/test_bootstrap_link_via_app_data.py::test_seed_link_via_app_data
+ tests/unit/create/test_creator.py::test_cross_major
+ )
+ [[ ${EPYTHON} == pypy3 ]] && deselect+=(
+ 'tests/unit/create/test_creator.py::test_create_no_seed[root-pypy3-posix-copies-isolated]'
+ 'tests/unit/create/test_creator.py::test_create_no_seed[root-pypy3-posix-copies-global]'
+ 'tests/unit/create/test_creator.py::test_create_no_seed[venv-pypy3-posix-copies-isolated]'
+ 'tests/unit/create/test_creator.py::test_create_no_seed[venv-pypy3-posix-copies-global]'
+ 'tests/unit/create/test_creator.py::test_zip_importer_can_import_setuptools'
+ 'tests/unit/discovery/py_info/test_py_info_exe_based_of.py::test_discover_ok[PyPy-3.7.9-64-bin-]'
+ 'tests/unit/discovery/py_info/test_py_info_exe_based_of.py::test_discover_ok[PyPy-3.7.9--bin-]'
+ 'tests/unit/discovery/py_info/test_py_info_exe_based_of.py::test_discover_ok[PyPy-3.7-64-bin-]'
+ 'tests/unit/discovery/py_info/test_py_info_exe_based_of.py::test_discover_ok[PyPy-3.7--bin-]'
+ 'tests/unit/discovery/py_info/test_py_info_exe_based_of.py::test_discover_ok[PyPy-3-64-bin-]'
+ 'tests/unit/discovery/py_info/test_py_info_exe_based_of.py::test_discover_ok[PyPy-3--bin-]'
+ 'tests/unit/discovery/py_info/test_py_info_exe_based_of.py::test_discover_ok[python-3.7.9-64-bin-]'
+ 'tests/unit/discovery/py_info/test_py_info_exe_based_of.py::test_discover_ok[python-3.7.9--bin-]'
+ 'tests/unit/discovery/py_info/test_py_info_exe_based_of.py::test_discover_ok[python-3.7-64-bin-]'
+ 'tests/unit/discovery/py_info/test_py_info_exe_based_of.py::test_discover_ok[python-3.7--bin-]'
+ 'tests/unit/discovery/py_info/test_py_info_exe_based_of.py::test_discover_ok[python-3-64-bin-]'
+ 'tests/unit/discovery/py_info/test_py_info_exe_based_of.py::test_discover_ok[python-3--bin-]'
+ )
+
+ distutils_install_for_testing --via-root
+ pytest -vv ${deselect[@]/#/--deselect } ||
+ die "Tests fail with ${EPYTHON}"
+}
+
+pkg_postinst() {
+ elog "Please note that while virtualenv package no longer supports"
+ elog "Python 2.7, you can still create py2.7 virtualenvs via:"
+ elog " $ virtualenv -p 2.7 ..."
+}