audit-labs/control-coverage

Control coverage and blind-spot analysis for audit evidence.

clone: git clone https://gitbay.org/audit-labs/control-coverage.git

main: control_coverage/reporters/__init__.py · raw

 1"""Renderers for a coverage report: Markdown, HTML, JSON, and a Statement of Applicability."""
 2
 3from __future__ import annotations
 4
 5from ..coverage import CoverageReport
 6from . import html, json, markdown, soa
 7
 8_RENDERERS = {
 9    "md": markdown.render,
10    "markdown": markdown.render,
11    "html": html.render,
12    "json": json.render,
13    "soa": soa.render,
14}
15
16# File extension per format (soa is Markdown by default).
17EXTENSIONS = {"md": "md", "markdown": "md", "html": "html", "json": "json", "soa": "md"}
18
19
20def render(report: CoverageReport, fmt: str) -> str:
21    try:
22        return _RENDERERS[fmt](report)
23    except KeyError:
24        raise ValueError(
25            f"unknown format '{fmt}'. Choose from: {', '.join(sorted(_RENDERERS))}"
26        ) from None