mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
fix: normalize empty API sap_roof_windows to None for round-trip fidelity
`test_epc_property_data_round_trips[RdSAP-Schema-21.0.1]` failed with `sap_roof_windows: None != []` — a normalization mismatch, not lost data. The 21.0.1 fixture has no roof windows, but the 21.0.1 API mapper emitted an empty list `[]` while the domain field defaults to None (`Optional[List[SapRoofWindow]] = None`), the 21.0.0 path yields None, and the persistence reload yields None (roof windows aren't stored yet — doc §2.4). Append `or None` so "no roof windows" has one canonical representation across mapper paths and the round-trip. No data-loss change: a cert WITH roof windows still produces the populated list (test_golden_fixtures pins a 6-roof-window cert), and the §2.4 roof-window persistence gap remains separately tracked. Full sap10_calculator + documents_parser + epc-repository suites pass (2420); pyright unchanged. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
5597a8b87e
commit
a6b798218f
1 changed files with 7 additions and 1 deletions
|
|
@ -1634,11 +1634,17 @@ class EpcPropertyDataMapper:
|
|||
for w in schema.sap_windows
|
||||
if not _api_is_roof_window(w)
|
||||
],
|
||||
# Empty → None (not []) so "no roof windows" has the single
|
||||
# canonical representation the domain field defaults to
|
||||
# (`Optional[List] = None`), matching the 21.0.0 path and the
|
||||
# persistence round-trip (roof windows aren't yet stored — doc
|
||||
# §2.4 — so a reloaded cert always reads None here).
|
||||
sap_roof_windows=[
|
||||
_api_sap_roof_window(w)
|
||||
for w in schema.sap_windows
|
||||
if _api_is_roof_window(w)
|
||||
],
|
||||
]
|
||||
or None,
|
||||
# SAP energy source
|
||||
sap_energy_source=SapEnergySource(
|
||||
mains_gas=es.mains_gas == "Y",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue