From a372f2995f03237c2700ff0d7278df600cde666b Mon Sep 17 00:00:00 2001 From: Jun-te Kim Date: Mon, 29 Jun 2026 14:45:25 +0000 Subject: [PATCH] =?UTF-8?q?Map=20historic=20EPC=20S3=20shard=20to=20domain?= =?UTF-8?q?=20records=20=F0=9F=9F=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- .../historic_epc/historic_epc_s3_repository.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/repositories/historic_epc/historic_epc_s3_repository.py b/repositories/historic_epc/historic_epc_s3_repository.py index 095ae989f..83efdf33d 100644 --- a/repositories/historic_epc/historic_epc_s3_repository.py +++ b/repositories/historic_epc/historic_epc_s3_repository.py @@ -5,8 +5,12 @@ from collections.abc import Callable import pandas as pd from datatypes.epc.domain.historic_epc import HistoricEpc +from datatypes.epc.domain.historic_epc_matching import ( + _map_historic_epc_pandas_row_to_domain, + _sanitise_postcode, +) from repositories.historic_epc.historic_epc_repository import HistoricEpcRepository -from utils.s3 import read_csv_gz_from_s3 +from utils.s3 import parse_s3_uri, read_csv_gz_from_s3 DEFAULT_S3_ROOT = "s3://retrofit-data-dev/historical_epc" @@ -28,4 +32,8 @@ class HistoricEpcS3Repository(HistoricEpcRepository): self._s3_root = s3_root def get_for_postcode(self, postcode: str) -> list[HistoricEpc]: - raise NotImplementedError + pc = _sanitise_postcode(postcode) + bucket, root_prefix = parse_s3_uri(self._s3_root) + key = f"{root_prefix.rstrip('/')}/{pc}/data.csv.gz" + df = self._read_csv_gz(bucket, key) + return [_map_historic_epc_pandas_row_to_domain(row) for _, row in df.iterrows()]