fix(timing): drop banned typing.cast from provider duration accounting

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
kerry 2026-09-19 00:24:34 +00:00
parent 1961cbcb6c
commit 0f54d76079
2 changed files with 8 additions and 11 deletions

View file

@ -1,6 +1,6 @@
import datetime
from collections.abc import Mapping
from typing import Any, Final, cast
from typing import Any, Final
import httpx
@ -49,8 +49,7 @@ def response_timing_metrics(
if caching_details is not None and caching_details.get("cache_hit") is True
else None
)
metadata_value: Final = get_litellm_metadata_from_kwargs(logging_obj.model_call_details)
metadata: Final = cast(dict[str, object], metadata_value) if isinstance(metadata_value, dict) else {}
metadata: Final[Mapping[str, object]] = get_litellm_metadata_from_kwargs(logging_obj.model_call_details)
llm_api_duration_ms: Final = logging_obj.model_call_details.get("llm_api_duration_ms")
if cache_duration_ms is not None:
overhead_ms: float | None = total_response_time_ms - cache_duration_ms

View file

@ -5,7 +5,7 @@ import re
import time
from collections.abc import Iterator, Mapping, Sequence
from datetime import datetime
from typing import TYPE_CHECKING, Any, Final, cast
from typing import TYPE_CHECKING, Any, Final
from litellm._logging import format_base64_size, verbose_logger
from litellm.constants import (
@ -287,13 +287,11 @@ def _set_duration_in_model_call_details(
duration_ms: Final = (end_time - start_time).total_seconds() * 1000
if logging_obj and hasattr(logging_obj, "model_call_details"):
logging_obj.model_call_details["llm_api_duration_ms"] = duration_ms
metadata_value: Final = get_litellm_metadata_from_kwargs(logging_obj.model_call_details)
if isinstance(metadata_value, dict):
metadata: Final = cast(dict[str, object], metadata_value)
existing_total: Final = metadata.get("llm_api_duration_ms_total")
metadata["llm_api_duration_ms_total"] = (
existing_total if isinstance(existing_total, float) else 0.0
) + duration_ms
metadata: Final[dict[str, object]] = get_litellm_metadata_from_kwargs(logging_obj.model_call_details)
existing_total: Final = metadata.get("llm_api_duration_ms_total")
metadata["llm_api_duration_ms_total"] = (
existing_total if isinstance(existing_total, float) else 0.0
) + duration_ms
else:
verbose_logger.debug("`logging_obj` not found - unable to track `llm_api_duration_ms")
except Exception as e: