From abf7679a16e26735740460ddeae1d003d071d2cd Mon Sep 17 00:00:00 2001 From: Rohan Date: Sun, 4 Oct 2026 01:16:40 +0530 Subject: [PATCH] fix(guardrails): keep AktoGuardrail positional args backward compatible --- litellm/proxy/guardrails/guardrail_hooks/akto/akto.py | 5 +++-- .../unit/proxy/guardrails/guardrail_hooks/akto/test_akto.py | 5 +++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/litellm/proxy/guardrails/guardrail_hooks/akto/akto.py b/litellm/proxy/guardrails/guardrail_hooks/akto/akto.py index 92065ae34a9..0bf924fdf4c 100644 --- a/litellm/proxy/guardrails/guardrail_hooks/akto/akto.py +++ b/litellm/proxy/guardrails/guardrail_hooks/akto/akto.py @@ -268,12 +268,13 @@ class AktoGuardrail(CustomGuardrail): akto_api_key: str | None = None, akto_account_id: str | None = None, akto_vxlan_id: str | None = None, + unreachable_fallback: Literal["fail_closed", "fail_open"] = "fail_closed", + guardrail_timeout: int | None = None, + *, context_source: Literal["ENDPOINT", "AGENTIC"] | None = None, akto_metadata: Mapping[str, object] | None = None, streaming_sampling_rate: int | None = None, - guardrail_timeout: int | None = None, file_guardrail_timeout: int | None = None, - unreachable_fallback: Literal["fail_closed", "fail_open"] = "fail_closed", async_handler: AsyncHTTPHandler | None = None, **kwargs: Unpack[_CustomGuardrailKwargs], ) -> None: diff --git a/tests/unit/proxy/guardrails/guardrail_hooks/akto/test_akto.py b/tests/unit/proxy/guardrails/guardrail_hooks/akto/test_akto.py index d3f957b94b5..6fee1bc2b1b 100644 --- a/tests/unit/proxy/guardrails/guardrail_hooks/akto/test_akto.py +++ b/tests/unit/proxy/guardrails/guardrail_hooks/akto/test_akto.py @@ -156,6 +156,11 @@ def test_init_defaults(): assert g.akto_vxlan_id == "0" +def test_positional_args_keep_their_original_meaning(): + g = AktoGuardrail("http://localhost:9090", "test-token", "7", "8", "fail_open", 9, async_handler=_handler()) + assert (g.unreachable_fallback, g.guardrail_timeout) == ("fail_open", 9) + + def test_build_akto_payload_format(akto_pre_call, sample_inputs, sample_request_data): payload = akto_pre_call.build_akto_payload(sample_inputs, sample_request_data, include_response=False)