a minimal hook for gathering line coverage of the standard library designed to be used with xpresite which means it installs itself on import it s not imported as main so can t use the ifmain idiom it can t import anything besides sys to avoid tainting gathered coverage filenames are not normalized to get gathered coverage back look for test cov in sys modules instead of importing directly that way you can determine if the module was already in use if you need to disable the hook call the disable function types and typing aren t imported to avoid invalid coverage types and typing aren t imported to avoid invalid coverage
import sys

mon = sys.monitoring

FileName = str
LineNo = int
Location = tuple[FileName, LineNo]

coverage: set[Location] = set()



def add_line(
    code: "types.CodeType",
    lineno: int,
) -> "typing.Literal[sys.monitoring.DISABLE]":
    coverage.add((code.co_filename, lineno))
    return mon.DISABLE


def enable():
    mon.use_tool_id(mon.COVERAGE_ID, "regrtest coverage")
    mon.register_callback(mon.COVERAGE_ID, mon.events.LINE, add_line)
    mon.set_events(mon.COVERAGE_ID, mon.events.LINE)


def disable():
    mon.set_events(mon.COVERAGE_ID, 0)
    mon.register_callback(mon.COVERAGE_ID, mon.events.LINE, None)
    mon.free_tool_id(mon.COVERAGE_ID)


enable()