# Coverage configuration for CodeFRAME

[run]
source = codeframe
omit =
    */tests/*
    */test_*.py
    */__pycache__/*
    */venv/*
    */env/*
    setup.py

[report]
# Enforced floor (#948). This was commented out for a reason that pytest.ini
# has declared obsolete since #669 (that only v2-marked tests run in CI): the gate runs
# every non-e2e, non-lifecycle test, and v1 is gone. Meanwhile the README shipped
# an 88% badge and asked contributors for 85%+, neither of which anything checked
# — and neither of which was true. The last green main run measured 81.91%.
#
# 80 is a FLOOR with ~2 points of headroom, not a target: it exists so coverage
# cannot quietly slide, and it should be raised as the real number climbs. Keep
# it in step with the README badge — tests/test_lifecycle_gates_948.py asserts
# the two agree, and that the README never asks contributors for more than the
# gate enforces.
fail_under = 80
precision = 2
show_missing = true
skip_covered = false

# Exclude lines from coverage
exclude_lines =
    pragma: no cover
    def __repr__
    raise AssertionError
    raise NotImplementedError
    if __name__ == .__main__.:
    if TYPE_CHECKING:
    @abstractmethod
    @abc.abstractmethod
    Protocol
    pass

[html]
directory = htmlcov

[xml]
output = coverage.xml
