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 2025-11-26 17:18:43 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-cliff (Old) and /work/SRC/openSUSE:Factory/.python-cliff.new.14147 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-cliff" Wed Nov 26 17:18:43 2025 rev:48 rq:1320155 version:4.12.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-cliff/python-cliff.changes 2025-10-22 12:19:40.880056410 +0200 +++ /work/SRC/openSUSE:Factory/.python-cliff.new.14147/python-cliff.changes 2025-11-26 17:18:59.483187181 +0100 @@ -1,0 +2,9 @@ +Wed Nov 26 08:49:45 UTC 2025 - John Paul Adrian Glaubitz <[email protected]> + +- Update to 4.12.0 + * typing: Clarify behavior of _run_after_hooks method + * Remove pkg_resources remnants + * ruff: Enable E5 rules + * typing: Update for latest docutils type hints + +------------------------------------------------------------------- Old: ---- cliff-4.11.0.tar.gz New: ---- cliff-4.12.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-cliff.spec ++++++ --- /var/tmp/diff_new_pack.xPiJTL/_old 2025-11-26 17:19:00.359224137 +0100 +++ /var/tmp/diff_new_pack.xPiJTL/_new 2025-11-26 17:19:00.371224643 +0100 @@ -18,7 +18,7 @@ %{?sle15_python_module_pythons} Name: python-cliff -Version: 4.11.0 +Version: 4.12.0 Release: 0 Summary: Command Line Interface Formulation Framework License: Apache-2.0 ++++++ cliff-4.11.0.tar.gz -> cliff-4.12.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-4.11.0/.pre-commit-config.yaml new/cliff-4.12.0/.pre-commit-config.yaml --- old/cliff-4.11.0/.pre-commit-config.yaml 2025-08-21 11:38:02.000000000 +0200 +++ new/cliff-4.12.0/.pre-commit-config.yaml 2025-11-20 15:59:28.000000000 +0100 @@ -1,13 +1,13 @@ --- repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v5.0.0 + rev: v6.0.0 hooks: - id: trailing-whitespace - id: mixed-line-ending args: ['--fix', 'lf'] exclude: '.*\.(svg)$' - - id: check-byte-order-marker + - id: fix-byte-order-marker - id: check-executables-have-shebangs - id: check-merge-conflict - id: debug-statements @@ -15,13 +15,13 @@ files: .*\.(yaml|yml)$ exclude: '^zuul.d/.*$' - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.12.1 + rev: v0.14.5 hooks: - id: ruff-check args: ['--fix', '--unsafe-fixes'] - id: ruff-format - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.16.1 + rev: v1.18.2 hooks: - id: mypy additional_dependencies: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-4.11.0/ChangeLog new/cliff-4.12.0/ChangeLog --- old/cliff-4.11.0/ChangeLog 2025-08-21 11:38:44.000000000 +0200 +++ new/cliff-4.12.0/ChangeLog 2025-11-20 16:00:03.000000000 +0100 @@ -1,6 +1,14 @@ CHANGES ======= +4.12.0 +------ + +* typing: Clarify behavior of \_run\_after\_hooks method +* Remove pkg\_resources remnants +* ruff: Enable E5 rules +* typing: Update for latest docutils type hints + 4.11.0 ------ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-4.11.0/PKG-INFO new/cliff-4.12.0/PKG-INFO --- old/cliff-4.11.0/PKG-INFO 2025-08-21 11:38:44.328871500 +0200 +++ new/cliff-4.12.0/PKG-INFO 2025-11-20 16:00:03.748392600 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: cliff -Version: 4.11.0 +Version: 4.12.0 Summary: Command Line Interface Formulation Framework Author-email: OpenStack <[email protected]> License: Apache-2.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-4.11.0/cliff/command.py new/cliff-4.12.0/cliff/command.py --- old/cliff-4.11.0/cliff/command.py 2025-08-21 11:38:02.000000000 +0200 +++ new/cliff-4.12.0/cliff/command.py 2025-11-20 15:59:28.000000000 +0100 @@ -209,8 +209,8 @@ return parsed_args def _run_after_hooks( - self, parsed_args: argparse.Namespace, return_code: _T - ) -> _T: + self, parsed_args: argparse.Namespace, return_code: int + ) -> int: """Calls after() method of the hooks. This method is intended to be called from the run() method after diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-4.11.0/cliff/commandmanager.py new/cliff-4.12.0/cliff/commandmanager.py --- old/cliff-4.11.0/cliff/commandmanager.py 2025-08-21 11:38:02.000000000 +0200 +++ new/cliff-4.12.0/cliff/commandmanager.py 2025-11-20 15:59:28.000000000 +0100 @@ -13,7 +13,6 @@ """Discover and lookup command plugins.""" import collections.abc -import inspect import logging import stevedore @@ -38,7 +37,10 @@ class EntryPointWrapper: - """Wrap up a command class already imported to make it look like a plugin.""" + """An entrypoint-like object. + + Wrap up a command class already imported to make it look like a plugin. + """ def __init__( self, name: str, command_class: type[command.Command] @@ -46,7 +48,7 @@ self.name = name self.command_class = command_class - def load(self, require: bool = False) -> type[command.Command]: + def load(self) -> type[command.Command]: return self.command_class @@ -134,16 +136,7 @@ found = candidates[0] if found: cmd_ep = self.commands[found] - if hasattr(cmd_ep, 'resolve'): - cmd_factory = cmd_ep.resolve() - else: - # NOTE(dhellmann): Some fake classes don't take - # require as an argument. Yay? - arg_spec = inspect.getfullargspec(cmd_ep.load) - if 'require' in arg_spec[0]: - cmd_factory = cmd_ep.load(require=False) - else: - cmd_factory = cmd_ep.load() + cmd_factory = cmd_ep.load() return (cmd_factory, return_name, search_args) else: raise ValueError(f'Unknown command {argv!r}') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-4.11.0/cliff/display.py new/cliff-4.12.0/cliff/display.py --- old/cliff-4.11.0/cliff/display.py 2025-08-21 11:38:02.000000000 +0200 +++ new/cliff-4.12.0/cliff/display.py 2025-11-20 15:59:28.000000000 +0100 @@ -42,7 +42,7 @@ @property @abc.abstractmethod def formatter_namespace(self) -> str: - """String specifying the namespace to use for loading formatter plugins.""" + """Namespace to use for loading formatter plugins.""" @property @abc.abstractmethod @@ -152,6 +152,32 @@ self.produce_output(parsed_args, column_names, data) return 0 + def _run_after_hooks( # type: ignore[override] + self, + parsed_args: argparse.Namespace, + data: tuple[ + collections.abc.Sequence[str], collections.abc.Iterable[ty.Any] + ], + ) -> tuple[ + collections.abc.Sequence[str], collections.abc.Iterable[ty.Any] + ]: + """Calls after() method of the hooks. + + This method is intended to be called from the run() method after + take_action() is called. + + This method should only be overridden by developers creating new + command base classes and only if it is necessary to have different + hook processing behavior. + """ + for hook in self._hooks: + ret = hook.obj.after(parsed_args, data) + # If the return is None do not change return_code, otherwise + # set up to pass it to the next hook + if ret is not None: + data = ret + return data + @staticmethod def _compress_iterable( iterable: collections.abc.Iterable[_T], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-4.11.0/cliff/formatters/base.py new/cliff-4.12.0/cliff/formatters/base.py --- old/cliff-4.11.0/cliff/formatters/base.py 2025-08-21 11:38:02.000000000 +0200 +++ new/cliff-4.12.0/cliff/formatters/base.py 2025-11-20 15:59:28.000000000 +0100 @@ -28,7 +28,7 @@ class ListFormatter(Formatter, metaclass=abc.ABCMeta): - """Base class for formatters that know how to deal with multiple objects.""" + """Base class for formatters that know how to deal with many objects.""" @abc.abstractmethod def emit_list( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-4.11.0/cliff/formatters/commaseparated.py new/cliff-4.12.0/cliff/formatters/commaseparated.py --- old/cliff-4.11.0/cliff/formatters/commaseparated.py 2025-08-21 11:38:02.000000000 +0200 +++ new/cliff-4.12.0/cliff/formatters/commaseparated.py 2025-11-20 15:59:28.000000000 +0100 @@ -23,7 +23,7 @@ class CSVLister(base.ListFormatter): - QUOTE_MODES = { + QUOTE_MODES: dict[str, ty.Literal[0, 1, 2, 3]] = { 'all': csv.QUOTE_ALL, 'minimal': csv.QUOTE_MINIMAL, 'nonnumeric': csv.QUOTE_NONNUMERIC, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-4.11.0/cliff/show.py new/cliff-4.12.0/cliff/show.py --- old/cliff-4.11.0/cliff/show.py 2025-08-21 11:38:02.000000000 +0200 +++ new/cliff-4.12.0/cliff/show.py 2025-11-20 15:59:28.000000000 +0100 @@ -34,9 +34,13 @@ @abc.abstractmethod def take_action( self, parsed_args: argparse.Namespace - ) -> tuple[tuple[str, ...], tuple[ty.Any, ...]]: - """Return a two-part tuple with a tuple of column names - and a tuple of values. + ) -> tuple[ + collections.abc.Sequence[str], collections.abc.Iterable[ty.Any] + ]: + """Run command. + + Return a tuple containing the column names and an iterable containing + the data to be listed. """ def produce_output( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-4.11.0/cliff/sphinxext.py new/cliff-4.12.0/cliff/sphinxext.py --- old/cliff-4.11.0/cliff/sphinxext.py 2025-08-21 11:38:02.000000000 +0200 +++ new/cliff-4.12.0/cliff/sphinxext.py 2025-11-20 15:59:28.000000000 +0100 @@ -314,8 +314,8 @@ return manager.find_command(command_name.split())[0] except ValueError: raise self.error( - f'"{command_name}" is not a valid command in the "{manager.namespace}" ' - 'namespace' + f'"{command_name}" is not a valid command in the ' + f'"{manager.namespace}" namespace' ) def _load_commands(self) -> dict[str, type[command.Command]]: @@ -359,7 +359,7 @@ parser.prog = application_name source_name = f'<{app.__class__.__name__}>' - result: statemachine.ViewList[str] = statemachine.ViewList() + result = statemachine.StringList() for line in _format_parser(parser): result.append(line, source_name) @@ -410,7 +410,7 @@ ) source_name = f'<{command.__class__.__name__}>' - result: statemachine.ViewList[str] = statemachine.ViewList() + result = statemachine.StringList() for line in _format_parser(parser): result.append(line, source_name) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-4.11.0/cliff/tests/test_formatters_table.py new/cliff-4.12.0/cliff/tests/test_formatters_table.py --- old/cliff-4.11.0/cliff/tests/test_formatters_table.py 2025-08-21 11:38:02.000000000 +0200 +++ new/cliff-4.12.0/cliff/tests/test_formatters_table.py 2025-11-20 15:59:28.000000000 +0100 @@ -117,8 +117,8 @@ | d | dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd | | | ddddddddd | +-------+----------------------------------------------------------------------+ - ''' - ) # noqa + ''' # noqa: E501 + ) # Single-line output, for when no line length restriction apply expected_sl_val = textwrap.dedent( @@ -131,8 +131,8 @@ | c | C | | d | ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd | +-------+-------------------------------------------------------------------------------+ - ''' - ) # noqa + ''' # noqa: E501 + ) @mock.patch('cliff.utils.terminal_width') def test_table_formatter_no_cli_param(self, tw): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-4.11.0/cliff.egg-info/PKG-INFO new/cliff-4.12.0/cliff.egg-info/PKG-INFO --- old/cliff-4.11.0/cliff.egg-info/PKG-INFO 2025-08-21 11:38:44.000000000 +0200 +++ new/cliff-4.12.0/cliff.egg-info/PKG-INFO 2025-11-20 16:00:03.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: cliff -Version: 4.11.0 +Version: 4.12.0 Summary: Command Line Interface Formulation Framework Author-email: OpenStack <[email protected]> License: Apache-2.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-4.11.0/cliff.egg-info/pbr.json new/cliff-4.12.0/cliff.egg-info/pbr.json --- old/cliff-4.11.0/cliff.egg-info/pbr.json 2025-08-21 11:38:44.000000000 +0200 +++ new/cliff-4.12.0/cliff.egg-info/pbr.json 2025-11-20 16:00:03.000000000 +0100 @@ -1 +1 @@ -{"git_version": "0008efa", "is_release": true} \ No newline at end of file +{"git_version": "12c21fa", "is_release": true} \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-4.11.0/pyproject.toml new/cliff-4.12.0/pyproject.toml --- old/cliff-4.11.0/pyproject.toml 2025-08-21 11:38:02.000000000 +0200 +++ new/cliff-4.12.0/pyproject.toml 2025-11-20 15:59:28.000000000 +0100 @@ -91,14 +91,13 @@ [tool.ruff] line-length = 79 -target-version = "py310" [tool.ruff.format] quote-style = "preserve" docstring-code-format = true [tool.ruff.lint] -select = ["E4", "E7", "E9", "F", "S", "UP"] +select = ["E4", "E5", "E7", "E9", "F", "S", "UP"] [tool.ruff.lint.per-file-ignores] "cliff/tests/*" = ["S"]
