mirror of
https://github.com/encounter/adk-python.git
synced 2026-07-09 18:19:28 -07:00
chore: Drop Python 3.9 support, set minimum to Python 3.10
Co-authored-by: George Weale <gweale@google.com> PiperOrigin-RevId: 839799108
This commit is contained in:
committed by
Copybara-Service
parent
e02b9fb608
commit
8c9105bf14
@@ -12,50 +12,33 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import sys
|
||||
from unittest.mock import Mock
|
||||
from unittest.mock import patch
|
||||
|
||||
from a2a.types import DataPart
|
||||
from a2a.types import Message
|
||||
from a2a.types import Role
|
||||
from a2a.types import Task
|
||||
from a2a.types import TaskState
|
||||
from a2a.types import TaskStatusUpdateEvent
|
||||
from google.adk.a2a.converters.event_converter import _create_artifact_id
|
||||
from google.adk.a2a.converters.event_converter import _create_error_status_event
|
||||
from google.adk.a2a.converters.event_converter import _create_status_update_event
|
||||
from google.adk.a2a.converters.event_converter import _get_adk_metadata_key
|
||||
from google.adk.a2a.converters.event_converter import _get_context_metadata
|
||||
from google.adk.a2a.converters.event_converter import _process_long_running_tool
|
||||
from google.adk.a2a.converters.event_converter import _serialize_metadata_value
|
||||
from google.adk.a2a.converters.event_converter import ARTIFACT_ID_SEPARATOR
|
||||
from google.adk.a2a.converters.event_converter import convert_a2a_task_to_event
|
||||
from google.adk.a2a.converters.event_converter import convert_event_to_a2a_events
|
||||
from google.adk.a2a.converters.event_converter import convert_event_to_a2a_message
|
||||
from google.adk.a2a.converters.event_converter import DEFAULT_ERROR_MESSAGE
|
||||
from google.adk.a2a.converters.utils import ADK_METADATA_KEY_PREFIX
|
||||
from google.adk.agents.invocation_context import InvocationContext
|
||||
from google.adk.events.event import Event
|
||||
from google.adk.events.event_actions import EventActions
|
||||
import pytest
|
||||
|
||||
# Skip all tests in this module if Python version is less than 3.10
|
||||
pytestmark = pytest.mark.skipif(
|
||||
sys.version_info < (3, 10), reason="A2A requires Python 3.10+"
|
||||
)
|
||||
|
||||
# Import dependencies with version checking
|
||||
try:
|
||||
from a2a.types import DataPart
|
||||
from a2a.types import Message
|
||||
from a2a.types import Role
|
||||
from a2a.types import Task
|
||||
from a2a.types import TaskState
|
||||
from a2a.types import TaskStatusUpdateEvent
|
||||
from google.adk.a2a.converters.event_converter import _create_artifact_id
|
||||
from google.adk.a2a.converters.event_converter import _create_error_status_event
|
||||
from google.adk.a2a.converters.event_converter import _create_status_update_event
|
||||
from google.adk.a2a.converters.event_converter import _get_adk_metadata_key
|
||||
from google.adk.a2a.converters.event_converter import _get_context_metadata
|
||||
from google.adk.a2a.converters.event_converter import _process_long_running_tool
|
||||
from google.adk.a2a.converters.event_converter import _serialize_metadata_value
|
||||
from google.adk.a2a.converters.event_converter import ARTIFACT_ID_SEPARATOR
|
||||
from google.adk.a2a.converters.event_converter import convert_a2a_task_to_event
|
||||
from google.adk.a2a.converters.event_converter import convert_event_to_a2a_events
|
||||
from google.adk.a2a.converters.event_converter import convert_event_to_a2a_message
|
||||
from google.adk.a2a.converters.event_converter import DEFAULT_ERROR_MESSAGE
|
||||
from google.adk.a2a.converters.utils import ADK_METADATA_KEY_PREFIX
|
||||
from google.adk.agents.invocation_context import InvocationContext
|
||||
from google.adk.events.event import Event
|
||||
from google.adk.events.event_actions import EventActions
|
||||
except ImportError as e:
|
||||
if sys.version_info < (3, 10):
|
||||
# Imports are not needed since tests will be skipped due to pytestmark.
|
||||
# The imported names are only used within test methods, not at module level,
|
||||
# so no NameError occurs during module compilation.
|
||||
pass
|
||||
else:
|
||||
raise e
|
||||
|
||||
|
||||
class TestEventConverter:
|
||||
"""Test suite for event_converter module."""
|
||||
|
||||
@@ -13,38 +13,21 @@
|
||||
# limitations under the License.
|
||||
|
||||
import json
|
||||
import sys
|
||||
from unittest.mock import Mock
|
||||
from unittest.mock import patch
|
||||
|
||||
from a2a import types as a2a_types
|
||||
from google.adk.a2a.converters.part_converter import A2A_DATA_PART_METADATA_TYPE_CODE_EXECUTION_RESULT
|
||||
from google.adk.a2a.converters.part_converter import A2A_DATA_PART_METADATA_TYPE_EXECUTABLE_CODE
|
||||
from google.adk.a2a.converters.part_converter import A2A_DATA_PART_METADATA_TYPE_FUNCTION_CALL
|
||||
from google.adk.a2a.converters.part_converter import A2A_DATA_PART_METADATA_TYPE_FUNCTION_RESPONSE
|
||||
from google.adk.a2a.converters.part_converter import A2A_DATA_PART_METADATA_TYPE_KEY
|
||||
from google.adk.a2a.converters.part_converter import convert_a2a_part_to_genai_part
|
||||
from google.adk.a2a.converters.part_converter import convert_genai_part_to_a2a_part
|
||||
from google.adk.a2a.converters.utils import _get_adk_metadata_key
|
||||
from google.genai import types as genai_types
|
||||
import pytest
|
||||
|
||||
# Skip all tests in this module if Python version is less than 3.10
|
||||
pytestmark = pytest.mark.skipif(
|
||||
sys.version_info < (3, 10), reason="A2A requires Python 3.10+"
|
||||
)
|
||||
|
||||
# Import dependencies with version checking
|
||||
try:
|
||||
from a2a import types as a2a_types
|
||||
from google.adk.a2a.converters.part_converter import A2A_DATA_PART_METADATA_TYPE_CODE_EXECUTION_RESULT
|
||||
from google.adk.a2a.converters.part_converter import A2A_DATA_PART_METADATA_TYPE_EXECUTABLE_CODE
|
||||
from google.adk.a2a.converters.part_converter import A2A_DATA_PART_METADATA_TYPE_FUNCTION_CALL
|
||||
from google.adk.a2a.converters.part_converter import A2A_DATA_PART_METADATA_TYPE_FUNCTION_RESPONSE
|
||||
from google.adk.a2a.converters.part_converter import A2A_DATA_PART_METADATA_TYPE_KEY
|
||||
from google.adk.a2a.converters.part_converter import convert_a2a_part_to_genai_part
|
||||
from google.adk.a2a.converters.part_converter import convert_genai_part_to_a2a_part
|
||||
from google.adk.a2a.converters.utils import _get_adk_metadata_key
|
||||
from google.genai import types as genai_types
|
||||
except ImportError as e:
|
||||
if sys.version_info < (3, 10):
|
||||
# Imports are not needed since tests will be skipped due to pytestmark.
|
||||
# The imported names are only used within test methods, not at module level,
|
||||
# so no NameError occurs during module compilation.
|
||||
pass
|
||||
else:
|
||||
raise e
|
||||
|
||||
|
||||
class TestConvertA2aPartToGenaiPart:
|
||||
"""Test cases for convert_a2a_part_to_genai_part function."""
|
||||
|
||||
@@ -12,33 +12,16 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import sys
|
||||
from unittest.mock import Mock
|
||||
from unittest.mock import patch
|
||||
|
||||
from a2a.server.agent_execution import RequestContext
|
||||
from google.adk.a2a.converters.request_converter import _get_user_id
|
||||
from google.adk.a2a.converters.request_converter import convert_a2a_request_to_agent_run_request
|
||||
from google.adk.runners import RunConfig
|
||||
from google.genai import types as genai_types
|
||||
import pytest
|
||||
|
||||
# Skip all tests in this module if Python version is less than 3.10
|
||||
pytestmark = pytest.mark.skipif(
|
||||
sys.version_info < (3, 10), reason="A2A requires Python 3.10+"
|
||||
)
|
||||
|
||||
# Import dependencies with version checking
|
||||
try:
|
||||
from a2a.server.agent_execution import RequestContext
|
||||
from google.adk.a2a.converters.request_converter import _get_user_id
|
||||
from google.adk.a2a.converters.request_converter import convert_a2a_request_to_agent_run_request
|
||||
from google.adk.runners import RunConfig
|
||||
from google.genai import types as genai_types
|
||||
except ImportError as e:
|
||||
if sys.version_info < (3, 10):
|
||||
# Imports are not needed since tests will be skipped due to pytestmark.
|
||||
# The imported names are only used within test methods, not at module level,
|
||||
# so no NameError occurs during module compilation.
|
||||
pass
|
||||
else:
|
||||
raise e
|
||||
|
||||
|
||||
class TestGetUserId:
|
||||
"""Test cases for _get_user_id function."""
|
||||
|
||||
@@ -12,31 +12,13 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import sys
|
||||
|
||||
from google.adk.a2a.converters.utils import _from_a2a_context_id
|
||||
from google.adk.a2a.converters.utils import _get_adk_metadata_key
|
||||
from google.adk.a2a.converters.utils import _to_a2a_context_id
|
||||
from google.adk.a2a.converters.utils import ADK_CONTEXT_ID_PREFIX
|
||||
from google.adk.a2a.converters.utils import ADK_METADATA_KEY_PREFIX
|
||||
import pytest
|
||||
|
||||
# Skip all tests in this module if Python version is less than 3.10
|
||||
pytestmark = pytest.mark.skipif(
|
||||
sys.version_info < (3, 10), reason="A2A requires Python 3.10+"
|
||||
)
|
||||
|
||||
# Import dependencies with version checking
|
||||
try:
|
||||
from google.adk.a2a.converters.utils import _from_a2a_context_id
|
||||
from google.adk.a2a.converters.utils import _get_adk_metadata_key
|
||||
from google.adk.a2a.converters.utils import _to_a2a_context_id
|
||||
from google.adk.a2a.converters.utils import ADK_CONTEXT_ID_PREFIX
|
||||
from google.adk.a2a.converters.utils import ADK_METADATA_KEY_PREFIX
|
||||
except ImportError as e:
|
||||
if sys.version_info < (3, 10):
|
||||
# Imports are not needed since tests will be skipped due to pytestmark.
|
||||
# The imported names are only used within test methods, not at module level,
|
||||
# so no NameError occurs during module compilation.
|
||||
pass
|
||||
else:
|
||||
raise e
|
||||
|
||||
|
||||
class TestUtilsFunctions:
|
||||
"""Test suite for utils module functions."""
|
||||
|
||||
@@ -12,41 +12,24 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import sys
|
||||
from unittest.mock import AsyncMock
|
||||
from unittest.mock import Mock
|
||||
from unittest.mock import patch
|
||||
|
||||
from a2a.server.agent_execution.context import RequestContext
|
||||
from a2a.server.events.event_queue import EventQueue
|
||||
from a2a.types import Message
|
||||
from a2a.types import TaskState
|
||||
from a2a.types import TextPart
|
||||
from google.adk.a2a.converters.request_converter import AgentRunRequest
|
||||
from google.adk.a2a.executor.a2a_agent_executor import A2aAgentExecutor
|
||||
from google.adk.a2a.executor.a2a_agent_executor import A2aAgentExecutorConfig
|
||||
from google.adk.events.event import Event
|
||||
from google.adk.runners import RunConfig
|
||||
from google.adk.runners import Runner
|
||||
from google.genai.types import Content
|
||||
import pytest
|
||||
|
||||
# Skip all tests in this module if Python version is less than 3.10
|
||||
pytestmark = pytest.mark.skipif(
|
||||
sys.version_info < (3, 10), reason="A2A requires Python 3.10+"
|
||||
)
|
||||
|
||||
# Import dependencies with version checking
|
||||
try:
|
||||
from a2a.server.agent_execution.context import RequestContext
|
||||
from a2a.server.events.event_queue import EventQueue
|
||||
from a2a.types import Message
|
||||
from a2a.types import TaskState
|
||||
from a2a.types import TextPart
|
||||
from google.adk.a2a.converters.request_converter import AgentRunRequest
|
||||
from google.adk.a2a.executor.a2a_agent_executor import A2aAgentExecutor
|
||||
from google.adk.a2a.executor.a2a_agent_executor import A2aAgentExecutorConfig
|
||||
from google.adk.events.event import Event
|
||||
from google.adk.runners import RunConfig
|
||||
from google.adk.runners import Runner
|
||||
from google.genai.types import Content
|
||||
except ImportError as e:
|
||||
if sys.version_info < (3, 10):
|
||||
# Imports are not needed since tests will be skipped due to pytestmark.
|
||||
# The imported names are only used within test methods, not at module level,
|
||||
# so no NameError occurs during module compilation.
|
||||
pass
|
||||
else:
|
||||
raise e
|
||||
|
||||
|
||||
class TestA2aAgentExecutor:
|
||||
"""Test suite for A2aAgentExecutor class."""
|
||||
|
||||
@@ -12,35 +12,18 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import sys
|
||||
from unittest.mock import Mock
|
||||
|
||||
from a2a.types import Message
|
||||
from a2a.types import Part
|
||||
from a2a.types import Role
|
||||
from a2a.types import TaskState
|
||||
from a2a.types import TaskStatus
|
||||
from a2a.types import TaskStatusUpdateEvent
|
||||
from a2a.types import TextPart
|
||||
from google.adk.a2a.executor.task_result_aggregator import TaskResultAggregator
|
||||
import pytest
|
||||
|
||||
# Skip all tests in this module if Python version is less than 3.10
|
||||
pytestmark = pytest.mark.skipif(
|
||||
sys.version_info < (3, 10), reason="A2A requires Python 3.10+"
|
||||
)
|
||||
|
||||
# Import dependencies with version checking
|
||||
try:
|
||||
from a2a.types import Message
|
||||
from a2a.types import Part
|
||||
from a2a.types import Role
|
||||
from a2a.types import TaskState
|
||||
from a2a.types import TaskStatus
|
||||
from a2a.types import TaskStatusUpdateEvent
|
||||
from a2a.types import TextPart
|
||||
from google.adk.a2a.executor.task_result_aggregator import TaskResultAggregator
|
||||
except ImportError as e:
|
||||
if sys.version_info < (3, 10):
|
||||
# Imports are not needed since tests will be skipped due to pytestmark.
|
||||
# The imported names are only used within test methods, not at module level,
|
||||
# so no NameError occurs during module compilation.
|
||||
pass
|
||||
else:
|
||||
raise e
|
||||
|
||||
|
||||
def create_test_message(text: str):
|
||||
"""Helper function to create a test Message object."""
|
||||
|
||||
@@ -12,55 +12,38 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import sys
|
||||
from unittest.mock import Mock
|
||||
from unittest.mock import patch
|
||||
|
||||
from a2a.types import AgentCapabilities
|
||||
from a2a.types import AgentCard
|
||||
from a2a.types import AgentProvider
|
||||
from a2a.types import AgentSkill
|
||||
from a2a.types import SecurityScheme
|
||||
from google.adk.a2a.utils.agent_card_builder import _build_agent_description
|
||||
from google.adk.a2a.utils.agent_card_builder import _build_llm_agent_description_with_instructions
|
||||
from google.adk.a2a.utils.agent_card_builder import _build_loop_description
|
||||
from google.adk.a2a.utils.agent_card_builder import _build_orchestration_skill
|
||||
from google.adk.a2a.utils.agent_card_builder import _build_parallel_description
|
||||
from google.adk.a2a.utils.agent_card_builder import _build_sequential_description
|
||||
from google.adk.a2a.utils.agent_card_builder import _convert_example_tool_examples
|
||||
from google.adk.a2a.utils.agent_card_builder import _extract_examples_from_instruction
|
||||
from google.adk.a2a.utils.agent_card_builder import _get_agent_skill_name
|
||||
from google.adk.a2a.utils.agent_card_builder import _get_agent_type
|
||||
from google.adk.a2a.utils.agent_card_builder import _get_default_description
|
||||
from google.adk.a2a.utils.agent_card_builder import _get_input_modes
|
||||
from google.adk.a2a.utils.agent_card_builder import _get_output_modes
|
||||
from google.adk.a2a.utils.agent_card_builder import _get_workflow_description
|
||||
from google.adk.a2a.utils.agent_card_builder import _replace_pronouns
|
||||
from google.adk.a2a.utils.agent_card_builder import AgentCardBuilder
|
||||
from google.adk.agents.base_agent import BaseAgent
|
||||
from google.adk.agents.llm_agent import LlmAgent
|
||||
from google.adk.agents.loop_agent import LoopAgent
|
||||
from google.adk.agents.parallel_agent import ParallelAgent
|
||||
from google.adk.agents.sequential_agent import SequentialAgent
|
||||
from google.adk.tools.example_tool import ExampleTool
|
||||
import pytest
|
||||
|
||||
# Skip all tests in this module if Python version is less than 3.10
|
||||
pytestmark = pytest.mark.skipif(
|
||||
sys.version_info < (3, 10), reason="A2A requires Python 3.10+"
|
||||
)
|
||||
|
||||
# Import dependencies with version checking
|
||||
try:
|
||||
from a2a.types import AgentCapabilities
|
||||
from a2a.types import AgentCard
|
||||
from a2a.types import AgentProvider
|
||||
from a2a.types import AgentSkill
|
||||
from a2a.types import SecurityScheme
|
||||
from google.adk.a2a.utils.agent_card_builder import _build_agent_description
|
||||
from google.adk.a2a.utils.agent_card_builder import _build_llm_agent_description_with_instructions
|
||||
from google.adk.a2a.utils.agent_card_builder import _build_loop_description
|
||||
from google.adk.a2a.utils.agent_card_builder import _build_orchestration_skill
|
||||
from google.adk.a2a.utils.agent_card_builder import _build_parallel_description
|
||||
from google.adk.a2a.utils.agent_card_builder import _build_sequential_description
|
||||
from google.adk.a2a.utils.agent_card_builder import _convert_example_tool_examples
|
||||
from google.adk.a2a.utils.agent_card_builder import _extract_examples_from_instruction
|
||||
from google.adk.a2a.utils.agent_card_builder import _get_agent_skill_name
|
||||
from google.adk.a2a.utils.agent_card_builder import _get_agent_type
|
||||
from google.adk.a2a.utils.agent_card_builder import _get_default_description
|
||||
from google.adk.a2a.utils.agent_card_builder import _get_input_modes
|
||||
from google.adk.a2a.utils.agent_card_builder import _get_output_modes
|
||||
from google.adk.a2a.utils.agent_card_builder import _get_workflow_description
|
||||
from google.adk.a2a.utils.agent_card_builder import _replace_pronouns
|
||||
from google.adk.a2a.utils.agent_card_builder import AgentCardBuilder
|
||||
from google.adk.agents.base_agent import BaseAgent
|
||||
from google.adk.agents.llm_agent import LlmAgent
|
||||
from google.adk.agents.loop_agent import LoopAgent
|
||||
from google.adk.agents.parallel_agent import ParallelAgent
|
||||
from google.adk.agents.sequential_agent import SequentialAgent
|
||||
from google.adk.tools.example_tool import ExampleTool
|
||||
except ImportError as e:
|
||||
if sys.version_info < (3, 10):
|
||||
# Imports are not needed since tests will be skipped due to pytestmark.
|
||||
# The imported names are only used within test methods, not at module level,
|
||||
# so no NameError occurs during module compilation.
|
||||
pass
|
||||
else:
|
||||
raise e
|
||||
|
||||
|
||||
class TestAgentCardBuilder:
|
||||
"""Test suite for AgentCardBuilder class."""
|
||||
|
||||
@@ -12,42 +12,25 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import sys
|
||||
from unittest.mock import AsyncMock
|
||||
from unittest.mock import Mock
|
||||
from unittest.mock import patch
|
||||
|
||||
from a2a.server.apps import A2AStarletteApplication
|
||||
from a2a.server.request_handlers import DefaultRequestHandler
|
||||
from a2a.server.tasks import InMemoryTaskStore
|
||||
from a2a.types import AgentCard
|
||||
from google.adk.a2a.executor.a2a_agent_executor import A2aAgentExecutor
|
||||
from google.adk.a2a.utils.agent_card_builder import AgentCardBuilder
|
||||
from google.adk.a2a.utils.agent_to_a2a import to_a2a
|
||||
from google.adk.agents.base_agent import BaseAgent
|
||||
from google.adk.artifacts.in_memory_artifact_service import InMemoryArtifactService
|
||||
from google.adk.auth.credential_service.in_memory_credential_service import InMemoryCredentialService
|
||||
from google.adk.memory.in_memory_memory_service import InMemoryMemoryService
|
||||
from google.adk.runners import Runner
|
||||
from google.adk.sessions.in_memory_session_service import InMemorySessionService
|
||||
import pytest
|
||||
|
||||
# Skip all tests in this module if Python version is less than 3.10
|
||||
pytestmark = pytest.mark.skipif(
|
||||
sys.version_info < (3, 10), reason="A2A requires Python 3.10+"
|
||||
)
|
||||
|
||||
# Import dependencies with version checking
|
||||
try:
|
||||
from a2a.server.apps import A2AStarletteApplication
|
||||
from a2a.server.request_handlers import DefaultRequestHandler
|
||||
from a2a.server.tasks import InMemoryTaskStore
|
||||
from a2a.types import AgentCard
|
||||
from google.adk.a2a.executor.a2a_agent_executor import A2aAgentExecutor
|
||||
from google.adk.a2a.utils.agent_card_builder import AgentCardBuilder
|
||||
from google.adk.a2a.utils.agent_to_a2a import to_a2a
|
||||
from google.adk.agents.base_agent import BaseAgent
|
||||
from google.adk.artifacts.in_memory_artifact_service import InMemoryArtifactService
|
||||
from google.adk.auth.credential_service.in_memory_credential_service import InMemoryCredentialService
|
||||
from google.adk.memory.in_memory_memory_service import InMemoryMemoryService
|
||||
from google.adk.runners import Runner
|
||||
from google.adk.sessions.in_memory_session_service import InMemorySessionService
|
||||
from starlette.applications import Starlette
|
||||
except ImportError as e:
|
||||
if sys.version_info < (3, 10):
|
||||
# Imports are not needed since tests will be skipped due to pytestmark.
|
||||
# The imported names are only used within test methods, not at module level,
|
||||
# so no NameError occurs during module compilation.
|
||||
pass
|
||||
else:
|
||||
raise e
|
||||
from starlette.applications import Starlette
|
||||
|
||||
|
||||
class TestToA2A:
|
||||
|
||||
Reference in New Issue
Block a user