Gentoo Archives: gentoo-commits

From: "Michał Górny" <mgorny@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-python/paramiko/, dev-python/paramiko/files/
Date: Tue, 17 May 2022 06:54:38
Message-Id: 1652770455.b7eedbb8cc180e0f9f54653582fe6ca86d25a794.mgorny@gentoo
1 commit: b7eedbb8cc180e0f9f54653582fe6ca86d25a794
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Tue May 17 04:57:36 2022 +0000
4 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
5 CommitDate: Tue May 17 06:54:15 2022 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b7eedbb8
7
8 dev-python/paramiko: Bump to 2.11.0
9
10 Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
11
12 dev-python/paramiko/Manifest | 1 +
13 .../files/paramiko-2.11.0-invoke-tests.patch | 40 +++++++++
14 .../files/paramiko-2.11.0-pytest-relaxed.patch | 94 ++++++++++++++++++++++
15 dev-python/paramiko/paramiko-2.11.0.ebuild | 63 +++++++++++++++
16 4 files changed, 198 insertions(+)
17
18 diff --git a/dev-python/paramiko/Manifest b/dev-python/paramiko/Manifest
19 index cda2918825b1..bf23678bc41d 100644
20 --- a/dev-python/paramiko/Manifest
21 +++ b/dev-python/paramiko/Manifest
22 @@ -1,2 +1,3 @@
23 DIST paramiko-2.10.3.tar.gz 347738 BLAKE2B ccc66a7e0fe3f777e74b94374ed59435eda440fe0aeab3871e68a132610193d2fadca1fd200db3d194566b8a2a8d6ff889d71594fed69a01fb97ca43b967e957 SHA512 e1fce2ad33ee2942b519458d53497671e66d4777c23877954b135cf9bb8ec43357156147c7e012956ccf6198de800835a617b541a4b0faf54df00f936128514b
24 DIST paramiko-2.10.4.tar.gz 348637 BLAKE2B 8ce0d34418b6a1dc1d98fc180d2b2f0fb4333b7e1c52fcf7edabc3b0fc096f1b644dbc21a5b37f9001f046969c3d513ad5f6d7261339a71fa3ec922161cd7be7 SHA512 df39958e647dd6519929f68c4870228a61f54e763751e6b1d07b5e802786c85dfc34af39588009e729c4d189ca17d3aa09a58d4242403a1a1a53d36f6cd313b1
25 +DIST paramiko-2.11.0.tar.gz 350793 BLAKE2B 86358e08407f8a820a9b33a60e771ac3adb8f3e003ccbc4704ba69a52bd427f38a9c49a20e6a07220d07c25dbcc35a472b2091fa9f7bc1447bab0d7a1ce16b35 SHA512 59e439bd54d83938f91d6c9888f2278bafa4ca48582939580bdabc6207dbe6dc856f6006ad26b7ec91b9d39e92ca70dc6270c6b5d4f77a5e1fa0ec8bd084d4b5
26
27 diff --git a/dev-python/paramiko/files/paramiko-2.11.0-invoke-tests.patch b/dev-python/paramiko/files/paramiko-2.11.0-invoke-tests.patch
28 new file mode 100644
29 index 000000000000..80fe876ef8e3
30 --- /dev/null
31 +++ b/dev-python/paramiko/files/paramiko-2.11.0-invoke-tests.patch
32 @@ -0,0 +1,40 @@
33 +From 529558cc20e448e45e24dc7b7609cd62300838b8 Mon Sep 17 00:00:00 2001
34 +From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@g.o>
35 +Date: Thu, 16 Apr 2020 09:46:39 +0200
36 +Subject: [PATCH] Skip tests requiring invoke if it's not installed
37 +
38 +Since invoke is an optional dependency and only one group of tests
39 +require it, skip them gracefully rather than failing if it's not
40 +present.
41 +---
42 + tests/test_config.py | 7 ++++++-
43 + 1 file changed, 6 insertions(+), 1 deletion(-)
44 +
45 +diff --git a/tests/test_config.py b/tests/test_config.py
46 +index 45fb262d..017d4bbf 100644
47 +--- a/tests/test_config.py
48 ++++ b/tests/test_config.py
49 +@@ -6,7 +6,11 @@ from socket import gaierror
50 +
51 + from paramiko.py3compat import string_types
52 +
53 +-from invoke import Result
54 ++try:
55 ++ from invoke import Result
56 ++except ImportError:
57 ++ Result = None
58 ++
59 + from mock import patch
60 + from pytest import raises, mark, fixture
61 +
62 +@@ -742,6 +746,7 @@ def _expect(success_on):
63 + return inner
64 +
65 +
66 ++@××××.skipif(Result is None, reason="requires invoke package")
67 + class TestMatchExec(object):
68 + @patch("paramiko.config.invoke", new=None)
69 + @patch("paramiko.config.invoke_import_error", new=ImportError("meh"))
70 +--
71 +2.35.1
72 +
73
74 diff --git a/dev-python/paramiko/files/paramiko-2.11.0-pytest-relaxed.patch b/dev-python/paramiko/files/paramiko-2.11.0-pytest-relaxed.patch
75 new file mode 100644
76 index 000000000000..6e746aff1863
77 --- /dev/null
78 +++ b/dev-python/paramiko/files/paramiko-2.11.0-pytest-relaxed.patch
79 @@ -0,0 +1,94 @@
80 +From 03741e48c83856e53fc3f1487d660165cb718c11 Mon Sep 17 00:00:00 2001
81 +From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@g.o>
82 +Date: Tue, 17 May 2022 07:26:36 +0200
83 +Subject: [PATCH] Replace pytest-relaxed with plain pytest.raises
84 +
85 +There is really no technical reason to bring pytest-relaxed to call
86 +@raises as a decorator while plain pytest works just fine. Plus,
87 +pytest.raises() is used in test_sftp already.
88 +
89 +pytest-relaxed causes humongous breakage to other packages
90 +on the system. It has been banned from Gentoo for this reason.
91 +---
92 + dev-requirements.txt | 1 -
93 + pytest.ini | 3 ---
94 + tests/test_client.py | 20 ++++++++++----------
95 + 3 files changed, 10 insertions(+), 14 deletions(-)
96 +
97 +diff --git a/dev-requirements.txt b/dev-requirements.txt
98 +index 3ed9eb40..e90f3373 100644
99 +--- a/dev-requirements.txt
100 ++++ b/dev-requirements.txt
101 +@@ -2,7 +2,6 @@
102 + invoke==1.6.0
103 + invocations==2.6.0
104 + pytest==4.4.2
105 +-pytest-relaxed==1.1.5
106 + # pytest-xdist for test dir watching and the inv guard task
107 + pytest-xdist==1.28.0
108 + mock==2.0.0
109 +diff --git a/pytest.ini b/pytest.ini
110 +index be207cd8..5a506bcd 100644
111 +--- a/pytest.ini
112 ++++ b/pytest.ini
113 +@@ -1,7 +1,4 @@
114 + [pytest]
115 +-# We use pytest-relaxed just for its utils at the moment, so disable it at the
116 +-# plugin level until we adapt test organization to really use it.
117 +-addopts = -p no:relaxed
118 + # Loop on failure
119 + looponfailroots = tests paramiko
120 + # Ignore some warnings we cannot easily handle.
121 +diff --git a/tests/test_client.py b/tests/test_client.py
122 +index fdf19c45..e4af71df 100644
123 +--- a/tests/test_client.py
124 ++++ b/tests/test_client.py
125 +@@ -33,7 +33,7 @@ import warnings
126 + import weakref
127 + from tempfile import mkstemp
128 +
129 +-from pytest_relaxed import raises
130 ++import pytest
131 + from mock import patch, Mock
132 +
133 + import paramiko
134 +@@ -733,11 +733,11 @@ class PasswordPassphraseTests(ClientTest):
135 +
136 + # TODO: more granular exception pending #387; should be signaling "no auth
137 + # methods available" because no key and no password
138 +- @raises(SSHException)
139 + @requires_sha1_signing
140 + def test_passphrase_kwarg_not_used_for_password_auth(self):
141 +- # Using the "right" password in the "wrong" field shouldn't work.
142 +- self._test_connection(passphrase="pygmalion")
143 ++ with pytest.raises(SSHException):
144 ++ # Using the "right" password in the "wrong" field shouldn't work.
145 ++ self._test_connection(passphrase="pygmalion")
146 +
147 + @requires_sha1_signing
148 + def test_passphrase_kwarg_used_for_key_passphrase(self):
149 +@@ -757,15 +757,15 @@ class PasswordPassphraseTests(ClientTest):
150 + password="television",
151 + )
152 +
153 +- @raises(AuthenticationException) # TODO: more granular
154 + @requires_sha1_signing
155 + def test_password_kwarg_not_used_for_passphrase_when_passphrase_kwarg_given( # noqa
156 + self
157 + ):
158 + # Sanity: if we're given both fields, the password field is NOT used as
159 + # a passphrase.
160 +- self._test_connection(
161 +- key_filename=_support("test_rsa_password.key"),
162 +- password="television",
163 +- passphrase="wat? lol no",
164 +- )
165 ++ with pytest.raises(AuthenticationException):
166 ++ self._test_connection(
167 ++ key_filename=_support("test_rsa_password.key"),
168 ++ password="television",
169 ++ passphrase="wat? lol no",
170 ++ )
171 +--
172 +2.35.1
173 +
174
175 diff --git a/dev-python/paramiko/paramiko-2.11.0.ebuild b/dev-python/paramiko/paramiko-2.11.0.ebuild
176 new file mode 100644
177 index 000000000000..846177cc6874
178 --- /dev/null
179 +++ b/dev-python/paramiko/paramiko-2.11.0.ebuild
180 @@ -0,0 +1,63 @@
181 +# Copyright 1999-2022 Gentoo Authors
182 +# Distributed under the terms of the GNU General Public License v2
183 +
184 +EAPI=8
185 +
186 +DISTUTILS_USE_PEP517=setuptools
187 +PYTHON_COMPAT=( python3_{8..11} )
188 +PYTHON_REQ_USE="threads(+)"
189 +
190 +inherit distutils-r1
191 +
192 +DESCRIPTION="SSH2 protocol library"
193 +HOMEPAGE="
194 + https://www.paramiko.org/
195 + https://github.com/paramiko/paramiko/
196 + https://pypi.org/project/paramiko/
197 +"
198 +SRC_URI="
199 + https://github.com/paramiko/paramiko/archive/${PV}.tar.gz
200 + -> ${P}.tar.gz
201 +"
202 +
203 +LICENSE="LGPL-2.1"
204 +SLOT="0"
205 +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris"
206 +IUSE="examples server"
207 +
208 +RDEPEND="
209 + >=dev-python/bcrypt-3.1.3[${PYTHON_USEDEP}]
210 + >=dev-python/cryptography-2.5[${PYTHON_USEDEP}]
211 + >=dev-python/pynacl-1.0.1[${PYTHON_USEDEP}]
212 + >=dev-python/pyasn1-0.1.7[${PYTHON_USEDEP}]
213 + dev-python/six[${PYTHON_USEDEP}]
214 +"
215 +BDEPEND="
216 + test? (
217 + dev-python/mock[${PYTHON_USEDEP}]
218 + )
219 +"
220 +
221 +distutils_enable_sphinx sites/docs
222 +distutils_enable_tests pytest
223 +
224 +src_prepare() {
225 + local PATCHES=(
226 + "${FILESDIR}/${PN}-2.11.0-pytest-relaxed.patch"
227 + "${FILESDIR}/${PN}-2.11.0-invoke-tests.patch"
228 + )
229 +
230 + if ! use server; then
231 + PATCHES+=( "${FILESDIR}/${PN}-2.4.2-disable-server.patch" )
232 + fi
233 + distutils-r1_src_prepare
234 +}
235 +
236 +python_install_all() {
237 + distutils-r1_python_install_all
238 +
239 + if use examples; then
240 + docinto examples
241 + dodoc -r demos/*
242 + fi
243 +}