-
-
Notifications
You must be signed in to change notification settings - Fork 30.2k
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-125884: Support breakpoint on functions with annotations #125892
base: main
Are you sure you want to change the base?
gh-125884: Support breakpoint on functions with annotations #125892
Conversation
Lib/pdb.py
Outdated
for const in code.co_consts: | ||
if isinstance(const, CodeType) and const.co_name == funcname: | ||
funccode = const | ||
break | ||
else: | ||
continue |
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 think this is easier to read:
for const in code.co_consts: | |
if isinstance(const, CodeType) and const.co_name == funcname: | |
funccode = const | |
break | |
else: | |
continue | |
try: | |
next(c for c in code.co_consts if isinstance(c, CodeType) and c.co_name == funcname) | |
except StopIteration: | |
continue |
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 don't that's equivalent. The assignment to funccode
is missing. Personally I think the original is easier to read. The modified one is definitely shorter, but the usage of next
and StopIteration
is pretty tricky.
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.
Hmm, I don't think the continue
part is correct, that should not happen. I'll try to fix it.
@@ -363,6 +363,42 @@ def test_pdb_breakpoint_commands(): | |||
4 | |||
""" | |||
|
|||
def test_pdb_breakpoint_on_annotated_function_def(): |
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.
Are there tests for functions with decorators?
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.
Not really. What's the expected behavior? We can't resolve the decorator in pdb, we will only add the breakpoint inside the decorated function.
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.
Well, that's not true.. It depends on whether the function is in the name space. If it's already in the namespace, we will set the breakpoint in the decorator.
close #125885 as well.
Two things are fixed: