synthesize a traceback to get a normal exc_info from an exception #12187
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.
Problem
mainis currently broken on 3.12:While it seems like #11394 may have been the direct trigger for the test failure, it appears the error was first introduced earlier in a hasty attempt to remove some
DeprecationWarnings (25f4e6e). It turns out that while the documentation at https://docs.python.org/3.12/library/shutil.html#shutil.rmtree still uses the name "excinfo" for the third argument toonexc,onexcactually has aBaseExceptionfor the third argument instead of asys.exc_info(), as per https://docs.python.org/3.12/whatsnew/3.12.html#shutil.Solution
sys.exc_info()parts anywhere, just convert anysys.exc_info()to aBaseExceptionin our callback wrapper, and switch to explicitly only handlingBaseExceptionin our error callbacks.