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.
Linked PRs
Metadata
Metadata
Assignees
Labels
Documentation in the Doc dirDocumentation in the Doc dirAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error