always normalize exceptions before raising #3471
Merged
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.
Split from #3455
It seems like the part of the above PR which needs to be better understood is the use of
PyErr_SetObject
, so I've split out this PR which just ensures the exception is normalized when raising a "lazy" exception. Given that 3.12 already does this (by virtue of exceptions always being normalized) this is a consistency change for the older Pythons. It fixes the issue observed in #3439 (a test added).To try to make things a bit simpler I've adjusted code paths a little bit so that
PyErrState::normalize
has just one implementation with different match arms for pre/post 3.12.