from __future__ import annotations from pydantic import BaseModel, Field from app.agents.d3.registry import D3Template, register class DataTableRow(BaseModel): label: str values: list[str] class DataTableData(BaseModel): title: str = "" columns: list[str] = Field(min_length=1, max_length=16) rows: list[DataTableRow] = Field(min_length=1, max_length=100) _HTML = """
""" register(D3Template(id="data_table", family="chart", title="Compact data table", when_to_use="Preserve selected tabular values in a clean readable table without changing their visual encoding.", data_requirements="Column labels and source-faithful row values.", schema=DataTableData, html_template=_HTML, golden_sample=DataTableData(title="Model comparison", columns=["Math Avg", "STEM"], rows=[DataTableRow(label="Qwen", values=["47.4", "25.2"]), DataTableRow(label="DeepSeek", values=["26.6", "23.2"])])))