From 7318e098f5c7b28d37612f0e55cdf955f976cb375fe49b661cf822729f34f6e4 Mon Sep 17 00:00:00 2001 From: Daniel Garcia Date: Fri, 12 May 2023 09:31:22 +0000 Subject: [PATCH] =?UTF-8?q?-=20Delete=20paramiko-pr1665-remove-pytest-rela?= =?UTF-8?q?xed.patch=20-=20Add=20remove-icecream-dep.patch=20-=20Update=20?= =?UTF-8?q?to=203.1.0:=20=20=20*=20[Feature]=20#2173:=20Accept=20single=20?= =?UTF-8?q?tabs=20as=20field=20separators=20(in=20=20=20=20=20addition=20t?= =?UTF-8?q?o=20single=20spaces)=20in=20=20=20=20=20=20for=20parity=20with=20=20=20=20=20OpenS?= =?UTF-8?q?SH=E2=80=99s=20KnownHosts=20parser.=20Patched=20by=20Alex=20Cha?= =?UTF-8?q?vkin.=20=20=20*=20[Feature]=20#2013:=20(solving=20#2009,=20plus?= =?UTF-8?q?=20others)=20Add=20an=20explicit=20=20=20=20=20channel=5Ftimeou?= =?UTF-8?q?t=20keyword=20argument=20to=20=20=20=20=20paramiko.client.SSHCl?= =?UTF-8?q?ient.connect,=20allowing=20users=20to=20configure=20the=20=20?= =?UTF-8?q?=20=20=20previously-hardcoded=20default=20value=20of=203600=20s?= =?UTF-8?q?econds.=20Thanks=20to=20=20=20=20=20@VakarisZ=20and=20@ilija-la?= =?UTF-8?q?zoroski=20for=20the=20report=20and=20patch,=20with=20=20=20=20?= =?UTF-8?q?=20credit=20to=20Mike=20Salvatore=20for=20patch=20review.=20=20?= =?UTF-8?q?=20*=20[Support]=20#2178:=20Apply=20codespell=20to=20the=20code?= =?UTF-8?q?base,=20which=20found=20a=20=20=20=20=20lot=20of=20very=20old?= =?UTF-8?q?=20minor=20spelling=20mistakes=20in=20docstrings.=20Also=20=20?= =?UTF-8?q?=20=20=20modernize=20many=20instances=20of=20*largs=20vs=20*arg?= =?UTF-8?q?s=20and=20**kwarg=20vs=20=20=20=20=20**kwargs.=20Patch=20courte?= =?UTF-8?q?sy=20of=20Yaroslav=20Halchenko,=20with=20review=20from=20=20=20?= =?UTF-8?q?=20=20Brian=20Skinn.=20-=203.0.0:=20=20=20*=20[Bug]:=20A=20hand?= =?UTF-8?q?ful=20of=20lower-level=20classes=20(notably=20=20=20=20=20param?= =?UTF-8?q?iko.message.Message=20and=20paramiko.pkey.PKey)=20previously=20?= =?UTF-8?q?=20=20=20=20returned=20bytes=20objects=20from=20their=20impleme?= =?UTF-8?q?ntation=20of=20=5F=5Fstr=5F=5F,=20even=20=20=20=20=20under=20Py?= =?UTF-8?q?thon=203;=20and=20there=20was=20never=20any=20=5F=5Fbytes=5F=5F?= =?UTF-8?q?=20method.=20=20=20*=20These=20issues=20have=20been=20fixed=20b?= =?UTF-8?q?y=20renaming=20=5F=5Fstr=5F=5F=20to=20=5F=5Fbytes=5F=5F=20and?= =?UTF-8?q?=20=20=20=20=20relying=20on=20Python=E2=80=99s=20default=20?= =?UTF-8?q?=E2=80=9Cstringification=20returns=20the=20output=20of=20=20=20?= =?UTF-8?q?=20=20=5F=5Frepr=5F=5F=E2=80=9D=20behavior=20re:=20any=20real?= =?UTF-8?q?=20attempts=20to=20str()=20such=20objects.=20=20=20*=20[Bug]=20?= =?UTF-8?q?#2165:=20Streamline=20some=20redundant=20(and=20costly)=20byte?= =?UTF-8?q?=20=20=20=20=20conversion=20calls=20in=20the=20packetizer=20and?= =?UTF-8?q?=20the=20core=20SFTP=20module.=20This=20=20=20=20=20should=20le?= =?UTF-8?q?ad=20to=20some=20SFTP=20speedups=20at=20the=20very=20least.=20T?= =?UTF-8?q?hanks=20to=20=20=20=20=20Alex=20Gaynor=20for=20the=20patch.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-paramiko?expand=0&rev=112 --- paramiko-2.12.0.tar.gz | 3 - paramiko-3.1.0.tar.gz | 3 + paramiko-pr1665-remove-pytest-relaxed.patch | 66 -------------------- python-paramiko.changes | 69 +++++++++++++++++++++ python-paramiko.spec | 27 ++++---- remove-icecream-dep.patch | 17 +++++ 6 files changed, 102 insertions(+), 83 deletions(-) delete mode 100644 paramiko-2.12.0.tar.gz create mode 100644 paramiko-3.1.0.tar.gz delete mode 100644 paramiko-pr1665-remove-pytest-relaxed.patch create mode 100644 remove-icecream-dep.patch diff --git a/paramiko-2.12.0.tar.gz b/paramiko-2.12.0.tar.gz deleted file mode 100644 index 6266887..0000000 --- a/paramiko-2.12.0.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:376885c05c5d6aa6e1f4608aac2a6b5b0548b1add40274477324605903d9cd49 -size 1076369 diff --git a/paramiko-3.1.0.tar.gz b/paramiko-3.1.0.tar.gz new file mode 100644 index 0000000..52ee4bb --- /dev/null +++ b/paramiko-3.1.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6950faca6819acd3219d4ae694a23c7a87ee38d084f70c1724b0c0dbb8b75769 +size 1189515 diff --git a/paramiko-pr1665-remove-pytest-relaxed.patch b/paramiko-pr1665-remove-pytest-relaxed.patch deleted file mode 100644 index a2ba4cf..0000000 --- a/paramiko-pr1665-remove-pytest-relaxed.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 5844aa0270d3ad8feab4bf1023e35aa4fc255b6c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= -Date: Thu, 16 Apr 2020 09:22:59 +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 | 1 - (removed from patch= - setup.cfg | 3 --- - tests/test_client.py | 20 ++++++++++---------- - 3 files changed, 10 insertions(+), 14 deletions(-) - -Index: paramiko-2.12.0/tests/test_client.py -=================================================================== ---- paramiko-2.12.0.orig/tests/test_client.py -+++ paramiko-2.12.0/tests/test_client.py -@@ -34,7 +34,6 @@ import weakref - from tempfile import mkstemp - - import pytest --from pytest_relaxed import raises - from mock import patch, Mock - - import paramiko -@@ -787,11 +786,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): -@@ -811,15 +810,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", -+ ) diff --git a/python-paramiko.changes b/python-paramiko.changes index c7d7cee..a4f6380 100644 --- a/python-paramiko.changes +++ b/python-paramiko.changes @@ -1,3 +1,72 @@ +------------------------------------------------------------------- +Fri May 12 09:27:30 UTC 2023 - Daniel Garcia + +- Delete paramiko-pr1665-remove-pytest-relaxed.patch +- Add remove-icecream-dep.patch +- Update to 3.1.0: + * [Feature] #2173: Accept single tabs as field separators (in + addition to single spaces) in + for parity with + OpenSSH’s KnownHosts parser. Patched by Alex Chavkin. + * [Feature] #2013: (solving #2009, plus others) Add an explicit + channel_timeout keyword argument to + paramiko.client.SSHClient.connect, allowing users to configure the + previously-hardcoded default value of 3600 seconds. Thanks to + @VakarisZ and @ilija-lazoroski for the report and patch, with + credit to Mike Salvatore for patch review. + * [Support] #2178: Apply codespell to the codebase, which found a + lot of very old minor spelling mistakes in docstrings. Also + modernize many instances of *largs vs *args and **kwarg vs + **kwargs. Patch courtesy of Yaroslav Halchenko, with review from + Brian Skinn. +- 3.0.0: + * [Bug]: A handful of lower-level classes (notably + paramiko.message.Message and paramiko.pkey.PKey) previously + returned bytes objects from their implementation of __str__, even + under Python 3; and there was never any __bytes__ method. + * These issues have been fixed by renaming __str__ to __bytes__ and + relying on Python’s default “stringification returns the output of + __repr__” behavior re: any real attempts to str() such objects. + * [Bug] #2165: Streamline some redundant (and costly) byte + conversion calls in the packetizer and the core SFTP module. This + should lead to some SFTP speedups at the very least. Thanks to + Alex Gaynor for the patch. + * [Bug] #2110: Remove some unnecessary __repr__ calls when handling + bytes-vs-str conversions. This was apparently doing a lot of + unintentional data processing, which adds up in some use cases – + such as SFTP transfers, which may now be significantly faster. + Kudos to Shuhua Zhong for catch & patch. + * [Support]: Drop support for Python versions less than 3.6, + including Python 2. So long and thanks for all the fish! + * [Support]: Remove the now irrelevant paramiko.py3compat module. + * [Support]: paramiko.common.asbytes has been moved to + paramiko.util.asbytes. + * [Support]: PKey.__cmp__ has been removed. Ordering-oriented + comparison of key files is unlikely to have ever made sense (the + old implementation attempted to order by the hashes of the key + material) and so we have not bothered setting up __lt__ and + friends at this time. The class continues to have its original + __eq__ untouched. + * [Support]: The behavior of private key classes’ (ie anything + inheriting from PKey) private key writing methods used to perform + a manual, extra chmod call after writing. This hasn’t been + strictly necessary since the mid 2.x release line (when key + writing started giving the mode argument to os.open), and has now + been removed entirely. + * This should only be observable if you were mocking Paramiko’s + system calls during your own testing, or similar. + * [Support] #732: (also re: #630) SSHConfig used to straight-up + delete the proxycommand key from config lookup results when the + source config said ProxyCommand none. This has been altered to + preserve the key and give it the Python value None, thus making + the Python representation more in line with the source config + file. + * [Support]: paramiko.util.retry_on_signal (and any internal uses of + same, and also any internal retries of EINTR on eg socket + operations) has been removed. As of Python 3.5, per PEP 475, this + functionality (and retrying EINTR generally) is now part of the + standard library. + ------------------------------------------------------------------- Sun Apr 23 23:16:46 UTC 2023 - Matej Cepl diff --git a/python-paramiko.spec b/python-paramiko.spec index 6725b05..8141cd9 100644 --- a/python-paramiko.spec +++ b/python-paramiko.spec @@ -19,7 +19,7 @@ %define skip_python2 1 %{?sle15_python_module_pythons} Name: python-paramiko -Version: 2.12.0 +Version: 3.1.0 Release: 0 Summary: SSH2 protocol library License: LGPL-2.1-or-later @@ -27,33 +27,32 @@ Group: Documentation/Other URL: https://www.paramiko.org/ Source0: https://files.pythonhosted.org/packages/source/p/paramiko/paramiko-%{version}.tar.gz Patch0: paramiko-test_extend_timeout.patch -# PATCH-FIX-UPSTREAM paramiko-pr1665-remove-pytest-relaxed.patch gh#paramiko/paramiko#1665 -- pytest-relaxed is broken -Patch1: paramiko-pr1665-remove-pytest-relaxed.patch +# PATCH-FIX-OPENSUSE remove-icecream-dep.patch to do not depend on python-icecream +Patch1: remove-icecream-dep.patch BuildRequires: %{python_module PyNaCl >= 1.0.1} %if 0%{?suse_version} > 1500 BuildRequires: python3-Sphinx %else BuildRequires: %{python_module Sphinx} %endif -BuildRequires: %{python_module bcrypt >= 3.1.3} -BuildRequires: %{python_module cryptography >= 2.5} +BuildRequires: %{python_module bcrypt >= 3.2} +BuildRequires: %{python_module cryptography >= 3.3} BuildRequires: %{python_module gssapi} BuildRequires: %{python_module invocations} -BuildRequires: %{python_module invoke >= 1.3} +BuildRequires: %{python_module invoke >= 2.0} BuildRequires: %{python_module pyasn1 >= 0.1.7} +BuildRequires: %{python_module pytest-relaxed} BuildRequires: %{python_module pytest-xdist} BuildRequires: %{python_module pytest} BuildRequires: %{python_module setuptools} -BuildRequires: %{python_module six} BuildRequires: fdupes BuildRequires: python-rpm-macros Recommends: python-gssapi Recommends: python-invoke -Requires: python-PyNaCl >= 1.0.1 -Requires: python-bcrypt >= 3.1.3 -Requires: python-cryptography >= 2.5 +Requires: python-PyNaCl >= 1.5 +Requires: python-bcrypt >= 3.2 +Requires: python-cryptography >= 3.3 Requires: python-pyasn1 >= 0.1.7 -Requires: python-six BuildArch: noarch %python_subpackages @@ -91,10 +90,10 @@ find demos -name "*.py" -exec sed -i "/#\!\/usr\/bin\/.*/d" {} \; -exec chmod -x %python_expand %fdupes %{buildroot}%{$python_sitelib} %check -# https://github.com/paramiko/paramiko/issues/2027 -- despite being "completed" upstream, this is not fixed yet. -sed -i 's:from mock:from unittest.mock:' tests/test_*.py export LANG=en_US.UTF-8 -%pytest +# Do not test k5shell to avoid dependency +donttest="k5shell" +%pytest tests/test_*.py -k "not $donttest" %files %{python_files} %license LICENSE diff --git a/remove-icecream-dep.patch b/remove-icecream-dep.patch new file mode 100644 index 0000000..f3ffa0a --- /dev/null +++ b/remove-icecream-dep.patch @@ -0,0 +1,17 @@ +Index: paramiko-3.1.0/tests/conftest.py +=================================================================== +--- paramiko-3.1.0.orig/tests/conftest.py ++++ paramiko-3.1.0/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