From 918c54538a205fe09475df3db4165d8c62372c10 Mon Sep 17 00:00:00 2001 From: Yufeng He <40085740+he-yufeng@users.noreply.github.com> Date: Thu, 21 May 2026 00:05:32 +0800 Subject: [PATCH] fix: avoid ApiServer scope shadowing in web reload --- src/google/adk/cli/fast_api.py | 5 +---- tests/unittests/cli/test_fast_api.py | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/google/adk/cli/fast_api.py b/src/google/adk/cli/fast_api.py index 4e07994394..48a8cab223 100644 --- a/src/google/adk/cli/fast_api.py +++ b/src/google/adk/cli/fast_api.py @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +from __future__ import annotations from contextlib import asynccontextmanager import importlib @@ -526,12 +527,8 @@ def get_fast_api_app( "DevServer not found, falling back to ApiServer. " "Dev-only endpoints will not be available." ) - from .api_server import ApiServer - ServerClass = ApiServer else: - from .api_server import ApiServer - ServerClass = ApiServer adk_web_server = ServerClass( diff --git a/tests/unittests/cli/test_fast_api.py b/tests/unittests/cli/test_fast_api.py index a80644a9b6..44c0db1fa7 100755 --- a/tests/unittests/cli/test_fast_api.py +++ b/tests/unittests/cli/test_fast_api.py @@ -540,6 +540,31 @@ def _create_test_client( return TestClient(app) +def test_web_reload_agents_uses_module_api_server_import( + mock_session_service, + mock_artifact_service, + mock_memory_service, + mock_agent_loader, + mock_eval_sets_manager, + mock_eval_set_results_manager, +): + """Regression test for web reload mode with DevServer available.""" + with patch("google.adk.cli.api_server.Observer") as mock_observer_class: + _create_test_client( + mock_session_service, + mock_artifact_service, + mock_memory_service, + mock_agent_loader, + mock_eval_sets_manager, + mock_eval_set_results_manager, + reload_agents=True, + ) + + observer = mock_observer_class.return_value + observer.schedule.assert_called_once() + observer.start.assert_called_once() + + def test_agent_with_bigquery_analytics_plugin( tmp_path, mock_session_service,