Source code for marivo.analysis.frames.coverage
"""Typed coverage analysis frames."""
from __future__ import annotations
from dataclasses import dataclass
from typing import Any, Literal
from pydantic import ConfigDict
from marivo.analysis.frames.base import BaseFrame, BaseFrameMeta
from marivo.render import Card
class CoverageFrameMeta(BaseFrameMeta):
model_config = ConfigDict(extra="forbid")
kind: Literal["coverage_frame"] = "coverage_frame"
parent_ref: str
coverage_kind: Literal["time_slot", "window_coverage"] = "time_slot"
axes: dict[str, Any]
sample_interval: str | None = None
[docs]
@dataclass(repr=False)
class CoverageFrame(BaseFrame):
"""Call marivo.help(CoverageFrame) for its public consumption contract."""
meta: CoverageFrameMeta
def _repr_identity(self) -> str:
return f"CoverageFrame ref={self.meta.ref} parent={self.meta.parent_ref} rows={self.meta.row_count}"
def _card(self) -> Card:
card = self._header_card()
card.field(
"coverage",
(
f"kind={self.meta.coverage_kind} parent={self.meta.parent_ref} "
f"sample_interval={self.meta.sample_interval or 'none'}"
),
)
if self.meta.axes:
card.listing(
"axes",
(f"{key}={self.meta.axes[key]}" for key in sorted(self.meta.axes)),
)
self._append_evidence_sections(card)
return self._append_preview_table(card)