From e024a12334ee9ab51579ee1a43aa0277f3d257f2402842edf110cc7dd8cb4c18 Mon Sep 17 00:00:00 2001 From: Lee Duncan Date: Mon, 24 Mar 2025 19:46:36 +0000 Subject: [PATCH] - Upgrade to current latest upstream, which is a few commits past v2.0.0: * Update pre-commit hooks, ruff rules * Improve backwards configshell-fb compatibility * Fix: log truncated * v2.0.0 * Add pypi publish and pre-commit workflows * Add backwards compatibility with _fb module name * Explicitly declare wheel build target dir * Adding -fb suffix to module name * Remove urwid dependency * Adding pre-commit config * Use f-strings * Use Pathlib * Refactoring to Python>=3.9, adding ruff rules * Move to PEP-621; Use configshell module name * six is unneeded, get rid of it * Fix help messages without a trailing newline * Remove usage of six Note that the last item means we can do away with the patch: * no-six.patch (removed) OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-configshell-fb?expand=0&rev=40 --- .gitattributes | 23 +++ .gitignore | 1 + _service | 19 ++ _servicedata | 6 + no-six.patch | 160 +++++++++++++++ python-configshell-fb-1.1.30.tar.xz | 3 + ...configshell-fb-2.0.0-5.7088593241b4.tar.xz | 3 + python-configshell-fb.changes | 192 ++++++++++++++++++ python-configshell-fb.spec | 86 ++++++++ 9 files changed, 493 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 _service create mode 100644 _servicedata create mode 100644 no-six.patch create mode 100644 python-configshell-fb-1.1.30.tar.xz create mode 100644 python-configshell-fb-2.0.0-5.7088593241b4.tar.xz create mode 100644 python-configshell-fb.changes create mode 100644 python-configshell-fb.spec diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/_service b/_service new file mode 100644 index 0000000..a1e49f1 --- /dev/null +++ b/_service @@ -0,0 +1,19 @@ + + + git + https://github.com/open-iscsi/configshell-fb.git + yes + python-configshell-fb + master + master + 2.0.0-@TAG_OFFSET@.%h + v(\d*\.\d*\.)(\d*) + \1\2 + v2.0.0* + + + *configshell-fb*.tar + xz + + + diff --git a/_servicedata b/_servicedata new file mode 100644 index 0000000..0a1333d --- /dev/null +++ b/_servicedata @@ -0,0 +1,6 @@ + + + https://github.com/open-iscsi/rtslib-fb.git + b37bc67fc7ed3d1ec447e9f43eb68d30dd716367 + https://github.com/open-iscsi/configshell-fb.git + 7e3b8ebe12519ad5cc20a9654a7c070b2ecf3cd8 \ No newline at end of file diff --git a/no-six.patch b/no-six.patch new file mode 100644 index 0000000..7161e19 --- /dev/null +++ b/no-six.patch @@ -0,0 +1,160 @@ +Index: python-configshell-fb-1.1.30/configshell/console.py +=================================================================== +--- python-configshell-fb-1.1.30.orig/configshell/console.py ++++ python-configshell-fb-1.1.30/configshell/console.py +@@ -17,7 +17,6 @@ under the License. + + from fcntl import ioctl + import re +-import six + import struct + import sys + from termios import TIOCGWINSZ, TCSADRAIN, tcsetattr, tcgetattr +Index: python-configshell-fb-1.1.30/configshell/node.py +=================================================================== +--- python-configshell-fb-1.1.30.orig/configshell/node.py ++++ python-configshell-fb-1.1.30/configshell/node.py +@@ -17,7 +17,6 @@ under the License. + + import inspect + import re +-import six + + class ExecutionError(Exception): + pass +@@ -503,7 +502,7 @@ class ConfigNode(object): + elif group not in self.list_config_groups(): + raise ExecutionError("Unknown configuration group: %s" % group) + +- for param, value in six.iteritems(parameter): ++ for param, value in parameter.items(): + if param not in self.list_group_params(group): + raise ExecutionError("Unknown parameter %s in group '%s'." + % (param, group)) +@@ -1256,7 +1255,7 @@ class ConfigNode(object): + bookmarks += "No bookmarks yet.\n" + else: + for (bookmark, path) \ +- in six.iteritems(self.shell.prefs['bookmarks']): ++ in self.shell.prefs['bookmarks'].items(): + if len(bookmark) == 1: + bookmark += '\0' + underline = ''.ljust(len(bookmark), '-') +@@ -1703,7 +1702,7 @@ class ConfigNode(object): + return [] + else: + params = [] +- for p_name, p_def in six.iteritems(self._configuration_groups[group]): ++ for p_name, p_def in self._configuration_groups[group].items(): + (p_type, p_description, p_writable) = p_def + if writable is not None and p_writable != writable: + continue +Index: python-configshell-fb-1.1.30/configshell/prefs.py +=================================================================== +--- python-configshell-fb-1.1.30.orig/configshell/prefs.py ++++ python-configshell-fb-1.1.30/configshell/prefs.py +@@ -16,8 +16,8 @@ under the License. + ''' + + import os +-import six + import fcntl ++import pickle + + class Prefs(object): + ''' +@@ -116,7 +116,7 @@ class Prefs(object): + @return: Iterates on the items in preferences. + @rtype: yields items that are (key, value) pairs + ''' +- return six.iteritems(self._prefs) ++ return self._prefs.items() + + def save(self, filename=None): + ''' +@@ -132,7 +132,7 @@ class Prefs(object): + fsock = open(filename, 'wb') + fcntl.lockf(fsock, fcntl.LOCK_UN) + try: +- six.moves.cPickle.dump(self._prefs, fsock, 2) ++ pickle.dump(self._prefs, fsock, 2) + finally: + fsock.close() + +@@ -148,6 +148,6 @@ class Prefs(object): + fsock = open(filename, 'rb') + fcntl.lockf(fsock, fcntl.LOCK_SH) + try: +- self._prefs = six.moves.cPickle.load(fsock) ++ self._prefs = pickle.load(fsock) + finally: + fsock.close() +Index: python-configshell-fb-1.1.30/configshell/shell.py +=================================================================== +--- python-configshell-fb-1.1.30.orig/configshell/shell.py ++++ python-configshell-fb-1.1.30/configshell/shell.py +@@ -16,7 +16,6 @@ under the License. + ''' + + import os +-import six + import sys + from pyparsing import (alphanums, Empty, Group, locatedExpr, + OneOrMore, Optional, ParseResults, Regex, +@@ -173,7 +172,7 @@ class ConfigShell(object): + self.log.warning("Could not load preferences file %s." + % self._prefs_file) + +- for pref, value in six.iteritems(self.default_prefs): ++ for pref, value in self.default_prefs.items(): + if pref not in self.prefs: + self.prefs[pref] = value + +@@ -239,7 +238,7 @@ class ConfigShell(object): + else: + nr_cols = 1 + +- for i in six.moves.range(0, len(matches), nr_cols): ++ for i in range(0, len(matches), nr_cols): + self.con.raw_write(''.join(matches[i:i+nr_cols])) + self.con.raw_write('\n') + +@@ -402,7 +401,7 @@ class ConfigShell(object): + for index in range(len(pparams)): + if index < len(cmd_params): + current_parameters[cmd_params[index]] = pparams[index] +- for key, value in six.iteritems(kparams): ++ for key, value in kparams.items(): + current_parameters[key] = value + self._completion_help_topic = command + completion_method = target.get_completion_method(command) +@@ -550,7 +549,7 @@ class ConfigShell(object): + current_parameters = {} + for index in range(len(pparams)): + current_parameters[cmd_params[index]] = pparams[index] +- for key, value in six.iteritems(kparams): ++ for key, value in kparams.items(): + current_parameters[key] = value + completion_method = target.get_completion_method(command) + if completion_method: +@@ -722,7 +721,7 @@ class ConfigShell(object): + try: + readline.parse_and_bind("tab: complete") + readline.set_completer(self._complete) +- cmdline = six.moves.input(self._get_prompt()).strip() ++ cmdline = input(self._get_prompt()).strip() + except EOFError: + self.con.raw_write('exit\n') + cmdline = "exit" +Index: python-configshell-fb-1.1.30/setup.py +=================================================================== +--- python-configshell-fb-1.1.30.orig/setup.py ++++ python-configshell-fb-1.1.30/setup.py +@@ -43,7 +43,6 @@ setup( + packages = ['configshell', 'configshell_fb'], + install_requires = [ + 'pyparsing >=2.0.2', +- 'six', + 'urwid', + ], + classifiers = [ diff --git a/python-configshell-fb-1.1.30.tar.xz b/python-configshell-fb-1.1.30.tar.xz new file mode 100644 index 0000000..245f15f --- /dev/null +++ b/python-configshell-fb-1.1.30.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f38784e622350115d8dac931eada2158894fff0b7b146aa96052e6202827a11 +size 28652 diff --git a/python-configshell-fb-2.0.0-5.7088593241b4.tar.xz b/python-configshell-fb-2.0.0-5.7088593241b4.tar.xz new file mode 100644 index 0000000..426f741 --- /dev/null +++ b/python-configshell-fb-2.0.0-5.7088593241b4.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db289fffb3633725ba24e43bebd7f65ee7f63023856b0beb0cd761bd10763152 +size 361716 diff --git a/python-configshell-fb.changes b/python-configshell-fb.changes new file mode 100644 index 0000000..bc71a0e --- /dev/null +++ b/python-configshell-fb.changes @@ -0,0 +1,192 @@ +------------------------------------------------------------------- +Mon Mar 24 15:43:17 UTC 2025 - Lee Duncan + +- Upgrade to current latest upstream, which is a few + commits past v2.0.0: + * Update pre-commit hooks, ruff rules + * Improve backwards configshell-fb compatibility + * Fix: log truncated + * v2.0.0 + * Add pypi publish and pre-commit workflows + * Add backwards compatibility with _fb module name + * Explicitly declare wheel build target dir + * Adding -fb suffix to module name + * Remove urwid dependency + * Adding pre-commit config + * Use f-strings + * Use Pathlib + * Refactoring to Python>=3.9, adding ruff rules + * Move to PEP-621; Use configshell module name + * six is unneeded, get rid of it + * Fix help messages without a trailing newline + * Remove usage of six + + Note that the last item means we can do away with the patch: + * no-six.patch (removed) + +------------------------------------------------------------------- +Tue Apr 16 12:25:42 UTC 2024 - Markéta Machová + +- Add no-six.patch to get rid of unneeded six dependency + +------------------------------------------------------------------- +Sun Jul 2 15:23:07 UTC 2023 - Lee Duncan + +- Upgrade to latest upstream version v1.1.30: + * setup.py: relax pyparsing version restriction + * Replace more occurrences of getargspec() with getfullargspec() + * replace getargspec() with getfullargspec() + +------------------------------------------------------------------- +Fri Apr 21 12:23:32 UTC 2023 - Dirk Müller + +- add sle15_python_module_pythons (jsc#PED-68) + +------------------------------------------------------------------- +Sun Sep 19 20:06:38 UTC 2021 - Lee Duncan + +- Upgrade to latest upstream version v1.1.29 (jre#SLE-17360): + * setup.py: specify a version range for pyparsing + * setup.py: lets stick to pyparsing v2.4.7 + * Don't warn if prefs file doesn't exist + +------------------------------------------------------------------- +Sat Jan 30 21:39:26 UTC 2021 - Lee Duncan + +- Update to version v1.1.28 from v1.1.27 (jre#SLE-17360): + * version 1.1.28 + * Ensure that all output reaches the client when daemonized + * Remove Epydoc markup from command messages + * Remove epydoc imports and epydoc calls + Which removed the need for patch: + * Ensure-that-all-output-reaches-the-client-when-daemo.patch + +------------------------------------------------------------------- +Tue Mar 03 17:32:48 UTC 2020 - lduncan@suse.com + +- Update to version v1.1.27 from v1.1.26 (jre#SLE-7751): + * version 1.1.27 + * Use pyparsing's locatedExpr instead of our custom helper + And updated the SPEC file, also adding a _service file. + Replacing configshell-fb-1.1.26.tar.gz with + python-configshell-fb-v1.1.27.tar.xz, and adding one + upstrem patch: + * Ensure-that-all-output-reaches-the-client-when-daemo.patch + +------------------------------------------------------------------- +Mon Sep 16 17:27:49 UTC 2019 - Lee Duncan + +- Updated to latest upstream version 1.1.26. There were not very + many changes: + * Version number no longer contains "fb" to designate "free + branch", e.g. old was 1.1.fb25, new is 1.1.26 + * Add urwid to setup.py dependencies + * Fix failing to parse params with additional chars + * export __version__ variable + resulting in replacing configshell-fb-1.1.25.tar.gz with + configshell-fb-1.1.26.tar.gz, and corresponding SPEC-file + updates. + +------------------------------------------------------------------- +Fri Mar 8 14:41:00 CET 2019 - Matej Cepl + +- Using now new proper upstream release 1.1.25: + - Fix failing to parse param like pool/rbd;id=user + - Acquire a lock to a preference file before working with it + - Fix failing to pasre param like "cfgstr,par=val" + - Remove explicit dependency on /usr/bin/python + - make run_cmdline() log "Running command line" msg to new loglevel + - tweak ConfigShell.run_stdin() to strip whitespace/newline from cmds + - Fix failing to pasre par=val parameters + - Add missing dependency on pyparsing and six + - Fix path regex for [ and ] + - Handle if TERM is not set + +------------------------------------------------------------------- +Tue Dec 4 12:46:52 UTC 2018 - Matej Cepl + +- Remove superfluous devel dependency for noarch package + +------------------------------------------------------------------- +Thu Oct 18 23:37:59 UTC 2018 - opensuse-packaging@opensuse.org + +- Update to version 1.1.fb23: + * version 1.1.25 + * Fix failing to parse param like pool/rbd;id=user + * Acquire a lock to a preference file before working with it + * Fix failing to pasre param like "cfgstr,par=val" + * version 1.1.fb24 + * Remove explicit dependency on /usr/bin/python + * make run_cmdline() log "Running command line" msg to new loglevel + * tweak ConfigShell.run_stdin() to strip whitespace/newline from cmds + * Fix failing to pasre par=val parameters + * Add missing dependency on pyparsing and six + * Fix path regex for [ and ] + * Handle if TERM is not set + Replacing configshell-fb-1.1.fb23.tar.xz with configshell-fb-1.1.fb25.tar.xz, + and updating the SPEC file. Also, two patches subsumed/removed: + * configshell-fb-example-should-not-specify-path.patch + * configshell-fb-Handle-if-TERM-is-not-set.patch + +------------------------------------------------------------------- +Sun Feb 25 08:09:45 UTC 2018 - olaf@aepfle.de + +- Fix upgrade path by provide/obsolete python-configshell (bsc#1082693) + +------------------------------------------------------------------- +Wed Jan 3 16:02:44 UTC 2018 - tchvatal@suse.com + +- Do not build epydoc documentation to allow py3 only build + +------------------------------------------------------------------- +Fri Dec 8 19:34:23 UTC 2017 - lduncan@suse.com + +- Converting RPM SPEC file to singlespec format (bsc#1045332), + adding patch: + * configshell-fb-example-should-not-specify-path.patch +- Fix targetcli.service problem when TERM not set (bsc#1071194), + adding patch (from LSZhu): + * configshell-fb-Handle-if-TERM-is-not-set.patch +- Moved build requirement on urwid to runtime requirement, + as suggested by scarabeus_iv +- ran spec-cleaner to clean up SPEC file +- Converted from manually-added configshell-fb tar file to + tar_scm service-generated file by adding _service and + _servicedata + +------------------------------------------------------------------- +Thu Aug 17 06:11:22 UTC 2017 - lszhu@suse.com + +- Update to version 1.1.23fb + *improving ALUA and TCMU support + +------------------------------------------------------------------- +Mon Feb 27 09:10:39 UTC 2017 - shshyukriev@suse.com + +- Update to v 1.1.22fb + *Fixed github source namespace + +------------------------------------------------------------------- +Fri Jun 24 23:17:34 UTC 2016 - lduncan@suse.com + +- Updated spec file: added Conflicts for python-configshell + (bsc#986475) + +------------------------------------------------------------------- +Fri Jun 24 15:20:29 UTC 2016 - lduncan@suse.com + +- Updated SPEC file: removed "Provides"/"Obsoletes" for + package name "python-confishell" (bsc#984935) + +------------------------------------------------------------------- +Fri May 6 07:36:56 UTC 2016 - dmueller@suse.com + +- cleanup buildroot parts + +------------------------------------------------------------------- +Tue Apr 19 17:28:26 UTC 2016 - lduncan@suse.com + +- Initial creation of this package, from upstream + version 1.1.fb20 + +------------------------------------------------------------------- diff --git a/python-configshell-fb.spec b/python-configshell-fb.spec new file mode 100644 index 0000000..b2029e7 --- /dev/null +++ b/python-configshell-fb.spec @@ -0,0 +1,86 @@ +# +# spec file for package python-configshell-fb +# +# Copyright (c) 2025 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%{?sle15_python_module_pythons} + +%define configshell_service_tag 5.7088593241b4 + +Name: python-configshell-fb +Version: 2.0.0 +Release: 0%{?dist} +Summary: A Python library for building configuration shells +License: Apache-2.0 +Group: Development/Libraries/Python +URL: https://github.com/open-iscsi/configshell-fb +Source: %{name}-%{version}-%{configshell_service_tag}.tar.xz +BuildRequires: %{python_module hatch_vcs} +BuildRequires: %{python_module hatchling} +BuildRequires: %{python_module pip} +BuildRequires: %{python_module pyparsing} +BuildRequires: %{python_module setuptools} +BuildRequires: %{python_module wheel} +BuildRequires: git +BuildRequires: python-rpm-macros +Requires: %{_bindir}/env +Requires: python-pyparsing +Requires: python-urwid +Provides: python-configshell = %{version}-%{release} +Obsoletes: python-configshell < %{version} +BuildArch: noarch +%python_subpackages + +%description +configshell-fb is a Python library that provides a framework for building simple +but nice CLI-based applications. + +configshell-fb is a fork of the "configshell" code written by RisingTide +Systems. The "-fb" differentiates between the original and this version. Please +ensure to use either all "fb" versions of the targetcli components -- targetcli, +rtslib, and configshell, or stick with all non-fb versions, since they are +no longer strictly compatible. + +%package doc +Summary: Documentation for Python configshell-fb +Group: Documentation/HTML + +%description doc +configshell-fb is a Python library that provides a framework for building simple +but nice CLI-based applications. + +configshell-fb is a fork of the "configshell" code written by RisingTide +Systems. The "-fb" differentiates between the original and this version. Please +ensure to use either all "fb" versions of the targetcli components -- targetcli, +rtslib, and configshell, or stick with all non-fb versions, since they are +no longer strictly compatible. + +%prep +%autosetup -p1 -n %{name}-%{version}-%{configshell_service_tag} + +%build +%pyproject_wheel + +%install +%pyproject_install + +%files %{python_files} +%license COPYING +%doc README.md +%{python_sitelib}/configshell* +%pycache_only %{python_sitelib}/__pycache__ + +%changelog