You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
title="Make traceback module's formatting of SyntaxError more similar to system formatting"updated_at=<Date2020-05-17.23:52:37.235>user='https://github.com/gvanrossum'
The traceback module formats several edge cases of SyntaxError different than CPython's default formatting.
There's an off-by-one error if the column offset (printed as a caret) points past the last character (example: 'a +='). The clipping is wrong and the caret points to the last character.
If the offset is <= 0, it appears the code silently adds the length of the source text.
The system formatting suppresses the caret if the offset is -1; the only way to suppress the caret with the traceback module is setting the offset to None (or setting the source text to None).
The system formatting can position the caret way past the end of the source text; the traceback module clips (also see the first bullet).
I propose to make the traceback module behave the same way as the system module in all cases. I also propose to make both suppress the caret if the offset is <= 0. Finally I propose to make the system formatting limit the offset to just past the end of the source text.
I propose not to bother changing anything in 3.8 or before.
My current PR does not strip trailing whitespace. It only strips a single trailing newline (since this is usually but not always present, and we don't want to its presence to cause an extra blank line, nor do we want its absence to cause the text line and the caret line to be run together).