# generated by datamodel-codegen: # filename: ledger_view.json from __future__ import annotations from enum import StrEnum from typing import Literal from pydantic import ( AwareDatetime, BaseModel, ConfigDict, Field, RootModel, conint, constr, ) class Timescale(StrEnum): ANNUAL = 'ANNUAL' MONTHLY = 'MONTHLY' DAY_AHEAD = 'DAY_AHEAD' INTRADAY = 'INTRADAY' REALTIME = 'REALTIME' class Kind(StrEnum): CONTRACT = 'CONTRACT' BID_SUBMITTED = 'BID_SUBMITTED' AWARD = 'AWARD' EXTERNAL_COMMITMENT = 'EXTERNAL_COMMITMENT' class Value(RootModel[constr(pattern=r'^-?\d+(\.\d+)?$')]): root: constr(pattern=r'^-?\d+(\.\d+)?$') class Curve(BaseModel): model_config = ConfigDict( extra='forbid', ) interval_minutes: Literal[15] date: constr(pattern=r'^\d{4}-\d{2}-\d{2}$') values: list[Value] = Field(..., max_length=96, min_length=96) class Entry(BaseModel): model_config = ConfigDict( extra='forbid', ) id: constr(min_length=1) timescale: Timescale period: constr(pattern=r'^\d{4}(-\d{2}(-\d{2})?)?$') kind: Kind energy_mwh: constr(pattern=r'^-?\d+(\.\d+)?$') curve: Curve | None source_ref: constr(min_length=1) recorded_at: AwareDatetime class LedgerView(BaseModel): model_config = ConfigDict( extra='forbid', ) version: conint(ge=0, le=9007199254740991) entries: list[Entry]