-
-
Notifications
You must be signed in to change notification settings - Fork 30.7k
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
gh-102594: PyErr_SetObject adds note to exception raised on normalization error #102675
Conversation
I was under the impression that we should not use exception notes internally. I'll try to find a link to the previous discussion (between Victor and Irit, IIRC); it may be relevant to this change. |
There is no general ban on using the notes in the interpreter. The discussion you are referring to was about splitting the message into a "core error message" as arg and "explanation" on the note, so that IDEs can toggle the explanation on and off. The objection was to introduce assumptions about what is in the note, and how IDEs should handle it. There is also a general guideline that information which is known at the time the exception object is constructed does not belong on the note. Technically of course you can put it on the note, but that was not their intended use. This PR addresses the classic use case for PEP-678: we have an exception that we did not construct, and we want to enrich it with additional information which was not available at the time that the exception was constructed. |
Yeah, that discussion sounds familiar. Do you happen to have a link to it? |
I don't, sorry. |
FYI @Zac-HD |
There was some previous discussion in: |
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.
(We discussed this extensively offline, but here are some nits I had already found.)
FWIW I think this is an excellent use case for notes, unlike the two issues Alex linked to.
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.
LG, just one optional suggestion.
🤖 New build scheduled with the buildbot fleet by @iritkatriel for commit 8f0f2be 🤖 If you want to schedule another build, you need to add the 🔨 test-with-refleak-buildbots label again. |
🤖 New build scheduled with the buildbot fleet by @iritkatriel for commit 140770f 🤖 If you want to schedule another build, you need to add the 🔨 test-with-refleak-buildbots label again. |
PS. Shouldn't |
We could, but it's deprecated so I'm not sure how much it matters now. |
Fair |
* main: (34 commits) pythongh-102701: Fix overflow in dictobject.c (pythonGH-102750) pythonGH-78530: add support for generators in `asyncio.wait` (python#102761) Increase stack reserve size for Windows debug builds to avoid test crashes (pythonGH-102764) pythongh-102755: Add PyErr_DisplayException(exc) (python#102756) Fix outdated note about 'int' rounding or truncating (python#102736) pythongh-102192: Replace PyErr_Fetch/Restore etc by more efficient alternatives (python#102760) pythongh-99726: Improves correctness of stat results for Windows, and uses faster API when available (pythonGH-102149) pythongh-102192: remove redundant exception fields from ssl module socket (python#102466) pythongh-102192: Replace PyErr_Fetch/Restore etc by more efficient alternatives (python#102743) pythongh-102737: Un-ignore ceval.c in the CI globals check (pythongh-102745) pythonGH-102748: remove legacy support for generator based coroutines from `asyncio.iscoroutine` (python#102749) pythongh-102721: Improve coverage of `_collections_abc._CallableGenericAlias` (python#102722) pythonGH-102653: Make recipe docstring show the correct distribution (python#102742) Add comments to `{typing,_collections_abc}._type_repr` about each other (python#102752) pythongh-102594: PyErr_SetObject adds note to exception raised on normalization error (python#102675) pythongh-94440: Fix issue of ProcessPoolExecutor shutdown hanging (python#94468) pythonGH-100112: avoid using iterable coroutines in asyncio internally (python#100128) pythongh-102690: Use Edge as fallback in webbrowser instead of IE (python#102691) pythongh-102660: Fix Refleaks in import.c (python#102744) pythongh-102738: remove from cases generator the code related to register instructions (python#102739) ...
Fixes #102594.
Co-authored-by: Ralf W. Grosse-Kunstleve [email protected]
PyErr_Fetch()
behavior change #102594