PEP 785: address comments and partially revise proposal#4568
Open
Zac-HD wants to merge 2 commits intopython:mainfrom
Open
PEP 785: address comments and partially revise proposal#4568Zac-HD wants to merge 2 commits intopython:mainfrom
Zac-HD wants to merge 2 commits intopython:mainfrom
Conversation
bd8a97f to
e5f4baf
Compare
e5f4baf to
ae95178
Compare
iritkatriel
reviewed
Sep 17, 2025
| ``first.__context__ = group`` as a side effect. This discards the original | ||
| In this case, the implicit ``exc.__context__ = group`` discards the original | ||
| context of the error, which may contain crucial information to understand why | ||
| the exception was raised. In many production apps it also causes tracebacks |
Member
There was a problem hiding this comment.
leaf_exceptions() loses the __context__ of all ExceptionGroups on the path from the leaf to the root. Here you're fixing it only for the last __context__, but that's not enough.
| with the ``.split()`` and ``.subgroup()`` methods, and mentioning | ||
| ``.preserve_context()`` as an advanced option to address specific pain points. | ||
| with the ``.split()`` and ``.subgroup()`` methods, emphasizing a preference | ||
| for the latter. |
Member
There was a problem hiding this comment.
Why do we need leaf_exceptions()? What can that do that .split() and .subgroup() cannot?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Thanks in particular to @.iritkatriel for great feedback on Discourse, and @.gpshead for discussions over lunch.
This update makes a moderate change to the proposed
BaseExceptionGroup.leaf_exceptions()method, to return a list of(exc, traceback)tuples rather than accepting a boolean flag to call.with_traceback()for the user, and to specify that each sub-exception must be processed only once (in rare cases where a group is not tree-structured).The larger change is to scrap my proposed
BaseException.preserve_context()method: since I'd only (but always) recommend using it in the specific case of re-raising part of the exception group rendered by anexcept*statement, I now propose that we make a small language change to 'do the right thing' there unconditionally.Discuss thread here.
📚 Documentation preview 📚: https://pep-previews--4568.org.readthedocs.build/