From 59350009ee945babc3beccba00fdacdca63e23cf Mon Sep 17 00:00:00 2001 From: deploy-migration Date: Thu, 2 Jul 2026 15:01:09 +0000 Subject: [PATCH] sync spectra_replay_normalize.py from production (case-insensitive tankModels/ prefix matching) --- spectra_replay_normalize.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/spectra_replay_normalize.py b/spectra_replay_normalize.py index c17e4ad..e4bd6bd 100644 --- a/spectra_replay_normalize.py +++ b/spectra_replay_normalize.py @@ -10,17 +10,24 @@ MODEL_PREFIXES = ("tankModels/", "airModels/", "aircrafts/") def strip_model_prefix(unit: Any) -> str: - """Return a bare unit CDK from either ``foo`` or ``tankModels/foo``.""" + """Return a bare unit CDK from either ``foo`` or ``tankModels/foo``. + + Spectra is inconsistent about prefix casing across replays (observed both + ``tankModels/`` and ``tankmodels/`` on the wire), so the match is + case-insensitive. + """ value = str(unit or "").strip() + lowered = value.lower() for prefix in MODEL_PREFIXES: - if value.startswith(prefix): + if lowered.startswith(prefix.lower()): return value[len(prefix):] return value def _model_path(unit: Any) -> str: value = str(unit or "").strip() - return value if any(value.startswith(prefix) for prefix in MODEL_PREFIXES) else "" + lowered = value.lower() + return value if any(lowered.startswith(prefix.lower()) for prefix in MODEL_PREFIXES) else "" def _as_number(value: Any) -> float | int | None: