-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
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
Conversation
bd8a97f to
e5f4baf
Compare
e5f4baf to
ae95178
Compare
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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?
Uh oh!
There was an error while loading. Please reload this page.
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/