diff --git a/repositories/epc/epc_postgres_repository.py b/repositories/epc/epc_postgres_repository.py index 95f09fdf..1c92e1bf 100644 --- a/repositories/epc/epc_postgres_repository.py +++ b/repositories/epc/epc_postgres_repository.py @@ -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 diff --git a/tests/repositories/epc/test_epc_batch_save.py b/tests/repositories/epc/test_epc_batch_save.py index 03489884..c31e22b2 100644 --- a/tests/repositories/epc/test_epc_batch_save.py +++ b/tests/repositories/epc/test_epc_batch_save.py @@ -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