exceptions = list[Exception]()
exceptions.append(ValueError())
exc_grp = ExceptionGroup("", exceptions)
print(f"{exc_grp.exceptions=!r}")
print(f"{exc_grp=!r}")
print()
exceptions.clear()
print(f"{exc_grp.exceptions=!r}")
print(f"{exc_grp=!r}")
exc_grp.exceptions=(ValueError(),)
exc_grp=ExceptionGroup('', [ValueError()])
exc_grp.exceptions=(ValueError(),)
exc_grp=ExceptionGroup('', [])
exc_grp.exceptions=(ValueError(),)
exc_grp=ExceptionGroup('', [ValueError()])
exc_grp.exceptions=(ValueError(),)
exc_grp=ExceptionGroup('', [ValueError()])
Bug report
Bug description:
The exception listing in
repr(exc_grp)diverges fromexc_grp.exceptionswhen the initial sequence of exceptions passed to the constructor has been mutated.Expected behavior: The exceptions listed in
repr(exc_grp)matchexc_grp.exceptions, which is immutable.Reproducer:
Output:
Expected output:
CPython versions tested on:
3.11, 3.12, 3.13, 3.14
Operating systems tested on:
Linux
Linked PRs
ExceptionGrouprepr changing when original exception sequence is mutated #141736ExceptionGrouprepr changing when original exception sequence is mutated (GH-141736) #142388