sys.monitoring in 3.13+ does not trigger LINE event when there is no line break before
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 77.2k
- Forks
- 35.9k
- PR merge metrics
- PR metrics pending
Description
Bug report
Bug description:
In sys.monitoring there seems to be a regression from 3.13+ on where the LINE event does not fire for the first line of a code object if it is on the same line as the def /lambda statement. In Pyhton 3.12 it works. The bug disappears if on all versions if the PY_START event is added to the event mask.
Reproduction code:
import sys
print(f"Python {sys.version}")
TOOL = 1
sys.monitoring.use_tool_id(TOOL, "test")
hits = []
sys.monitoring.register_callback(TOOL, sys.monitoring.events.LINE,
lambda _code, line: hits.append(line))
# A: LINE event never fires in single-line function/lambda on 3.13+
def f(x): return x + 1 #<<<<<<<<<< LINE 12
#f = lambda x: x + 1 # same issue
sys.monitoring.set_local_events(TOOL, f.__code__, sys.monitoring.events.LINE)
f(0)
print(f"Example A: {hits}")
hits.clear()
# B: Adding PY_START makes the LINE fire (even though we have no callback registred for PY_START)
sys.monitoring.set_local_events(TOOL, f.__code__, sys.monitoring.events.LINE | sys.monitoring.events.PY_START)
f(0)
print(f"Example B: {hits}")
hits.clear()
# C: LINE fires but never for first line
def g(x): x = 0; x += 1; \
x += 2; return x #<<<<<<<<<< LNE 30
sys.monitoring.set_local_events(TOOL, g.__code__, sys.monitoring.events.LINE)
g(0)
print(f"Example C: {hits}")
The expected output would be as in Python 3.12, we get line events for line 12 and 29 even if PY_START (example B) is not set:
$ python3.12 cpython_issue_monitoring_line_event.py # Only one that fully works
Python 3.12.3 (main, Jun 19 2026, 12:46:00) [GCC 13.3.0]
Example A: [12]
Example B: [12]
Example C: [29, 30]
But the actual output from 3.13 on is missing the first lines:
$ python3.13 cpython_issue_monitoring_line_event.py
Python 3.13.15 (main, Aug 6 2026, 11:06:22) [GCC 13.3.0]
Example A: []
Example B: [12]
Example C: [30]
I.e., same with:
- Python 3.14.6 (main, Jun 11 2026, 12:32:48) [GCC 13.3.0]
- Python 3.15.0rc1 (main, Aug 5 2026, 11:04:42) [GCC 13.3.0]
CPython versions tested on:
3.12, 3.13, 3.14, 3.15
Operating systems tested on:
Linux
Linked PRs
- gh-155996
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by running the supplied reproduction on Python 3.12 through 3.15 and compare the LINE event output for examples A, B, and C. Then inspect the sys.monitoring handling of LINE and PY_START events, along with linked PR gh-155996. Done means the first-line events match the expected output without requiring PY_START, with regression coverage for the reported cases.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- devtools
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 25/100