[3.12] gh-125884: Support breakpoint on functions with annotations (G… (#125903)

* [3.12] gh-125884: Support breakpoint on functions with annotations (GH-125892)
(cherry picked from commit 8f2c0f7a03)

Co-authored-by: Tian Gao <gaogaotiantian@hotmail.com>
This commit is contained in:
Tian Gao 2024-10-23 15:36:40 -07:00 committed by GitHub
parent 440ed18e08
commit 05b11ba059
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 38 additions and 1 deletions

View file

@ -96,7 +96,7 @@ class Restart(Exception):
"post_mortem", "help"]
def find_function(funcname, filename):
cre = re.compile(r'def\s+%s\s*[(]' % re.escape(funcname))
cre = re.compile(r'def\s+%s(\s*\[.+\])?\s*[(]' % re.escape(funcname))
try:
fp = tokenize.open(filename)
except OSError:

View file

@ -352,6 +352,42 @@ def test_pdb_breakpoint_commands():
4
"""
def test_pdb_breakpoint_on_annotated_function_def():
"""Test breakpoints on function definitions with annotation.
>>> def foo[T]():
... return 0
>>> def bar() -> int:
... return 0
>>> def foobar[T]() -> int:
... return 0
>>> reset_Breakpoint()
>>> def test_function():
... import pdb; pdb.Pdb(nosigint=True, readrc=False).set_trace()
... pass
>>> with PdbTestInput([ # doctest: +NORMALIZE_WHITESPACE
... 'break foo',
... 'break bar',
... 'break foobar',
... 'continue',
... ]):
... test_function()
> <doctest test.test_pdb.test_pdb_breakpoint_on_annotated_function_def[4]>(3)test_function()
-> pass
(Pdb) break foo
Breakpoint 1 at <doctest test.test_pdb.test_pdb_breakpoint_on_annotated_function_def[0]>:1
(Pdb) break bar
Breakpoint 2 at <doctest test.test_pdb.test_pdb_breakpoint_on_annotated_function_def[1]>:1
(Pdb) break foobar
Breakpoint 3 at <doctest test.test_pdb.test_pdb_breakpoint_on_annotated_function_def[2]>:1
(Pdb) continue
"""
def test_pdb_breakpoints_preserved_across_interactive_sessions():
"""Breakpoints are remembered between interactive sessions

View file

@ -0,0 +1 @@
Fixed the bug for :mod:`pdb` where it can't set breakpoints on functions with certain annotations.