diff options
author | Rémi Lapeyre <remi.lapeyre@henki.fr> | 2019-05-20 22:17:30 (GMT) |
---|---|---|
committer | Pablo Galindo <Pablogsal@gmail.com> | 2019-05-20 22:17:30 (GMT) |
commit | bf457c7d8224179a023957876e757f2a7ffc3d9d (patch) | |
tree | 3e880dd0ab6159e2fae2588ae6f2c6071c1bd7a2 | |
parent | 1a3faf9d9740a8c7505c61839ef09929a7ff9e35 (diff) | |
download | cpython-bf457c7d8224179a023957876e757f2a7ffc3d9d.zip cpython-bf457c7d8224179a023957876e757f2a7ffc3d9d.tar.gz cpython-bf457c7d8224179a023957876e757f2a7ffc3d9d.tar.bz2 |
bpo-36969: Make PDB args command display keyword only arguments (GH-13452)
-rwxr-xr-x | Lib/pdb.py | 6 | ||||
-rw-r--r-- | Lib/test/test_pdb.py | 25 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2019-05-20-23-31-20.bpo-36969.JkZORP.rst | 2 |
3 files changed, 26 insertions, 7 deletions
@@ -1132,9 +1132,9 @@ class Pdb(bdb.Bdb, cmd.Cmd): """ co = self.curframe.f_code dict = self.curframe_locals - n = co.co_argcount - if co.co_flags & 4: n = n+1 - if co.co_flags & 8: n = n+1 + n = co.co_argcount + co.co_kwonlyargcount + if co.co_flags & inspect.CO_VARARGS: n = n+1 + if co.co_flags & inspect.CO_VARKEYWORDS: n = n+1 for i in range(n): name = co.co_varnames[i] if name in dict: diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index 56d8232..a33494d 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -77,9 +77,13 @@ def test_pdb_basic_commands(): ... print('...') ... return foo.upper() + >>> def test_function3(arg=None, *, kwonly=None): + ... pass + >>> def test_function(): ... import pdb; pdb.Pdb(nosigint=True, readrc=False).set_trace() ... ret = test_function_2('baz') + ... test_function3(kwonly=True) ... print(ret) >>> with PdbTestInput([ # doctest: +ELLIPSIS, +NORMALIZE_WHITESPACE @@ -97,10 +101,13 @@ def test_pdb_basic_commands(): ... 'jump 8', # jump over second for loop ... 'return', # return out of function ... 'retval', # display return value + ... 'next', # step to test_function3() + ... 'step', # stepping into test_function3() + ... 'args', # display function args ... 'continue', ... ]): ... test_function() - > <doctest test.test_pdb.test_pdb_basic_commands[1]>(3)test_function() + > <doctest test.test_pdb.test_pdb_basic_commands[2]>(3)test_function() -> ret = test_function_2('baz') (Pdb) step --Call-- @@ -123,14 +130,14 @@ def test_pdb_basic_commands(): [EOF] (Pdb) bt ... - <doctest test.test_pdb.test_pdb_basic_commands[2]>(18)<module>() + <doctest test.test_pdb.test_pdb_basic_commands[3]>(21)<module>() -> test_function() - <doctest test.test_pdb.test_pdb_basic_commands[1]>(3)test_function() + <doctest test.test_pdb.test_pdb_basic_commands[2]>(3)test_function() -> ret = test_function_2('baz') > <doctest test.test_pdb.test_pdb_basic_commands[0]>(1)test_function_2() -> def test_function_2(foo, bar='default'): (Pdb) up - > <doctest test.test_pdb.test_pdb_basic_commands[1]>(3)test_function() + > <doctest test.test_pdb.test_pdb_basic_commands[2]>(3)test_function() -> ret = test_function_2('baz') (Pdb) down > <doctest test.test_pdb.test_pdb_basic_commands[0]>(1)test_function_2() @@ -168,6 +175,16 @@ def test_pdb_basic_commands(): -> return foo.upper() (Pdb) retval 'BAZ' + (Pdb) next + > <doctest test.test_pdb.test_pdb_basic_commands[2]>(4)test_function() + -> test_function3(kwonly=True) + (Pdb) step + --Call-- + > <doctest test.test_pdb.test_pdb_basic_commands[1]>(1)test_function3() + -> def test_function3(arg=None, *, kwonly=None): + (Pdb) args + arg = None + kwonly = True (Pdb) continue BAZ """ diff --git a/Misc/NEWS.d/next/Library/2019-05-20-23-31-20.bpo-36969.JkZORP.rst b/Misc/NEWS.d/next/Library/2019-05-20-23-31-20.bpo-36969.JkZORP.rst new file mode 100644 index 0000000..9253ab9 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-05-20-23-31-20.bpo-36969.JkZORP.rst @@ -0,0 +1,2 @@ +PDB command `args` now display keyword only arguments. Patch contributed by +Rémi Lapeyre. |