From b6784e7d8c2e4e4dd22958a933cd6d624344d119 Mon Sep 17 00:00:00 2001 From: Chesars Date: Thu, 26 Feb 2026 16:13:23 -0300 Subject: [PATCH] fix(types): annotate _FINISH_REASON_MAP and map_finish_reason with OpenAIChatCompletionFinishReason Fixes mypy errors where dict[str, str] was incompatible with the expected Literal type in get_finish_reason_mapping() and _check_finish_reason() return types. --- litellm/litellm_core_utils/core_helpers.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/litellm/litellm_core_utils/core_helpers.py b/litellm/litellm_core_utils/core_helpers.py index 5dad19f2599..ee111f35929 100644 --- a/litellm/litellm_core_utils/core_helpers.py +++ b/litellm/litellm_core_utils/core_helpers.py @@ -5,7 +5,7 @@ from typing import TYPE_CHECKING, Any, Iterable, List, Literal, Optional, Union import httpx from litellm._logging import verbose_logger -from litellm.types.llms.openai import AllMessageValues +from litellm.types.llms.openai import AllMessageValues, OpenAIChatCompletionFinishReason if TYPE_CHECKING: from opentelemetry.trace import Span as _Span @@ -58,7 +58,7 @@ def safe_divide( return numerator / denominator -_FINISH_REASON_MAP = { +_FINISH_REASON_MAP: dict[str, OpenAIChatCompletionFinishReason] = { # Anthropic "stop_sequence": "stop", "end_turn": "stop", @@ -99,7 +99,7 @@ _FINISH_REASON_MAP = { } -def map_finish_reason(finish_reason: str) -> str: +def map_finish_reason(finish_reason: str) -> OpenAIChatCompletionFinishReason: mapped = _FINISH_REASON_MAP.get(finish_reason) if mapped is None: verbose_logger.warning(