Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-cliff for openSUSE:Factory 
checked in at 2026-03-16 14:18:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-cliff (Old)
 and      /work/SRC/openSUSE:Factory/.python-cliff.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-cliff"

Mon Mar 16 14:18:04 2026 rev:50 rq:1339302 version:4.13.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-cliff/python-cliff.changes        
2026-01-22 15:19:34.963740820 +0100
+++ /work/SRC/openSUSE:Factory/.python-cliff.new.8177/python-cliff.changes      
2026-03-16 14:21:20.435281840 +0100
@@ -1,0 +2,12 @@
+Mon Mar 16 09:31:19 UTC 2026 - Dirk Müller <[email protected]>
+
+- add cmd2-3.1.0-compat.patch
+
+-------------------------------------------------------------------
+Mon Feb 23 09:28:14 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 4.13.2:
+  * Revert "Deprecate CommandManager namespace argument"
+  * Add typing classifier
+
+-------------------------------------------------------------------

Old:
----
  cliff-4.13.1.tar.gz

New:
----
  cliff-4.13.2.tar.gz
  cmd2-3.1.0-compat.patch

----------(New B)----------
  New:
- add cmd2-3.1.0-compat.patch
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-cliff.spec ++++++
--- /var/tmp/diff_new_pack.SS2mRn/_old  2026-03-16 14:21:20.943302964 +0100
+++ /var/tmp/diff_new_pack.SS2mRn/_new  2026-03-16 14:21:20.947303130 +0100
@@ -18,12 +18,13 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-cliff
-Version:        4.13.1
+Version:        4.13.2
 Release:        0
 Summary:        Command Line Interface Formulation Framework
 License:        Apache-2.0
 URL:            https://docs.openstack.org/cliff/latest/
 Source:         
https://files.pythonhosted.org/packages/source/c/cliff/cliff-%{version}.tar.gz
+Patch1:         cmd2-3.1.0-compat.patch
 BuildRequires:  %{python_module pip}
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  %{python_module wheel}

++++++ cliff-4.13.1.tar.gz -> cliff-4.13.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cliff-4.13.1/ChangeLog new/cliff-4.13.2/ChangeLog
--- old/cliff-4.13.1/ChangeLog  2025-12-18 15:11:35.000000000 +0100
+++ new/cliff-4.13.2/ChangeLog  2026-02-17 15:45:10.000000000 +0100
@@ -1,6 +1,12 @@
 CHANGES
 =======
 
+4.13.2
+------
+
+* Revert "Deprecate CommandManager namespace argument"
+* Add typing classifier
+
 4.13.1
 ------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cliff-4.13.1/PKG-INFO new/cliff-4.13.2/PKG-INFO
--- old/cliff-4.13.1/PKG-INFO   2025-12-18 15:11:35.985460800 +0100
+++ new/cliff-4.13.2/PKG-INFO   2026-02-17 15:45:10.916530100 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: cliff
-Version: 4.13.1
+Version: 4.13.2
 Summary: Command Line Interface Formulation Framework
 Author-email: OpenStack <[email protected]>
 License: Apache-2.0
@@ -17,6 +17,7 @@
 Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: 3.12
 Classifier: Programming Language :: Python :: 3.13
+Classifier: Typing :: Typed
 Requires-Python: >=3.10
 Description-Content-Type: text/x-rst
 License-File: LICENSE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cliff-4.13.1/cliff/commandmanager.py 
new/cliff-4.13.2/cliff/commandmanager.py
--- old/cliff-4.13.1/cliff/commandmanager.py    2025-12-18 15:10:43.000000000 
+0100
+++ new/cliff-4.13.2/cliff/commandmanager.py    2026-02-17 15:44:36.000000000 
+0100
@@ -16,7 +16,6 @@
 import importlib.metadata
 import logging
 from typing import TypeAlias
-import warnings
 
 import stevedore
 
@@ -68,10 +67,11 @@
 class CommandManager:
     """Discovers commands and handles lookup based on argv data.
 
-    :param namespace: **DEPRECATED** String containing the entrypoint namespace
-        for the plugins to be loaded from by default. For example,
-        ``'cliff.formatter.list'``. :meth:`CommandManager.load_commands` should
-        be preferred.
+    :param namespace: String containing the entrypoint namespace for the
+        plugins to be loaded. For example, ``'cliff.formatter.list'``.
+        If provided, commands will be loaded from this namespace initially,
+        though it remains possible to load from additional namespaces with
+        :meth:`CommandManager.load_commands`.
     :param convert_underscores: Whether cliff should convert underscores to
         spaces in entry_point commands.
     :param ignored_modules: A list of module names to ignore when loading
@@ -85,16 +85,6 @@
         *,
         ignored_modules: collections.abc.Iterable[str] | None = None,
     ) -> None:
-        if namespace:
-            # TODO(stephenfin): Remove this functionality in 5.0.0 and make
-            # convert_underscores a kwarg-only argument
-            warnings.warn(
-                f'Initialising {self.__class__!r} with a namespace is '
-                f'deprecated for removal. Prefer loading commands from a '
-                f'given namespace with load_commands instead',
-                DeprecationWarning,
-            )
-
         self.namespace = namespace
         self.convert_underscores = convert_underscores
         self.ignored_modules = ignored_modules or ()
@@ -106,8 +96,6 @@
 
     def _load_commands(self) -> None:
         # NOTE(jamielennox): kept for compatibility.
-        # TODO(stephenfin): We can remove this when we remove the 'namespace'
-        # argument
         if self.namespace:
             self.load_commands(self.namespace)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cliff-4.13.1/cliff.egg-info/PKG-INFO 
new/cliff-4.13.2/cliff.egg-info/PKG-INFO
--- old/cliff-4.13.1/cliff.egg-info/PKG-INFO    2025-12-18 15:11:35.000000000 
+0100
+++ new/cliff-4.13.2/cliff.egg-info/PKG-INFO    2026-02-17 15:45:10.000000000 
+0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: cliff
-Version: 4.13.1
+Version: 4.13.2
 Summary: Command Line Interface Formulation Framework
 Author-email: OpenStack <[email protected]>
 License: Apache-2.0
@@ -17,6 +17,7 @@
 Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: 3.12
 Classifier: Programming Language :: Python :: 3.13
+Classifier: Typing :: Typed
 Requires-Python: >=3.10
 Description-Content-Type: text/x-rst
 License-File: LICENSE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cliff-4.13.1/cliff.egg-info/SOURCES.txt 
new/cliff-4.13.2/cliff.egg-info/SOURCES.txt
--- old/cliff-4.13.1/cliff.egg-info/SOURCES.txt 2025-12-18 15:11:35.000000000 
+0100
+++ new/cliff-4.13.2/cliff.egg-info/SOURCES.txt 2026-02-17 15:45:10.000000000 
+0100
@@ -102,4 +102,5 @@
 releasenotes/notes/drop-python-39-bbeabc19b5143cd3.yaml
 releasenotes/notes/drop-python27-support-b16c9e5a9e2000ef.yaml
 releasenotes/notes/handle-none-values-when-sorting-de40e36c66ad95ca.yaml
-releasenotes/notes/strip-period-from-help-strings-be368e5cf5bd5269.yaml
\ No newline at end of file
+releasenotes/notes/strip-period-from-help-strings-be368e5cf5bd5269.yaml
+releasenotes/notes/undeprecate-commandmanager-namespace-argument-96d110bf3df0b9fd.yaml
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cliff-4.13.1/cliff.egg-info/pbr.json 
new/cliff-4.13.2/cliff.egg-info/pbr.json
--- old/cliff-4.13.1/cliff.egg-info/pbr.json    2025-12-18 15:11:35.000000000 
+0100
+++ new/cliff-4.13.2/cliff.egg-info/pbr.json    2026-02-17 15:45:10.000000000 
+0100
@@ -1 +1 @@
-{"git_version": "2bf3144", "is_release": true}
\ No newline at end of file
+{"git_version": "0c1dbcb", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cliff-4.13.1/pyproject.toml 
new/cliff-4.13.2/pyproject.toml
--- old/cliff-4.13.1/pyproject.toml     2025-12-18 15:10:43.000000000 +0100
+++ new/cliff-4.13.2/pyproject.toml     2026-02-17 15:44:36.000000000 +0100
@@ -13,17 +13,18 @@
 dynamic = ["version", "dependencies"]
 requires-python = ">=3.10"
 classifiers = [
-  "Development Status :: 5 - Production/Stable",
-  "Environment :: Console",
-  "Intended Audience :: Developers",
-  "License :: OSI Approved :: Apache Software License",
-  "Operating System :: POSIX :: Linux",
-  "Programming Language :: Python",
-  "Programming Language :: Python :: 3",
-  "Programming Language :: Python :: 3.10",
-  "Programming Language :: Python :: 3.11",
-  "Programming Language :: Python :: 3.12",
-  "Programming Language :: Python :: 3.13",
+    "Development Status :: 5 - Production/Stable",
+    "Environment :: Console",
+    "Intended Audience :: Developers",
+    "License :: OSI Approved :: Apache Software License",
+    "Operating System :: POSIX :: Linux",
+    "Programming Language :: Python",
+    "Programming Language :: Python :: 3",
+    "Programming Language :: Python :: 3.10",
+    "Programming Language :: Python :: 3.11",
+    "Programming Language :: Python :: 3.12",
+    "Programming Language :: Python :: 3.13",
+    "Typing :: Typed",
 ]
 
 [project.urls]
@@ -74,7 +75,7 @@
 show_column_numbers = true
 show_error_context = true
 strict = true
-exclude = '(?x)(doc | demoapp | releasenotes)'
+exclude = "(?x)(doc | demoapp | releasenotes)"
 
 [[tool.mypy.overrides]]
 module = ["cliff.tests.*"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cliff-4.13.1/releasenotes/notes/undeprecate-commandmanager-namespace-argument-96d110bf3df0b9fd.yaml
 
new/cliff-4.13.2/releasenotes/notes/undeprecate-commandmanager-namespace-argument-96d110bf3df0b9fd.yaml
--- 
old/cliff-4.13.1/releasenotes/notes/undeprecate-commandmanager-namespace-argument-96d110bf3df0b9fd.yaml
     1970-01-01 01:00:00.000000000 +0100
+++ 
new/cliff-4.13.2/releasenotes/notes/undeprecate-commandmanager-namespace-argument-96d110bf3df0b9fd.yaml
     2026-02-17 15:44:36.000000000 +0100
@@ -0,0 +1,9 @@
+---
+other:
+  - |
+    The ``namespace`` argument to ``cliff.commandmanager.CommandManager`` is
+    no longer deprecated for removal. Users should still prefer invoking
+    ``load_commands`` instead and the argument remains optional, but for
+    simpler use cases the following will continue to work::
+
+        cm = commandmanager.CommandManager('foo')

++++++ cmd2-3.1.0-compat.patch ++++++
>From 29fa87c0687063fdb3fd9c58e58c44aca7bce8a8 Mon Sep 17 00:00:00 2001
From: Stephen Finucane <[email protected]>
Date: Tue, 3 Mar 2026 12:10:54 +0000
Subject: [PATCH] Fix compatibility with cmd2 3.1.0+

cmd2 3.1.0 has removed the dependency on the stdlib cmd library [1]. For
our use cases, the largest change is that we no longer have the
'completenames' helper, which was defined in `cmd.Cmd` rather than
`cmd2.Cmd`. However, upon further inspection is seems this helper was
never actually used. It was not called directly in cmd2 2.x and was only
used in cmd in two locations: `Cmd.complete` [2] and `Cmd.complete_help`
[3]. cmd2 2.x entirely overrode the former [4] and deleted the latter,
meaning we were not actually using any of that code. Therefore we can
just delete the helper and any tests for same and suffer no ill effects.
To be safe though, we bump our cmd2 minimum to 3.0.0.

While here, we also need to fix some type hints to account for the cmd2
bump along with a related autopage bump.

[1] https://github.com/python-cmd2/cmd2/releases/tag/3.1.0
[2] https://github.com/python/cpython/blob/v3.10.20/Lib/cmd.py#L274
[3] https://github.com/python/cpython/blob/v3.10.20/Lib/cmd.py#L287
[4] https://github.com/python-cmd2/cmd2/blob/2.7.0/cmd2/cmd2.py#L2192-L2294
[5] https://github.com/python-cmd2/cmd2/blob/2.7.0/cmd2/cmd2.py#L3770-L3772

Change-Id: I75933ec1ffc2dc8d57d4105c5683892ddbf50bff
Signed-off-by: Stephen Finucane <[email protected]>
---
 cliff/formatters/table.py          |  2 +-
 cliff/interactive.py               | 16 +++-------------
 cliff/tests/base.py                |  2 +-
 cliff/tests/test_commandmanager.py |  8 ++++++++
 cliff/tests/test_interactive.py    | 28 ----------------------------
 requirements.txt                   |  2 +-
 6 files changed, 14 insertions(+), 44 deletions(-)

diff --git a/cliff/formatters/table.py b/cliff/formatters/table.py
index 6546a76c..771130fc 100644
--- a/cliff/formatters/table.py
+++ b/cliff/formatters/table.py
@@ -51,7 +51,7 @@ def _do_fit(fit_width: bool) -> bool:
 
 
 class TableFormatter(base.ListFormatter, base.SingleFormatter):
-    ALIGNMENTS = {
+    ALIGNMENTS: dict[type[int | str | float], ty.Literal['l', 'c', 'r']] = {
         int: 'r',
         str: 'l',
         float: 'r',
diff --git a/cliff/interactive.py b/cliff/interactive.py
index 607d3f81..0f65abb5 100644
--- a/cliff/interactive.py
+++ b/cliff/interactive.py
@@ -73,7 +73,7 @@ class InteractiveApp(cmd2.Cmd):
             parts.insert(0, line.command)
         return parts
 
-    def default(self, line: str) -> bool | None:  # type: ignore[override]
+    def default(self, line: str) -> bool | None:
         # Tie in the default command processor to
         # dispatch commands known to the command manager.
         # We send the message through our parent app,
@@ -87,17 +87,7 @@ class InteractiveApp(cmd2.Cmd):
             return bool(ret)
         return None
 
-    def completenames(self, text: str, *ignored: ty.Any) -> list[str]:
-        """Tab-completion for command prefix without completer delimiter.
-
-        This method returns cmd style and cliff style commands matching
-        provided command prefix (text).
-        """
-        completions = cmd2.Cmd.completenames(self, text)
-        completions += self._complete_prefix(text)
-        return completions
-
-    def completedefault(
+    def completedefault(  # type: ignore[override]
         self, text: str, line: str, begidx: int, endidx: int
     ) -> list[str]:
         """Default tab-completion for command prefix with completer delimiter.
@@ -146,7 +136,7 @@ class InteractiveApp(cmd2.Cmd):
         else:
             stdout = self.stdout
             try:
-                with autopage.argparse.help_pager(stdout) as paged_out:  # 
type: ignore
+                with autopage.argparse.help_pager(stdout) as paged_out:
                     self.stdout = paged_out
 
                     cmd2.Cmd.do_help(self, arg)  # type: ignore
diff --git a/cliff/tests/base.py b/cliff/tests/base.py
index cace1227..4e55fce1 100644
--- a/cliff/tests/base.py
+++ b/cliff/tests/base.py
@@ -11,7 +11,7 @@
 #  License for the specific language governing permissions and limitations
 #  under the License.
 
-import testtools  # type: ignore
+import testtools
 
 import fixtures
 
diff --git a/cliff/tests/test_commandmanager.py 
b/cliff/tests/test_commandmanager.py
index f17b5b70..53ff464d 100644
--- a/cliff/tests/test_commandmanager.py
+++ b/cliff/tests/test_commandmanager.py
@@ -30,6 +30,8 @@ class TestLookupAndFind(base.TestBase):
         ('three-words', {'argv': ['three', 'word', 'command']}),
     ]
 
+    argv: list[str]
+
     def test(self):
         mgr = utils.TestCommandManager(utils.TEST_NAMESPACE)
         cmd, name, remaining = mgr.find_command(self.argv)
@@ -45,6 +47,8 @@ class TestLookupWithRemainder(base.TestBase):
         ('three', {'argv': ['three', 'word', 'command', '--opt']}),
     ]
 
+    argv: list[str]
+
     def test(self):
         mgr = utils.TestCommandManager(utils.TEST_NAMESPACE)
         cmd, name, remaining = mgr.find_command(self.argv)
@@ -58,6 +62,8 @@ class TestFindInvalidCommand(base.TestBase):
         ('no-command-given', {'argv': ['-b']}),
     ]
 
+    argv: list[str]
+
     def test(self):
         mgr = utils.TestCommandManager(utils.TEST_NAMESPACE)
         try:
@@ -246,6 +252,8 @@ class TestLookupAndFindPartialName(base.TestBase):
         ('three-words', {'argv': ['t', 'w', 'c']}),
     ]
 
+    argv: list[str]
+
     def test(self):
         mgr = utils.TestCommandManager(utils.TEST_NAMESPACE)
         cmd, name, remaining = mgr.find_command(self.argv)
diff --git a/cliff/tests/test_interactive.py b/cliff/tests/test_interactive.py
index 2936f073..55645bdb 100644
--- a/cliff/tests/test_interactive.py
+++ b/cliff/tests/test_interactive.py
@@ -11,7 +11,6 @@
 #  License for the specific language governing permissions and limitations
 #  under the License.
 
-import cmd2
 
 from cliff import app
 from cliff.interactive import InteractiveApp
@@ -32,33 +31,6 @@ class TestInteractive(base.TestBase):
             errexit=errexit,
         )
 
-    def _test_completenames(self, expecteds, prefix):
-        app = self.make_interactive_app(False, 'hips', 'hippo', 'nonmatching')
-        self.assertEqual(
-            set(app.completenames(prefix, '', 0, 1)), set(expecteds)
-        )
-
-    def test_cmd2_completenames(self):
-        # cmd2.Cmd define do_help method
-        self._test_completenames(['help'], 'he')
-
-    def test_cliff_completenames(self):
-        self._test_completenames(['hips', 'hippo'], 'hip')
-
-    def test_no_completenames(self):
-        self._test_completenames([], 'taz')
-
-    def test_both_completenames(self):
-        # cmd2.Cmd define do_history method
-        # NOTE(dtroyer): Before release 0.7.0 do_hi was also defined so we need
-        #                to account for that in the list of possible responses.
-        #                Remove this check after cmd2 0.7.0 is the minimum
-        #                requirement.
-        if hasattr(cmd2.Cmd, "do_hi"):
-            self._test_completenames(['hi', 'history', 'hips', 'hippo'], 'hi')
-        else:
-            self._test_completenames(['history', 'hips', 'hippo'], 'hi')
-
     def _test_completedefault(self, expecteds, line, begidx):
         command_names = set(
             ['show file', 'show folder', 'show  long', 'list all']
diff --git a/requirements.txt b/requirements.txt
index 94ac040d..bc95ac51 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,5 +1,5 @@
 autopage>=0.4.0 # Apache 2.0
-cmd2>=1.0.0 # MIT
+cmd2>=3.0.0 # MIT
 PrettyTable>=0.7.2 # BSD
 stevedore>=5.6.0 # Apache-2.0
 PyYAML>=3.12 # MIT

Reply via email to