From 7b2aad371ceec037206f0d8af55400460370c45b Mon Sep 17 00:00:00 2001 From: chelsealong Date: Fri, 18 Sep 2026 05:51:47 +0000 Subject: [PATCH] fix(optimization): treat explicit empty eval case ID lists as empty in LocalEvalSampler LocalEvalSampler.__init__ used truthiness checks on train_eval_case_ids/validation_eval_case_ids, so an explicitly passed [] was indistinguishable from None and silently expanded to every eval case. Switch to `is not None` checks so only an omitted/None field falls back to "all cases", matching the documented behavior. Fixes #7168 --- .../adk/optimization/local_eval_sampler.py | 5 +++-- .../optimization/local_eval_sampler_test.py | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/google/adk/optimization/local_eval_sampler.py b/src/google/adk/optimization/local_eval_sampler.py index 817ce0ca618..9044173d86a 100644 --- a/src/google/adk/optimization/local_eval_sampler.py +++ b/src/google/adk/optimization/local_eval_sampler.py @@ -164,13 +164,14 @@ def __init__( self._train_eval_set = self._config.train_eval_set self._train_eval_case_ids = ( self._config.train_eval_case_ids - or self._get_eval_case_ids(self._train_eval_set) + if self._config.train_eval_case_ids is not None + else self._get_eval_case_ids(self._train_eval_set) ) self._validation_eval_set = ( self._config.validation_eval_set or self._train_eval_set ) - if self._config.validation_eval_case_ids: + if self._config.validation_eval_case_ids is not None: self._validation_eval_case_ids = self._config.validation_eval_case_ids elif self._config.validation_eval_set: self._validation_eval_case_ids = self._get_eval_case_ids( diff --git a/tests/unittests/optimization/local_eval_sampler_test.py b/tests/unittests/optimization/local_eval_sampler_test.py index 546b632bba0..5438966e28a 100644 --- a/tests/unittests/optimization/local_eval_sampler_test.py +++ b/tests/unittests/optimization/local_eval_sampler_test.py @@ -197,6 +197,23 @@ def test_extract_single_invocation_info(): "_validation_eval_case_ids": ["v1"], }, ), + ( + {"train_eval_set": "train_set", "train_eval_case_ids": []}, + { + "_train_eval_case_ids": [], + "_validation_eval_case_ids": [], + }, + ), + ( + { + "train_eval_set": "train_set", + "validation_eval_case_ids": [], + }, + { + "_train_eval_case_ids": ["train_set_1", "train_set_2"], + "_validation_eval_case_ids": [], + }, + ), ], ) def test_local_eval_service_interface_init(