Batch EPC writes in EpcPostgresRepository pass pyright strict 🟪

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Daniel Roth 2026-06-29 13:17:29 +00:00
parent 0fa1b9001c
commit f27d1e21bb
2 changed files with 15 additions and 16 deletions

View file

@ -67,9 +67,9 @@ class EpcSaveRequest:
def _col_values(model: SQLModel, exclude: frozenset[str] = frozenset()) -> dict[str, Any]:
"""Extract column-keyed values from a SQLModel instance for Core INSERT."""
return {
c.name: getattr(model, c.name)
c.name: getattr(model, c.name) # type: ignore[union-attr]
for c in model.__table__.c # type: ignore[attr-defined]
if c.name not in exclude
if c.name not in exclude # type: ignore[union-attr]
}
@ -164,8 +164,8 @@ class EpcPostgresRepository(EpcRepository):
)
for r in requests
]
returned_parents = self._session.execute(
_sa_insert(EpcPropertyModel).returning(EpcPropertyModel.id),
returned_parents = self._session.execute( # type: ignore[deprecated]
_sa_insert(EpcPropertyModel).returning(EpcPropertyModel.__table__.c["id"]), # type: ignore[attr-defined]
parent_rows,
).all()
epc_property_ids = [row[0] for row in returned_parents]
@ -235,19 +235,19 @@ class EpcPostgresRepository(EpcRepository):
# Bulk-insert all simple child tables (no downstream FK dependency).
if perf_rows:
self._session.execute(_sa_insert(EpcPropertyEnergyPerformanceModel), perf_rows)
self._session.execute(_sa_insert(EpcPropertyEnergyPerformanceModel), perf_rows) # type: ignore[deprecated]
if heating_rows:
self._session.execute(_sa_insert(EpcMainHeatingDetailModel), heating_rows)
self._session.execute(_sa_insert(EpcMainHeatingDetailModel), heating_rows) # type: ignore[deprecated]
if window_rows:
self._session.execute(_sa_insert(EpcWindowModel), window_rows)
self._session.execute(_sa_insert(EpcWindowModel), window_rows) # type: ignore[deprecated]
if pv_rows:
self._session.execute(_sa_insert(EpcPhotovoltaicArrayModel), pv_rows)
self._session.execute(_sa_insert(EpcPhotovoltaicArrayModel), pv_rows) # type: ignore[deprecated]
if element_rows:
self._session.execute(_sa_insert(EpcEnergyElementModel), element_rows)
self._session.execute(_sa_insert(EpcEnergyElementModel), element_rows) # type: ignore[deprecated]
if flat_rows:
self._session.execute(_sa_insert(EpcFlatDetailsModel), flat_rows)
self._session.execute(_sa_insert(EpcFlatDetailsModel), flat_rows) # type: ignore[deprecated]
if rhi_rows:
self._session.execute(_sa_insert(EpcRenewableHeatIncentiveModel), rhi_rows)
self._session.execute(_sa_insert(EpcRenewableHeatIncentiveModel), rhi_rows) # type: ignore[deprecated]
# Building parts: insert with RETURNING and zip positionally to resolve
# floor-dimension FKs. Do NOT key by id(part) — the same EpcPropertyData
@ -259,8 +259,8 @@ class EpcPostgresRepository(EpcRepository):
_col_values(EpcBuildingPartModel.from_domain(part, epc_pid), frozenset({"id"}))
for part, epc_pid in parts_ordered
]
returned_bps = self._session.execute(
_sa_insert(EpcBuildingPartModel).returning(EpcBuildingPartModel.id),
returned_bps = self._session.execute( # type: ignore[deprecated]
_sa_insert(EpcBuildingPartModel).returning(EpcBuildingPartModel.__table__.c["id"]), # type: ignore[attr-defined]
bp_rows,
).all()
floor_rows: list[dict[str, Any]] = [
@ -269,7 +269,7 @@ class EpcPostgresRepository(EpcRepository):
for dim in part.sap_floor_dimensions
]
if floor_rows:
self._session.execute(_sa_insert(EpcFloorDimensionModel), floor_rows)
self._session.execute(_sa_insert(EpcFloorDimensionModel), floor_rows) # type: ignore[deprecated]
return epc_property_ids

View file

@ -17,11 +17,10 @@ from dataclasses import replace
from pathlib import Path
from typing import Any
import pytest
from sqlalchemy import Engine
from sqlmodel import Session
from datatypes.epc.domain.epc_property_data import EpcPropertyData, SapFloorDimension
from datatypes.epc.domain.epc_property_data import EpcPropertyData
from datatypes.epc.domain.mapper import EpcPropertyDataMapper
from repositories.epc.epc_postgres_repository import EpcPostgresRepository, EpcSaveRequest