audit-labs/control-coverage
Control coverage and blind-spot analysis for audit evidence.
clone: git clone https://gitbay.org/audit-labs/control-coverage.git
v0.1.0: 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