Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-exceptiongroup for 
openSUSE:Factory checked in at 2026-02-18 17:04:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-exceptiongroup (Old)
 and      /work/SRC/openSUSE:Factory/.python-exceptiongroup.new.1977 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-exceptiongroup"

Wed Feb 18 17:04:34 2026 rev:11 rq:1333712 version:1.3.1

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-exceptiongroup/python-exceptiongroup.changes  
    2025-09-11 14:39:27.180081988 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-exceptiongroup.new.1977/python-exceptiongroup.changes
    2026-02-18 17:04:52.892354520 +0100
@@ -1,0 +2,9 @@
+Wed Feb 18 07:08:36 UTC 2026 - Daniel Garcia <[email protected]>
+
+- Update to 1.3.1
+  * Fixed AttributeError: 'TracebackException' object has no attribute
+    'exceptions' when formatting unpickled TBEs from another Python
+    process which did not apply the exceptiongroup patches (#144)
+- Drop upstreamed patch py314.patch
+
+-------------------------------------------------------------------

Old:
----
  exceptiongroup-1.3.0-gh.tar.gz
  py314.patch

New:
----
  exceptiongroup-1.3.1-gh.tar.gz

----------(Old B)----------
  Old:    process which did not apply the exceptiongroup patches (#144)
- Drop upstreamed patch py314.patch
----------(Old E)----------

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

Other differences:
------------------
++++++ python-exceptiongroup.spec ++++++
--- /var/tmp/diff_new_pack.aB6v7k/_old  2026-02-18 17:04:53.624384988 +0100
+++ /var/tmp/diff_new_pack.aB6v7k/_new  2026-02-18 17:04:53.624384988 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-exceptiongroup
 #
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -29,14 +29,12 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-exceptiongroup%{psuffix}
-Version:        1.3.0
+Version:        1.3.1
 Release:        0
 Summary:        Backport of PEP 654 (exception groups)
 License:        MIT AND Python-2.0
 URL:            https://github.com/agronholm/exceptiongroup
 Source:         
https://github.com/agronholm/exceptiongroup/archive/refs/tags/%{version}.tar.gz#/exceptiongroup-%{version}-gh.tar.gz
-# PATCH-FIX-UPSTREAM 
https://github.com/agronholm/exceptiongroup/commit/a0da94dadfb39c0b52c0cd5c87ace166b00f74c1
 Fixed test failures on Python 3.14
-Patch0:         py314.patch
 BuildRequires:  %{python_module base >= 3.7}
 BuildRequires:  %{python_module flit-scm}
 BuildRequires:  %{python_module pip}
@@ -91,7 +89,9 @@
 
 %if %{with test}
 %check
-%pytest
+# Broken test with latest python3.13
+# https://github.com/agronholm/exceptiongroup/issues/154
+%pytest -k "not test_exceptions_mutate_original_sequence"
 %endif
 
 %if !%{with test}

++++++ exceptiongroup-1.3.0-gh.tar.gz -> exceptiongroup-1.3.1-gh.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/exceptiongroup-1.3.0/.github/workflows/test.yml 
new/exceptiongroup-1.3.1/.github/workflows/test.yml
--- old/exceptiongroup-1.3.0/.github/workflows/test.yml 2025-05-10 
19:41:55.000000000 +0200
+++ new/exceptiongroup-1.3.1/.github/workflows/test.yml 2025-11-22 
00:00:44.000000000 +0100
@@ -10,7 +10,7 @@
     strategy:
       fail-fast: false
       matrix:
-        python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
+        python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
     runs-on: ubuntu-latest
     steps:
     - uses: actions/checkout@v4
@@ -18,6 +18,7 @@
       uses: actions/setup-python@v5
       with:
         python-version: ${{ matrix.python-version }}
+        allow-prereleases: true
     - uses: actions/cache@v4
       with:
         path: ~/.cache/pip
@@ -35,7 +36,7 @@
     strategy:
       fail-fast: false
       matrix:
-        python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", 
pypy-3.11]
+        python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14", 
pypy-3.11]
     runs-on: ubuntu-latest
     steps:
     - uses: actions/checkout@v4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/exceptiongroup-1.3.0/.pre-commit-config.yaml 
new/exceptiongroup-1.3.1/.pre-commit-config.yaml
--- old/exceptiongroup-1.3.0/.pre-commit-config.yaml    2025-05-10 
19:41:55.000000000 +0200
+++ new/exceptiongroup-1.3.1/.pre-commit-config.yaml    2025-11-22 
00:00:44.000000000 +0100
@@ -1,6 +1,6 @@
 repos:
 - repo: https://github.com/pre-commit/pre-commit-hooks
-  rev: v5.0.0
+  rev: v6.0.0
   hooks:
   - id: check-added-large-files
   - id: check-case-conflict
@@ -16,7 +16,7 @@
   - id: trailing-whitespace
 
 - repo: https://github.com/astral-sh/ruff-pre-commit
-  rev: v0.11.7
+  rev: v0.13.3
   hooks:
     - id: ruff
       args: [--fix, --show-fixes]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/exceptiongroup-1.3.0/CHANGES.rst 
new/exceptiongroup-1.3.1/CHANGES.rst
--- old/exceptiongroup-1.3.0/CHANGES.rst        2025-05-10 19:41:55.000000000 
+0200
+++ new/exceptiongroup-1.3.1/CHANGES.rst        2025-11-22 00:00:44.000000000 
+0100
@@ -3,6 +3,13 @@
 
 This library adheres to `Semantic Versioning 2.0 <http://semver.org/>`_.
 
+**1.3.1**
+
+- Fixed ``AttributeError: 'TracebackException' object has no attribute 
'exceptions'``
+  when formatting unpickled TBEs from another Python process which did not 
apply the
+  ``exceptiongroup`` patches
+  (`#144 <https://github.com/agronholm/exceptiongroup/issues/144>`_)
+
 **1.3.0**
 
 - Added ``**kwargs`` to function and method signatures as appropriate to match 
the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/exceptiongroup-1.3.0/pyproject.toml 
new/exceptiongroup-1.3.1/pyproject.toml
--- old/exceptiongroup-1.3.0/pyproject.toml     2025-05-10 19:41:55.000000000 
+0200
+++ new/exceptiongroup-1.3.1/pyproject.toml     2025-11-22 00:00:44.000000000 
+0100
@@ -88,9 +88,9 @@
 warn_unused_ignores = true
 
 [tool.tox]
-env_list = ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "pypy3"]
+env_list = ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14", 
"pypy3"]
 skip_missing_interpreters = true
-labels = {typing = ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]}
+labels = {typing = ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13", 
"3.14"]}
 requires = ["tox >= 4.22"]
 
 [tool.tox.env_run_base]
@@ -104,4 +104,4 @@
     ["pyright", "tests/check_types.py"],
     ["mypy", "tests/check_types.py"],
 ]
-deps = ["pyright", "mypy"]
+deps = ["pyright == 1.1.400", "mypy"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/exceptiongroup-1.3.0/src/exceptiongroup/_formatting.py 
new/exceptiongroup-1.3.1/src/exceptiongroup/_formatting.py
--- old/exceptiongroup-1.3.0/src/exceptiongroup/_formatting.py  2025-05-10 
19:41:55.000000000 +0200
+++ new/exceptiongroup-1.3.1/src/exceptiongroup/_formatting.py  2025-11-22 
00:00:44.000000000 +0100
@@ -241,7 +241,7 @@
         for msg, exc in reversed(output):
             if msg is not None:
                 yield from _ctx.emit(msg)
-            if exc.exceptions is None:
+            if getattr(exc, "exceptions", None) is None:
                 if exc.stack:
                     yield from _ctx.emit("Traceback (most recent call 
last):\n")
                     yield from _ctx.emit(exc.stack.format())
@@ -332,12 +332,13 @@
         else:
             yield from traceback_exception_original_format_exception_only(self)
 
-        if isinstance(self.__notes__, collections.abc.Sequence):
-            for note in self.__notes__:
+        notes = getattr(self, "__notes__", None)
+        if isinstance(notes, collections.abc.Sequence):
+            for note in notes:
                 note = _safe_string(note, "note")
                 yield from [line + "\n" for line in note.split("\n")]
-        elif self.__notes__ is not None:
-            yield _safe_string(self.__notes__, "__notes__", func=repr)
+        elif notes is not None:
+            yield _safe_string(notes, "__notes__", func=repr)
 
 
 traceback_exception_original_format = traceback.TracebackException.format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/exceptiongroup-1.3.0/tests/dummyscript.py 
new/exceptiongroup-1.3.1/tests/dummyscript.py
--- old/exceptiongroup-1.3.0/tests/dummyscript.py       1970-01-01 
01:00:00.000000000 +0100
+++ new/exceptiongroup-1.3.1/tests/dummyscript.py       2025-11-22 
00:00:44.000000000 +0100
@@ -0,0 +1,12 @@
+# This script exists solely for test_unpatched_tracebackexception_format()
+import pickle
+import sys
+import traceback
+
+assert "exceptiongroup" not in sys.modules, "exceptiongroup was already 
imported"
+
+try:
+    raise ValueError("hello")
+except ValueError as exc:
+    tbe = traceback.TracebackException(type(exc), exc, exc.__traceback__)
+    sys.stdout.buffer.write(pickle.dumps(tbe, 
protocol=pickle.HIGHEST_PROTOCOL))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/exceptiongroup-1.3.0/tests/test_exceptions.py 
new/exceptiongroup-1.3.1/tests/test_exceptions.py
--- old/exceptiongroup-1.3.0/tests/test_exceptions.py   2025-05-10 
19:41:55.000000000 +0200
+++ new/exceptiongroup-1.3.1/tests/test_exceptions.py   2025-11-22 
00:00:44.000000000 +0100
@@ -374,7 +374,7 @@
 class DeepRecursionInSplitAndSubgroup(unittest.TestCase):
     def make_deep_eg(self):
         e = TypeError(1)
-        for _ in range(10000):
+        for _ in range(150_000):
             e = ExceptionGroup("eg", [e])
         return e
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/exceptiongroup-1.3.0/tests/test_formatting.py 
new/exceptiongroup-1.3.1/tests/test_formatting.py
--- old/exceptiongroup-1.3.0/tests/test_formatting.py   2025-05-10 
19:41:55.000000000 +0200
+++ new/exceptiongroup-1.3.1/tests/test_formatting.py   2025-11-22 
00:00:44.000000000 +0100
@@ -1,5 +1,8 @@
+import pickle
+import subprocess
 import sys
 import traceback
+from pathlib import Path
 from typing import NoReturn
 from urllib.error import HTTPError
 
@@ -55,6 +58,22 @@
     return request.param
 
 
[email protected](
+    sys.version_info >= (3, 11),
+    reason="The failure only occurs on Python 3.10 and earlier",
+)
+def test_unpatched_tracebackexception_format():
+    dummy_script_path = Path(__file__).parent / "dummyscript.py"
+    process = subprocess.run(
+        [sys.executable, str(dummy_script_path)], capture_output=True
+    )
+    tbe = pickle.loads(process.stdout)
+    assert not hasattr(tbe, "exceptions")
+    assert not hasattr(tbe, "__notes__")
+    formatted = tbe.format()
+    "".join(formatted)
+
+
 def test_exceptionhook(capsys: CaptureFixture) -> None:
     try:
         raise_excgroup()

Reply via email to