feat: improve error group tracebacks on < py11 #825
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.
We make use of exception groups to expose a set of exceptions in a single raise, so we can expose multiple retry attempt failures at once, or a number of failed mutations in a bulk request.
Exception Groups is a Python 3.11 feature, meaning it exposes all exceptions in a useful, readable way in newer versions of Python. For 3.10 and lower, the group is treated as a base exception, with most of the useful debug information hidden. This PR patches in sub-exception information into our exception group-compatible objects, making exceptions behave similarly across Python versions
Related Issue: #794
Examples:
RetryExceptionGroup
Previous <=3.10 output:
3.11 output:
New <=3.10 output:
MutationsExceptionGroup
Previous <=3.10 output:
3.11 output:
New <=3.10 output:
ShardedReadRowsExceptionGroup
Previous <=3.10 output
3.11 output:
New <=3.10 output: