diff --git a/litellm/proxy/guardrails/guardrail_hooks/sensitive_data_routing/__init__.py b/litellm/proxy/guardrails/guardrail_hooks/sensitive_data_routing/__init__.py index 1a138b29fe0..d38b851680a 100644 --- a/litellm/proxy/guardrails/guardrail_hooks/sensitive_data_routing/__init__.py +++ b/litellm/proxy/guardrails/guardrail_hooks/sensitive_data_routing/__init__.py @@ -1,5 +1,6 @@ """Built-in Sensitive Data Routing guardrail: reroutes sensitive prompts to an on-premise model.""" +from collections.abc import Sequence from typing import TYPE_CHECKING, Final from litellm.types.guardrails import GuardrailEventHooks, Mode, SupportedGuardrailIntegrations @@ -14,8 +15,8 @@ if TYPE_CHECKING: def _to_event_hook( - mode: str | list[str] | Mode | None, -) -> GuardrailEventHooks | list[GuardrailEventHooks] | Mode | None: + mode: str | Sequence[str] | Mode | None, +) -> GuardrailEventHooks | list[GuardrailEventHooks] | Mode | None: # mutable-ok: base type if mode is None or isinstance(mode, Mode): return mode if isinstance(mode, str): diff --git a/litellm/proxy/guardrails/guardrail_hooks/sensitive_data_routing/sensitive_data_routing.py b/litellm/proxy/guardrails/guardrail_hooks/sensitive_data_routing/sensitive_data_routing.py index 7a6c7ee09e1..4f2aa2c1e0e 100644 --- a/litellm/proxy/guardrails/guardrail_hooks/sensitive_data_routing/sensitive_data_routing.py +++ b/litellm/proxy/guardrails/guardrail_hooks/sensitive_data_routing/sensitive_data_routing.py @@ -80,7 +80,7 @@ class SensitiveDataRoutingGuardrail(CustomGuardrail): keywords: Sequence[str] | None = None, sticky_session: bool = True, session_ttl_seconds: int = DEFAULT_SESSION_TTL_SECONDS, - event_hook: GuardrailEventHooks | list[GuardrailEventHooks] | None = None, + event_hook: GuardrailEventHooks | list[GuardrailEventHooks] | None = None, # mutable-ok: base type default_on: bool = False, ) -> None: if not on_premise_model: @@ -105,7 +105,7 @@ class SensitiveDataRoutingGuardrail(CustomGuardrail): self.session_ttl_seconds = session_ttl_seconds @classmethod - def get_supported_event_hooks(cls) -> list[GuardrailEventHooks]: + def get_supported_event_hooks(cls) -> list[GuardrailEventHooks]: # mutable-ok: base type return [GuardrailEventHooks.pre_call] @staticmethod @@ -122,7 +122,7 @@ class SensitiveDataRoutingGuardrail(CustomGuardrail): async def apply_guardrail( self, inputs: GenericGuardrailAPIInputs, - request_data: dict, + request_data: dict, # mutable-ok: proxy request body, owned by the caller input_type: Literal["request", "response"], logging_obj: Optional["LiteLLMLoggingObj"] = None, ) -> GenericGuardrailAPIInputs: diff --git a/litellm/types/proxy/guardrails/guardrail_hooks/sensitive_data_routing.py b/litellm/types/proxy/guardrails/guardrail_hooks/sensitive_data_routing.py index 65aa4c077cf..326dae595b3 100644 --- a/litellm/types/proxy/guardrails/guardrail_hooks/sensitive_data_routing.py +++ b/litellm/types/proxy/guardrails/guardrail_hooks/sensitive_data_routing.py @@ -1,5 +1,6 @@ """Types for the built-in Sensitive Data Routing guardrail.""" +from collections.abc import Sequence from typing import Final from pydantic import Field @@ -16,15 +17,15 @@ class SensitiveDataRoutingGuardrailConfigModel(GuardrailConfigModel): default=None, description="Model group (from model_list) to route the request to when sensitive data is detected.", ) - prebuilt_patterns: list[str] | None = Field( + prebuilt_patterns: Sequence[str] | None = Field( default=None, description="Prebuilt pattern names to match (e.g. us_ssn, credit_card, email).", ) - regex_patterns: list[str] | None = Field( + regex_patterns: Sequence[str] | None = Field( default=None, description="Custom regular expressions; a match in any message reroutes the request.", ) - keywords: list[str] | None = Field( + keywords: Sequence[str] | None = Field( default=None, description="Case-insensitive keywords; a match in any message reroutes the request.", )