From 77ed1f5f15ed3f009547ed0e20f86d949de12ec2 Mon Sep 17 00:00:00 2001 From: Google Team Member Date: Tue, 19 Aug 2025 01:45:01 -0700 Subject: [PATCH] feat: Add setdefault method to the ADK State object This makes the ADK state more pythonic, with the State API being more like a python dict. PiperOrigin-RevId: 796767559 --- src/google/adk/sessions/state.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/google/adk/sessions/state.py b/src/google/adk/sessions/state.py index 1cb3c582..86eb673a 100644 --- a/src/google/adk/sessions/state.py +++ b/src/google/adk/sessions/state.py @@ -48,6 +48,14 @@ class State: """Whether the state dict contains the given key.""" return key in self._value or key in self._delta + def setdefault(self, key: str, default: Any = None) -> Any: + """Gets the value of a key, or sets it to a default if the key doesn't exist.""" + if key in self: + return self[key] + else: + self[key] = default + return default + def has_delta(self) -> bool: """Whether the state has pending delta.""" return bool(self._delta)