-
-
Notifications
You must be signed in to change notification settings - Fork 32.4k
Closed
Closed
Copy link
Labels
type-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
I'm experimenting with the new monitoring interface in PEP 669. The LINE event happens multiple times for the line in the body of a for loop (as I expect), but the for statement itself only gets an event on entering, not each time around the loop.
This code:
import sys
def loop3():
for i in range(3):
print(i)
print("done")
the_code = loop3.__code__
def line_callback(code, line_number):
assert code == the_code
print(f"LINE: {line_number}")
my_id = sys.monitoring.COVERAGE_ID
sys.monitoring.use_tool_id(my_id, "repro")
sys.monitoring.register_callback(my_id, sys.monitoring.events.LINE, line_callback)
sys.monitoring.set_local_events(my_id, the_code, sys.monitoring.events.LINE)
loop3()
produces:
LINE: 4
LINE: 5
0
LINE: 5
1
LINE: 5
2
LINE: 6
done
I would expect Line 4 to be monitored after each "LINE: 5", including after the last one.
This is with commit 263abd3 of CPython.
Metadata
Metadata
Assignees
Labels
type-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error