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]

Reply via email to