diff --git a/litellm/router_strategy/adaptive_router/adaptive_router.py b/litellm/router_strategy/adaptive_router/adaptive_router.py index 41ae5e80b12..eea0ef9351f 100644 --- a/litellm/router_strategy/adaptive_router/adaptive_router.py +++ b/litellm/router_strategy/adaptive_router/adaptive_router.py @@ -16,6 +16,7 @@ from __future__ import annotations import asyncio import time from collections import OrderedDict +from collections.abc import Mapping from dataclasses import asdict, dataclass from typing import TYPE_CHECKING, Any, Final, cast @@ -217,13 +218,13 @@ class AdaptiveRouter: ), ) - def _savings_baseline_fields(self) -> dict[str, str]: + def _savings_baseline_fields(self) -> Mapping[str, str]: if self.litellm_router_instance is None: - return {} + return {} # mutable-ok: immutable empty result for absent router baseline = resolve_baseline(self.litellm_router_instance, self.config.available_models) if baseline is None: - return {} - fields = {"savings_baseline_model": baseline.model} + return {} # mutable-ok: immutable empty result for unresolved baseline + fields = {"savings_baseline_model": baseline.model} # mutable-ok: assemble TypedDict kwargs if baseline.deployment_id is not None: fields["savings_baseline_deployment_id"] = baseline.deployment_id return fields diff --git a/litellm/router_strategy/quality_router/quality_router.py b/litellm/router_strategy/quality_router/quality_router.py index 58cb50bd82b..d4bc01a26cf 100644 --- a/litellm/router_strategy/quality_router/quality_router.py +++ b/litellm/router_strategy/quality_router/quality_router.py @@ -16,6 +16,7 @@ then cheapest `model_info.input_cost_per_token`). """ import math +from collections.abc import Mapping from typing import TYPE_CHECKING, Any, Final, Optional from litellm._logging import verbose_router_logger @@ -322,11 +323,11 @@ class QualityRouter(CustomLogger): if isinstance(metadata, dict): metadata["quality_router_decision"] = decision - def _savings_fields(self) -> dict[str, str]: + def _savings_fields(self) -> Mapping[str, str]: baseline = resolve_baseline(self.litellm_router_instance, self.config.available_models) if baseline is None: - return {} - fields = {"savings_baseline_model": baseline.model} + return {} # mutable-ok: immutable empty result for unresolved baseline + fields = {"savings_baseline_model": baseline.model} # mutable-ok: assemble TypedDict kwargs if baseline.deployment_id is not None: fields["savings_baseline_deployment_id"] = baseline.deployment_id return fields