From feb2ccc76347d8f7e6fc6ba1314f6a2cfbd8507e Mon Sep 17 00:00:00 2001 From: Christian-Sidak <61099993+Christian-Sidak@users.noreply.github.com> Date: Mon, 19 Oct 2026 20:05:56 -0700 Subject: [PATCH] fix(utils): add type discipline annotations for validate_and_fix_openai_messages Adds mutable-ok suppressions to the list parameter annotation and the new_messages accumulator, Final to the accumulator, and a cast-ok on the append call to satisfy the LIT001/LIT006/LIT010 discipline gate. --- litellm/utils.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/litellm/utils.py b/litellm/utils.py index a70b58c2f52..0ce46bce7c9 100644 --- a/litellm/utils.py +++ b/litellm/utils.py @@ -8419,13 +8419,15 @@ def convert_list_message_to_dict( return [dict(cleanup_none_field_in_message(message=_as_message_value(message))) for message in messages] -def validate_and_fix_openai_messages(messages: list[Any]): +def validate_and_fix_openai_messages( + messages: list[Any], # mutable-ok: caller passes arbitrary message dicts +): """ Ensures all messages are valid OpenAI chat completion messages. Handles missing role for assistant messages. """ - new_messages: list[AllMessageValues] = [] + new_messages: Final[list[AllMessageValues]] = [] # mutable-ok: list is populated by appending, name never rebound for message in messages: # Copy before mutating: assigning dicts into a pydantic Message's # tool_calls triggers PydanticSerializationUnexpectedValue warnings on @@ -8446,7 +8448,7 @@ def validate_and_fix_openai_messages(messages: list[Any]): ), ) cleaned_message = cleanup_none_field_in_message(message=convert_msg_to_dict) - new_messages.append(cast(AllMessageValues, cleaned_message)) + new_messages.append(cast(AllMessageValues, cleaned_message)) # cast-ok: cleanup_none_field_in_message return satisfies AllMessageValues return validate_chat_completion_user_messages(messages=new_messages)