summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2021-02-27 13:50:33 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2021-02-27 13:50:33 +0000
commit0d5be85c6df12853ac7b83a6522dd15ac7a4807f (patch)
tree5555fdd61264375f30dc3630afe4c17010bb1813 /dev-python
parent313e3a00c475e21b8ab0a562acafb868dff531dd (diff)
downloadbaldeagleos-repo-0d5be85c6df12853ac7b83a6522dd15ac7a4807f.tar.gz
baldeagleos-repo-0d5be85c6df12853ac7b83a6522dd15ac7a4807f.tar.xz
baldeagleos-repo-0d5be85c6df12853ac7b83a6522dd15ac7a4807f.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/aiohttp/aiohttp-3.7.4.ebuild2
-rw-r--r--dev-python/asteval/Manifest1
-rw-r--r--dev-python/asteval/asteval-0.9.23.ebuild17
-rw-r--r--dev-python/boto3/Manifest1
-rw-r--r--dev-python/boto3/boto3-1.17.17.ebuild56
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.20.17.ebuild59
-rw-r--r--dev-python/fonttools/Manifest1
-rw-r--r--dev-python/fonttools/fonttools-4.21.1.ebuild55
-rw-r--r--dev-python/ioflo/files/ioflo-2.0.2-python39.patch131
-rw-r--r--dev-python/ioflo/ioflo-2.0.2.ebuild1
-rw-r--r--dev-python/ipython/Manifest1
-rw-r--r--dev-python/ipython/ipython-7.21.0.ebuild137
-rw-r--r--dev-python/keyring/Manifest1
-rw-r--r--dev-python/keyring/keyring-22.2.0.ebuild43
-rw-r--r--dev-python/pytest-salt-factories/Manifest2
-rw-r--r--dev-python/pytest-salt-factories/files/pytest-salt-factories-0.121.1-tests.patch294
-rw-r--r--dev-python/pytest-salt-factories/pytest-salt-factories-0.121.1.ebuild64
-rw-r--r--dev-python/pytest-salt-factories/pytest-salt-factories-0.94.4.ebuild37
-rw-r--r--dev-python/python-lhafile/Manifest1
-rw-r--r--dev-python/python-lhafile/python-lhafile-0.3.0.ebuild18
-rw-r--r--dev-python/raet/files/raet-0.6.8-python39.patch14
-rw-r--r--dev-python/raet/raet-0.6.8-r2.ebuild40
23 files changed, 938 insertions, 39 deletions
diff --git a/dev-python/aiohttp/aiohttp-3.7.4.ebuild b/dev-python/aiohttp/aiohttp-3.7.4.ebuild
index e1bb7b1b89b2..c30d0b886fe9 100644
--- a/dev-python/aiohttp/aiohttp-3.7.4.ebuild
+++ b/dev-python/aiohttp/aiohttp-3.7.4.ebuild
@@ -13,7 +13,7 @@ SRC_URI="mirror://pypi/${P:0:1}/${PN}/${P}.tar.gz"
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~riscv ~sparc ~x86"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ppc ppc64 ~riscv ~sparc x86"
RDEPEND="
>=dev-python/async_timeout-3.0.0[${PYTHON_USEDEP}]
diff --git a/dev-python/asteval/Manifest b/dev-python/asteval/Manifest
index efef88ff0c27..edaafe12ddbc 100644
--- a/dev-python/asteval/Manifest
+++ b/dev-python/asteval/Manifest
@@ -1,2 +1,3 @@
DIST asteval-0.9.21.tar.gz 54203 BLAKE2B c5232b41cc73184f4a9d21e257d4c517662e7a7e5c6beed0d0a1f46572310263b5370ea455f2d0640410cecd7e3b8a7686a56931fa61c3294a57a2e5ea984336 SHA512 b2930963641486f208c629300f70e41924aa59bd9c64f767ed5a4db0a39e79c02a02fed48eb0e113fb6e3fc594973c9d0afa56d768ac627758a096b1c4fe6030
DIST asteval-0.9.22.tar.gz 55120 BLAKE2B 5712e72f69e3d48df6a6ac33e3bf87517525efb3907cb954d5a4427b4d41aac5bdfbf71376967633d36574a845c40bbeb391d2ef0a2deef280235c468732e80d SHA512 0c6e0d1273fd9794828e006c56d243e2afbf336314dad9ccc95f40b790851460beb42400defbf4ee09eb7d65532b499a762b4b19c3102bbe6d2553a3a6debb37
+DIST asteval-0.9.23.tar.gz 55239 BLAKE2B 447599078a877784c35b7bdb96f81382139f8a93d72e660658386867b0eb37e04a22ac7ba9d6afbef1a55d35ca38a63fef60e1e1382e9740694b1e94ddcc7e7b SHA512 b2755b4dbefff1e481558f886cc5724d9a6a953b145736afab237e16f7718d48d1f8f98a0b7355c5e871f8ed0862b60bd6a4d99554a5e0fd0875f9cfdfcbce55
diff --git a/dev-python/asteval/asteval-0.9.23.ebuild b/dev-python/asteval/asteval-0.9.23.ebuild
new file mode 100644
index 000000000000..39c7f2058aab
--- /dev/null
+++ b/dev-python/asteval/asteval-0.9.23.ebuild
@@ -0,0 +1,17 @@
+# 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="Evaluator of Python expression using ast module"
+HOMEPAGE="https://newville.github.io/asteval/ https://github.com/newville/asteval"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE=""
+
+distutils_enable_tests pytest
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index f80963f57554..8efd9b9af1b0 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -14,6 +14,7 @@ DIST boto3-1.17.13.tar.gz 347484 BLAKE2B 6e07f563ccb6c54b40af962d7b8941c7afa7976
DIST boto3-1.17.14.tar.gz 347559 BLAKE2B 66a4a1a062f74d8cbb425c945716ad912e28daf7ce4d85568ae2d30083bebaab5e314c0447c3faf5375400b939685a3bf083a122d5827666d8f6b50cd9ccf30f SHA512 b2c6510554b33d839026cb27354967c1fd25c80fbdc6ceaf92ba1fa2dd2bf47040e98db053f73d37aff759a52ff0a44c361b301bbb52e03a4fb2b3f0a389ea79
DIST boto3-1.17.15.tar.gz 347639 BLAKE2B 91769c2aa49bd7bfa873cafa4350ca7fc1ebc53a4f94086a31b1e2e18e2bf721b351f7e2784e09b7dba7798fe558d2082b83f2b48c5e36c67efc8a57d8999614 SHA512 7601194ea9b0ce2ae657369da9ac19eec6e071dfa33780216748d2e971830478fb7712275b9330a1ed0b6a88fbbf66e681aa54cccffee6200c589f8d9a728128
DIST boto3-1.17.16.tar.gz 347714 BLAKE2B 32f7d34080dd64f8d4ee658046a0aadc436767c8ce25ad952cb03b02d9427408f6ba4fb33bff45b826c2e522eb5a5187a5beec74b8745ac16c335ed4b5907e7f SHA512 cb2cbd486dea271787e4e2bfa0bdfd6f610f29b5b521b2e7bf0fd584ff4f892e27910d5f2cc592a73a59356c72095c29f20a73565b0da5fc161357e57fdf60cb
+DIST boto3-1.17.17.tar.gz 347835 BLAKE2B 7861befb9275b0cf36235749369f65b69845ef710404708c2c51c9223d370fd46eede4121be501eb9022f6a62a0158d2cad03ce4095640064def3a9d35be7478 SHA512 5d6bc48f9480963abcbf41c4b95e86ac6339f5386508be7108ec08e91c07c280786d3a4bec2b731c7b5710351e0398c4ab86f4fb95440e83936409b40e1c3015
DIST boto3-1.17.2.tar.gz 346203 BLAKE2B 77da42c2a7f2c2ad08feba51e11e1821a44d5c433ca8fd8339bbdfe41a0caa907c2c566bfb747acf591270e539036988a8cb2488e0b2266b7970fa3fb2d0e9fa SHA512 d215417f68d958bcd4593f19a12d94a00bc7ead5cd6133f7390886fed2a545212f8da75220ddab298737326ec14a347fbba233ca52a4e3214f7911f9a9622fa6
DIST boto3-1.17.3.tar.gz 346250 BLAKE2B 7edf59a88ec32a08056112c088de9aae903daba909a4dfeb502830d8e9a7767cd34c1c77e06525ffb6b64be3c694e38011815e39b23959caaf11043f50d53948 SHA512 fa31cccb065c0e7cceb8733045a9232b1ee455ec408eaf62f2b2a7b2b29252b5eaa765dcd8b294ae10fef9707940f75194b450ac7f49f9db3b57060ecb74ab2a
DIST boto3-1.17.4.tar.gz 346342 BLAKE2B 3fba8f8b68edb268f20919bb65c5f8715d6c89c54884395f8080384c2d07ada15894d605a943e2c167ddf7fd3550657367e4b195caf28fd73609763cf23da687 SHA512 45ecf4fe0eb61d09aea5cc5e741544c6b23d6b98de24ab9f646f28d463104ec11116d0afd4b5fbd09f55e1a7ad65a653770efb67d4b023590c218bef4f326af1
diff --git a/dev-python/boto3/boto3-1.17.17.ebuild b/dev-python/boto3/boto3-1.17.17.ebuild
new file mode 100644
index 000000000000..2df16964cdb0
--- /dev/null
+++ b/dev-python/boto3/boto3-1.17.17.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 433e7b698d4e..30077819e3b1 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -14,6 +14,7 @@ DIST botocore-1.20.13.tar.gz 7467277 BLAKE2B 9662965ecb4acf1c8ff90e2ee35100c5f14
DIST botocore-1.20.14.tar.gz 7470342 BLAKE2B 894b7471a1d1a483edd1f59bed604e9a389d88cb5035ccbf8149303fef7f135aadc6d7df7446e3969e0d17476f9fae2f30f8c9c3b4d995152d36da3bdd4b06f5 SHA512 d2cf24743aa72171ea6c1d804f189e8428fc24f315bc3f118f802932e081b2c75a53ff5c1803c66e3b23e0adb525d8e842f003a7156dd6311aeacd95c2599693
DIST botocore-1.20.15.tar.gz 7473239 BLAKE2B 7661c6c667b50bfff436752e723b4892c8f2967b4f95f6f7a869671451d2ecae6519fb43e813ba86a912e8003d3ca701c7285bd5f19739b8e1f40654bc419e29 SHA512 bb1f5fd9c7dc995826c6945d5bddbe623c6c40bb44dd0b20fd7806a94669994b836d527566825bd3730eb8a57460072d7da68d1630e287ce949f678700a93d84
DIST botocore-1.20.16.tar.gz 7474906 BLAKE2B 7aabd6ff432309c1716e02f348b4af3883e245cbd5f7f58cec9e08013cac926f9118cabf47054d89c5d079b2e28af446280db2096f3301d9593674b9f63a7c75 SHA512 4e9215c46048b7133f418a2980ab23a62ddb23e3ee1c3198f09a0383c9e9f89ec347dbf6cb24104a1e06086f95d9ea975819a28a6fb5f9fbd7210985e8dbf48a
+DIST botocore-1.20.17.tar.gz 7483893 BLAKE2B 5a9ea5c1d3bc5caa91ea939943d86236d58f24b440d7d0de96356836ee6417c62fece8e782f9fd81e14daefac8919a001adb95e67d42110709b7f07f849b71da SHA512 864f938d07b28341128c06186542c0c214a133f1b7a78990e357436463f7cd1a36031101f6588ee706073b78d4ef99571853658f77755eb9f0739882fc706634
DIST botocore-1.20.2.tar.gz 7446650 BLAKE2B 777dbcbfcd824a7d009ffc3a1aec8afbd14a097c61a49116db37c6957e6046b8cd0011cdcb3cc344944e568e9f24d15d625a51d0d2d87761279b449783ce9f68 SHA512 3e225dfa55febb9d7bf77dfcbf4b75c8505ed4a90a5a86cc6eea750b4ab7d8a2ceb16891d4473b1bd7ce1cfd43642ee32e20eea65a25d9d6da1a5f02067fa050
DIST botocore-1.20.3.tar.gz 7446281 BLAKE2B 536cbe8f6b6c150f3c66468f3e0c51ae0e602f277ff64ee67a2f149c0481fe603b10439e2fa37831b106d7ca4b23d1e7037cfc55c8e7caf06b8f9cf5561d9544 SHA512 ad0982fb9095e4d8e36a5805f5041fa1241526409d6a1fad3628c52d9870e54fd4a828816eb77f39b60f49ade7805e97cd286f7ac4070ebafbb696e513691e0f
DIST botocore-1.20.4.tar.gz 7447611 BLAKE2B 05cb501cf40748ac1053c4687bd6de7a17d9ac31fe688de8d6aaf8047260f230ea14cc947c4c208a11d26477508b38428fdca116b9fa8212c5ee6ac020a6367f SHA512 b3ec1597b1cf4e9d18e21216f9ba703e4ae0a924653d21cfd93eeffbb13041ad96c3cd099ff1c8631bdcd5c7d6a70e6d36848fdbc44de9f7cebf7ee223918743
diff --git a/dev-python/botocore/botocore-1.20.17.ebuild b/dev-python/botocore/botocore-1.20.17.ebuild
new file mode 100644
index 000000000000..9d681f87244c
--- /dev/null
+++ b/dev-python/botocore/botocore-1.20.17.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/fonttools/Manifest b/dev-python/fonttools/Manifest
index b8c6817fd991..3b24cc5a6653 100644
--- a/dev-python/fonttools/Manifest
+++ b/dev-python/fonttools/Manifest
@@ -1 +1,2 @@
DIST fonttools-4.18.2.tar.gz 2499129 BLAKE2B 1ae93418121942e4303e4b138b192a30195d25c87e8c6204b508cc6a5b7a87608fcde7acbb6a2e8fb3c71ea59938827dabbe1556b7edad537523f6f0b3615696 SHA512 ceec3656c674ff5c43f4dc7cdf1468ddaf5c8bbe569d865fb015a9251ac089caedcf3dcea82c93a0c367576fcd7d65451642a6ab5d3093d941aa391b50070d53
+DIST fonttools-4.21.1.tar.gz 2531249 BLAKE2B 7f507f85061c67da0003ed2c4f685b22ccf0e6c5067adb934772ef0832656bbe092d1282b30b5a40071cd3a3219f5cfd810e06e9cd3f85ddd8fa93538134c943 SHA512 8c54809ab9f39e34f482ee6b17dbf8b309e8bfa0bde783e24195c1f2949ded64591c5e79565136ec8492c0095d593db20779d3f28b933f8e40e54b610130e0f4
diff --git a/dev-python/fonttools/fonttools-4.21.1.ebuild b/dev-python/fonttools/fonttools-4.21.1.ebuild
new file mode 100644
index 000000000000..d34270c299ce
--- /dev/null
+++ b/dev-python/fonttools/fonttools-4.21.1.ebuild
@@ -0,0 +1,55 @@
+# 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} )
+PYTHON_REQ_USE="xml(+)"
+DISTUTILS_USE_SETUPTOOLS=rdepend
+
+inherit distutils-r1 virtualx
+
+DESCRIPTION="Library for manipulating TrueType, OpenType, AFM and Type1 fonts"
+HOMEPAGE="https://github.com/fonttools/fonttools/"
+SRC_URI="https://github.com/fonttools/fonttools/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~riscv ~sparc ~x86 ~x64-macos"
+RESTRICT="!test? ( test )"
+IUSE="test"
+
+RDEPEND=""
+DEPEND="${RDEPEND}
+ test? (
+ >=dev-python/pytest-2.8[${PYTHON_USEDEP}]
+
+ >=dev-python/fs-2.4.9[${PYTHON_USEDEP}]
+ app-arch/brotli[python,${PYTHON_USEDEP}]
+ app-arch/zopfli
+ )"
+
+python_prepare_all() {
+ # When dev-python/pytest-shutil is installed, we get weird import errors.
+ # This is due to incomplete nesting in the Tests/ tree:
+ #
+ # Tests/feaLib/__init__.py
+ # Tests/ufoLib/__init__.py
+ # Tests/svgLib/path/__init__.py
+ # Tests/otlLib/__init__.py
+ # Tests/varLib/__init__.py
+ #
+ # This tree requires an __init__.py in Tests/svgLib/ too, bug #701148.
+ touch Tests/svgLib/__init__.py || die
+
+ distutils-r1_python_prepare_all
+}
+
+src_test() {
+ # virtualx used when matplotlib is installed causing plot module tests to run
+ virtx distutils-r1_src_test
+}
+
+python_test() {
+ pytest -vv Tests fontTools || die "Tests failed with ${EPYTHON}"
+}
diff --git a/dev-python/ioflo/files/ioflo-2.0.2-python39.patch b/dev-python/ioflo/files/ioflo-2.0.2-python39.patch
new file mode 100644
index 000000000000..dca7d54850b6
--- /dev/null
+++ b/dev-python/ioflo/files/ioflo-2.0.2-python39.patch
@@ -0,0 +1,131 @@
+diff --git a/ioflo/aid/aiding.py b/ioflo/aid/aiding.py
+index 6840d07..525b311 100644
+--- a/ioflo/aid/aiding.py
++++ b/ioflo/aid/aiding.py
+@@ -135,7 +135,7 @@ def nameToPath(name):
+ return path
+
+ def isPath(s):
+- """Returns True if string s is valid Store path name
++ r"""Returns True if string s is valid Store path name
+ Returns False otherwise
+
+ Faster to use precompiled versions in base
+@@ -201,7 +201,7 @@ def isPath(s):
+ return False
+
+ def isIdentifier(s):
+- """Returns True if string s is valid python identifier (variable, attribute etc)
++ r"""Returns True if string s is valid python identifier (variable, attribute etc)
+ Returns False otherwise
+
+ how to determine if string is valid python identifier
+diff --git a/ioflo/aid/classing.py b/ioflo/aid/classing.py
+index 2bd37b5..493f5dc 100644
+--- a/ioflo/aid/classing.py
++++ b/ioflo/aid/classing.py
+@@ -5,7 +5,7 @@ meta class and base class utility classes and functions
+ from __future__ import absolute_import, division, print_function
+
+ import sys
+-from collections import Iterable, Sequence
++from collections.abc import Iterable, Sequence
+ from abc import ABCMeta
+ import functools
+ import inspect
+@@ -123,7 +123,7 @@ def isIterator(obj):
+
+
+
+-from collections import Generator
++from collections.abc import Generator
+
+ def attributize(genfunc):
+ """
+diff --git a/ioflo/aid/eventing.py b/ioflo/aid/eventing.py
+index 837778b..f76ff0c 100644
+--- a/ioflo/aid/eventing.py
++++ b/ioflo/aid/eventing.py
+@@ -7,7 +7,7 @@ from __future__ import absolute_import, division, print_function
+ import sys
+ import os
+ import datetime
+-from collections import Set # both set and frozen set
++from collections.abc import Set # both set and frozen set
+
+ # Import ioflo libs
+ from .sixing import *
+diff --git a/ioflo/aid/osetting.py b/ioflo/aid/osetting.py
+index 6e6fffd..a99a09c 100644
+--- a/ioflo/aid/osetting.py
++++ b/ioflo/aid/osetting.py
+@@ -6,11 +6,11 @@ http://code.activestate.com/recipes/576694/
+ """
+ from __future__ import absolute_import, division, print_function
+
+-import collections
++import collections.abc
+
+ from .sixing import *
+
+-class oset(collections.MutableSet):
++class oset(collections.abc.MutableSet):
+ """
+ Ordered Set, preserves order of entry in set
+
+diff --git a/ioflo/base/acting.py b/ioflo/base/acting.py
+index c4b7bb3..95ad188 100644
+--- a/ioflo/base/acting.py
++++ b/ioflo/base/acting.py
+@@ -5,7 +5,8 @@
+
+ import time
+ import struct
+-from collections import deque, Mapping
++from collections import deque
++from collections.abc import Mapping
+ from functools import wraps
+ import inspect
+ import copy
+diff --git a/ioflo/base/doing.py b/ioflo/base/doing.py
+index 5af023c..c074380 100644
+--- a/ioflo/base/doing.py
++++ b/ioflo/base/doing.py
+@@ -3,7 +3,8 @@ doing.py doer module for do verb behaviors
+ """
+ import time
+ import struct
+-from collections import deque, Mapping
++from collections import deque
++from collections.abc import Mapping
+ from functools import wraps
+ import inspect
+ import copy
+diff --git a/ioflo/base/framing.py b/ioflo/base/framing.py
+index 3416289..6a33a35 100644
+--- a/ioflo/base/framing.py
++++ b/ioflo/base/framing.py
+@@ -5,7 +5,8 @@
+ import sys
+
+ import copy
+-from collections import deque, Mapping
++from collections import deque
++from collections.abc import Mapping
+ import uuid
+
+ from ..aid.sixing import *
+diff --git a/ioflo/base/logging.py b/ioflo/base/logging.py
+index d78a5fa..dca7460 100644
+--- a/ioflo/base/logging.py
++++ b/ioflo/base/logging.py
+@@ -10,7 +10,8 @@ import datetime
+ import copy
+ import io
+
+-from collections import deque, MutableSequence, MutableMapping, Mapping
++from collections import deque
++from collections.abc import MutableSequence, MutableMapping, Mapping
+
+ from ..aid.sixing import *
+ from .globaling import *
diff --git a/dev-python/ioflo/ioflo-2.0.2.ebuild b/dev-python/ioflo/ioflo-2.0.2.ebuild
index 884b27b6bbc0..b141717ddbc9 100644
--- a/dev-python/ioflo/ioflo-2.0.2.ebuild
+++ b/dev-python/ioflo/ioflo-2.0.2.ebuild
@@ -27,6 +27,7 @@ BDEPEND="${RDEPEND}
PATCHES=(
"${FILESDIR}/ioflo-1.7.8-network-test.patch"
+ "${FILESDIR}/ioflo-2.0.2-python39.patch"
)
distutils_enable_tests pytest
diff --git a/dev-python/ipython/Manifest b/dev-python/ipython/Manifest
index 5a7e630c1db3..606108cb1dc0 100644
--- a/dev-python/ipython/Manifest
+++ b/dev-python/ipython/Manifest
@@ -1,2 +1,3 @@
DIST ipython-7.19.0.tar.gz 5225775 BLAKE2B 1909d8336e7fc90959da4ca33ad7edcb8c2dec0a5aa20ca6f643ef53482fe7bf0d52e2bbec7cf97e72a1fd4d37af45ba01166febb25f35b52d69ffc062f0f0e8 SHA512 5350a125da3050acaea4899939a3b9d779009a2f5769fc9f3aa514ce029df050069ef9310d3255ad62f28912b4dec39207267248d3a2c3e9131cffd691322622
DIST ipython-7.20.0.tar.gz 5140776 BLAKE2B ec01caf874ab9c331eb1f074f9e70acb521fe6d4abe3e8f086d9e9e77cd710c3b0d88c6d7b071abc6962eee8141b65a012ec772cbec3450db25f086fc66cf1c6 SHA512 2fff1a64c3d83e794e76bcbdf54e105f499321d9a7e5d3221cdc3e15a96e90543fd465b8dbee4836965286e7c1f1ea6d13e4d3d88c095164858bf71c161111fe
+DIST ipython-7.21.0.tar.gz 5141725 BLAKE2B dae44d481e959ef7d002bdb51d0ab1e2f3eca3449071a2e4161aa735c06fef8a948d80bafd3f2bdd066208437b5ed36615cad5885af453771a32a313fba907eb SHA512 200e41d4e06343b6320f3d106925f6c995f39cf88d01250f53885d4e94d0fd9454a6be4cd7c69410f7dced94b05634f6d2269f9737cc563accf85206d4d7fff8
diff --git a/dev-python/ipython/ipython-7.21.0.ebuild b/dev-python/ipython/ipython-7.21.0.ebuild
new file mode 100644
index 000000000000..3268cbddefca
--- /dev/null
+++ b/dev-python/ipython/ipython-7.21.0.ebuild
@@ -0,0 +1,137 @@
+# 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} )
+PYTHON_REQ_USE='readline,sqlite,threads(+)'
+
+inherit distutils-r1 optfeature virtualx
+
+DESCRIPTION="Advanced interactive shell for Python"
+HOMEPAGE="https://ipython.org/ https://github.com/ipython/ipython/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="doc examples matplotlib notebook nbconvert qt5 +smp test"
+RESTRICT="!test? ( test )"
+
+CDEPEND="
+ dev-python/backcall[${PYTHON_USEDEP}]
+ dev-python/decorator[${PYTHON_USEDEP}]
+ >=dev-python/jedi-0.16[${PYTHON_USEDEP}]
+ >=dev-python/pexpect-4.3[${PYTHON_USEDEP}]
+ dev-python/pickleshare[${PYTHON_USEDEP}]
+ >=dev-python/prompt_toolkit-2[${PYTHON_USEDEP}]
+ <dev-python/prompt_toolkit-3.1[${PYTHON_USEDEP}]
+ dev-python/pygments[${PYTHON_USEDEP}]
+ dev-python/traitlets[${PYTHON_USEDEP}]
+ matplotlib? ( dev-python/matplotlib[${PYTHON_USEDEP}] )
+"
+
+RDEPEND="${CDEPEND}
+ nbconvert? ( dev-python/nbconvert[${PYTHON_USEDEP}] )"
+
+BDEPEND="
+ test? (
+ ${CDEPEND}
+ app-text/dvipng[truetype]
+ >=dev-python/ipykernel-5.1.0[${PYTHON_USEDEP}]
+ dev-python/nbformat[${PYTHON_USEDEP}]
+ dev-python/nose[${PYTHON_USEDEP}]
+ >=dev-python/numpy-1.14[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/testpath[${PYTHON_USEDEP}]
+ )
+ doc? (
+ >=dev-python/ipykernel-5.1.0[${PYTHON_USEDEP}]
+ dev-python/matplotlib[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-2[${PYTHON_USEDEP}]
+ dev-python/sphinx_rtd_theme[${PYTHON_USEDEP}]
+ )"
+
+PDEPEND="
+ notebook? (
+ dev-python/notebook[${PYTHON_USEDEP}]
+ dev-python/ipywidgets[${PYTHON_USEDEP}]
+ dev-python/widgetsnbextension[${PYTHON_USEDEP}]
+ )
+ qt5? ( dev-python/qtconsole[${PYTHON_USEDEP}] )
+ smp? (
+ >=dev-python/ipykernel-5.1.0[${PYTHON_USEDEP}]
+ >=dev-python/ipyparallel-6.2.3[${PYTHON_USEDEP}]
+ )"
+
+PATCHES=( "${FILESDIR}"/2.1.0-substitute-files.patch )
+
+DISTUTILS_IN_SOURCE_BUILD=1
+
+python_prepare_all() {
+ # Remove out of date insource files
+ rm IPython/extensions/cythonmagic.py || die
+ rm IPython/extensions/rmagic.py || die
+
+ # Prevent un-needed download during build
+ if use doc; then
+ sed -e "/^ 'sphinx.ext.intersphinx',/d" -i docs/source/conf.py || die
+ fi
+
+ distutils-r1_python_prepare_all
+}
+
+python_compile_all() {
+ if use doc; then
+ emake -C docs html_noapi
+ HTML_DOCS=( docs/build/html/. )
+ fi
+}
+
+src_test() {
+ virtx distutils-r1_src_test
+}
+
+python_test() {
+ distutils_install_for_testing
+ pushd "${TEST_DIR}" >/dev/null || die
+ "${TEST_DIR}"/scripts/iptest || die
+ popd >/dev/null || die
+}
+
+python_install() {
+ distutils-r1_python_install
+
+ # Create ipythonX.Y symlinks.
+ # TODO:
+ # 1. do we want them for pypy? No. pypy has no numpy
+ # 2. handle it in the eclass instead (use _python_ln_rel).
+ # With pypy not an option the dosym becomes unconditional
+ dosym ../lib/python-exec/${EPYTHON}/ipython \
+ /usr/bin/ipython${EPYTHON#python}
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+
+ if use examples; then
+ dodoc -r examples
+ docompress -x /usr/share/doc/${PF}/examples
+ fi
+}
+
+pkg_postinst() {
+ optfeature "sympyprinting" dev-python/sympy
+ optfeature "cythonmagic" dev-python/cython
+ optfeature "%lprun magic command" dev-python/line_profiler
+ optfeature "%mprun magic command" dev-python/memory_profiler
+
+ if use nbconvert; then
+ if ! has_version app-text/pandoc ; then
+ einfo "Node.js will be used to convert notebooks to other formats"
+ einfo "like HTML. Support for that is still experimental. If you"
+ einfo "encounter any problems, please use app-text/pandoc instead."
+ fi
+ fi
+}
diff --git a/dev-python/keyring/Manifest b/dev-python/keyring/Manifest
index 07829e0a2f75..7a800d6ed210 100644
--- a/dev-python/keyring/Manifest
+++ b/dev-python/keyring/Manifest
@@ -1,2 +1,3 @@
DIST keyring-22.0.0.tar.gz 47693 BLAKE2B 88a151327778e5e039c43caa68e53705d985d6ef2b7b668df1d941160b843f47a0e2f6f79c9afc39bc66a36373c0374333296a3cb98f1c65c620a8fad3f43fec SHA512 5e9e27cf9b09f042747909b442864a1ea0669b36f69592538b487978a582e16e58056d6bd68b35566143000ed3f5c7733e3ef471c66935a811e09fc4b7f56f6f
DIST keyring-22.0.1.tar.gz 47782 BLAKE2B ec9f5c0418b2c279f111cbcb8ccc1fc05f64e859e2e675041289a639c7e2d4681e562c9c023e46f1eacb99f88114af97545ad36f71037db0b77e83d927785ce0 SHA512 2e264570d2e905ce4862d71fe4b02fcf0631218a693292c13159fdbad0032e91d81910f84d787e948057e2f428fcf8677ebdd83af4da54c3359347f642db0441
+DIST keyring-22.2.0.tar.gz 48047 BLAKE2B 2c6d719b303f572ce87ee7980b4cd897a5ba297ec3d725e3734e946ad5b0a8e77ff5dd5d29237b821171b29a0ecd0c9c671e1caf1ec5d01f560a1f4b16f13863 SHA512 7c9ffe1e7d13e53c2ca8f4f05716eee823cf0758d0b8a9bb9ff63ff025ccc9cd87ee9ec954b57a3716144fcc9d0dc5ce7988d70cee2032101ff006a51f4b8a04
diff --git a/dev-python/keyring/keyring-22.2.0.ebuild b/dev-python/keyring/keyring-22.2.0.ebuild
new file mode 100644
index 000000000000..a0324ff45ea7
--- /dev/null
+++ b/dev-python/keyring/keyring-22.2.0.ebuild
@@ -0,0 +1,43 @@
+# 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="Provides access to the system keyring service"
+HOMEPAGE="https://github.com/jaraco/keyring"
+SRC_URI="https://github.com/jaraco/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+SLOT="0"
+LICENSE="PSF-2"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x64-macos"
+
+RDEPEND="
+ dev-python/secretstorage[${PYTHON_USEDEP}]
+ dev-python/entrypoints[${PYTHON_USEDEP}]
+ dev-python/jeepney[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/importlib_metadata[${PYTHON_USEDEP}]
+ ' pypy3 python3_7)
+"
+BDEPEND="
+ dev-python/setuptools_scm[${PYTHON_USEDEP}]
+ dev-python/toml[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests pytest
+distutils_enable_sphinx docs \
+ dev-python/jaraco-packaging \
+ dev-python/rst-linker
+
+python_prepare_all() {
+ rm tests/backends/test_kwallet.py || die
+
+ distutils-r1_python_prepare_all
+
+ export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
+}
diff --git a/dev-python/pytest-salt-factories/Manifest b/dev-python/pytest-salt-factories/Manifest
index aa2b8070aeb9..810b7bb0d87c 100644
--- a/dev-python/pytest-salt-factories/Manifest
+++ b/dev-python/pytest-salt-factories/Manifest
@@ -1 +1 @@
-DIST pytest-salt-factories-0.94.4.tar.gz 117281 BLAKE2B 9b42dbf4329fe2afd875de55e96604896c6f46d3c3736b644466dd5db6091cf5b9b1d2188c0e0a22b4b15a227dfacc7692ea6499aa7f58ce6adb9b802f00b1f7 SHA512 5c670aa7dd64441b1bd3a188335a35be00d7406bc8d76f9a1213cc3414061c3dfc51a9319008c29c83fb5abec1d7b677aec76ac4b9c00adcd878ef6da599041a
+DIST pytest-salt-factories-0.121.1.tar.gz 102121 BLAKE2B 92cd5953b11377f1646f01b86a677a50216d16bcb944235a3f04176aecbb005974c415adcbf23cc391aab41b1ee9596984516ab61ecdd8c944d4ce707c39ab00 SHA512 32252695c6e8b17ef17d3330c4b0b38bdce89201d5573b4efa3531a72e826ee1fb26fea3ad0408401dec867cee405f21031804c32eb8fe6ceaa00925b17725a1
diff --git a/dev-python/pytest-salt-factories/files/pytest-salt-factories-0.121.1-tests.patch b/dev-python/pytest-salt-factories/files/pytest-salt-factories-0.121.1-tests.patch
new file mode 100644
index 000000000000..3e85580c9158
--- /dev/null
+++ b/dev-python/pytest-salt-factories/files/pytest-salt-factories-0.121.1-tests.patch
@@ -0,0 +1,294 @@
+diff --git a/saltfactories/plugin.py b/saltfactories/plugin.py
+index b29a115..9d68c34 100644
+--- a/saltfactories/plugin.py
++++ b/saltfactories/plugin.py
+@@ -21,7 +21,7 @@ def pytest_tempdir_temproot():
+ tempdir = os.environ.get("TMPDIR") or tempfile.gettempdir()
+ else:
+ tempdir = "/tmp"
+- return os.path.abspath(os.path.realpath(tempdir))
++ return os.path.abspath(tempdir)
+
+
+ def pytest_tempdir_basename():
+diff --git a/tests/functional/markers/test_requires_network.py b/tests/functional/markers/test_requires_network.py
+index 8b57368..d58f0a1 100644
+--- a/tests/functional/markers/test_requires_network.py
++++ b/tests/functional/markers/test_requires_network.py
+@@ -9,7 +9,10 @@ from unittest import mock
+ from saltfactories.utils import ports
+ from saltfactories.utils import socket
+
++import pytest
+
++
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_has_local_network(testdir):
+ testdir.makepyfile(
+ """
+diff --git a/tests/integration/factories/cli/test_salt.py b/tests/integration/factories/cli/test_salt.py
+index 17fce6c..7bd2789 100644
+--- a/tests/integration/factories/cli/test_salt.py
++++ b/tests/integration/factories/cli/test_salt.py
+@@ -17,6 +17,7 @@ def salt_minion_2(salt_master, salt_minion):
+ yield factory
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_merged_json_out(salt_cli, salt_minion, salt_minion_2):
+ ret = salt_cli.run("test.ping", minion_tgt="*")
+ assert ret.exitcode == 0, ret
+@@ -27,6 +28,7 @@ def test_merged_json_out(salt_cli, salt_minion, salt_minion_2):
+ assert ret.json[salt_minion_2.id] is True
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_merged_json_out_disabled(salt_cli, salt_minion, salt_minion_2):
+ ret = salt_cli.run("test.ping", minion_tgt="*", merge_json_output=False)
+ assert ret.exitcode == 0, ret
+diff --git a/tests/integration/factories/daemons/api/test_api.py b/tests/integration/factories/daemons/api/test_api.py
+index 78b8bb7..e20f28c 100644
+--- a/tests/integration/factories/daemons/api/test_api.py
++++ b/tests/integration/factories/daemons/api/test_api.py
+@@ -23,5 +23,6 @@ def salt_api(master):
+ yield factory
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_api(salt_api):
+ assert salt_api.is_running()
+diff --git a/tests/integration/factories/daemons/api/test_restarts.py b/tests/integration/factories/daemons/api/test_restarts.py
+index a6c5472..dd15c17 100644
+--- a/tests/integration/factories/daemons/api/test_restarts.py
++++ b/tests/integration/factories/daemons/api/test_restarts.py
+@@ -16,6 +16,7 @@ def master(salt_factories):
+ yield factory
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_multiple_start_stops(master):
+ factory = master.get_salt_api_daemon()
+ assert factory.is_running() is False
+diff --git a/tests/integration/factories/daemons/master/test_master.py b/tests/integration/factories/daemons/master/test_master.py
+index 2676dfa..cbf598e 100644
+--- a/tests/integration/factories/daemons/master/test_master.py
++++ b/tests/integration/factories/daemons/master/test_master.py
+@@ -46,10 +46,12 @@ def salt_key(master):
+ return master.get_salt_key_cli()
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_master(master):
+ assert master.is_running()
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_salt_run(master, salt_run):
+ max_open_files_config_value = master.config["max_open_files"]
+ ret = salt_run.run("config.get", "max_open_files")
+@@ -57,6 +59,7 @@ def test_salt_run(master, salt_run):
+ assert ret.json == max_open_files_config_value
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_salt_cp(master, minion, salt_cp, tempfiles):
+ """
+ Test copying a file from the master to the minion
+@@ -98,6 +101,7 @@ def test_salt_cp(master, minion, salt_cp, tempfiles):
+ os.unlink(dest)
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_salt_cp_no_match(master, minion, salt_cp, tempfiles):
+ assert master.is_running()
+ assert minion.is_running()
+@@ -119,6 +123,7 @@ def test_salt_cp_no_match(master, minion, salt_cp, tempfiles):
+ os.unlink(dest)
+
+
++@pytest.mark.skip("not compatible with sandbox")
+ @pytest.mark.skip_on_salt_system_install
+ def test_salt_key(master, minion, minion_3, salt_key):
+ ret = salt_key.run("--list-all")
+diff --git a/tests/integration/factories/daemons/master/test_restarts.py b/tests/integration/factories/daemons/master/test_restarts.py
+index 6a6852d..70415d0 100644
+--- a/tests/integration/factories/daemons/master/test_restarts.py
++++ b/tests/integration/factories/daemons/master/test_restarts.py
+@@ -11,6 +11,7 @@ def master(salt_factories):
+ return factory
+
+
++@pytest.mark.skip("not compatible with network")
+ def test_multiple_start_stops(master):
+ assert master.is_running() is False
+ pid = None
+diff --git a/tests/integration/factories/daemons/minion/test_event_forwarder_engine.py b/tests/integration/factories/daemons/minion/test_event_forwarder_engine.py
+index d63e640..653693e 100644
+--- a/tests/integration/factories/daemons/minion/test_event_forwarder_engine.py
++++ b/tests/integration/factories/daemons/minion/test_event_forwarder_engine.py
+@@ -28,6 +28,7 @@ def salt_call_cli(minion):
+ return minion.get_salt_call_cli()
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_event_listener_engine(minion, salt_call_cli, event_listener):
+ """
+ There are some events which the minion fires internally that never reach the master.
+diff --git a/tests/integration/factories/daemons/minion/test_minion.py b/tests/integration/factories/daemons/minion/test_minion.py
+index 64a3df6..ab82e55 100644
+--- a/tests/integration/factories/daemons/minion/test_minion.py
++++ b/tests/integration/factories/daemons/minion/test_minion.py
+@@ -27,6 +27,7 @@ def salt_call_cli(minion):
+ return minion.get_salt_call_cli()
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_minion(minion, salt_cli):
+ assert minion.is_running()
+ ret = salt_cli.run("test.ping", minion_tgt=minion.id)
+@@ -34,6 +35,7 @@ def test_minion(minion, salt_cli):
+ assert ret.json is True
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_no_match(minion, salt_cli):
+ assert minion.is_running()
+ ret = salt_cli.run("test.ping", minion_tgt="minion-2")
+@@ -41,6 +43,7 @@ def test_no_match(minion, salt_cli):
+ assert not ret.json
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_show_jid(minion, salt_cli):
+ assert minion.is_running()
+ ret = salt_cli.run("--show-jid", "test.ping", minion_tgt=minion.id)
+@@ -48,6 +51,7 @@ def test_show_jid(minion, salt_cli):
+ assert ret.json is True
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_minion_salt_call(minion, salt_call_cli):
+ assert minion.is_running()
+ ret = salt_call_cli.run("test.ping")
+@@ -59,6 +63,7 @@ def test_minion_salt_call(minion, salt_call_cli):
+ assert ret.json is True
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_salt_call_exception_handling_doesnt_timeout(minion, salt_call_cli):
+ ret = salt_call_cli.run(
+ "test.raise_exception", "OSError", "2", "No such file or directory", "/tmp/foo.txt"
+diff --git a/tests/integration/factories/daemons/minion/test_restarts.py b/tests/integration/factories/daemons/minion/test_restarts.py
+index a7d9ae0..8f0401b 100644
+--- a/tests/integration/factories/daemons/minion/test_restarts.py
++++ b/tests/integration/factories/daemons/minion/test_restarts.py
+@@ -10,6 +10,7 @@ def master(salt_factories):
+ yield factory
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_multiple_start_stops(master):
+ factory = master.get_salt_minion_daemon(random_string("minion-"))
+ assert factory.is_running() is False
+diff --git a/tests/integration/factories/daemons/proxy/test_proxy_minion.py b/tests/integration/factories/daemons/proxy/test_proxy_minion.py
+index 3bbca21..2e2fb8b 100644
+--- a/tests/integration/factories/daemons/proxy/test_proxy_minion.py
++++ b/tests/integration/factories/daemons/proxy/test_proxy_minion.py
+@@ -35,6 +35,7 @@ def salt_call_cli(proxy_minion):
+ return proxy_minion.get_salt_call_cli()
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_proxy_minion(proxy_minion, salt_cli):
+ assert proxy_minion.is_running()
+ ret = salt_cli.run("test.ping", minion_tgt=proxy_minion.id)
+@@ -42,6 +43,7 @@ def test_proxy_minion(proxy_minion, salt_cli):
+ assert ret.json is True
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_no_match(proxy_minion, salt_cli):
+ assert proxy_minion.is_running()
+ ret = salt_cli.run("test.ping", minion_tgt="proxy-minion-2")
+@@ -49,6 +51,7 @@ def test_no_match(proxy_minion, salt_cli):
+ assert not ret.json
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_show_jid(proxy_minion, salt_cli):
+ if platform.is_darwin() and sys.version_info[:2] == (3, 7):
+ pytest.skip(
+@@ -61,6 +64,7 @@ def test_show_jid(proxy_minion, salt_cli):
+ assert ret.json is True
+
+
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_proxy_minion_salt_call(proxy_minion, salt_call_cli):
+ assert proxy_minion.is_running()
+ ret = salt_call_cli.run("test.ping")
+diff --git a/tests/integration/factories/daemons/proxy/test_restarts.py b/tests/integration/factories/daemons/proxy/test_restarts.py
+index 3101204..28652ff 100644
+--- a/tests/integration/factories/daemons/proxy/test_restarts.py
++++ b/tests/integration/factories/daemons/proxy/test_restarts.py
+@@ -17,6 +17,7 @@ def master(salt_factories):
+ yield factory
+
+
++@pytest.mark.skip("not compatible with sandbox")
+ def test_multiple_start_stops(master):
+ factory = master.get_salt_proxy_minion_daemon(random_string("proxy-minion-"))
+ assert factory.is_running() is False
+diff --git a/tests/integration/factories/daemons/ssh/test_salt_ssh.py b/tests/integration/factories/daemons/ssh/test_salt_ssh.py
+index f58eac4..c3df3de 100644
+--- a/tests/integration/factories/daemons/ssh/test_salt_ssh.py
++++ b/tests/integration/factories/daemons/ssh/test_salt_ssh.py
+@@ -51,6 +51,7 @@ def salt_ssh_cli(sshd, salt_factories, master):
+
+
+ @pytest.mark.skip_on_windows
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_salt_ssh(salt_ssh_cli):
+ ret = salt_ssh_cli.run("--ignore-host-keys", "test.echo", "It Works!", minion_tgt="localhost")
+ assert ret.exitcode == 0
+diff --git a/tests/integration/factories/daemons/sshd/test_sshd.py b/tests/integration/factories/daemons/sshd/test_sshd.py
+index 3b425fc..3e03636 100644
+--- a/tests/integration/factories/daemons/sshd/test_sshd.py
++++ b/tests/integration/factories/daemons/sshd/test_sshd.py
+@@ -5,6 +5,7 @@ import pytest
+
+ @pytest.fixture(scope="module")
+ @pytest.mark.skip_if_binaries_missing("sshd", "ssh-keygen")
++@pytest.mark.skip("not compatible with network-sandbox")
+ def sshd(salt_factories):
+ # Set StrictModes to no because our config directory lives in /tmp and those permissions
+ # are not acceptable by sshd strict paranoia.
+@@ -15,12 +16,14 @@ def sshd(salt_factories):
+
+
+ @pytest.mark.skip_on_windows
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_sshd(sshd):
+ assert sshd.is_running()
+
+
+ @pytest.mark.skip_on_windows
+ @pytest.mark.skip_if_binaries_missing("ssh")
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_connect(sshd):
+ cmd = subprocess.run(
+ [
+diff --git a/tests/unit/utils/markers/test_skip_if_no_remote_network.py b/tests/unit/utils/markers/test_skip_if_no_remote_network.py
+index 1aa72dc..c4d079e 100644
+--- a/tests/unit/utils/markers/test_skip_if_no_remote_network.py
++++ b/tests/unit/utils/markers/test_skip_if_no_remote_network.py
+@@ -9,7 +9,10 @@ from unittest import mock
+ import saltfactories.utils.markers as markers
+ from saltfactories.utils import socket
+
++import pytest
+
++
++@pytest.mark.skip("not compatible with network-sandbox")
+ def test_has_remote_network():
+ assert markers.skip_if_no_remote_network() is None
+
diff --git a/dev-python/pytest-salt-factories/pytest-salt-factories-0.121.1.ebuild b/dev-python/pytest-salt-factories/pytest-salt-factories-0.121.1.ebuild
new file mode 100644
index 000000000000..735972093838
--- /dev/null
+++ b/dev-python/pytest-salt-factories/pytest-salt-factories-0.121.1.ebuild
@@ -0,0 +1,64 @@
+# 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
+
+DESCRIPTION="The new generation of the pytest-salt Plugin"
+HOMEPAGE="https://github.com/saltstack/pytest-salt-factories"
+SRC_URI="https://github.com/saltstack/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~x86"
+IUSE="test"
+
+RDEPEND="
+ >=dev-python/pytest-6.1.1[${PYTHON_USEDEP}]
+ dev-python/attrs[${PYTHON_USEDEP}]
+ dev-python/pytest-tempdir[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ dev-python/pyzmq[${PYTHON_USEDEP}]
+ dev-python/msgpack[${PYTHON_USEDEP}]
+"
+BDEPEND="${RDEPEND}
+ test? ( >=app-admin/salt-3001.0[${PYTHON_USEDEP}] )
+"
+
+PATCHES=(
+ "${FILESDIR}/pytest-salt-factories-0.121.1-tests.patch"
+)
+
+distutils_enable_tests --install pytest
+
+python_prepare_all() {
+ sed -r -e "s:use_scm_version=True:version='${PV}', name='${PN//-/.}':" -i setup.py || die
+ sed -r -e '/(setuptools|setup_requires)/ d' -i setup.cfg || die
+
+ sed -i 's:[tool.setuptools_scm]:[tool.disabled]:' pyproject.toml || die
+ printf '__version__ = "%s"\n' "${PV}" > saltfactories/version.py || die
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ local tempdir
+
+ # ${T} is too long a path for the tests to work
+ tempdir="$(mktemp -du --tmpdir=/tmp salt-XXX)"
+ mkdir "${T}/$(basename "${tempdir}")"
+
+ addwrite "${tempdir}"
+ ln -s "$(realpath --relative-to=/tmp "${T}/$(basename "${tempdir}")")" "${tempdir}" || die
+
+ distutils_install_for_testing --via-root
+
+ (
+ cleanup() { rm -f "${tempdir}" || die; }
+
+ trap cleanup EXIT
+ SHELL="/bin/bash" TMPDIR="${tempdir}" \
+ pytest -vv || die "Tests failed with ${EPYTHON}"
+ )
+}
diff --git a/dev-python/pytest-salt-factories/pytest-salt-factories-0.94.4.ebuild b/dev-python/pytest-salt-factories/pytest-salt-factories-0.94.4.ebuild
deleted file mode 100644
index 7244c02569e6..000000000000
--- a/dev-python/pytest-salt-factories/pytest-salt-factories-0.94.4.ebuild
+++ /dev/null
@@ -1,37 +0,0 @@
-# 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
-
-DESCRIPTION="The new generation of the pytest-salt Plugin"
-HOMEPAGE="https://github.com/saltstack/pytest-salt-factories"
-SRC_URI="https://github.com/saltstack/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~x86"
-IUSE="test"
-
-RDEPEND="
- >=dev-python/pytest-6.1.1[${PYTHON_USEDEP}]
- dev-python/attrs[${PYTHON_USEDEP}]
- dev-python/pytest-tempdir[${PYTHON_USEDEP}]
- dev-python/psutil[${PYTHON_USEDEP}]
- dev-python/pyzmq[${PYTHON_USEDEP}]
- dev-python/msgpack[${PYTHON_USEDEP}]
-"
-BDEPEND="${RDEPEND}
- test? ( >=app-admin/salt-3000.0[${PYTHON_USEDEP}] )
-"
-
-# pytest just bombs
-RESTRICT="test"
-
-PATCHES=(
- "${FILESDIR}/pytest-salt-factories-0.92.0-setup.patch"
-)
-
-distutils_enable_tests pytest
diff --git a/dev-python/python-lhafile/Manifest b/dev-python/python-lhafile/Manifest
index b0d87060d42a..9fa6583dfd67 100644
--- a/dev-python/python-lhafile/Manifest
+++ b/dev-python/python-lhafile/Manifest
@@ -1 +1,2 @@
DIST python-lhafile-0.2.2.tar.gz 266494 BLAKE2B 03f4f8e58e261b74c32d65c9ea4507d088c5463424c4c279a320553689607e8f4ff13bab0c2e6fc4c252f923a50cae12ce8e4b8c14cb5d8eec2fd8129fa41a97 SHA512 304de9a000b76fae243f0a175040e16515524ccec051cffefd20dcf6995a37e3d4d2e13016794166a661b235700f540f8cc0be60979ed13ad6308056a95f1b2f
+DIST python-lhafile-0.3.0.tar.gz 267965 BLAKE2B 1331f21059f84f5e517339ac26546d73bc9dc125578840bf24483c274b651d8f0e2494b1b7e140bede07412b5c44e499269ea23dd1180bb955b1044b06d82ee8 SHA512 bb4db2767a702d30f2e713e5f7890d619de312d609761ade2ff8f4e99ffede8e35a72cd116abf3b8ea29b0885ebe2c993dc37f44722c8e5fe346be93dfdbbf81
diff --git a/dev-python/python-lhafile/python-lhafile-0.3.0.ebuild b/dev-python/python-lhafile/python-lhafile-0.3.0.ebuild
new file mode 100644
index 000000000000..bdcdb2e1207c
--- /dev/null
+++ b/dev-python/python-lhafile/python-lhafile-0.3.0.ebuild
@@ -0,0 +1,18 @@
+# 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="LHA archive support for Python"
+HOMEPAGE="https://fengestad.no/python-lhafile/"
+SRC_URI="https://github.com/FrodeSolheim/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64"
+
+# NOTE: The tests don't work, they're probably outdated.
diff --git a/dev-python/raet/files/raet-0.6.8-python39.patch b/dev-python/raet/files/raet-0.6.8-python39.patch
new file mode 100644
index 000000000000..4f400bc9afcc
--- /dev/null
+++ b/dev-python/raet/files/raet-0.6.8-python39.patch
@@ -0,0 +1,14 @@
+diff --git a/raet/lane/paging.py b/raet/lane/paging.py
+index 5a2f480..32c8f95 100644
+--- a/raet/lane/paging.py
++++ b/raet/lane/paging.py
+@@ -162,8 +162,7 @@ class TxBody(Body):
+ if not msgpack:
+ emsg = "Msgpack not installed."
+ raise raeting.PacketError(emsg)
+- self.packed = msgpack.dumps(self.data,
+- encoding='utf-8')
++ self.packed = msgpack.dumps(self.data)
+ else:
+ emsg = "Unrecognized message pack kind '{0}'\n".format(pk)
+ console.terse(emsg)
diff --git a/dev-python/raet/raet-0.6.8-r2.ebuild b/dev-python/raet/raet-0.6.8-r2.ebuild
new file mode 100644
index 000000000000..686d50f5da7d
--- /dev/null
+++ b/dev-python/raet/raet-0.6.8-r2.ebuild
@@ -0,0 +1,40 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+PYTHON_COMPAT=( python3_{6,7,8,9,10} )
+inherit distutils-r1
+
+DESCRIPTION="Reliable Asynchronous Event Transport Protocol"
+HOMEPAGE="https://github.com/RaetProtocol/raet"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND=">=dev-python/six-1.6.1[${PYTHON_USEDEP}]
+ >=dev-python/libnacl-1.4.3[${PYTHON_USEDEP}]
+ >=dev-python/ioflo-2.0[${PYTHON_USEDEP}]"
+BDEPEND="${RDEPEND}
+ test? (
+ >=dev-python/msgpack-1.0.0[${PYTHON_USEDEP}]
+ dev-python/unittest2[${PYTHON_USEDEP}]
+ )"
+
+PATCHES=(
+ "${FILESDIR}/raet-0.6.8-msgpack-1.0.patch"
+)
+
+python_prepare_all() {
+ distutils-r1_python_prepare_all
+ sed -i -e "/setuptools_git/d" setup.py || die
+}
+
+python_test() {
+ pushd "${BUILD_DIR}"/lib || die
+ ${EPYTHON} ${PN}/test/__init__.py || die "tests failed for ${EPYTHON}"
+ popd || die
+}