| from typing import Literal | |
| from pydantic import BaseModel, Field | |
| class Axis(BaseModel): | |
| label: str | None = None | |
| scale: Literal["linear", "categorical"] = "categorical" | |
| values: list[str] | None = None | |
| minimum: float | None = None | |
| maximum: float | None = None | |
| class ChartSeries(BaseModel): | |
| name: str | |
| color: str | None = None | |
| points: list[tuple[str, float]] | |
| class ChartIR(BaseModel): | |
| chart_type: Literal["bar", "line", "scatter", "pie", "unknown"] = "unknown" | |
| title: str | None = None | |
| plot_bbox: tuple[float, float, float, float] | None = None | |
| x_axis: Axis = Field(default_factory=Axis) | |
| y_axis: Axis = Field(default_factory=lambda: Axis(scale="linear")) | |
| series: list[ChartSeries] = Field(default_factory=list) | |
| confidence: float = 0.0 | |