mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-12 13:29:04 +00:00
HistoricEpcS3Repository reached into utils/s3.py (read_csv_gz_from_s3 + parse_s3_uri), the legacy utility that self-constructs boto3 inside free functions. The other S3 repositories deliberately depend on the infrastructure/s3 layer instead (UnstandardisedAddressListCsvS3Repository injects a CsvS3Client). Bring historic EPC into line. - Add GzipCsvS3Client(S3Client) in infrastructure/s3: read_csv_gz(key) -> DataFrame (get_object + gzip decode). - Inject it into HistoricEpcS3Repository; the bucket lives in the client and the repo only builds the per-postcode key + maps rows (no S3/HTTP code). Add with_default_s3_client(s3_root) for composition roots. - Update main.py and the match_addresses_for_postcode seam to the factory. - Repo tests inject a real GzipCsvS3Client over a controlled boto stub (exact key assertions + AccessDenied); add a moto-based client test and a factory test covering s3_root -> bucket+key. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MQE5TsSuQTeNSCSz9A9GQf |
||
|---|---|---|
| .. | ||
| bulk_upload | ||
| comparable_properties | ||
| epc | ||
| fuel_rates | ||
| geospatial | ||
| historic_epc | ||
| landlord_overrides | ||
| magic_plan | ||
| materials | ||
| plan | ||
| product | ||
| property | ||
| property_baseline | ||
| scenario | ||
| solar | ||
| spatial | ||
| tasks | ||
| unstandardised_address | ||
| uploaded_file | ||
| __init__.py | ||
| postgres_unit_of_work.py | ||
| unit_of_work.py | ||