-
-
Notifications
You must be signed in to change notification settings - Fork 32.5k
Closed
Labels
3.10only security fixesonly security fixes3.11only security fixesonly security fixes3.12only security fixesonly security fixesstdlibPython modules in the Lib dirPython modules in the Lib dirtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
Bug report
traceback.walk_stack(None)
omits the calling frame, making it equivalent to traceback.walk_stack(inspect.currentframe().f_back)
. Given the documentation just says "If f is None, the current stack is used.", I would have expected traceback.walk_stack(None)
to be equivalent to traceback.walk_stack(inspect.currentframe())
.
Example code
The following code
import traceback
import inspect
def abc():
print(list(traceback.walk_stack(None)))
print(list(traceback.walk_stack(inspect.currentframe())))
print(list(traceback.walk_stack(inspect.currentframe().f_back)))
abc()
has as output
[(<frame at 0x7f66ac559a40, file '/home/vincenttc/data/temp/test/test.py', line 10, code <module>>, 10)]
[(<frame at 0x7f66ac55fa60, file '/home/vincenttc/data/temp/test/test.py', line 7, code abc>, 7), (<frame at 0x7f66ac559a40, file '/home/vincenttc/data/temp/test/test.py', line 10, code <module>>, 10)]
[(<frame at 0x7f66ac559a40, file '/home/vincenttc/data/temp/test/test.py', line 10, code <module>>, 10)]
Note that the frame for abc
is missing in the first and last line.
Your environment
- CPython versions tested on: 3.8.10 (Ubuntu 20.04), 3.10.5 (Arch Linux)
finite-state-machine and cakemanny
Metadata
Metadata
Assignees
Labels
3.10only security fixesonly security fixes3.11only security fixesonly security fixes3.12only security fixesonly security fixesstdlibPython modules in the Lib dirPython modules in the Lib dirtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error