Commit graph

10 commits

Author SHA1 Message Date
Daniel Roth
0d4462d131 GoogleSolarApi translates BuildingInsightsNotFoundError to sentinel dict 🟩 2026-05-21 16:06:54 +00:00
Daniel Roth
521294ad91 GoogleSolarApi delegates get_building_insights to GoogleSolarApiClient 🟥 2026-05-21 15:59:22 +00:00
Daniel Roth
b1933c07c3 GoogleSolarApiClient propagates exception after retry exhaustion 🟩 2026-05-21 15:53:39 +00:00
Daniel Roth
573656be64 GoogleSolarApiClient raises BuildingInsightsNotFoundError on 404 entity-not-found 🟥 2026-05-21 15:52:21 +00:00
Daniel Roth
44217bf361 GoogleSolarApiClient retries on transient HTTP errors 🟥 2026-05-21 15:49:57 +00:00
Daniel Roth
629fc34a0f GoogleSolarApiClient fetches building insights from the Solar API 🟥 2026-05-21 15:46:47 +00:00
Jun-te Kim
dc159e0b45 tests framework completed 2026-05-20 14:00:19 +00:00
Jun-te Kim
d0cf3d14ad get rid of comments 2026-05-20 13:21:11 +00:00
Jun-te Kim
914a8ed51e postcode splliter working e2e 2026-05-20 11:07:40 +00:00
Jun-te Kim
7b00a33cd2 infrastructure: typed S3/SQS clients (S3Client, CsvS3Client, SqsClient, Address2UprnQueueClient)
Slice 3/6 of the postcode_splitter refactor (Hestia-Homes/Model#1101).
Introduces a thin typed infrastructure layer wrapping boto3 for the AWS
side of the splitter. S3Client/SqsClient are bucket-/queue-bound byte
adapters; CsvS3Client subclasses S3Client to round-trip CSV row dicts
via the existing parse_s3_uri helper in utils/s3.py; Address2UprnQueueClient
subclasses SqsClient to publish the typed {task_id, sub_task_id, s3_uri}
fan-out body the downstream consumer expects. moto[s3,sqs] is pulled into
test.requirements.txt and the new tests/infrastructure/ suite exercises
each client against the moto backend (S3 round-trip, CSV round-trip,
SQS send + body inspection, typed publish + body inspection). pyright
--strict is clean on the new modules.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 17:12:21 +00:00