[packages/python-cliff] - updated to 2.18.0 with some backported fixes

qboosh qboosh at pld-linux.org
Wed Jan 17 07:50:16 CET 2024


commit e74d25cfe2fccc8d86a88141d11d8d2d7b95b581
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Wed Jan 17 06:25:38 2024 +0100

    - updated to 2.18.0 with some backported fixes

 python-cliff-mock.patch        | 182 +++++++++++++++++++++++++++++++++++++++++
 python-cliff-prettytable.patch |  23 ++++++
 python-cliff-py2-test.patch    |  23 ++++++
 python-cliff-py310.patch       |  11 +++
 python-cliff.spec              |  94 ++++++++++++---------
 5 files changed, 294 insertions(+), 39 deletions(-)
---
diff --git a/python-cliff.spec b/python-cliff.spec
index 69b4336..2a0ca8f 100644
--- a/python-cliff.spec
+++ b/python-cliff.spec
@@ -1,69 +1,69 @@
 #
 # Conditional build:
-%bcond_with	tests	# do perform "make test"
+%bcond_without	tests	# unit tests
 %bcond_without	python2 # CPython 2.x module
 %bcond_without	python3 # CPython 3.x module
 
 Summary:	Command Line Interface Formulation Framework
+Summary(pl.UTF-8):	Command Line Interface Formulation Framework - szkielet formułowania linii poleceń
 Name:		python-cliff
-Version:	2.8.0
-Release:	7
+# keep 2.x here for python2 support
+Version:	2.18.0
+Release:	1
 License:	Apache
 Group:		Libraries/Python
-Source0:	https://pypi.python.org/packages/9e/26/7db86b6fb7bcf335e691a274b8f5141006ea87e7783e43d7ef5a498a09da/cliff-%{version}.tar.gz
-# Source0-md5:	6f1fcd6deb8068984f3f0e594f02f2b7
-URL:		https://pypi.python.org/pypi/cliff
+Source0:	https://files.pythonhosted.org/packages/source/c/cliff/cliff-%{version}.tar.gz
+# Source0-md5:	66490f2c437f543f32afe9e518e3c080
+Patch0:		%{name}-prettytable.patch
+Patch1:		%{name}-mock.patch
+Patch2:		%{name}-py310.patch
+Patch3:		%{name}-py2-test.patch
+URL:		https://pypi.org/project/cliff/
 BuildRequires:	rpm-pythonprov
 BuildRequires:	rpmbuild(macros) >= 1.714
 %if %{with python2}
+BuildRequires:	python-modules >= 1:2.7
 BuildRequires:	python-pbr >= 2.0.0
 BuildRequires:	python-setuptools
 %if %{with tests}
-BuildRequires:	python-PyYAML >= 3.10.0
-BuildRequires:	python-cmd2 >= 0.6.7
+BuildRequires:	python-PyYAML >= 3.12
+BuildRequires:	python-cmd2 >= 0.8.0
 BuildRequires:	python-coverage >= 4.0
 BuildRequires:	python-mock >= 2.0
 BuildRequires:	python-openstackdocstheme >= 1.11.0
-BuildRequires:	python-prettytable >= 0.7.1
+BuildRequires:	python-prettytable >= 0.7.2
 BuildRequires:	python-pyparsing >= 2.1.0
-BuildRequires:	python-six >= 1.9.0
+BuildRequires:	python-six >= 1.10.0
 BuildRequires:	python-stevedore >= 1.20.0
-BuildRequires:	python-subunit >= 0.0.18
+BuildRequires:	python-subunit >= 1.0.0
 BuildRequires:	python-testrepository >= 0.0.18
 BuildRequires:	python-testscenarios >= 0.4
-BuildRequires:	python-testtools >= 1.4.0
+BuildRequires:	python-testtools >= 2.2.0
 BuildRequires:	python-unicodecsv >= 0.8.0
-BuildRequires:	sphinx-pdg-2 >= 1.6.2
+BuildRequires:	sphinx-pdg-2 >= 1.7.0
 %endif
 %endif
 %if %{with python3}
-BuildRequires:	python3-modules
+BuildRequires:	python3-modules >= 1:3.6
 BuildRequires:	python3-pbr >= 2.0.0
 %if %{with tests}
-BuildRequires:	python3-PyYAML >= 3.10.0
-BuildRequires:	python3-cmd2 >= 0.6.7
+BuildRequires:	python3-PyYAML >= 3.12
+BuildRequires:	python3-cmd2 >= 0.8.0
 BuildRequires:	python3-coverage >= 4.0
-BuildRequires:	python3-mock >= 2.0
 BuildRequires:	python3-openstackdocstheme >= 1.11.0
-BuildRequires:	python3-prettytable >= 0.7.1
+BuildRequires:	python3-prettytable >= 0.7.2
 BuildRequires:	python3-pyparsing >= 2.1.0
-BuildRequires:	python3-six >= 1.9.0
+BuildRequires:	python3-six >= 1.10.0
 BuildRequires:	python3-stevedore >= 1.20.0
-BuildRequires:	python3-subunit >= 0.0.18
+BuildRequires:	python3-subunit >= 1.0.0
 BuildRequires:	python3-testrepository >= 0.0.18
 BuildRequires:	python3-testscenarios >= 0.4
-BuildRequires:	python3-testtools >= 1.4.0
-BuildRequires:	sphinx-pdg-3 >= 1.6.2
+BuildRequires:	python3-testtools >= 2.2.0
+BuildRequires:	sphinx-pdg-3 >= 1.7.0
 %endif
 %endif
 BuildRequires:	sed >= 4.0
-Requires:	python-PyYAML >= 3.10.0
-Requires:	python-cmd2 >= 0.6.7
-Requires:	python-prettytable >= 0.7.1
-Requires:	python-pyparsing >= 2.1.0
-Requires:	python-six >= 1.9.0
-Requires:	python-stevedore >= 1.20.0
-Requires:	python-unicodecsv >= 0.8.0
+Requires:	python-modules >= 1:2.7
 BuildArch:	noarch
 BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
@@ -72,31 +72,51 @@ cliff is a framework for building command line programs. It uses
 setuptools entry points to provide subcommands, output formatters, and
 other extensions.
 
+%description -l pl.UTF-8
+cliff to szkielet do budowania programów działających z linii poleceń.
+Wykorzystuje punkty wejściowe setuptools do zapewnienia podpoleceń,
+funkcje formatujące wyjścia i inne rozszerzenia.
+
 %package -n python3-cliff
 Summary:	Command Line Interface Formulation Framework
+Summary(pl.UTF-8):	Command Line Interface Formulation Framework - szkielet formułowania linii poleceń
 Group:		Libraries/Python
-Requires:	python3-PyYAML >= 3.10.0
-Requires:	python3-cmd2 >= 0.6.7
-Requires:	python3-prettytable >= 0.7.1
-Requires:	python3-pyparsing >= 2.1.0
-Requires:	python3-six >= 1.9.0
-Requires:	python3-stevedore >= 1.20.0
+Requires:	python3-modules >= 1:3.6
 
 %description -n python3-cliff
 cliff is a framework for building command line programs. It uses
 setuptools entry points to provide subcommands, output formatters, and
 other extensions.
 
+%description -n python3-cliff -l pl.UTF-8
+cliff to szkielet do budowania programów działających z linii poleceń.
+Wykorzystuje punkty wejściowe setuptools do zapewnienia podpoleceń,
+funkcje formatujące wyjścia i inne rozszerzenia.
+
 %prep
 %setup -q -n cliff-%{version}
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
 
 %build
 %if %{with python2}
+export PYTHON="%{__python}"
 %py_build %{?with_tests:test}
+
+%if %{with tests}
+%{__rm} -r .testrepository
+%endif
 %endif
 
 %if %{with python3}
+export PYTHON="%{__python3}"
 %py3_build %{?with_tests:test}
+
+%if %{with tests}
+%{__rm} -r .testrepository
+%endif
 %endif
 
 %install
@@ -110,10 +130,6 @@ rm -rf $RPM_BUILD_ROOT
 
 %if %{with python3}
 %py3_install
-
-# python dependency generator does not support conditionals
-# remove python2-only dependencies here
-sed -i -e"/python_version<'3.0'/,+1 d" $RPM_BUILD_ROOT%{py3_sitescriptdir}/cliff-%{version}-py*.egg-info/requires.txt
 %endif
 
 %if %{with python2}
diff --git a/python-cliff-mock.patch b/python-cliff-mock.patch
new file mode 100644
index 0000000..b3d95b5
--- /dev/null
+++ b/python-cliff-mock.patch
@@ -0,0 +1,182 @@
+--- cliff-2.18.0/cliff/tests/test_app.py.orig	2020-01-08 21:36:15.000000000 +0100
++++ cliff-2.18.0/cliff/tests/test_app.py	2024-01-16 20:07:52.707414769 +0100
+@@ -21,7 +21,10 @@ except ImportError:
+     from io import StringIO
+ import sys
+ 
+-import mock
++try:
++    from unittest import mock
++except ImportError:
++    import mock
+ import six
+ 
+ from cliff import app as application
+--- cliff-2.18.0/cliff/tests/test_command_hooks.py.orig	2020-01-08 21:36:15.000000000 +0100
++++ cliff-2.18.0/cliff/tests/test_command_hooks.py	2024-01-16 20:08:13.197303765 +0100
+@@ -18,7 +18,10 @@ from cliff import lister
+ from cliff import show
+ from cliff.tests import base
+ 
+-import mock
++try:
++    from unittest import mock
++except ImportError:
++    import mock
+ from stevedore import extension
+ 
+ 
+--- cliff-2.18.0/cliff/tests/test_commandmanager.py.orig	2024-01-16 20:08:35.477183065 +0100
++++ cliff-2.18.0/cliff/tests/test_commandmanager.py	2024-01-16 20:08:38.507166650 +0100
+@@ -10,7 +10,10 @@
+ #  License for the specific language governing permissions and limitations
+ #  under the License.
+ 
+-import mock
++try:
++    from unittest import mock
++except ImportError:
++    import mock
+ import testscenarios
+ 
+ from cliff import command
+--- cliff-2.18.0/cliff/tests/test_complete.py.orig	2020-01-08 21:36:15.000000000 +0100
++++ cliff-2.18.0/cliff/tests/test_complete.py	2024-01-16 20:09:30.896882831 +0100
+@@ -13,7 +13,10 @@
+ """Bash completion tests
+ """
+ 
+-import mock
++try:
++    from unittest import mock
++except ImportError:
++    import mock
+ 
+ from cliff import app as application
+ from cliff import commandmanager
+--- cliff-2.18.0/cliff/tests/test_formatters_csv.py.orig	2020-01-08 21:36:15.000000000 +0100
++++ cliff-2.18.0/cliff/tests/test_formatters_csv.py	2024-01-16 20:09:46.763463541 +0100
+@@ -16,7 +16,10 @@
+ import argparse
+ import unittest
+ 
+-import mock
++try:
++    from unittest import mock
++except ImportError:
++    import mock
+ import six
+ 
+ from cliff.formatters import commaseparated
+--- cliff-2.18.0/cliff/tests/test_formatters_json.py.orig	2020-01-08 21:36:15.000000000 +0100
++++ cliff-2.18.0/cliff/tests/test_formatters_json.py	2024-01-16 20:10:12.289991918 +0100
+@@ -18,7 +18,10 @@ from cliff.formatters import json_format
+ from cliff.tests import base
+ from cliff.tests import test_columns
+ 
+-import mock
++try:
++    from unittest import mock
++except ImportError:
++    import mock
+ import six
+ 
+ 
+--- cliff-2.18.0/cliff/tests/test_formatters_shell.py.orig	2024-01-16 20:10:30.733225336 +0100
++++ cliff-2.18.0/cliff/tests/test_formatters_shell.py	2024-01-16 20:10:36.759859354 +0100
+@@ -19,7 +19,10 @@ from cliff.formatters import shell
+ from cliff.tests import base
+ from cliff.tests import test_columns
+ 
+-import mock
++try:
++    from unittest import mock
++except ImportError:
++    import mock
+ 
+ 
+ class TestShellFormatter(base.TestBase):
+--- cliff-2.18.0/cliff/tests/test_formatters_table.py.orig	2020-01-08 21:36:15.000000000 +0100
++++ cliff-2.18.0/cliff/tests/test_formatters_table.py	2024-01-16 20:10:55.843089304 +0100
+@@ -16,7 +16,10 @@ import argparse
+ import os
+ import textwrap
+ 
+-import mock
++try:
++    from unittest import mock
++except ImportError:
++    import mock
+ from six import StringIO
+ 
+ from cliff.formatters import table
+--- cliff-2.18.0/cliff/tests/test_formatters_yaml.py.orig	2020-01-08 21:36:15.000000000 +0100
++++ cliff-2.18.0/cliff/tests/test_formatters_yaml.py	2024-01-16 20:11:10.639675811 +0100
+@@ -19,7 +19,10 @@ from cliff.formatters import yaml_format
+ from cliff.tests import base
+ from cliff.tests import test_columns
+ 
+-import mock
++try:
++    from unittest import mock
++except ImportError:
++    import mock
+ 
+ 
+ class TestYAMLFormatter(base.TestBase):
+--- cliff-2.18.0/cliff/tests/test_help.py.orig	2020-01-08 21:36:15.000000000 +0100
++++ cliff-2.18.0/cliff/tests/test_help.py	2024-01-16 20:11:20.262957010 +0100
+@@ -17,7 +17,10 @@ except ImportError:
+ import os
+ import sys
+ 
+-import mock
++try:
++    from unittest import mock
++except ImportError:
++    import mock
+ 
+ from cliff import app as application
+ from cliff import commandmanager
+--- cliff-2.18.0/cliff/tests/test_lister.py.orig	2020-01-08 21:36:15.000000000 +0100
++++ cliff-2.18.0/cliff/tests/test_lister.py	2024-01-16 20:11:28.762910962 +0100
+@@ -17,7 +17,10 @@ import weakref
+ from cliff import lister
+ from cliff.tests import base
+ 
+-import mock
++try:
++    from unittest import mock
++except ImportError:
++    import mock
+ 
+ 
+ class FauxFormatter(object):
+--- cliff-2.18.0/cliff/tests/test_show.py.orig	2020-01-08 21:36:15.000000000 +0100
++++ cliff-2.18.0/cliff/tests/test_show.py	2024-01-16 20:11:54.516104778 +0100
+@@ -17,7 +17,10 @@ import weakref
+ from cliff import show
+ from cliff.tests import base
+ 
+-import mock
++try:
++    from unittest import mock
++except ImportError:
++    import mock
+ 
+ 
+ class FauxFormatter(object):
+--- cliff-2.18.0/cliff/tests/test_utils.py.orig	2020-01-08 21:36:15.000000000 +0100
++++ cliff-2.18.0/cliff/tests/test_utils.py	2024-01-16 20:12:03.082725036 +0100
+@@ -17,7 +17,10 @@ import struct
+ import sys
+ import unittest
+ 
+-import mock
++try:
++    from unittest import mock
++except ImportError:
++    import mock
+ 
+ from cliff import utils
+ from cliff.tests import base
diff --git a/python-cliff-prettytable.patch b/python-cliff-prettytable.patch
new file mode 100644
index 0000000..e49f6cc
--- /dev/null
+++ b/python-cliff-prettytable.patch
@@ -0,0 +1,23 @@
+--- cliff-2.18.0/requirements.txt.orig	2020-01-08 21:36:15.000000000 +0100
++++ cliff-2.18.0/requirements.txt	2024-01-16 19:44:20.708397557 +0100
+@@ -3,7 +3,7 @@
+ # process, which may cause wedges in the gate later.
+ pbr!=2.1.0,>=2.0.0 # Apache-2.0
+ cmd2>=0.8.0,!=0.8.3,<0.9.0 # MIT
+-PrettyTable<0.8,>=0.7.2 # BSD
++PrettyTable>=0.7.2 # BSD
+ pyparsing>=2.1.0 # MIT
+ six>=1.10.0 # MIT
+ stevedore>=1.20.0 # Apache-2.0
+--- cliff-2.18.0/cliff/formatters/table.py.orig	2020-01-08 21:36:15.000000000 +0100
++++ cliff-2.18.0/cliff/formatters/table.py	2024-01-16 19:45:25.351380690 +0100
+@@ -176,9 +176,6 @@ class TableFormatter(base.ListFormatter,
+ 
+     @staticmethod
+     def _assign_max_widths(stdout, x, max_width, min_width=0, fit_width=False):
+-        if min_width:
+-            x.min_width = min_width
+-
+         if max_width > 0:
+             term_width = max_width
+         elif not fit_width:
diff --git a/python-cliff-py2-test.patch b/python-cliff-py2-test.patch
new file mode 100644
index 0000000..993ea6d
--- /dev/null
+++ b/python-cliff-py2-test.patch
@@ -0,0 +1,23 @@
+It fails now - something changed in codecs or six?
+There is no fix to backport because cliff>=3 dropped py2 support
+--- cliff-2.18.0/cliff/tests/test_app.py.orig	2024-01-16 20:52:28.136254060 +0100
++++ cliff-2.18.0/cliff/tests/test_app.py	2024-01-16 20:58:52.597504588 +0100
+@@ -525,18 +525,6 @@ class TestIO(base.TestBase):
+         text_utf8 = text.encode('utf-8')
+ 
+         if six.PY2:
+-            # In PY2 StreamWriter can't accept non-ASCII encoded characters
+-            # because it must first promote the encoded byte stream to
+-            # unicode in order to encode it in the desired encoding.
+-            # Because the encoding of the byte stream is not known at this
+-            # point the default-encoding of ASCII is utilized, but you can't
+-            # decode a non-ASCII charcater to ASCII.
+-            io = six.StringIO()
+-            writer = codecs.getwriter('utf-8')(io)
+-            self.assertRaises(UnicodeDecodeError,
+-                              writer.write,
+-                              text_utf8)
+-
+             # In PY2 with our override of codecs.getwriter we do not
+             # attempt to encode bytes in a str object (only unicode
+             # objects) therefore the final output string should be the
diff --git a/python-cliff-py310.patch b/python-cliff-py310.patch
new file mode 100644
index 0000000..3bc67ed
--- /dev/null
+++ b/python-cliff-py310.patch
@@ -0,0 +1,11 @@
+--- cliff-2.18.0/cliff/tests/test_help.py.orig	2024-01-16 20:13:24.252285303 +0100
++++ cliff-2.18.0/cliff/tests/test_help.py	2024-01-16 20:49:44.113809312 +0100
+@@ -107,7 +107,7 @@ class TestHelp(base.TestBase):
+         help_text = stdout.getvalue()
+         basecommand = os.path.split(sys.argv[0])[1]
+         self.assertIn('usage: %s [--version]' % basecommand, help_text)
+-        self.assertIn('optional arguments:\n  --version', help_text)
++        self.assertRegex(help_text, 'option(s|al arguments):\n  --version', help_text)
+         expected = (
+             '  one            Test command.\n'
+             '  three word command  Test command.\n'
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/python-cliff.git/commitdiff/e74d25cfe2fccc8d86a88141d11d8d2d7b95b581



More information about the pld-cvs-commit mailing list