Skip to content

Commit 859a87e

Browse files
committed
wip
1 parent 15d9f56 commit 859a87e

16 files changed

Lines changed: 240 additions & 38 deletions

File tree

samples/cli.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
import httpx
1111

1212
from a2a.client import A2ACardResolver, ClientConfig, create_client
13-
from a2a.types import Message, Part, Role, SendMessageRequest, TaskState
1413
from a2a.helpers import get_artifact_text, get_message_text
1514
from a2a.helpers.agent_card import display_agent_card
15+
from a2a.types import Message, Part, Role, SendMessageRequest, TaskState
1616

1717

1818
async def _handle_stream(

src/a2a/helpers/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"""Helper functions for the A2A Python SDK."""
22

33
from a2a.helpers.agent_card import display_agent_card
4-
from a2a.helpers.types import (
4+
from a2a.helpers.proto_helpers import (
55
get_artifact_text,
66
get_message_text,
77
get_stream_response_text,
@@ -16,6 +16,7 @@
1616
new_text_status_update_event,
1717
)
1818

19+
1920
__all__ = [
2021
'display_agent_card',
2122
'get_artifact_text',
Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
"""Unified helper functions for creating and handling A2A types."""
22

33
import uuid
4-
from collections.abc import Sequence
5-
from typing import Any
64

7-
from google.protobuf.json_format import MessageToDict
5+
from collections.abc import Sequence
86

97
from a2a.types.a2a_pb2 import (
108
Artifact,
@@ -121,7 +119,6 @@ def new_task(
121119
history: list[Message] | None = None,
122120
) -> Task:
123121
"""Creates a Task object with a specified status."""
124-
125122
if history is None:
126123
history = []
127124
if artifacts is None:
@@ -169,7 +166,7 @@ def new_text_status_update_event(
169166
)
170167

171168

172-
def new_text_artifact_update_event(
169+
def new_text_artifact_update_event( # noqa: PLR0913
173170
task_id: str,
174171
context_id: str,
175172
name: str,
@@ -189,17 +186,23 @@ def new_text_artifact_update_event(
189186
)
190187

191188

192-
def get_stream_response_text(response: StreamResponse, delimiter: str = '\n') -> str:
189+
def get_stream_response_text(
190+
response: StreamResponse, delimiter: str = '\n'
191+
) -> str:
193192
"""Extracts text content from a StreamResponse."""
194193
if response.HasField('message'):
195194
return get_message_text(response.message, delimiter)
196-
elif response.HasField('task'):
197-
texts = [get_artifact_text(a, delimiter) for a in response.task.artifacts]
195+
if response.HasField('task'):
196+
texts = [
197+
get_artifact_text(a, delimiter) for a in response.task.artifacts
198+
]
198199
return delimiter.join(t for t in texts if t)
199-
elif response.HasField('status_update'):
200+
if response.HasField('status_update'):
200201
if response.status_update.status.HasField('message'):
201-
return get_message_text(response.status_update.status.message, delimiter)
202+
return get_message_text(
203+
response.status_update.status.message, delimiter
204+
)
202205
return ''
203-
elif response.HasField('artifact_update'):
206+
if response.HasField('artifact_update'):
204207
return get_artifact_text(response.artifact_update.artifact, delimiter)
205208
return ''

src/a2a/server/agent_execution/context.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from typing import Any
22

3+
from a2a.helpers.proto_helpers import get_message_text
34
from a2a.server.context import ServerCallContext
45
from a2a.server.id_generator import (
56
IDGenerator,
@@ -12,7 +13,6 @@
1213
SendMessageRequest,
1314
Task,
1415
)
15-
from a2a.helpers.types import get_message_text
1616
from a2a.utils.errors import InvalidParamsError
1717

1818

src/a2a/utils/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
DEFAULT_RPC_URL,
77
TransportProtocol,
88
)
9-
109
from a2a.utils.proto_utils import to_stream_response
1110

1211

tests/client/test_client_helpers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from google.protobuf.json_format import MessageToDict
55

66
from a2a.client.helpers import parse_agent_card
7-
from a2a.helpers.types import new_text_message
7+
from a2a.helpers.proto_helpers import new_text_message
88
from a2a.server.request_handlers.response_helpers import agent_card_to_dict
99
from a2a.types.a2a_pb2 import (
1010
APIKeySecurityScheme,

tests/client/transports/test_grpc_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
TaskStatus,
3636
TaskStatusUpdateEvent,
3737
)
38-
from a2a.helpers.types import get_text_parts
38+
from a2a.helpers.proto_helpers import get_text_parts
3939

4040

4141
@pytest.fixture

tests/client/transports/test_rest_client.py

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from google.protobuf.timestamp_pb2 import Timestamp
99
from httpx_sse import EventSource, ServerSentEvent
1010

11-
from a2a.helpers.types import new_text_message
11+
from a2a.helpers.proto_helpers import new_text_message
1212
from a2a.client.client import ClientCallContext
1313
from a2a.client.errors import A2AClientError
1414
from a2a.client.transports.rest import RestTransport
@@ -120,9 +120,7 @@ async def test_rest_mapped_errors(
120120
agent_card=mock_agent_card,
121121
url='http://agent.example.com/api',
122122
)
123-
params = SendMessageRequest(
124-
message=new_text_message(text='Hello')
125-
)
123+
params = SendMessageRequest(message=new_text_message(text='Hello'))
126124

127125
mock_build_request = MagicMock(
128126
return_value=AsyncMock(spec=httpx.Request)
@@ -172,9 +170,7 @@ async def test_send_message_with_timeout_context(
172170
agent_card=mock_agent_card,
173171
url='http://agent.example.com/api',
174172
)
175-
params = SendMessageRequest(
176-
message=new_text_message(text='Hello')
177-
)
173+
params = SendMessageRequest(message=new_text_message(text='Hello'))
178174
context = ClientCallContext(timeout=10.0)
179175

180176
mock_build_request = MagicMock(
@@ -246,9 +242,7 @@ async def test_send_message_with_default_extensions(
246242
agent_card=mock_agent_card,
247243
url='http://agent.example.com/api',
248244
)
249-
params = SendMessageRequest(
250-
message=new_text_message(text='Hello')
251-
)
245+
params = SendMessageRequest(message=new_text_message(text='Hello'))
252246

253247
# Mock the build_request method to capture its inputs
254248
mock_build_request = MagicMock(

tests/e2e/push_notifications/agent_app.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
Message,
2525
Task,
2626
)
27-
from a2a.helpers.types import (
27+
from a2a.helpers.proto_helpers import (
2828
new_text_message,
2929
new_task_from_user_message,
3030
)
@@ -90,9 +90,7 @@ async def invoke(
9090
# Flow with user input required: "How are you?" -> "Good! How are you?" -> "Good" -> "Amazing".
9191
elif text_message == 'How are you?':
9292
await updater.requires_input(
93-
new_text_message(
94-
'Good! How are you?', task.context_id, task.id
95-
)
93+
new_text_message('Good! How are you?', task.context_id, task.id)
9694
)
9795
elif text_message == 'Good':
9896
await updater.complete(

0 commit comments

Comments
 (0)