From bec5c4f3c3bb4f2fc63167c8115188c3cd5a1c62 Mon Sep 17 00:00:00 2001 From: Jun-te Kim Date: Tue, 12 May 2026 10:51:27 +0000 Subject: [PATCH] one place to have df_has_single_uprn --- CLAUDE.md | 1 + backend/address2UPRN/main.py | 3 +-- backend/utils/addressMatch.py | 10 ---------- 3 files changed, 2 insertions(+), 12 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 23d465a7..f88a59d5 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -62,6 +62,7 @@ bash .devcontainer/backend/install-claude-skills.sh ## Type Safety All new code must pass `pyright` with zero errors under `typeCheckingMode = strict`. +Use Optional over | None Annotate all function return types. Use `dict[str, Any]` for untyped external API payloads — never bare `dict`. Add `pandas-stubs` when introducing pandas to a module. diff --git a/backend/address2UPRN/main.py b/backend/address2UPRN/main.py index 7ac5a54e..b2cb4d98 100644 --- a/backend/address2UPRN/main.py +++ b/backend/address2UPRN/main.py @@ -17,9 +17,8 @@ from datetime import datetime from backend.utils.addressMatch import ( AddressMatch, get_uprn_candidates, - df_has_single_uprn, - score_addresses, ) +from backend.address2UPRN.scoring import df_has_single_uprn from datatypes.epc.domain.historic_epc_matching import ( match_addresses_for_postcode, ) diff --git a/backend/utils/addressMatch.py b/backend/utils/addressMatch.py index ee9d1004..7618e9ac 100644 --- a/backend/utils/addressMatch.py +++ b/backend/utils/addressMatch.py @@ -259,13 +259,3 @@ def get_uprn_candidates( out[uprn_column] = out[uprn_column].astype(str).str.replace(r"\.0$", "", regex=True) out["lexirank"] = out["lexiscore"].rank(method="dense", ascending=False).astype(int) return out.sort_values(["lexirank", "lexiscore"], ascending=[True, False]) - - -def df_has_single_uprn(df: pd.DataFrame, uprn: str, column: str = "uprn") -> bool: - """Returns True if all non-null UPRNs in df match the given uprn.""" - if column not in df.columns: - return False - uprns = df[column].dropna().astype(str).str.strip().unique() - if len(uprns) == 0: - return False - return len(uprns) == 1 and uprns[0] == str(uprn)