From 114090d208aa21ec2c565ff974612ca63f7d127d Mon Sep 17 00:00:00 2001 From: mateo-berri <277851410+mateo-berri@users.noreply.github.com> Date: Wed, 4 Nov 2026 21:10:42 -0800 Subject: [PATCH] fix: bill regional uplift multipliers float() accepts, bytes included --- litellm/litellm_core_utils/llm_cost_calc/utils.py | 6 +++--- .../llm_cost_calc/test_llm_cost_calc_utils.py | 8 ++++++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/litellm/litellm_core_utils/llm_cost_calc/utils.py b/litellm/litellm_core_utils/llm_cost_calc/utils.py index 0e5218095fa..3fa130fa3bb 100644 --- a/litellm/litellm_core_utils/llm_cost_calc/utils.py +++ b/litellm/litellm_core_utils/llm_cost_calc/utils.py @@ -6,10 +6,10 @@ from collections.abc import Mapping, Sequence from dataclasses import dataclass, field, replace from datetime import datetime, timezone, tzinfo from types import MappingProxyType -from typing import Final, Literal, Protocol, SupportsFloat, TypedDict, cast +from typing import Final, Literal, Protocol, SupportsFloat, SupportsIndex, TypedDict, cast from zoneinfo import ZoneInfo, ZoneInfoNotFoundError -from typing_extensions import ReadOnly +from typing_extensions import Buffer, ReadOnly import litellm from litellm._internal_context import current_billing_time @@ -1427,7 +1427,7 @@ def get_regional_uplift_multiplier(model_info: ModelInfo, data_residency: str | multiplier: Final = model_info.get(f"regional_processing_uplift_multiplier_{residency}") if multiplier is None: return 1.0 - if not isinstance(multiplier, (str, SupportsFloat)): + if not isinstance(multiplier, (str, Buffer, SupportsFloat, SupportsIndex)): verbose_logger.error( "Invalid regional_processing_uplift_multiplier_%s for model; defaulting to 1.0", residency, diff --git a/tests/unit/litellm_core_utils/llm_cost_calc/test_llm_cost_calc_utils.py b/tests/unit/litellm_core_utils/llm_cost_calc/test_llm_cost_calc_utils.py index 38c6df643b2..609d4a92ade 100644 --- a/tests/unit/litellm_core_utils/llm_cost_calc/test_llm_cost_calc_utils.py +++ b/tests/unit/litellm_core_utils/llm_cost_calc/test_llm_cost_calc_utils.py @@ -2790,6 +2790,14 @@ def test_regional_uplift_reads_the_multiplier_named_by_each_residency(model_info assert get_regional_uplift_multiplier(model_info, data_residency) == 1.25 +@pytest.mark.parametrize( + "model_info", + [{"regional_processing_uplift_multiplier_us": value} for value in (1.25, "1.25", b"1.25", bytearray(b"1.25"))], +) +def test_regional_uplift_accepts_every_value_float_converts(model_info: ModelInfo): + assert get_regional_uplift_multiplier(model_info, "us") == 1.25 + + @pytest.mark.parametrize( "model_info, data_residency", [