Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

PEP 785: address comments and partially revise proposal #4568

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
Zac-HD wants to merge 2 commits into python:main
base: main
Choose a base branch
Loading
from Zac-HD:zac-pep-updates

Conversation

@Zac-HD
Copy link
Contributor

@Zac-HD Zac-HD commented Aug 29, 2025
edited
Loading

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 an except* 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/

@Zac-HD Zac-HD force-pushed the zac-pep-updates branch 2 times, most recently from bd8a97f to e5f4baf Compare August 29, 2025 23:15
``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
Copy link
Member

@iritkatriel iritkatriel Sep 17, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
Copy link
Member

@iritkatriel iritkatriel Sep 17, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need leaf_exceptions()? What can that do that .split() and .subgroup() cannot?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@iritkatriel iritkatriel iritkatriel left review comments

@njsmith njsmith Awaiting requested review from njsmith njsmith is a code owner

@gpshead gpshead Awaiting requested review from gpshead gpshead is a code owner

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

AltStyle によって変換されたページ (->オリジナル) /