dev-python/paramiko: update SRC_URI

Signed-off-by: Andreas Billmeier <b@edevau.net>
This commit is contained in:
Andreas Billmeier 2023-06-11 09:19:38 +02:00 committed by Andreas Billmeier
parent 9e5345b46f
commit 4b7f28d81d
Signed by: onkelbeh
GPG Key ID: E6DB12C8C550F3C0
9 changed files with 452 additions and 0 deletions

View File

@ -0,0 +1,7 @@
AUX paramiko-2.4.2-disable-server.patch 1596 BLAKE2B 7e2ef1e216f34086c06d985556dde82eccfc08b835a9b336f1e54e81ddf32567872daec9dadc728bfaab8e3c4728439d704d51f9b1df5e04a64b5064f6d79bf5 SHA512 5e2f9285ffa3ece551ce929c6d50691761da6269e906355bbf79b0664a764083f7d55a9e347e2ed236a4c9a7f934d489315b68ebea984694ee9d1714416d34fd
AUX paramiko-3.0.0-nih-test-deps.patch 3435 BLAKE2B fbbe2bbd8b05dd215b2ba413e208a96fbd1df9904271980658e1fae100e6fb1d049e15d582a307364d6416090b97741cbfc8d7304e08d7b7bbfbd70e0f1a1522 SHA512 76cca0e404215e505d6ceb650da796862fd87ab460e1a65438c62cb926af4a3ebb8f603bd26acc1a6d1a1a37e6090fc01edc4ae7a7f81f18105d3d9fce03545d
AUX paramiko-3.2.0-disable-server.patch 1771 BLAKE2B 3cab494873956d6f36b8ea85903141a49eb515fd92851f041f91418dc58acc77cdaf00a215c8e681d037d78eabfc7718a5670f2ca6af02fe357daece9a48819e SHA512 9f2f85518dec8668d096fa1db77ec5219f14fb6127c29bbdc2ba47f55e3526e9f1dbca421adb18033a8358c0efac7db723536b26bd8f45c8583503fb4ae58d76
AUX paramiko-3.2.0-nih-test-deps.patch 4289 BLAKE2B 4a77852f0ae3cda52eca8844f4bf2571c17a0935088973f48c46abf250081845a870fb52d8ebafb108f634dbe86fbe784eefd49d9240c50f911d56173d1e3d71 SHA512 4e0bed394e4c8be19108cc0a7253d6306a698a3cc09b40c18459c8e16591ff42c41cb4f385fc05dcf902161fa23ce2b7d00c665784b9106344a5ca42e4f2a788
DIST paramiko-3.2.0.gh.tar.gz 374709 BLAKE2B 80ec5678a51dc8a0eadd28228ae70a8912fb9a4be1807f5f65a925dd2252fd43ebba6f63b350b62ff7545d9ed0db6e4a78710fb73cff332e6d1ed996b0f1a7d9 SHA512 1d87a19284cef73a76eb7402d0492eb35d4a0588becd2f67ba19fe1498d6c10927127617398de11184d4865c8ce0f3e0c48194d50ef546414a17cf6faff3c39d
EBUILD paramiko-3.2.0.ebuild 1235 BLAKE2B 0f3ebef68bcfc6d59ac84e0061455af000939fa24f3ca35a31250edf1fae300ae9988e6d2cf8f3778727e0ed7f1480b0a2a098d658fc00f93b4abe9d51d32a42 SHA512 82ec274b382b90dadf7dda6b6127c5133f2a36077f6ca2fe3f048f5ede2209af28fe02a6c07c9c0197aa47dafd5af843bf71da747463178b8f0defd9a5efaf04
MISC metadata.xml 511 BLAKE2B d95c469d1e3f1466ff63489b952bf1f74b331d34f2e68dc680400028f50ff6bd01d9b58a707c73a57ac71985b0ddd07fe5d57c9524057c425e066cb9f8fe448d SHA512 aceb43a401d0fc19ecf972141057e2b69b6776627b8f1e52d089b0d55d0f750a0e7030bb71775a327d5f2a47f5bbae4b333775f159faeeb2f9ea789562f22778

View File

@ -0,0 +1,46 @@
diff --git a/paramiko/transport.py b/paramiko/transport.py
index f72eebaf..ec7a1445 100644
--- a/paramiko/transport.py
+++ b/paramiko/transport.py
@@ -110,6 +110,8 @@ from paramiko.ssh_exception import (
from paramiko.util import retry_on_signal, ClosingContextManager, clamp_value
+SERVER_DISABLED_BY_GENTOO = True
+
# for thread cleanup
_active_threads = []
@@ -633,6 +635,8 @@ class Transport(threading.Thread, ClosingContextManager):
`.SSHException` -- if negotiation fails (and no ``event`` was
passed in)
"""
+ if SERVER_DISABLED_BY_GENTOO:
+ raise Exception("Disabled by Gentoo for security reasons. Enable with 'server' USE flag")
if server is None:
server = ServerInterface()
self.server_mode = True
diff --git a/tests/conftest.py b/tests/conftest.py
index 2b509c5c..bb23ac74 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -4,7 +4,7 @@ import shutil
import threading
import pytest
-from paramiko import RSAKey, SFTPServer, SFTP, Transport
+from paramiko import RSAKey, SFTPServer, SFTP, Transport, transport
from .loop import LoopSocket
from .stub_sftp import StubServer, StubSFTPServer
@@ -15,6 +15,10 @@ from .util import _support
# 'nicer'.
+# We need the server component for testing
+transport.SERVER_DISABLED_BY_GENTOO = False
+
+
# Perform logging by default; pytest will capture and thus hide it normally,
# presenting it on error/failure. (But also allow turning it off when doing
# very pinpoint debugging - e.g. using breakpoints, so you don't want output

View File

@ -0,0 +1,98 @@
From c7d1373554910102846123afb35c8c1a842f2c9a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
Date: Tue, 17 May 2022 07:26:36 +0200
Subject: [PATCH] Replace pytest-relaxed with plain pytest.raises
There is really no technical reason to bring pytest-relaxed to call
@raises as a decorator while plain pytest works just fine. Plus,
pytest.raises() is used in test_sftp already.
pytest-relaxed causes humongous breakage to other packages
on the system. It has been banned from Gentoo for this reason.
---
dev-requirements.txt | 6 ++++++
pytest.ini | 3 ---
tests/test_client.py | 19 +++++++++----------
3 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/tests/test_client.py b/tests/test_client.py
index dae5b13a..d0e9c434 100644
--- a/tests/test_client.py
+++ b/tests/test_client.py
@@ -33,7 +33,6 @@ import weakref
from tempfile import mkstemp
import pytest
-from pytest_relaxed import raises
from unittest.mock import patch, Mock
import paramiko
@@ -786,11 +785,11 @@ class PasswordPassphraseTests(ClientTest):
# TODO: more granular exception pending #387; should be signaling "no auth
# methods available" because no key and no password
- @raises(SSHException)
@requires_sha1_signing
def test_passphrase_kwarg_not_used_for_password_auth(self):
- # Using the "right" password in the "wrong" field shouldn't work.
- self._test_connection(passphrase="pygmalion")
+ with pytest.raises(SSHException):
+ # Using the "right" password in the "wrong" field shouldn't work.
+ self._test_connection(passphrase="pygmalion")
@requires_sha1_signing
def test_passphrase_kwarg_used_for_key_passphrase(self):
@@ -810,15 +809,15 @@ class PasswordPassphraseTests(ClientTest):
password="television",
)
- @raises(AuthenticationException) # TODO: more granular
@requires_sha1_signing
def test_password_kwarg_not_used_for_passphrase_when_passphrase_kwarg_given( # noqa
self,
):
# Sanity: if we're given both fields, the password field is NOT used as
# a passphrase.
- self._test_connection(
- key_filename=_support("test_rsa_password.key"),
- password="television",
- passphrase="wat? lol no",
- )
+ with pytest.raises(AuthenticationException):
+ self._test_connection(
+ key_filename=_support("test_rsa_password.key"),
+ password="television",
+ passphrase="wat? lol no",
+ )
--
2.39.1
From becd215434a7c01c74b407cbf2cbcb192e138a15 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
Date: Sat, 21 Jan 2023 06:56:09 +0100
Subject: [PATCH] Remove icecream dep
---
tests/conftest.py | 6 ------
1 file changed, 6 deletions(-)
diff --git a/tests/conftest.py b/tests/conftest.py
index b28d2a17..3cecb7e8 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -10,12 +10,6 @@ from .loop import LoopSocket
from .stub_sftp import StubServer, StubSFTPServer
from .util import _support
-from icecream import ic, install as install_ic
-
-
-install_ic()
-ic.configureOutput(includeContext=True)
-
# Perform logging by default; pytest will capture and thus hide it normally,
# presenting it on error/failure. (But also allow turning it off when doing
--
2.39.1

View File

@ -0,0 +1,58 @@
From a47e9bdc80224c9ceafcea6da5cea1539ddfbd4d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
Date: Fri, 26 May 2023 06:05:13 +0200
Subject: [PATCH 3/3] Disable server component due to security issues
---
paramiko/transport.py | 4 ++++
tests/conftest.py | 5 +++++
2 files changed, 9 insertions(+)
diff --git a/paramiko/transport.py b/paramiko/transport.py
index 8785d6bb..803d07d1 100644
--- a/paramiko/transport.py
+++ b/paramiko/transport.py
@@ -120,6 +120,8 @@ from paramiko.util import (
)
+SERVER_DISABLED_BY_GENTOO = True
+
# for thread cleanup
_active_threads = []
@@ -768,6 +770,8 @@ class Transport(threading.Thread, ClosingContextManager):
`.SSHException` -- if negotiation fails (and no ``event`` was
passed in)
"""
+ if SERVER_DISABLED_BY_GENTOO:
+ raise Exception("Disabled by Gentoo for security reasons. Enable with 'server' USE flag")
if server is None:
server = ServerInterface()
self.server_mode = True
diff --git a/tests/conftest.py b/tests/conftest.py
index 7546aae4..804a289e 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -16,6 +16,7 @@ from paramiko import (
Ed25519Key,
ECDSAKey,
PKey,
+ transport,
)
from ._loop import LoopSocket
@@ -23,6 +24,10 @@ from ._stub_sftp import StubServer, StubSFTPServer
from ._util import _support
+# We need the server component for testing
+transport.SERVER_DISABLED_BY_GENTOO = False
+
+
# Perform logging by default; pytest will capture and thus hide it normally,
# presenting it on error/failure. (But also allow turning it off when doing
# very pinpoint debugging - e.g. using breakpoints, so you don't want output
--
2.40.1

View File

@ -0,0 +1,134 @@
From 33c56a44f425bb5c4bf63759fbe85cfee06ab087 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
Date: Tue, 17 May 2022 07:26:36 +0200
Subject: [PATCH 1/3] Replace pytest-relaxed with plain pytest.raises
There is really no technical reason to bring pytest-relaxed to call
@raises as a decorator while plain pytest works just fine. Plus,
pytest.raises() is used in test_sftp already.
pytest-relaxed causes humongous breakage to other packages
on the system. It has been banned from Gentoo for this reason.
---
tests/test_client.py | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)
diff --git a/tests/test_client.py b/tests/test_client.py
index 1c0c6c84..c12cbe9a 100644
--- a/tests/test_client.py
+++ b/tests/test_client.py
@@ -33,7 +33,6 @@ import weakref
from tempfile import mkstemp
import pytest
-from pytest_relaxed import raises
from unittest.mock import patch, Mock
import paramiko
@@ -799,11 +798,11 @@ class PasswordPassphraseTests(ClientTest):
# TODO: more granular exception pending #387; should be signaling "no auth
# methods available" because no key and no password
- @raises(SSHException)
@requires_sha1_signing
def test_passphrase_kwarg_not_used_for_password_auth(self):
- # Using the "right" password in the "wrong" field shouldn't work.
- self._test_connection(passphrase="pygmalion")
+ with pytest.raises(SSHException):
+ # Using the "right" password in the "wrong" field shouldn't work.
+ self._test_connection(passphrase="pygmalion")
@requires_sha1_signing
def test_passphrase_kwarg_used_for_key_passphrase(self):
@@ -823,15 +822,15 @@ class PasswordPassphraseTests(ClientTest):
password="television",
)
- @raises(AuthenticationException) # TODO: more granular
@requires_sha1_signing
def test_password_kwarg_not_used_for_passphrase_when_passphrase_kwarg_given( # noqa
self,
):
# Sanity: if we're given both fields, the password field is NOT used as
# a passphrase.
- self._test_connection(
- key_filename=_support("test_rsa_password.key"),
- password="television",
- passphrase="wat? lol no",
- )
+ with pytest.raises(AuthenticationException):
+ self._test_connection(
+ key_filename=_support("test_rsa_password.key"),
+ password="television",
+ passphrase="wat? lol no",
+ )
--
2.40.1
From a75bdc46a6eb72a0b0e80eeafad2e2a2536a9bd8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
Date: Sat, 21 Jan 2023 06:56:09 +0100
Subject: [PATCH 2/3] Remove icecream dep
---
tests/conftest.py | 7 -------
1 file changed, 7 deletions(-)
diff --git a/tests/conftest.py b/tests/conftest.py
index 12b97283..7546aae4 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -22,13 +22,6 @@ from ._loop import LoopSocket
from ._stub_sftp import StubServer, StubSFTPServer
from ._util import _support
-from icecream import ic, install as install_ic
-
-
-# Better print() for debugging - use ic()!
-install_ic()
-ic.configureOutput(includeContext=True)
-
# Perform logging by default; pytest will capture and thus hide it normally,
# presenting it on error/failure. (But also allow turning it off when doing
--
2.40.1
From a4f96f21450942398b46f2b5f125b89297f3f3f2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
Date: Fri, 26 May 2023 06:18:25 +0200
Subject: [PATCH] Remove pointless use of Lexicon vendored from invoke with
class
---
tests/conftest.py | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/tests/conftest.py b/tests/conftest.py
index 7546aae4..45362de8 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -4,8 +4,6 @@ import shutil
import threading
from pathlib import Path
-from invoke.vendor.lexicon import Lexicon
-
import pytest
from paramiko import (
SFTPServer,
@@ -132,6 +130,10 @@ for datum in key_data:
datum.insert(0, short)
+class Lexicon:
+ pass
+
+
@pytest.fixture(scope="session", params=key_data, ids=lambda x: x[0])
def keys(request):
"""
--
2.40.1

View File

@ -0,0 +1,16 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
<email>b@edevau.net</email>
<name>Andreas Billmeier</name>
</maintainer>
<upstream>
<remote-id type="pypi">paramiko</remote-id>
<remote-id type="github">paramiko/paramiko</remote-id>
<maintainer status="unknown">
<email>jeff@bitprophet.org</email>
<name>Jeff Forcier</name>
</maintainer>
</upstream>
</pkgmetadata>

View File

@ -0,0 +1,61 @@
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{10..12} )
PYTHON_REQ_USE="threads(+)"
inherit distutils-r1
DESCRIPTION="SSH2 protocol library"
HOMEPAGE="
https://www.paramiko.org/
https://github.com/paramiko/paramiko/
https://pypi.org/project/paramiko/
"
SRC_URI="
https://github.com/paramiko/paramiko/archive/${PV}.tar.gz
-> ${P}.gh.tar.gz
"
LICENSE="LGPL-2.1"
SLOT="0"
KEYWORDS="amd64 arm arm64 x86"
IUSE="examples server"
RDEPEND="
>=dev-python/bcrypt-3.1.3[${PYTHON_USEDEP}]
>=dev-python/cryptography-2.5[${PYTHON_USEDEP}]
>=dev-python/pynacl-1.0.1[${PYTHON_USEDEP}]
>=dev-python/pyasn1-0.1.7[${PYTHON_USEDEP}]
"
distutils_enable_tests pytest
EPYTEST_DESELECT=(
# upstream doesn't really maintain the gssapi support
tests/test_kex_gss.py
tests/test_ssh_gss.py
)
src_prepare() {
local PATCHES=(
"${FILESDIR}/${PN}-3.2.0-nih-test-deps.patch"
)
if ! use server; then
PATCHES+=( "${FILESDIR}/${PN}-3.2.0-disable-server.patch" )
fi
distutils-r1_src_prepare
}
python_install_all() {
distutils-r1_python_install_all
if use examples; then
docinto examples
dodoc -r demos/*
fi
}

View File

@ -0,0 +1,16 @@
BDEPEND=test? ( >=dev-python/bcrypt-3.1.3[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?] >=dev-python/cryptography-2.5[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?] >=dev-python/pynacl-1.0.1[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?] >=dev-python/pyasn1-0.1.7[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?] >=dev-python/pytest-7.3.1[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?] ) python_targets_python3_10? ( >=dev-lang/python-3.10.11:3.10[threads(+)] ) python_targets_python3_11? ( >=dev-lang/python-3.11.3:3.11[threads(+)] ) python_targets_python3_12? ( >=dev-lang/python-3.12.0_beta1:3.12[threads(+)] ) >=dev-python/gpep517-13[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?] >=dev-python/setuptools-67.7.2[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?] >=dev-python/wheel-0.40.0[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?]
DEFINED_PHASES=compile configure install prepare test
DESCRIPTION=SSH2 protocol library
EAPI=8
HOMEPAGE=https://www.paramiko.org/ https://github.com/paramiko/paramiko/ https://pypi.org/project/paramiko/
INHERIT=distutils-r1
IUSE=examples server test python_targets_python3_10 python_targets_python3_11 python_targets_python3_12
KEYWORDS=amd64 arm arm64 x86
LICENSE=LGPL-2.1
RDEPEND=>=dev-python/bcrypt-3.1.3[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?] >=dev-python/cryptography-2.5[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?] >=dev-python/pynacl-1.0.1[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?] >=dev-python/pyasn1-0.1.7[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?] python_targets_python3_10? ( >=dev-lang/python-3.10.11:3.10[threads(+)] ) python_targets_python3_11? ( >=dev-lang/python-3.11.3:3.11[threads(+)] ) python_targets_python3_12? ( >=dev-lang/python-3.12.0_beta1:3.12[threads(+)] )
REQUIRED_USE=|| ( python_targets_python3_10 python_targets_python3_11 python_targets_python3_12 )
RESTRICT=!test? ( test )
SLOT=0
SRC_URI=https://github.com/paramiko/paramiko/archive/3.1.0.tar.gz -> paramiko-3.1.0.gh.tar.gz
_eclasses_=out-of-source-utils 1a9007554652a6e627edbccb3c25a439 multibuild bddcb51b74f4a76724ff7cf8e7388869 multilib c19072c3cd7ac5cb21de013f7e9832e0 toolchain-funcs 513c31b3346458ed1f3878b57da6d61c multiprocessing b4e253ab22cef7b1085e9b67c7a3b730 ninja-utils 76050953ad5b70d7e09a6ca55558db92 python-utils-r1 ba15b8b81f30ca448294d759a9f7902c python-r1 3c6cd0f418ba702c186a9865b85e704d distutils-r1 2d32e797ee29a8ffdd452f4a85860666
_md5_=5f27a030b5f1b1226fdc0f8f02c9db29

View File

@ -0,0 +1,16 @@
BDEPEND=test? ( >=dev-python/bcrypt-3.1.3[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?] >=dev-python/cryptography-2.5[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?] >=dev-python/pynacl-1.0.1[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?] >=dev-python/pyasn1-0.1.7[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?] >=dev-python/pytest-7.3.1[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?] ) python_targets_python3_10? ( >=dev-lang/python-3.10.11:3.10[threads(+)] ) python_targets_python3_11? ( >=dev-lang/python-3.11.3:3.11[threads(+)] ) python_targets_python3_12? ( >=dev-lang/python-3.12.0_beta1:3.12[threads(+)] ) >=dev-python/gpep517-13[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?] >=dev-python/setuptools-67.7.2[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?] >=dev-python/wheel-0.40.0[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?]
DEFINED_PHASES=compile configure install prepare test
DESCRIPTION=SSH2 protocol library
EAPI=8
HOMEPAGE=https://www.paramiko.org/ https://github.com/paramiko/paramiko/ https://pypi.org/project/paramiko/
INHERIT=distutils-r1
IUSE=examples server test python_targets_python3_10 python_targets_python3_11 python_targets_python3_12
KEYWORDS=amd64 arm arm64 x86
LICENSE=LGPL-2.1
RDEPEND=>=dev-python/bcrypt-3.1.3[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?] >=dev-python/cryptography-2.5[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?] >=dev-python/pynacl-1.0.1[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?] >=dev-python/pyasn1-0.1.7[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?] python_targets_python3_10? ( >=dev-lang/python-3.10.11:3.10[threads(+)] ) python_targets_python3_11? ( >=dev-lang/python-3.11.3:3.11[threads(+)] ) python_targets_python3_12? ( >=dev-lang/python-3.12.0_beta1:3.12[threads(+)] )
REQUIRED_USE=|| ( python_targets_python3_10 python_targets_python3_11 python_targets_python3_12 )
RESTRICT=!test? ( test )
SLOT=0
SRC_URI=https://github.com/paramiko/paramiko/archive/3.2.0.tar.gz -> paramiko-3.2.0.gh.tar.gz
_eclasses_=out-of-source-utils 1a9007554652a6e627edbccb3c25a439 multibuild bddcb51b74f4a76724ff7cf8e7388869 multilib c19072c3cd7ac5cb21de013f7e9832e0 toolchain-funcs 513c31b3346458ed1f3878b57da6d61c multiprocessing b4e253ab22cef7b1085e9b67c7a3b730 ninja-utils 76050953ad5b70d7e09a6ca55558db92 python-utils-r1 ba15b8b81f30ca448294d759a9f7902c python-r1 3c6cd0f418ba702c186a9865b85e704d distutils-r1 2d32e797ee29a8ffdd452f4a85860666
_md5_=25b19a913afb18e51489827b10728092