Closed
Description
The documentation for pdb
says:
.. pdbcommand:: ! statement
Execute the (one-line) *statement* in the context of the current stack frame.
The exclamation point can be omitted unless the first word of the statement
resembles a debugger command. To set a global variable, you can prefix the
assignment command with a :keyword:`global` statement on the same line,
e.g.::
(Pdb) global list_options; list_options = ['-l']
(Pdb)
Which suggests that the prefix is used with a space between the !
prefix and the statement to be executed. However, the implementation consumes only the prefix, which means that the natural reading of the docs leads to an IndentationError
:
$ python3 test.py
--Return--
> /home/snoopjedi/repos/cpython/test.py(3)<module>()->None
-> breakpoint()
(Pdb) l
1 lst = [1, 2, 3]
2 it = iter(lst)
3 -> breakpoint()
[EOF]
(Pdb) ! next(it)
*** IndentationError: unexpected indent
while omitting the space gives the intended result:
(Pdb) !next(it)
1
It would also be helpful to have an example in the documentation that actually uses the prefix for first-word disambiguation as described in the text.