From 9554129e4591dfdf1ab12d45d68c4925ad182e21 Mon Sep 17 00:00:00 2001 From: "feng.tsai" Date: Tue, 1 Sep 2026 17:48:52 +0800 Subject: [PATCH] fix(guardrails): satisfy type-discipline budget --- .../guardrail_hooks/bedrock_guardrails.py | 13 ++++++------- .../guardrail_hooks/bedrock_guardrails.py | 4 ++-- type-discipline-budget.json | 2 +- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/litellm/proxy/guardrails/guardrail_hooks/bedrock_guardrails.py b/litellm/proxy/guardrails/guardrail_hooks/bedrock_guardrails.py index 19efcbab4a3..a6c9a42ce6e 100644 --- a/litellm/proxy/guardrails/guardrail_hooks/bedrock_guardrails.py +++ b/litellm/proxy/guardrails/guardrail_hooks/bedrock_guardrails.py @@ -461,7 +461,7 @@ class BedrockGuardrail(CustomGuardrail, BaseAWSLLM): Grounding qualifiers are attached only when assembling the OUTPUT request, so a grounding_source/query tag cannot change how input-safety policies treat content """ - content = message.get("content") + content: Final = message.get("content") if content is None: return () if isinstance(content, str): @@ -513,7 +513,7 @@ class BedrockGuardrail(CustomGuardrail, BaseAWSLLM): @classmethod def _image_urls_in(cls, messages: "Sequence[AllMessageValues] | None") -> frozenset[str]: """Normalized image urls already carried by these messages.""" - found: set[str] = set() # mutable-ok: accumulator, frozen on return + found: Final[set[str]] = set() # mutable-ok: accumulator, frozen on return for message in messages or (): content = message.get("content") if not isinstance(content, list): @@ -776,12 +776,11 @@ class BedrockGuardrail(CustomGuardrail, BaseAWSLLM): Returns: BedrockRequest: The bedrock request object. """ - bedrock_request: BedrockRequest = BedrockRequest(source=source) if source == "INPUT": - bedrock_request = await self._create_bedrock_input_content_request(messages=messages) - elif source == "OUTPUT": - bedrock_request = self._create_bedrock_output_content_request(response=response, messages=messages) - return bedrock_request + return await self._create_bedrock_input_content_request(messages=messages) + if source == "OUTPUT": + return self._create_bedrock_output_content_request(response=response, messages=messages) + return BedrockRequest(source=source) def get_content_items_for_message(self, message: AllMessageValues) -> list[QualifiedTextBlock] | None: """ diff --git a/litellm/types/proxy/guardrails/guardrail_hooks/bedrock_guardrails.py b/litellm/types/proxy/guardrails/guardrail_hooks/bedrock_guardrails.py index e194f4f1132..39db8d613b7 100644 --- a/litellm/types/proxy/guardrails/guardrail_hooks/bedrock_guardrails.py +++ b/litellm/types/proxy/guardrails/guardrail_hooks/bedrock_guardrails.py @@ -1,4 +1,4 @@ -from typing import Literal +from typing import Literal, TypeAlias from typing_extensions import ReadOnly, TypedDict @@ -12,7 +12,7 @@ class BedrockTextContent(TypedDict, total=False): qualifiers: list[BedrockGuardrailQualifier] -BedrockGuardrailImageFormat = Literal["png", "jpeg"] +BedrockGuardrailImageFormat: TypeAlias = Literal["png", "jpeg"] class BedrockGuardrailImageSource(TypedDict, total=False): diff --git a/type-discipline-budget.json b/type-discipline-budget.json index 83c49afb538..9564b632fc4 100644 --- a/type-discipline-budget.json +++ b/type-discipline-budget.json @@ -27,7 +27,7 @@ "limit": 0 }, "LIT010": { - "limit": 16512 + "limit": 16507 }, "LIT011": { "limit": 5537