fix(modelling_e2e): ship the Historic EPC import closure in the Lambda image

test_lambda_image_copies_full_import_closure caught this: importing the Historic
EPC S3 repo drags datatypes/epc/domain/historic_epc_matching.py into the handler's
init-time closure, and that reaches back into the legacy address matcher —
backend/address2UPRN/scoring.py and utils/pandas_utils.py. The image COPYed
neither, so the Lambda would have died at cold start with Runtime.ImportModuleError.

Copied file-by-file rather than `COPY backend/ backend/`: backend/ is the whole
legacy engine and the closure needs only these seven files. Their third-party
deps (pandas, requests) are already in requirements.txt, so no new pip installs.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jun-te Kim 2026-07-14 11:35:02 +00:00
parent efdb8e816c
commit 1457275fb5

View file

@ -19,6 +19,19 @@ COPY tests/__init__.py tests/__init__.py
COPY tests/orchestration/__init__.py tests/orchestration/__init__.py
COPY tests/orchestration/fakes.py tests/orchestration/fakes.py
# The Historic EPC S3 repo (ADR-0054) maps shard rows through
# datatypes/epc/domain/historic_epc_matching.py, which reaches back into the
# legacy address matcher. Copied file-by-file rather than `COPY backend/ backend/`
# — backend/ is the whole legacy engine, and the closure needs only these. Their
# third-party deps (pandas, requests) are already in requirements.txt.
COPY utils/__init__.py utils/__init__.py
COPY utils/pandas_utils.py utils/pandas_utils.py
COPY backend/__init__.py backend/__init__.py
COPY backend/utils/__init__.py backend/utils/__init__.py
COPY backend/utils/addressMatch.py backend/utils/addressMatch.py
COPY backend/address2UPRN/__init__.py backend/address2UPRN/__init__.py
COPY backend/address2UPRN/scoring.py backend/address2UPRN/scoring.py
COPY applications/ applications/
CMD ["applications.modelling_e2e.handler.handler"]