"""Renderers for a coverage report: Markdown, HTML, JSON, and a Statement of Applicability.""" from __future__ import annotations from ..coverage import CoverageReport from . import html, json, markdown, soa _RENDERERS = { "md": markdown.render, "markdown": markdown.render, "html": html.render, "json": json.render, "soa": soa.render, } # File extension per format (soa is Markdown by default). EXTENSIONS = {"md": "md", "markdown": "md", "html": "html", "json": "json", "soa": "md"} def render(report: CoverageReport, fmt: str) -> str: try: return _RENDERERS[fmt](report) except KeyError: raise ValueError( f"unknown format '{fmt}'. Choose from: {', '.join(sorted(_RENDERERS))}" ) from None