From 7980a8f65fec5e1f77b143c3948ecaafcd7fb309 Mon Sep 17 00:00:00 2001 From: Tin Chi Lo Date: Mon, 21 Sep 2026 16:40:55 -0700 Subject: [PATCH] fix(router): freeze retained forecast fields for lint --- .../complexity_router/complexity_router.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/litellm/router_strategy/complexity_router/complexity_router.py b/litellm/router_strategy/complexity_router/complexity_router.py index f1ce00317d3..58ce61ba7aa 100644 --- a/litellm/router_strategy/complexity_router/complexity_router.py +++ b/litellm/router_strategy/complexity_router/complexity_router.py @@ -1841,11 +1841,13 @@ class ComplexityRouter(CustomLogger): decision["tier_litellm_params"] = masked_tier_litellm_params if previous_decision is None: return decision - forecast_fields: Final = { - field: value - for field, value in previous_decision.items() - if field.startswith("classifier_") or field == "heuristic_v2_forecast" - } + forecast_fields: Final = MappingProxyType( + { + field: value + for field, value in previous_decision.items() + if field.startswith("classifier_") or field == "heuristic_v2_forecast" + } + ) return cast( # cast-ok: retaining optional keys from a typed decision preserves their declared values StandardLoggingRoutingDecision, {**forecast_fields, **decision} )