bpo-36969: Make PDB args command display positional only arguments (GH-13459)
This commit is contained in:
parent
deffee5774
commit
458560347f
|
@ -1132,7 +1132,7 @@ class Pdb(bdb.Bdb, cmd.Cmd):
|
||||||
"""
|
"""
|
||||||
co = self.curframe.f_code
|
co = self.curframe.f_code
|
||||||
dict = self.curframe_locals
|
dict = self.curframe_locals
|
||||||
n = co.co_argcount + co.co_kwonlyargcount
|
n = co.co_argcount + co.co_posonlyargcount + co.co_kwonlyargcount
|
||||||
if co.co_flags & inspect.CO_VARARGS: n = n+1
|
if co.co_flags & inspect.CO_VARARGS: n = n+1
|
||||||
if co.co_flags & inspect.CO_VARKEYWORDS: n = n+1
|
if co.co_flags & inspect.CO_VARKEYWORDS: n = n+1
|
||||||
for i in range(n):
|
for i in range(n):
|
||||||
|
|
|
@ -80,10 +80,14 @@ def test_pdb_basic_commands():
|
||||||
>>> def test_function3(arg=None, *, kwonly=None):
|
>>> def test_function3(arg=None, *, kwonly=None):
|
||||||
... pass
|
... pass
|
||||||
|
|
||||||
|
>>> def test_function4(a, b, c, /):
|
||||||
|
... pass
|
||||||
|
|
||||||
>>> def test_function():
|
>>> def test_function():
|
||||||
... import pdb; pdb.Pdb(nosigint=True, readrc=False).set_trace()
|
... import pdb; pdb.Pdb(nosigint=True, readrc=False).set_trace()
|
||||||
... ret = test_function_2('baz')
|
... ret = test_function_2('baz')
|
||||||
... test_function3(kwonly=True)
|
... test_function3(kwonly=True)
|
||||||
|
... test_function4(1, 2, 3)
|
||||||
... print(ret)
|
... print(ret)
|
||||||
|
|
||||||
>>> with PdbTestInput([ # doctest: +ELLIPSIS, +NORMALIZE_WHITESPACE
|
>>> with PdbTestInput([ # doctest: +ELLIPSIS, +NORMALIZE_WHITESPACE
|
||||||
|
@ -104,10 +108,14 @@ def test_pdb_basic_commands():
|
||||||
... 'next', # step to test_function3()
|
... 'next', # step to test_function3()
|
||||||
... 'step', # stepping into test_function3()
|
... 'step', # stepping into test_function3()
|
||||||
... 'args', # display function args
|
... 'args', # display function args
|
||||||
|
... 'return', # return out of function
|
||||||
|
... 'next', # step to test_function4()
|
||||||
|
... 'step', # stepping to test_function4()
|
||||||
|
... 'args', # display function args
|
||||||
... 'continue',
|
... 'continue',
|
||||||
... ]):
|
... ]):
|
||||||
... test_function()
|
... test_function()
|
||||||
> <doctest test.test_pdb.test_pdb_basic_commands[2]>(3)test_function()
|
> <doctest test.test_pdb.test_pdb_basic_commands[3]>(3)test_function()
|
||||||
-> ret = test_function_2('baz')
|
-> ret = test_function_2('baz')
|
||||||
(Pdb) step
|
(Pdb) step
|
||||||
--Call--
|
--Call--
|
||||||
|
@ -130,14 +138,14 @@ def test_pdb_basic_commands():
|
||||||
[EOF]
|
[EOF]
|
||||||
(Pdb) bt
|
(Pdb) bt
|
||||||
...
|
...
|
||||||
<doctest test.test_pdb.test_pdb_basic_commands[3]>(21)<module>()
|
<doctest test.test_pdb.test_pdb_basic_commands[4]>(25)<module>()
|
||||||
-> test_function()
|
-> test_function()
|
||||||
<doctest test.test_pdb.test_pdb_basic_commands[2]>(3)test_function()
|
<doctest test.test_pdb.test_pdb_basic_commands[3]>(3)test_function()
|
||||||
-> ret = test_function_2('baz')
|
-> ret = test_function_2('baz')
|
||||||
> <doctest test.test_pdb.test_pdb_basic_commands[0]>(1)test_function_2()
|
> <doctest test.test_pdb.test_pdb_basic_commands[0]>(1)test_function_2()
|
||||||
-> def test_function_2(foo, bar='default'):
|
-> def test_function_2(foo, bar='default'):
|
||||||
(Pdb) up
|
(Pdb) up
|
||||||
> <doctest test.test_pdb.test_pdb_basic_commands[2]>(3)test_function()
|
> <doctest test.test_pdb.test_pdb_basic_commands[3]>(3)test_function()
|
||||||
-> ret = test_function_2('baz')
|
-> ret = test_function_2('baz')
|
||||||
(Pdb) down
|
(Pdb) down
|
||||||
> <doctest test.test_pdb.test_pdb_basic_commands[0]>(1)test_function_2()
|
> <doctest test.test_pdb.test_pdb_basic_commands[0]>(1)test_function_2()
|
||||||
|
@ -176,7 +184,7 @@ def test_pdb_basic_commands():
|
||||||
(Pdb) retval
|
(Pdb) retval
|
||||||
'BAZ'
|
'BAZ'
|
||||||
(Pdb) next
|
(Pdb) next
|
||||||
> <doctest test.test_pdb.test_pdb_basic_commands[2]>(4)test_function()
|
> <doctest test.test_pdb.test_pdb_basic_commands[3]>(4)test_function()
|
||||||
-> test_function3(kwonly=True)
|
-> test_function3(kwonly=True)
|
||||||
(Pdb) step
|
(Pdb) step
|
||||||
--Call--
|
--Call--
|
||||||
|
@ -185,6 +193,21 @@ def test_pdb_basic_commands():
|
||||||
(Pdb) args
|
(Pdb) args
|
||||||
arg = None
|
arg = None
|
||||||
kwonly = True
|
kwonly = True
|
||||||
|
(Pdb) return
|
||||||
|
--Return--
|
||||||
|
> <doctest test.test_pdb.test_pdb_basic_commands[1]>(2)test_function3()->None
|
||||||
|
-> pass
|
||||||
|
(Pdb) next
|
||||||
|
> <doctest test.test_pdb.test_pdb_basic_commands[3]>(5)test_function()
|
||||||
|
-> test_function4(1, 2, 3)
|
||||||
|
(Pdb) step
|
||||||
|
--Call--
|
||||||
|
> <doctest test.test_pdb.test_pdb_basic_commands[2]>(1)test_function4()
|
||||||
|
-> def test_function4(a, b, c, /):
|
||||||
|
(Pdb) args
|
||||||
|
a = 1
|
||||||
|
b = 2
|
||||||
|
c = 3
|
||||||
(Pdb) continue
|
(Pdb) continue
|
||||||
BAZ
|
BAZ
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
PDB command `args` now display positional only arguments. Patch contributed
|
||||||
|
by Rémi Lapeyre.
|
Loading…
Reference in New Issue