summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python/paramiko')
-rw-r--r--dev-python/paramiko/Manifest2
-rw-r--r--dev-python/paramiko/files/paramiko-2.7.1-tests.patch134
-rw-r--r--dev-python/paramiko/files/paramiko-3.2.0-disable-server.patch (renamed from dev-python/paramiko/files/paramiko-2.4.2-disable-server.patch)42
-rw-r--r--dev-python/paramiko/files/paramiko-3.2.0-nih-test-deps.patch134
-rw-r--r--dev-python/paramiko/files/paramiko-3.4.0-pytest-fixes.patch34
-rw-r--r--dev-python/paramiko/metadata.xml10
-rw-r--r--dev-python/paramiko/paramiko-2.7.2.ebuild54
-rw-r--r--dev-python/paramiko/paramiko-3.4.0.ebuild63
8 files changed, 262 insertions, 211 deletions
diff --git a/dev-python/paramiko/Manifest b/dev-python/paramiko/Manifest
index a9a727eeb4c8..f03fc1283b0f 100644
--- a/dev-python/paramiko/Manifest
+++ b/dev-python/paramiko/Manifest
@@ -1 +1 @@
-DIST paramiko-2.7.2.tar.gz 331678 BLAKE2B ff96dfd7b114255c15282f4f73e1f9425ccf77106426ccf3ad3f833b56bd5abfde867cf2d322448dc7b3777af6ab080b4e37ff8871ce17f0db17634b7f101747 SHA512 c9bc569428a0a61814cb73941356de5bae7fea7891ba4fd3f5c00ff1ee5083454bfde7e969fb4aaf5254b909f7f0132f590d67803eda8a67503e5c02ec2bf01a
+DIST paramiko-3.4.0.gh.tar.gz 374441 BLAKE2B a6ea03d40e477cb02c1293c46025909251f8eec2be70638bf850638d9fe8c15bfe0e278697e41f3595f482b8f0755d911b905b11db2324eca597fc9be2a22f24 SHA512 f78fccf653d05acee78dfb76fb662c85fbfea7901fd94460a2d2e526c9b25169993051d20c16cfe0b7745008b1ea3a745fc9a280386d98a06689aaadf78f6752
diff --git a/dev-python/paramiko/files/paramiko-2.7.1-tests.patch b/dev-python/paramiko/files/paramiko-2.7.1-tests.patch
deleted file mode 100644
index 5791afd044ad..000000000000
--- a/dev-python/paramiko/files/paramiko-2.7.1-tests.patch
+++ /dev/null
@@ -1,134 +0,0 @@
-From e91cac80d679dfe16897988b0c14c1293a93c805 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
-Date: Thu, 16 Apr 2020 09:22:59 +0200
-Subject: [PATCH 1/2] 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 | 1 -
- setup.cfg | 3 ---
- tests/test_client.py | 20 ++++++++++----------
- 3 files changed, 10 insertions(+), 14 deletions(-)
-
-diff --git a/dev-requirements.txt b/dev-requirements.txt
-index f4f84748..b1b0cdf5 100644
---- a/dev-requirements.txt
-+++ b/dev-requirements.txt
-@@ -2,7 +2,6 @@
- invoke>=1.0,<2.0
- invocations>=1.2.0,<2.0
- pytest==4.4.2
--pytest-relaxed==1.1.5
- # pytest-xdist for test dir watching and the inv guard task
- pytest-xdist==1.28.0
- mock==2.0.0
-diff --git a/setup.cfg b/setup.cfg
-index 44d029c4..99159096 100644
---- a/setup.cfg
-+++ b/setup.cfg
-@@ -17,9 +17,6 @@ ignore = E124,E125,E128,E261,E301,E302,E303,E402,E721,W503,E203,E722
- max-line-length = 79
-
- [tool:pytest]
--# We use pytest-relaxed just for its utils at the moment, so disable it at the
--# plugin level until we adapt test organization to really use it.
--addopts = -p no:relaxed
- # Loop on failure
- looponfailroots = tests paramiko
- # Ignore some warnings we cannot easily handle.
-diff --git a/tests/test_client.py b/tests/test_client.py
-index 60ad310c..88fd1d53 100644
---- a/tests/test_client.py
-+++ b/tests/test_client.py
-@@ -33,7 +33,7 @@ import warnings
- import weakref
- from tempfile import mkstemp
-
--from pytest_relaxed import raises
-+import pytest
- from mock import patch, Mock
-
- import paramiko
-@@ -684,10 +684,10 @@ class PasswordPassphraseTests(ClientTest):
-
- # TODO: more granular exception pending #387; should be signaling "no auth
- # methods available" because no key and no password
-- @raises(SSHException)
- 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")
-
- def test_passphrase_kwarg_used_for_key_passphrase(self):
- # Straightforward again, with new passphrase kwarg.
-@@ -705,14 +705,14 @@ class PasswordPassphraseTests(ClientTest):
- password="television",
- )
-
-- @raises(AuthenticationException) # TODO: more granular
- 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.26.1
-
-From af228a2d950654ccdd4a5d665da0018bd976c108 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
-Date: Thu, 16 Apr 2020 09:46:39 +0200
-Subject: [PATCH 2/2] Skip tests requiring invoke if it's not installed
-
-Since invoke is an optional dependency and only one group of tests
-require it, skip them gracefully rather than failing if it's not
-present.
----
- tests/test_config.py | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/tests/test_config.py b/tests/test_config.py
-index 5e9aa059..5eeaeac3 100644
---- a/tests/test_config.py
-+++ b/tests/test_config.py
-@@ -6,7 +6,11 @@ from socket import gaierror
-
- from paramiko.py3compat import string_types
-
--from invoke import Result
-+try:
-+ from invoke import Result
-+except ImportError:
-+ Result = None
-+
- from mock import patch
- from pytest import raises, mark, fixture
-
-@@ -705,6 +709,7 @@ def _expect(success_on):
- return inner
-
-
-+@mark.skipif(Result is None, reason='requires invoke package')
- class TestMatchExec(object):
- @patch("paramiko.config.invoke", new=None)
- @patch("paramiko.config.invoke_import_error", new=ImportError("meh"))
---
-2.26.1
-
diff --git a/dev-python/paramiko/files/paramiko-2.4.2-disable-server.patch b/dev-python/paramiko/files/paramiko-3.2.0-disable-server.patch
index 19450cbee1bc..942f5161ee6f 100644
--- a/dev-python/paramiko/files/paramiko-2.4.2-disable-server.patch
+++ b/dev-python/paramiko/files/paramiko-3.2.0-disable-server.patch
@@ -1,9 +1,19 @@
+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 f72eebaf..ec7a1445 100644
+index 8785d6bb..803d07d1 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
+@@ -120,6 +120,8 @@ from paramiko.util import (
+ )
+SERVER_DISABLED_BY_GENTOO = True
@@ -11,7 +21,7 @@ index f72eebaf..ec7a1445 100644
# for thread cleanup
_active_threads = []
-@@ -633,6 +635,8 @@ class Transport(threading.Thread, ClosingContextManager):
+@@ -768,6 +770,8 @@ class Transport(threading.Thread, ClosingContextManager):
`.SSHException` -- if negotiation fails (and no ``event`` was
passed in)
"""
@@ -21,20 +31,19 @@ index f72eebaf..ec7a1445 100644
server = ServerInterface()
self.server_mode = True
diff --git a/tests/conftest.py b/tests/conftest.py
-index 2b509c5c..bb23ac74 100644
+index 7546aae4..804a289e 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
-@@ -4,7 +4,7 @@ import shutil
- import threading
+@@ -16,6 +16,7 @@ from paramiko import (
+ Ed25519Key,
+ ECDSAKey,
+ PKey,
++ transport,
+ )
- 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'.
+ 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
@@ -44,3 +53,6 @@ index 2b509c5c..bb23ac74 100644
# 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
+
diff --git a/dev-python/paramiko/files/paramiko-3.2.0-nih-test-deps.patch b/dev-python/paramiko/files/paramiko-3.2.0-nih-test-deps.patch
new file mode 100644
index 000000000000..84fb618dffb8
--- /dev/null
+++ b/dev-python/paramiko/files/paramiko-3.2.0-nih-test-deps.patch
@@ -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
+
diff --git a/dev-python/paramiko/files/paramiko-3.4.0-pytest-fixes.patch b/dev-python/paramiko/files/paramiko-3.4.0-pytest-fixes.patch
new file mode 100644
index 000000000000..5d8eb3ffbb43
--- /dev/null
+++ b/dev-python/paramiko/files/paramiko-3.4.0-pytest-fixes.patch
@@ -0,0 +1,34 @@
+From 71dd9c098b800a358065070a44d2803b759f222a Mon Sep 17 00:00:00 2001
+From: marston <manuelfern1997@gmail.com>
+Date: Wed, 27 Sep 2023 21:04:25 -0400
+Subject: [PATCH] Fix deprecated nose tests and 'isSet()'
+
+Upstream-PR: https://github.com/paramiko/paramiko/pull/2306
+Upstream-Issue: https://github.com/paramiko/paramiko/issues/2290
+
+diff --git a/tests/test_client.py b/tests/test_client.py
+index 1c0c6c84b..feb27bbec 100644
+--- a/tests/test_client.py
++++ b/tests/test_client.py
+@@ -689,7 +689,7 @@ def _setup_for_env(self):
+ )
+
+ self.event.wait(1.0)
+- self.assertTrue(self.event.isSet())
++ self.assertTrue(self.event.is_set())
+ self.assertTrue(self.ts.is_active())
+
+ def test_update_environment(self):
+diff --git a/tests/test_config.py b/tests/test_config.py
+index 2e49aa3de..1e623e0ad 100644
+--- a/tests/test_config.py
++++ b/tests/test_config.py
+@@ -53,7 +53,7 @@ def load_config(name):
+
+
+ class TestSSHConfig:
+- def setup(self):
++ def setup_method(self):
+ self.config = load_config("robey")
+
+ def test_init(self):
diff --git a/dev-python/paramiko/metadata.xml b/dev-python/paramiko/metadata.xml
index 0665653c36dc..139a32ac7fa6 100644
--- a/dev-python/paramiko/metadata.xml
+++ b/dev-python/paramiko/metadata.xml
@@ -1,26 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
<email>python@gentoo.org</email>
<name>Python</name>
</maintainer>
- <maintainer type="person">
- <email>alicef@gentoo.org</email>
- <name>Alice Ferrazzi</name>
- </maintainer>
<longdescription>
This is a library for making SSH2 connections (client or server).
Emphasis is on using SSH2 as an alternative to SSL for making secure
connections between python scripts. All major ciphers and hash methods
are supported. SFTP client mode is now supported too.
-</longdescription>
+ </longdescription>
<longdescription lang="ja">
これはSSH2コネクション(クライアントとサーバー)を作り出すためのライブラリです。注
目点はPython言語スクリプト間のセキュアなコネクションを作り出すSSLの代用にSSHを利
用している所です。有名なCipherとHash処理の全てがサポートされています。SFTPクライ
アントもサポートされています。
-</longdescription>
+ </longdescription>
<stabilize-allarches/>
<use>
<flag name="server">Enable server feature</flag>
diff --git a/dev-python/paramiko/paramiko-2.7.2.ebuild b/dev-python/paramiko/paramiko-2.7.2.ebuild
deleted file mode 100644
index 6b405a0e1c1d..000000000000
--- a/dev-python/paramiko/paramiko-2.7.2.ebuild
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright 1999-2021 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-PYTHON_COMPAT=( python3_{8..10} )
-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/"
-# pypi tarballs are missing test data
-#SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
-SRC_URI="https://github.com/${PN}/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
-
-LICENSE="LGPL-2.1"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~m68k ~mips ppc ppc64 ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris"
-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}]
-"
-BDEPEND="
- test? (
- dev-python/mock[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_sphinx sites/docs
-distutils_enable_tests pytest
-
-src_prepare() {
- eapply "${FILESDIR}/${PN}-2.7.1-tests.patch"
-
- if ! use server; then
- eapply "${FILESDIR}/${PN}-2.4.2-disable-server.patch"
- fi
-
- eapply_user
-}
-
-python_install_all() {
- distutils-r1_python_install_all
-
- if use examples; then
- docinto examples
- dodoc -r demos/*
- fi
-}
diff --git a/dev-python/paramiko/paramiko-3.4.0.ebuild b/dev-python/paramiko/paramiko-3.4.0.ebuild
new file mode 100644
index 000000000000..595554941099
--- /dev/null
+++ b/dev-python/paramiko/paramiko-3.4.0.ebuild
@@ -0,0 +1,63 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( pypy3 python3_{10..13} )
+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 ~loong ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+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_gssapi.py
+ tests/test_kex_gss.py
+ tests/test_ssh_gss.py
+)
+
+src_prepare() {
+ local PATCHES=(
+ "${FILESDIR}/${PN}-3.2.0-nih-test-deps.patch"
+ "${FILESDIR}/${PN}-3.4.0-pytest-fixes.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
+}