Source code for buildcompiler.reporting.summary

from __future__ import annotations

import json
from dataclasses import asdict, dataclass
from typing import Any

from buildcompiler.domain import BuildStatus, FullBuildResult


[docs] @dataclass class BuildSummary: status: BuildStatus final_product_count: int missing_input_count: int required_approval_count: int warning_count: int
[docs] def to_dict(self) -> dict[str, Any]: data = asdict(self) data["status"] = self.status.value return data
[docs] def to_json(self) -> str: return json.dumps(self.to_dict(), sort_keys=True)
[docs] def to_markdown(self) -> str: return "\n".join( [ "# Build Summary", f"- Status: `{self.status.value}`", f"- Final products: `{self.final_product_count}`", f"- Missing inputs: `{self.missing_input_count}`", f"- Required approvals: `{self.required_approval_count}`", f"- Warnings: `{self.warning_count}`", ] )
[docs] def build_summary(result: FullBuildResult) -> BuildSummary: return BuildSummary( status=result.status, final_product_count=len(result.final_products), missing_input_count=len(result.missing_inputs), required_approval_count=len(result.required_approvals), warning_count=len(result.warnings), )