Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-bindep for openSUSE:Factory 
checked in at 2026-04-01 19:51:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-bindep (Old)
 and      /work/SRC/openSUSE:Factory/.python-bindep.new.21863 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-bindep"

Wed Apr  1 19:51:10 2026 rev:11 rq:1343776 version:2.14.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-bindep/python-bindep.changes      
2026-03-12 22:27:18.822734341 +0100
+++ /work/SRC/openSUSE:Factory/.python-bindep.new.21863/python-bindep.changes   
2026-04-01 19:51:49.812119159 +0200
@@ -1,0 +2,9 @@
+Mon Mar 30 21:28:32 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 2.14.0:
+  * New exit code of 2 for input file parse errors
+  * Drop Bionic testing
+  * Fix authors/maintainers format in pyproject.toml
+  * Comment reminding to replace extras with depgroups
+
+-------------------------------------------------------------------

Old:
----
  bindep-2.13.0.tar.gz

New:
----
  bindep-2.14.0.tar.gz

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

Other differences:
------------------
++++++ python-bindep.spec ++++++
--- /var/tmp/diff_new_pack.9ZDBCw/_old  2026-04-01 19:51:50.632153327 +0200
+++ /var/tmp/diff_new_pack.9ZDBCw/_new  2026-04-01 19:51:50.640153660 +0200
@@ -28,7 +28,7 @@
 %bcond_without libalternatives
 %{?sle15_python_module_pythons}
 Name:           python-bindep%{psuffix}
-Version:        2.13.0
+Version:        2.14.0
 Release:        0
 Summary:        Binary dependency utility
 License:        Apache-2.0

++++++ bindep-2.13.0.tar.gz -> bindep-2.14.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bindep-2.13.0/.zuul.yaml new/bindep-2.14.0/.zuul.yaml
--- old/bindep-2.13.0/.zuul.yaml        2025-03-21 00:05:42.000000000 +0100
+++ new/bindep-2.14.0/.zuul.yaml        2026-03-19 15:56:35.000000000 +0100
@@ -31,8 +31,8 @@
         - bindep-ubuntu-noble
         - build-python-release
         - nox-linters
-        - nox-py37:
-            nodeset: ubuntu-bionic
+        - nox-py38:
+            nodeset: ubuntu-focal
         - nox-py312:
             nodeset: ubuntu-noble
         - nox-cover
@@ -42,8 +42,8 @@
         - bindep-ubuntu-noble
         - build-python-release
         - nox-linters
-        - nox-py37:
-            nodeset: ubuntu-bionic
+        - nox-py38:
+            nodeset: ubuntu-focal
         - nox-py312:
             nodeset: ubuntu-noble
         - nox-cover
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bindep-2.13.0/AUTHORS new/bindep-2.14.0/AUTHORS
--- old/bindep-2.13.0/AUTHORS   2025-03-21 00:06:59.000000000 +0100
+++ new/bindep-2.14.0/AUTHORS   2026-03-19 15:57:59.000000000 +0100
@@ -7,6 +7,7 @@
 Cody Lee Cochran <[email protected]>
 Cody Lee Cochran <[email protected]>
 Dan Smith <[email protected]>
+David Shrewsbury <[email protected]>
 Dirk Mueller <[email protected]>
 Ehud Kaldor <[email protected]>
 Eric Harney <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bindep-2.13.0/ChangeLog new/bindep-2.14.0/ChangeLog
--- old/bindep-2.13.0/ChangeLog 2025-03-21 00:06:59.000000000 +0100
+++ new/bindep-2.14.0/ChangeLog 2026-03-19 15:57:59.000000000 +0100
@@ -1,6 +1,14 @@
 CHANGES
 =======
 
+2.14.0
+------
+
+* New exit code of 2 for input file parse errors
+* Drop Bionic testing
+* Fix authors/maintainers format in pyproject.toml
+* Comment reminding to replace extras with depgroups
+
 2.13.0
 ------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bindep-2.13.0/PKG-INFO new/bindep-2.14.0/PKG-INFO
--- old/bindep-2.13.0/PKG-INFO  2025-03-21 00:06:59.529117600 +0100
+++ new/bindep-2.14.0/PKG-INFO  2026-03-19 15:57:59.143607000 +0100
@@ -1,11 +1,8 @@
 Metadata-Version: 2.4
 Name: bindep
-Version: 2.13.0
+Version: 2.14.0
 Summary: Binary dependency utility
-Author: OpenDev Contributors
-Author-email: [email protected]
-Maintainer: OpenDev Contributors
-Maintainer-email: [email protected]
+Author-email: OpenDev Contributors <[email protected]>
 Project-URL: Browse Source, https://opendev.org/opendev/bindep
 Project-URL: Bug Reporting, 
https://storyboard.openstack.org/#!/project/opendev/bindep
 Project-URL: Documentation, https://docs.opendev.org/opendev/bindep
@@ -21,7 +18,6 @@
 Classifier: Operating System :: MacOS :: MacOS X
 Classifier: Operating System :: POSIX :: Linux
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.7
 Classifier: Programming Language :: Python :: 3.8
 Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
@@ -33,7 +29,7 @@
 Classifier: Topic :: Software Development :: Testing
 Classifier: Topic :: System :: Archiving :: Packaging
 Classifier: Topic :: Utilities
-Requires-Python: >=3.7
+Requires-Python: >=3.8
 Description-Content-Type: text/x-rst
 License-File: LICENSE
 Requires-Dist: distro>=1.7
@@ -165,6 +161,15 @@
 Comments are allowed: everything from the first ``#`` to the end of the line is
 ignored.
 
+CLI Exit Codes
+--------------
+
+The `bindep` CLI will exit with one of the following integer values:
+
+* ``0``: Success - all dependencies satisfied or listing operations completed
+* ``1``: File not found/reading errors OR missing/incompatible packages
+* ``2``: Parse errors in the input fie
+
 Examples
 --------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bindep-2.13.0/README.rst new/bindep-2.14.0/README.rst
--- old/bindep-2.13.0/README.rst        2025-03-21 00:05:42.000000000 +0100
+++ new/bindep-2.14.0/README.rst        2026-03-19 15:56:35.000000000 +0100
@@ -106,6 +106,15 @@
 Comments are allowed: everything from the first ``#`` to the end of the line is
 ignored.
 
+CLI Exit Codes
+--------------
+
+The `bindep` CLI will exit with one of the following integer values:
+
+* ``0``: Success - all dependencies satisfied or listing operations completed
+* ``1``: File not found/reading errors OR missing/incompatible packages
+* ``2``: Parse errors in the input fie
+
 Examples
 --------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bindep-2.13.0/bindep/__main__.py 
new/bindep-2.14.0/bindep/__main__.py
--- old/bindep-2.13.0/bindep/__main__.py        2025-03-21 00:05:42.000000000 
+0100
+++ new/bindep-2.14.0/bindep/__main__.py        2026-03-19 15:56:35.000000000 
+0100
@@ -22,8 +22,25 @@
 import bindep.depends
 
 
-logging.basicConfig(
-    stream=sys.stdout, level=logging.INFO, format="%(message)s")
+def configure_logging():
+    """Configure logging to send ERROR or higher to stderr."""
+    class StdoutFilter(logging.Filter):
+        def filter(self, record):
+            return record.levelno < logging.ERROR
+
+    stdout_handler = logging.StreamHandler(sys.stdout)
+    stdout_handler.setLevel(logging.INFO)
+    stdout_handler.addFilter(StdoutFilter())
+    stdout_handler.setFormatter(logging.Formatter("%(message)s"))
+
+    stderr_handler = logging.StreamHandler(sys.stderr)
+    stderr_handler.setLevel(logging.ERROR)
+    stderr_handler.setFormatter(logging.Formatter("%(message)s"))
+
+    root_logger = logging.getLogger()
+    root_logger.setLevel(logging.INFO)
+    root_logger.addHandler(stdout_handler)
+    root_logger.addHandler(stderr_handler)
 
 
 def main(depends=None):
@@ -52,10 +69,17 @@
         '--version', action='version', version="%%(prog)s %s" % bindep.version)
     args = parser.parse_args()
 
+    configure_logging()
+
     if depends is None:
-        depends = bindep.depends.get_depends(
-            args.filename,
-            default_blank=args.profiles)
+        try:
+            depends = bindep.depends.get_depends(
+                args.filename,
+                default_blank=args.profiles)
+        except bindep.depends.DependsException as e:
+            logging.error(e)
+            return 2
+
         if not depends:
             return 1
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bindep-2.13.0/bindep/depends.py 
new/bindep-2.14.0/bindep/depends.py
--- old/bindep-2.13.0/bindep/depends.py 2025-03-21 00:05:42.000000000 +0100
+++ new/bindep-2.14.0/bindep/depends.py 2026-03-19 15:56:35.000000000 +0100
@@ -64,6 +64,11 @@
 PY3 = "base-py3"
 
 
+class DependsException(Exception):
+    """Exception raised by Depends."""
+    pass
+
+
 def get_depends(filename=None, default_blank=False):
     fd = get_depends_file(filename)
     if not fd:
@@ -140,12 +145,17 @@
         :param filename: The string name of the file from which requirements
             were loaded.
         """
+        self.filename = filename
+
         if not depends_string.endswith('\n'):
             # The parsley grammar expects each line to end with a newline
             depends_string += '\n'
-        parser = makeGrammar(grammar, {})(depends_string)
-        self._rules = parser.rules()
-        self.filename = filename
+
+        try:
+            parser = makeGrammar(grammar, {})(depends_string)
+            self._rules = parser.rules()
+        except Exception as e:
+            raise DependsException(f"Requirements parsing error: {e}")
 
     def _partition(self, rule):
         """Separate conditions into platform and user profiles.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bindep-2.13.0/bindep/tests/test_depends.py 
new/bindep-2.14.0/bindep/tests/test_depends.py
--- old/bindep-2.13.0/bindep/tests/test_depends.py      2025-03-21 
00:05:42.000000000 +0100
+++ new/bindep-2.14.0/bindep/tests/test_depends.py      2026-03-19 
15:56:35.000000000 +0100
@@ -24,7 +24,6 @@
 
 import distro
 import fixtures
-import ometa.runtime
 from testtools import ExpectedException
 from testtools.matchers import Contains
 from testtools.matchers import Equals
@@ -39,6 +38,7 @@
 from bindep.depends import Pacman
 from bindep.depends import Rpm
 from bindep.depends import Apk
+from bindep.depends import DependsException
 
 
 # NOTE(notmorgan): In python3 subprocess.check_output returns bytes not
@@ -541,8 +541,9 @@
             depends.active_rules(["default"]))
 
     def test_parser_invalid(self):
-        self.assertRaises(ometa.runtime.ParseError,
-                          lambda: Depends("foo [platform:bar@baz]\n"))
+        with ExpectedException(DependsException,
+                               "Requirements parsing error:.*"):
+            Depends("foo [platform:bar@baz]\n")
 
     def test_platforms_include(self):
         # 9 tests for the nine cases of _include in Depends
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bindep-2.13.0/bindep/tests/test_main.py 
new/bindep-2.14.0/bindep/tests/test_main.py
--- old/bindep-2.13.0/bindep/tests/test_main.py 2025-03-21 00:05:42.000000000 
+0100
+++ new/bindep-2.14.0/bindep/tests/test_main.py 2026-03-19 15:56:35.000000000 
+0100
@@ -15,9 +15,11 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+import logging
 import os
 import subprocess
 import sys
+from io import StringIO
 from textwrap import dedent
 from unittest import mock
 
@@ -27,7 +29,7 @@
 from fixtures import TempDir
 from testtools import TestCase
 
-from bindep.__main__ import main
+from bindep.__main__ import main, configure_logging
 
 
 class MainFixture(Fixture):
@@ -206,3 +208,49 @@
         result2 = subprocess.check_output(
             [sys.executable, "-m", "bindep", "--version"])
         assert result == result2
+
+    def test_logging_split(self):
+        """Test logging to stdout and stderr.
+
+        INFO|WARNING -> stdout
+        ERROR|CRITICAL -> stderr.
+        """
+        stderr_capture = StringIO()
+        stdout_capture = StringIO()
+
+        # Clear existing handlers
+        root_logger = logging.getLogger()
+        for handler in root_logger.handlers[:]:
+            root_logger.removeHandler(handler)
+
+        # Patch sys.stdout and sys.stderr
+        with mock.patch('sys.stdout', stdout_capture), \
+             mock.patch('sys.stderr', stderr_capture):
+            configure_logging()
+            logging.critical("Test critical message")
+            logging.error("Test error message")
+            logging.warning("Test warning message")
+            logging.info("Test info message")
+
+        # Verify output routing
+        stderr_out = stderr_capture.getvalue()
+        stdout_out = stdout_capture.getvalue()
+
+        # stderr
+        self.assertIn("Test critical message\n", stderr_out)
+        self.assertIn("Test error message\n", stderr_out)
+        # stdout
+        self.assertIn("Test warning message\n", stdout_out)
+        self.assertIn("Test info message\n", stdout_out)
+
+    def test_invalid_syntax_returns_exit_code_2(self):
+        """Test that parsing errors return exit code 2."""
+        fixture = self.useFixture(MainFixture())
+        self.useFixture(MonkeyPatch('sys.argv', ['bindep']))
+
+        # Create file with invalid syntax
+        with open(fixture.path + '/bindep.txt', 'wt') as f:
+            f.write('foo [platform:bar@baz]\n')
+
+        self.assertEqual(2, main())
+        self.assertIn("Requirements parsing error:", fixture.logger.output)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bindep-2.13.0/bindep.egg-info/PKG-INFO 
new/bindep-2.14.0/bindep.egg-info/PKG-INFO
--- old/bindep-2.13.0/bindep.egg-info/PKG-INFO  2025-03-21 00:06:59.000000000 
+0100
+++ new/bindep-2.14.0/bindep.egg-info/PKG-INFO  2026-03-19 15:57:59.000000000 
+0100
@@ -1,11 +1,8 @@
 Metadata-Version: 2.4
 Name: bindep
-Version: 2.13.0
+Version: 2.14.0
 Summary: Binary dependency utility
-Author: OpenDev Contributors
-Author-email: [email protected]
-Maintainer: OpenDev Contributors
-Maintainer-email: [email protected]
+Author-email: OpenDev Contributors <[email protected]>
 Project-URL: Browse Source, https://opendev.org/opendev/bindep
 Project-URL: Bug Reporting, 
https://storyboard.openstack.org/#!/project/opendev/bindep
 Project-URL: Documentation, https://docs.opendev.org/opendev/bindep
@@ -21,7 +18,6 @@
 Classifier: Operating System :: MacOS :: MacOS X
 Classifier: Operating System :: POSIX :: Linux
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.7
 Classifier: Programming Language :: Python :: 3.8
 Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
@@ -33,7 +29,7 @@
 Classifier: Topic :: Software Development :: Testing
 Classifier: Topic :: System :: Archiving :: Packaging
 Classifier: Topic :: Utilities
-Requires-Python: >=3.7
+Requires-Python: >=3.8
 Description-Content-Type: text/x-rst
 License-File: LICENSE
 Requires-Dist: distro>=1.7
@@ -165,6 +161,15 @@
 Comments are allowed: everything from the first ``#`` to the end of the line is
 ignored.
 
+CLI Exit Codes
+--------------
+
+The `bindep` CLI will exit with one of the following integer values:
+
+* ``0``: Success - all dependencies satisfied or listing operations completed
+* ``1``: File not found/reading errors OR missing/incompatible packages
+* ``2``: Parse errors in the input fie
+
 Examples
 --------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bindep-2.13.0/bindep.egg-info/SOURCES.txt 
new/bindep-2.14.0/bindep.egg-info/SOURCES.txt
--- old/bindep-2.13.0/bindep.egg-info/SOURCES.txt       2025-03-21 
00:06:59.000000000 +0100
+++ new/bindep-2.14.0/bindep.egg-info/SOURCES.txt       2026-03-19 
15:57:59.000000000 +0100
@@ -56,6 +56,7 @@
 doc/source/releasenotes.rst
 doc/source/usage.rst
 playbooks/bindep/run.yaml
+releasenotes/notes/add-exit-code-on-parse-error-3d937acaa4ccc013.yaml
 releasenotes/notes/almalinux-154befa793559c61.yaml
 releasenotes/notes/apk-error-handling-94d6910226a770f2.yaml
 releasenotes/notes/as-module-b07f9bf5c220d3e5.yaml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bindep-2.13.0/bindep.egg-info/pbr.json 
new/bindep-2.14.0/bindep.egg-info/pbr.json
--- old/bindep-2.13.0/bindep.egg-info/pbr.json  2025-03-21 00:06:59.000000000 
+0100
+++ new/bindep-2.14.0/bindep.egg-info/pbr.json  2026-03-19 15:57:59.000000000 
+0100
@@ -1 +1 @@
-{"git_version": "09f16f6", "is_release": true}
\ No newline at end of file
+{"git_version": "9a97635", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bindep-2.13.0/noxfile.py new/bindep-2.14.0/noxfile.py
--- old/bindep-2.13.0/noxfile.py        2025-03-21 00:05:42.000000000 +0100
+++ new/bindep-2.14.0/noxfile.py        2026-03-19 15:56:35.000000000 +0100
@@ -11,12 +11,14 @@
 # version using --force-python.
 @nox.session(python="3")
 def linters(session):
+    # TODO: switch to a dependency group after Python 3.8 support is dropped
     session.install(".[test-linters]")
     session.run("flake8")
 
 
 @nox.session(python="3")
 def docs(session):
+    # TODO: switch to a dependency group after Python 3.8 support is dropped
     session.install(".[build-docs]")
     session.run(
         "sphinx-build", "-W",
@@ -28,6 +30,7 @@
 
 @nox.session(python="3")
 def venv(session):
+    # TODO: switch to a dependency group after Python 3.8 support is dropped
     session.install("-e", ".[test-unit]")
     session.run(*session.posargs)
 
@@ -35,6 +38,7 @@
 # This will attempt to run python3 tests by default.
 @nox.session(python=["3"])
 def tests(session):
+    # TODO: switch to a dependency group after Python 3.8 support is dropped
     session.install("-e", ".[test-unit]")
     session.run("stestr", "run", *session.posargs)
     session.run("stestr", "slowest")
@@ -42,6 +46,7 @@
 
 @nox.session(python="3")
 def cover(session):
+    # TODO: switch to a dependency group after Python 3.8 support is dropped
     session.install("-e", ".[test-cover]")
     session.env["PYTHON"] = "coverage run --source bindep --parallel-mode"
     session.run("stestr", "run", *session.posargs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bindep-2.13.0/pyproject.toml 
new/bindep-2.14.0/pyproject.toml
--- old/bindep-2.13.0/pyproject.toml    2025-03-21 00:05:42.000000000 +0100
+++ new/bindep-2.14.0/pyproject.toml    2026-03-19 15:56:35.000000000 +0100
@@ -4,8 +4,7 @@
 
 [project]
 authors = [
-    {email = "[email protected]"},
-    {name = "OpenDev Contributors"},
+    {name = "OpenDev Contributors", email = 
"[email protected]"},
 ]
 classifiers = [
     "Development Status :: 5 - Production/Stable",
@@ -16,7 +15,6 @@
     "Operating System :: MacOS :: MacOS X",
     "Operating System :: POSIX :: Linux",
     "Programming Language :: Python :: 3",
-    "Programming Language :: Python :: 3.7",
     "Programming Language :: Python :: 3.8",
     "Programming Language :: Python :: 3.9",
     "Programming Language :: Python :: 3.10",
@@ -45,16 +43,14 @@
     "distro",
     "package",
 ]
-# TODO: Add 'license-expression = "Apache-2.0"' here and drop the License
-# classifier once https://github.com/pypa/setuptools/issues/4629 is resolved.
-maintainers = [
-    {email = "[email protected]"},
-    {name = "OpenDev Contributors"},
-]
+# TODO: Add 'license = "Apache-2.0"' here and drop the License classifier above
+# once support for Python 3.8 is dropped (requires SetupTools>=77).
 name = "bindep"
 readme = {charset = "UTF-8", content-type = "text/x-rst", file = "README.rst"}
-requires-python = ">=3.7"
+requires-python = ">=3.8"
 
+# TODO: replace these with PEP 735 compliant dependency groups once support for
+# Python 3.8 is dropped (requires pip>=25.1).
 [project.optional-dependencies]
 build-docs = [
     # needed because we use autodoc to document our tests in the dev docs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/bindep-2.13.0/releasenotes/notes/add-exit-code-on-parse-error-3d937acaa4ccc013.yaml
 
new/bindep-2.14.0/releasenotes/notes/add-exit-code-on-parse-error-3d937acaa4ccc013.yaml
--- 
old/bindep-2.13.0/releasenotes/notes/add-exit-code-on-parse-error-3d937acaa4ccc013.yaml
     1970-01-01 01:00:00.000000000 +0100
+++ 
new/bindep-2.14.0/releasenotes/notes/add-exit-code-on-parse-error-3d937acaa4ccc013.yaml
     2026-03-19 15:56:35.000000000 +0100
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    A new exit code (2) is added to the CLI when a parse error occurs from the 
input file.

Reply via email to