diff --git a/src/a2a/client/__init__.py b/src/a2a/client/__init__.py index 3f1588a0..26e35a4c 100644 --- a/src/a2a/client/__init__.py +++ b/src/a2a/client/__init__.py @@ -1,7 +1,5 @@ """Client-side components for interacting with an A2A agent.""" -import logging - from a2a.client.auth import ( AuthInterceptor, CredentialService, @@ -26,9 +24,6 @@ from a2a.client.interceptors import ClientCallInterceptor -logger = logging.getLogger(__name__) - - __all__ = [ 'A2ACardResolver', 'A2AClientError', diff --git a/src/a2a/client/client.py b/src/a2a/client/client.py index 6c715e5f..291b3864 100644 --- a/src/a2a/client/client.py +++ b/src/a2a/client/client.py @@ -247,8 +247,6 @@ async def consume( card: AgentCard, ) -> None: """Processes the event via all the registered `Consumer`s.""" - if not event: - return for c in self._consumers: await c(event, card) diff --git a/src/a2a/client/client_factory.py b/src/a2a/client/client_factory.py index 2df8c241..4aa1f88c 100644 --- a/src/a2a/client/client_factory.py +++ b/src/a2a/client/client_factory.py @@ -179,6 +179,8 @@ def rest_transport_producer( 'You can install them with \'pip install "a2a-sdk[grpc]"\'' ) + _grpc_transport = GrpcTransport + def grpc_transport_producer( card: AgentCard, url: str, @@ -203,13 +205,7 @@ def grpc_transport_producer( ): return CompatGrpcTransport.create(card, url, config) - if GrpcTransport is not None: - return GrpcTransport.create(card, url, config) - - raise ImportError( - 'GrpcTransport is not available. ' - 'You can install it with \'pip install "a2a-sdk[grpc]"\'' - ) + return _grpc_transport.create(card, url, config) self.register( TransportProtocol.GRPC, diff --git a/src/a2a/server/request_handlers/grpc_handler.py b/src/a2a/server/request_handlers/grpc_handler.py index 2ea110e2..96b59c2d 100644 --- a/src/a2a/server/request_handlers/grpc_handler.py +++ b/src/a2a/server/request_handlers/grpc_handler.py @@ -393,9 +393,7 @@ async def abort_context( domain='a2a-protocol.org', ) - status_code = ( - code.value[0] if code else grpc.StatusCode.UNKNOWN.value[0] - ) + status_code = code.value[0] error_msg = ( error.message if hasattr(error, 'message') else str(error) ) diff --git a/tests/client/test_auth_interceptor.py b/tests/client/test_auth_interceptor.py index 8713c54e..11d93209 100644 --- a/tests/client/test_auth_interceptor.py +++ b/tests/client/test_auth_interceptor.py @@ -242,9 +242,6 @@ class AuthTestCase: @pytest.mark.skip(reason='Interceptors disabled by user request') @pytest.mark.asyncio -@pytest.mark.skip( - reason='Interceptors not explicitly being tested as per use request' -) @pytest.mark.parametrize( 'test_case', [api_key_test_case, oauth2_test_case, oidc_test_case, bearer_test_case], diff --git a/tests/server/request_handlers/test_default_request_handler.py b/tests/server/request_handlers/test_default_request_handler.py index 1d4a9051..f4ba0499 100644 --- a/tests/server/request_handlers/test_default_request_handler.py +++ b/tests/server/request_handlers/test_default_request_handler.py @@ -1,11 +1,10 @@ import asyncio import contextlib import logging -import uuid import time import uuid -from typing import cast +from typing import cast from unittest.mock import ( AsyncMock, MagicMock, @@ -34,7 +33,6 @@ TaskStore, TaskUpdater, ) - from a2a.types import ( InternalError, InvalidParamsError, @@ -43,29 +41,26 @@ TaskNotFoundError, UnsupportedOperationError, ) - from a2a.types.a2a_pb2 import ( Artifact, + CancelTaskRequest, DeleteTaskPushNotificationConfigRequest, GetTaskPushNotificationConfigRequest, GetTaskRequest, + ListTaskPushNotificationConfigsRequest, ListTasksRequest, ListTasksResponse, - ListTaskPushNotificationConfigsRequest, Message, Part, - TaskPushNotificationConfig, Role, SendMessageConfiguration, SendMessageRequest, - TaskPushNotificationConfig, + SubscribeToTaskRequest, Task, TaskPushNotificationConfig, TaskState, TaskStatus, TaskStatusUpdateEvent, - CancelTaskRequest, - SubscribeToTaskRequest, ) from a2a.utils import new_agent_text_message, new_task diff --git a/tests/server/test_integration.py b/tests/server/test_integration.py index bdbfe62a..f879e807 100644 --- a/tests/server/test_integration.py +++ b/tests/server/test_integration.py @@ -1,10 +1,7 @@ import asyncio - -from typing import Any from unittest import mock import pytest - from starlette.authentication import ( AuthCredentials, AuthenticationBackend, @@ -18,9 +15,6 @@ from starlette.routing import Route from starlette.testclient import TestClient -from a2a.server.routes import create_agent_card_routes, create_jsonrpc_routes - -from a2a.server.context import ServerCallContext from a2a.server.jsonrpc_models import ( InternalError, InvalidParamsError, @@ -28,6 +22,7 @@ JSONParseError, MethodNotFoundError, ) +from a2a.server.routes import create_agent_card_routes, create_jsonrpc_routes from a2a.types import ( UnsupportedOperationError, ) @@ -39,9 +34,7 @@ Artifact, Message, Part, - TaskPushNotificationConfig, Role, - SendMessageResponse, Task, TaskArtifactUpdateEvent, TaskPushNotificationConfig,