from __future__ import annotations from dataclasses import dataclass from domain.property_baseline.performance import Performance from domain.property_baseline.rebaseliner import RebaselineReason @dataclass(frozen=True) class PropertyBaselinePerformance: """A Property's current performance aggregate (CONTEXT.md, ADR-0004). Holds both halves — ``lodged`` (what the gov register says) and ``effective`` (what the modelling pipeline scored against) — plus the ``rebaseline_reason`` recording *why* they differ (``"none"`` when equal). Both halves are always populated, even when equal. Carries the part of the energy block that needs no derivation: annual ``space_heating_kwh`` / ``water_heating_kwh`` read off the EPC's RHI. Fuel split and bills (the rest of EPC Energy Derivation) land in a follow-up once a Fuel Rates source exists. """ lodged: Performance effective: Performance rebaseline_reason: RebaselineReason space_heating_kwh: float water_heating_kwh: float