Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-argparse-manpage for
openSUSE:Factory checked in at 2026-10-23 20:21:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-argparse-manpage (Old)
and /work/SRC/openSUSE:Factory/.python-argparse-manpage.new.2252680 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-argparse-manpage"
Fri Oct 23 20:21:27 2026 rev:23 rq:1386999 version:4.8
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-argparse-manpage/python-argparse-manpage.changes
2026-09-15 12:47:46.001298682 +0200
+++
/work/SRC/openSUSE:Factory/.python-argparse-manpage.new.2252680/python-argparse-manpage.changes
2026-10-23 20:21:59.477738295 +0200
@@ -1,0 +2,9 @@
+Thu Oct 22 00:01:16 UTC 2026 - Steve Kowalik <[email protected]>
+
+- Update to 4.8:
+ * escape sequences are no longer propagated into the generated man pages
+ * fixed a traceback when an action has no help text (action.help == None)
+ * double-quoted values are newly supported in the manpages spec parsing
+- Drop patch support-python-315.patch, merged upstream.
+
+-------------------------------------------------------------------
Old:
----
support-python-315.patch
v4.7.tar.gz
New:
----
v4.8.tar.gz
----------(Old B)----------
Old: * double-quoted values are newly supported in the manpages spec parsing
- Drop patch support-python-315.patch, merged upstream.
----------(Old E)----------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-argparse-manpage.spec ++++++
--- /var/tmp/diff_new_pack.UCHBSg/_old 2026-10-23 20:22:00.482780353 +0200
+++ /var/tmp/diff_new_pack.UCHBSg/_new 2026-10-23 20:22:00.483780395 +0200
@@ -23,14 +23,12 @@
%bcond_with libalternatives
%endif
Name: python-argparse-manpage
-Version: 4.7
+Version: 4.8
Release: 0
Summary: Tool for automatic manual page building from a Python
ArgumentParser object
License: Apache-2.0
URL: https://github.com/praiskup/argparse-manpage
Source:
https://github.com/praiskup/argparse-manpage/archive/v%{version}.tar.gz
-# PATCH-FIX-UPSTREAM gh#praiskup/argparse-manpage#130
-Patch0: support-python-315.patch
BuildRequires: %{python_module pip}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module setuptools}
++++++ v4.7.tar.gz -> v4.8.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/argparse-manpage-4.7/.github/workflows/tox.yml
new/argparse-manpage-4.8/.github/workflows/tox.yml
--- old/argparse-manpage-4.7/.github/workflows/tox.yml 2025-08-15
12:23:24.000000000 +0200
+++ new/argparse-manpage-4.8/.github/workflows/tox.yml 2026-10-14
06:42:54.000000000 +0200
@@ -24,7 +24,6 @@
# sync with tox.ini!
tox_env:
- py36
- - py38
- py39
- py310
- py311
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/argparse-manpage-4.7/NEWS
new/argparse-manpage-4.8/NEWS
--- old/argparse-manpage-4.7/NEWS 2025-08-15 12:23:24.000000000 +0200
+++ new/argparse-manpage-4.8/NEWS 2026-10-14 06:42:54.000000000 +0200
@@ -5,6 +5,16 @@
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+News in v4.8
+
+* escape sequences are no longer propagated into the generated man pages
+
+* fixed a traceback when an action has no help text (action.help == None)
+
+* double-quoted values are newly supported in the manpages spec parsing
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
News in v4.7
* sys.stdout used instead of /dev/stdout
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/argparse-manpage-4.7/README.md
new/argparse-manpage-4.8/README.md
--- old/argparse-manpage-4.7/README.md 2025-08-15 12:23:24.000000000 +0200
+++ new/argparse-manpage-4.8/README.md 2026-10-14 06:42:54.000000000 +0200
@@ -50,7 +50,7 @@
## Use with pyproject.toml
First, you need to declare in `pyproject.toml` that argparse-manpage is needed
-at build-time and use the setuptools.builds_meta` backend:
+at build-time and use the `setuptools.builds_meta` backend:
```toml
[build-system]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/argparse-manpage-4.7/argparse_manpage/__init__.py
new/argparse-manpage-4.8/argparse_manpage/__init__.py
--- old/argparse-manpage-4.7/argparse_manpage/__init__.py 2025-08-15
12:23:24.000000000 +0200
+++ new/argparse-manpage-4.8/argparse_manpage/__init__.py 2026-10-14
06:42:54.000000000 +0200
@@ -2,4 +2,4 @@
argparse_manpage project
"""
-__version__ = '4.7'
+__version__ = '4.8'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/argparse-manpage-4.7/argparse_manpage/manpage.py
new/argparse-manpage-4.8/argparse_manpage/manpage.py
--- old/argparse-manpage-4.7/argparse_manpage/manpage.py 2025-08-15
12:23:24.000000000 +0200
+++ new/argparse-manpage-4.8/argparse_manpage/manpage.py 2026-10-14
06:42:54.000000000 +0200
@@ -153,6 +153,7 @@
"""
self.prog = parser.prog
self.parser = parser
+ self.parser.color = False
self.format = format
self._data = _data or {}
self._match_texts = []
@@ -362,7 +363,7 @@
class _ManpageFormatter(HelpFormatter):
def __init__(self, prog, old_formatter, format):
- super(HelpFormatter, self).__init__()
+ super(_ManpageFormatter, self).__init__(prog)
self._prog = prog
self.of = old_formatter
assert format in ("pretty", "single-commands-section")
@@ -427,6 +428,7 @@
lines.append(help)
lines.append("")
+ parser.color = False
lines.append(self.format_text(parser.format_usage()))
if parser.description or extra_description:
@@ -480,7 +482,7 @@
continue
lines.append('.TP')
lines.append(bold(prog) + ' ' + underline(action.dest))
- if hasattr(action, 'help'):
+ if hasattr(action, 'help') and action.help:
lines.append(self.format_text(action.help))
return '\n'.join(lines)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/argparse-manpage-4.7/build_manpages/build_manpage.py
new/argparse-manpage-4.8/build_manpages/build_manpage.py
--- old/argparse-manpage-4.7/build_manpages/build_manpage.py 2025-08-15
12:23:24.000000000 +0200
+++ new/argparse-manpage-4.8/build_manpages/build_manpage.py 2026-10-14
06:42:54.000000000 +0200
@@ -39,6 +39,7 @@
if isinstance(parser, argparse.ArgumentParser):
self._type = 'argparse'
+ self._parser.color = False
if parser.formatter_class == argparse.HelpFormatter:
# Hack for issue #36, to have reproducible manual page content
# regardless the terminal window size. Long term we should
avoid
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/argparse-manpage-4.7/build_manpages/build_manpages.py
new/argparse-manpage-4.8/build_manpages/build_manpages.py
--- old/argparse-manpage-4.7/build_manpages/build_manpages.py 2025-08-15
12:23:24.000000000 +0200
+++ new/argparse-manpage-4.8/build_manpages/build_manpages.py 2026-10-14
06:42:54.000000000 +0200
@@ -4,6 +4,7 @@
"""
import os
+import re
import shutil
try:
@@ -34,27 +35,38 @@
DEFAULT_CMD_NAME = 'build_manpages'
+OPTION_RE = re.compile(
+ r':(?P<name>[^:=]+)=(?:"(?P<quoted>[^"]*)"|(?P<plain>[^:]*))'
+)
+
+
def parse_manpages_spec(string):
manpages_data = {}
for spec in string.strip().split('\n'):
manpagedata = {}
- output = True
-
basename = None
- for option in spec.split(':'):
- if output:
- outputfile = option
- output = False
- continue
-
- oname, ovalue = option.split('=')
+ outputfile, separator, remainder = spec.partition(':')
+ tail = separator + remainder
+ while tail:
+ match = OPTION_RE.match(tail)
+ if not match:
+ option, _, _ = tail[1:].partition(':')
+ raise ValueError(
+ "Invalid manpage configuration option {!r}".format(option)
+ )
+
+ oname = match.group('name')
+ ovalue = match.group('quoted')
+ if ovalue is None:
+ ovalue = match.group('plain')
+ tail = tail[match.end():]
- if oname == 'function' or oname == 'object':
+ if oname in ('function', 'object'):
assert(not 'objtype' in manpagedata)
manpagedata['objtype'] = oname
manpagedata['objname'] = ovalue
- elif oname == 'pyfile' or oname == 'module':
+ elif oname in ('pyfile', 'module'):
assert(not 'import_type' in manpagedata)
manpagedata['import_type'] = oname
manpagedata['import_from'] = ovalue
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/argparse-manpage-4.7/rpm/argparse-manpage.spec.tpl
new/argparse-manpage-4.8/rpm/argparse-manpage.spec.tpl
--- old/argparse-manpage-4.7/rpm/argparse-manpage.spec.tpl 2025-08-15
12:23:24.000000000 +0200
+++ new/argparse-manpage-4.8/rpm/argparse-manpage.spec.tpl 2026-10-14
06:42:54.000000000 +0200
@@ -139,6 +139,10 @@
%if %{with check}
%check
+# Disable pip build isolation to make the tests work in offline environment
+# Fixes https://bugzilla.redhat.com/2417959
+export PIP_NO_BUILD_ISOLATION=0
+
%if %{with python2}
PYTHONPATH=%buildroot%python2_sitearch %__python2 -m pytest -vv
%endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/argparse-manpage-4.7/tests/test_basic.py
new/argparse-manpage-4.8/tests/test_basic.py
--- old/argparse-manpage-4.7/tests/test_basic.py 2025-08-15
12:23:24.000000000 +0200
+++ new/argparse-manpage-4.8/tests/test_basic.py 2026-10-14
06:42:54.000000000 +0200
@@ -50,6 +50,20 @@
assert not_exp_line not in manpage_lines
assert 1 == sum([1 if "COMMAND" in line else 0 for line in
manpage_lines])
+ def test_no_color_escapes(self):
+ """
+ Pyhon 3.14+ adds ANSI escape sequencies by default which should not be
+ presented in generated man pages
+ """
+ os.environ['FORCE_COLOR'] = '1'
+ parser = argparse.ArgumentParser("color_test")
+ parser.add_argument("--option", help="something")
+ subparsers = parser.add_subparsers(title="actions")
+ subparser = subparsers.add_parser("subparser", help="something else")
+ subparser.add_argument("--actually", help="something")
+ man = Manpage(parser)
+ self.assertNotIn('\x1b', str(man))
+
if __name__ == "__main__":
unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/argparse-manpage-4.7/tests/test_manpages_spec.py
new/argparse-manpage-4.8/tests/test_manpages_spec.py
--- old/argparse-manpage-4.7/tests/test_manpages_spec.py 1970-01-01
01:00:00.000000000 +0100
+++ new/argparse-manpage-4.8/tests/test_manpages_spec.py 2026-10-14
06:42:54.000000000 +0200
@@ -0,0 +1,41 @@
+"""Tests for parsing build_manpages spec strings."""
+
+import os.path
+import sys
+
+import pytest
+
+sys.path = [
+ os.path.join(os.path.dirname(os.path.realpath(__file__)), '..')
+] + sys.path
+
+from build_manpages.build_manpages import parse_manpages_spec
+
+
+def test_parse_manpages_spec_accepts_quoted_url():
+ """Quoted URL values may contain colons."""
+ data = parse_manpages_spec(
+ 'some-file.1:module=somefile:function=get_parser:'
+ 'url="https://example.com/docs"'
+ )
+
+ assert data["some-file.1"]["url"] == "https://example.com/docs"
+
+
+def test_parse_manpages_spec_keeps_equals_in_value():
+ """Quoted values preserve equals signs."""
+ data = parse_manpages_spec(
+ 'some-file.1:module=somefile:function=get_parser:'
+ 'url="https://example.com/docs?x=1&y=2"'
+ )
+
+ assert data["some-file.1"]["url"] == "https://example.com/docs?x=1&y=2"
+
+
+def test_parse_manpages_spec_rejects_unterminated_quote():
+ """An unterminated quoted value is rejected."""
+ with pytest.raises(ValueError, match="Invalid manpage configuration
option"):
+ parse_manpages_spec(
+ 'some-file.1:module=somefile:function=get_parser:'
+ 'url="https://example.com/docs'
+ )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/argparse-manpage-4.7/tox.ini
new/argparse-manpage-4.8/tox.ini
--- old/argparse-manpage-4.7/tox.ini 2025-08-15 12:23:24.000000000 +0200
+++ new/argparse-manpage-4.8/tox.ini 2026-10-14 06:42:54.000000000 +0200
@@ -1,6 +1,6 @@
[tox]
# sync with .github/workflows/tox.yml!
-envlist = py{36,38,39,310,311,312,313,314}
+envlist = py{36,39,310,311,312,313,314}
skipsdist = True
[testenv]