Skip to content
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 our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gh-107932: Fix dis module for bytecode that does not have an associated source line #107988

Merged
merged 8 commits into from
Aug 25, 2023

Conversation

CorvinM
Copy link
Contributor

@CorvinM CorvinM commented Aug 15, 2023

Fix dis module for bytecode that does not have an associated source line.
fixes #107932

This does change behavior of many of the dis.py public functions to display lines with no source line mapping as such.
At the very least it changes:
findlinestarts - now returns starts of bytecode blocks that dont have a source line with lineno=None
dis/disassemble/distb/disco - now separates and labels lineno=None bytecode blocks, previously it lumped them into the previous block (see #107932)
get_instructions & Instruction - Instruction objects now have starts_line=False to indicate that the instruction does not start a line.

@cpython-cla-bot
Copy link

cpython-cla-bot bot commented Aug 15, 2023

All commit authors signed the Contributor License Agreement.
CLA signed

@bedevere-bot
Copy link

Most changes to Python require a NEWS entry.

Please add it using the blurb_it web app or the blurb command-line tool.

Copy link
Member

@markshannon markshannon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for working on this.
The changes look correct, but the use of False as a special value for starts_line is a bit hard to follow.

Lib/test/test_dis.py is an endless source of merge conflicts, so I'll try merge ASAP after you've made the changes.

Lib/dis.py Outdated Show resolved Hide resolved
@bedevere-bot
Copy link

A Python core developer has requested some changes be made to your pull request before we can consider merging it. If you could please address their requests along with any other requests in other reviews from core developers that would be appreciated.

Once you have made the requested changes, please leave a comment on this pull request containing the phrase I have made the requested changes; please review again. I will then notify any core developers who have left a review that you're ready for them to take another look at this pull request.

@CorvinM
Copy link
Contributor Author

CorvinM commented Aug 18, 2023

@markshannon Thanks for the quick review! I have made the requested changes; please review again. I have also updated the docs to reflect the changes and resolved the merge conflict (for now). I've listed the changes in the docs as happening in 3.13 (is this the correct procedure for the project?)

@bedevere-bot
Copy link

Thanks for making the requested changes!

@markshannon: please review the changes made to this pull request.

Copy link
Member

@markshannon markshannon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, looks good.

@markshannon markshannon merged commit 24aa249 into python:main Aug 25, 2023
23 of 26 checks passed
@erlend-aasland
Copy link
Contributor

main has been broken since this was merged.

@markshannon
Copy link
Member

#108478

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

dis.dis() reports line numbers where there are none.
4 participants