Subcategory: Test coverage & depth
Score: 7 → 9 (target)
The suite reports 100% line coverage, but 9 # pragma: no cover markers in src/ exclude the hardest runtime paths — chiefly the websocket/auto-shutdown machinery and the blocking loop:
src/pycharting/core/lifecycle.py:77 — websocket_heartbeat
src/pycharting/core/lifecycle.py:104 / :113 — _monitor_connection branches
src/pycharting/core/lifecycle.py:135 — background _run_server exception path
src/pycharting/api/interface.py:234 — plot blocking loop
Line coverage therefore overstates test depth: the concurrency-critical behavior is untested.
Done when: the heartbeat / connection-monitor / auto-shutdown logic is exercised by tests and those # pragma: no cover markers are removed (coverage still ≥ 90%).
Subcategory: Test coverage & depth
Score: 7 → 9 (target)
The suite reports 100% line coverage, but 9
# pragma: no covermarkers insrc/exclude the hardest runtime paths — chiefly the websocket/auto-shutdown machinery and the blocking loop:src/pycharting/core/lifecycle.py:77—websocket_heartbeatsrc/pycharting/core/lifecycle.py:104/:113—_monitor_connectionbranchessrc/pycharting/core/lifecycle.py:135— background_run_serverexception pathsrc/pycharting/api/interface.py:234—plotblocking loopLine coverage therefore overstates test depth: the concurrency-critical behavior is untested.
Done when: the heartbeat / connection-monitor / auto-shutdown logic is exercised by tests and those
# pragma: no covermarkers are removed (coverage still ≥ 90%).