Repository navigation
fix(sdk-python): keep the end of truncated tracebacks - #89
Merged
Merged
Conversation
A Python traceback prints the innermost frame and the exception line last, so truncating exception.stacktrace to max_attribute_length by keeping its start dropped the most useful part. The stack trace now keeps its end, with the truncation marker first. Other attributes and the TypeScript core, whose stacks start with the message line, still keep their start.
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
A Python traceback prints the innermost frame and the
Type: messageline last. Whenexception.stacktracewas longer thanmax_attribute_length, the Python core kept its start and cut exactly those lines. It now keeps the end of the stack trace and puts the...[truncated]marker first.Only
exception.stacktracechanges.truncate,serialize_content, andClient.serializetake a keyword-onlykeep_endthat defaults to off, so other attributes and existing callers keep their start. The TypeScript core is unchanged because V8 stacks start with the message line, which a head cut already keeps. A tail cut that lands inside a surrogate pair drops the lone half, as the head cut already does.The docs say "normally" on purpose: an exception line longer than the limit,
add_note()notes, andExceptionGroupcan still put the exception line outside the kept part.