Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.3k
bpo-43950: Specialize tracebacks for subscripts/binary ops#27037
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
For the |
cc31c2d to413d601ComparePython/traceback.c Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
I thought from the title of the PR that it's related to Mark's bytecode specializations. Are you settled on using this word? Seems a bit overloaded now.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
They are not relevant at all, but I can see the confusion. Any suggestions on alternative renaming?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Here's how clang's documentation talks about their carets:https://clang.llvm.org/diagnostics.html
So following from there maybe something likePrecision traceback orPointing traceback because we're pointing to a specific part in the expression or trying to make it more precise?
@isidentical this may need rebasing now that the other PR is merged |
Let's focus on land this one next@ammaraskar@isidentical |
@ammaraskar after your +def_extract_anchors_from_segment(segment):+importast++tree=ast.parse(segment)+iflen(tree.body)==1:+statement=tree.body[0]+matchstatement:+caseast.Expr(expr):+matchexpr:+caseast.BinOp():+operator_str=segment[expr.left.end_col_offset:expr.right.col_offset]+operator_offset=len(operator_str)-len(operator_str.lstrip())+returnoperator_offset,operator_offset+1+caseast.Subscript():+returnexpr.value.end_col_offset,expr.slice.col_offset+return-1,-1 |
Uh oh!
There was an error while loading.Please reload this page.
94801f4 to26e900eCompareUh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Co-authored-by: Batuhan Taskaya <batuhanosmantaskaya@gmail.com>
d77011d tod79d365CompareThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Just some basic stylistic suggestions mostly, looks good to me.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
4a9a967 to26430d4Comparebedevere-bot commentedJul 10, 2021
🤖 New build scheduled with the buildbot fleet by@isidentical for commit26430d4 🤖 If you want to schedule another build, you need to add the ":hammer: test-with-buildbots" label again. |
Ping@pablogsal |
Apparently ASAN is failing, though not sure if it is relevant. |
Python/traceback.c Outdated
| err=PyFile_WriteString(" ",f); | ||
| if (err<0) { | ||
| gotodone; | ||
| if (source_line) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Why is this guarded bysource_line? How we can correctly calculate the offsets if we cannot get the line to calculate the characters? How can tHe code path when this is false and we continue with the bytes be corrent?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
@isidentical This still applies, could you please check out what's going on here?
@isidentical I have pushed081738d to greatly simplify the code structure. I think it reads better now. Please, check it out |
Thanks@pablogsal, it LGTM. Feel free to merge! |
@isidentical Please, check out#27037 (comment) |
Ah, I think that is not relevant. I just checked again, and it seems like |
Also I am not really sure if we get any cases where primary/secondary will be different, but if so I think it would be nicer to make amendments to the traceback.py logic to do the same. |
In this PR or in a different one? |
We should also add some tests where we fail to parse the source. Is this covered currently? |
This PR. |
Also, I am not very sure what you refer to with "will be different". Can you elaborate?
I don't see this covered. Could you add a test for this? |
Also, I am not very sure what you refer to with "will be different". Can you elaborate?With the latest commit you pass primary/secondary (^/~) characters to theAST visitors. But for both of the cases they get assigned the same valuesso that is what I meant by 'will be different' (are there any otherspecializations that you plan would change the values for these 2variables).I am currently unavailable to add a test, but can try to write somethingoff tonight. …On Mon, Jul 12, 2021, 3:38 PM Pablo Galindo Salgado < ***@***.***> wrote: Also I am not really sure if we get any cases where primary/secondary will be different, but if so I think it would be nicer to make amendments to the traceback.py logic to do the same. Also, I am not very sure what you refer to with "will be different". Can you elaborate? We should also add some tests where we fail to parse the source. Is this covered currently? I don't see this covered. Could you add a test for this? — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#27037 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/ALJKHQJO6MPLFWJU5R75MZ3TXLO37ANCNFSM473CEDAA> . |
Uh oh!
There was an error while loading.Please reload this page.
5d2036a toa67c8aaComparea67c8aa to045c491CompareUh oh!
There was an error while loading.Please reload this page.
We now have a test for when parsing fails and the |
Yes, the most important step: celebrate 🎉 (also pray for the buildbots to not fail 😉 ) |
Sincepython/cpython#27037, they can includetildes in addition to the carets.
Sincepython/cpython#27037, they can includetildes in addition to the carets.
Uh oh!
There was an error while loading.Please reload this page.
Examples;
https://bugs.python.org/issue43950