Skip to content

Commit 892446b

Browse files
fix: consistent params order & tests fix
1 parent 419523f commit 892446b

2 files changed

Lines changed: 46 additions & 33 deletions

File tree

src/a2a/helpers/proto_helpers.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@
2727

2828
def new_message(
2929
parts: list[Part],
30-
role: Role = Role.ROLE_AGENT,
3130
context_id: str | None = None,
3231
task_id: str | None = None,
32+
role: Role = Role.ROLE_AGENT,
3333
) -> Message:
3434
"""Creates a new message containing a list of Parts."""
3535
return Message(
@@ -44,16 +44,16 @@ def new_message(
4444
def new_text_message(
4545
text: str,
4646
media_type: str | None = None,
47-
role: Role = Role.ROLE_AGENT,
4847
context_id: str | None = None,
4948
task_id: str | None = None,
49+
role: Role = Role.ROLE_AGENT,
5050
) -> Message:
5151
"""Creates a new message containing a single text Part."""
5252
return new_message(
5353
parts=[new_text_part(text, media_type=media_type)],
54-
role=role,
55-
task_id=task_id,
5654
context_id=context_id,
55+
task_id=task_id,
56+
role=role,
5757
)
5858

5959

@@ -65,85 +65,85 @@ def get_message_text(message: Message, delimiter: str = '\n') -> str:
6565
def new_data_message(
6666
data: Any,
6767
media_type: str | None = None,
68-
role: Role = Role.ROLE_AGENT,
6968
context_id: str | None = None,
7069
task_id: str | None = None,
70+
role: Role = Role.ROLE_AGENT,
7171
) -> Message:
7272
"""Creates a new message containing a single data Part.
7373
7474
Args:
7575
data: JSON-serializable data to embed (dict, list, str, etc.).
7676
media_type: Optional MIME type of the part content (e.g., "text/plain", "application/json", "image/png").
77-
role: The role of the message sender (default: ROLE_AGENT).
7877
context_id: Optional context ID.
7978
task_id: Optional task ID.
79+
role: The role of the message sender (default: ROLE_AGENT).
8080
8181
Returns:
8282
A Message with a single data Part.
8383
"""
8484
return new_message(
8585
parts=[new_data_part(data, media_type=media_type)],
86-
role=role,
8786
context_id=context_id,
8887
task_id=task_id,
88+
role=role,
8989
)
9090

9191

9292
def new_raw_message( # noqa: PLR0913
9393
raw: bytes,
9494
media_type: str | None = None,
9595
filename: str | None = None,
96-
role: Role = Role.ROLE_AGENT,
9796
context_id: str | None = None,
9897
task_id: str | None = None,
98+
role: Role = Role.ROLE_AGENT,
9999
) -> Message:
100100
"""Creates a new message containing a single raw bytes Part.
101101
102102
Args:
103103
raw: The raw bytes content.
104104
media_type: Optional MIME type (e.g. 'image/png').
105105
filename: Optional filename.
106-
role: The role of the message sender (default: ROLE_AGENT).
107106
context_id: Optional context ID.
108107
task_id: Optional task ID.
108+
role: The role of the message sender (default: ROLE_AGENT).
109109
110110
Returns:
111111
A Message with a single raw Part.
112112
"""
113113
return new_message(
114114
parts=[new_raw_part(raw, media_type=media_type, filename=filename)],
115-
role=role,
116115
context_id=context_id,
117116
task_id=task_id,
117+
role=role,
118118
)
119119

120120

121121
def new_url_message( # noqa: PLR0913
122122
url: str,
123123
media_type: str | None = None,
124124
filename: str | None = None,
125-
role: Role = Role.ROLE_AGENT,
126125
context_id: str | None = None,
127126
task_id: str | None = None,
127+
role: Role = Role.ROLE_AGENT,
128128
) -> Message:
129129
"""Creates a new message containing a single URL Part.
130130
131131
Args:
132132
url: The URL pointing to the file content.
133133
media_type: Optional MIME type (e.g. 'image/png').
134134
filename: Optional filename.
135-
role: The role of the message sender (default: ROLE_AGENT).
136135
context_id: Optional context ID.
137136
task_id: Optional task ID.
137+
role: The role of the message sender (default: ROLE_AGENT).
138138
139139
Returns:
140140
A Message with a single URL Part.
141141
"""
142142
return new_message(
143143
parts=[new_url_part(url, media_type=media_type, filename=filename)],
144-
role=role,
145144
context_id=context_id,
146145
task_id=task_id,
146+
role=role,
147147
)
148148

149149

tests/helpers/test_proto_helpers.py

Lines changed: 33 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,49 @@
11
"""Tests for proto helpers."""
22

33
import pytest
4+
45
from a2a.helpers.proto_helpers import (
5-
new_message,
6-
new_text_message,
7-
new_data_message,
8-
new_raw_message,
9-
new_url_message,
6+
get_artifact_text,
107
get_message_text,
8+
get_stream_response_text,
9+
get_text_parts,
1110
new_artifact,
12-
new_text_artifact,
1311
new_data_artifact,
12+
new_data_message,
13+
new_data_part,
14+
new_message,
1415
new_raw_artifact,
15-
new_url_artifact,
16-
get_artifact_text,
17-
new_task_from_user_message,
16+
new_raw_message,
17+
new_raw_part,
1818
new_task,
19-
get_text_parts,
19+
new_task_from_user_message,
20+
new_text_artifact,
21+
new_text_artifact_update_event,
22+
new_text_message,
2023
new_text_part,
21-
new_data_part,
22-
new_raw_part,
23-
new_url_part,
2424
new_text_status_update_event,
25-
new_text_artifact_update_event,
26-
get_stream_response_text,
25+
new_url_artifact,
26+
new_url_message,
27+
new_url_part,
2728
)
2829
from a2a.types.a2a_pb2 import (
30+
Artifact,
31+
Message,
2932
Part,
3033
Role,
31-
Message,
32-
Artifact,
34+
StreamResponse,
3335
Task,
3436
TaskState,
35-
StreamResponse,
3637
)
3738

39+
3840
# --- Message Helpers Tests ---
3941

4042

4143
def test_new_message() -> None:
4244
parts = [Part(text='hello')]
4345
msg = new_message(
44-
parts=parts, role=Role.ROLE_USER, context_id='ctx1', task_id='task1'
46+
parts, context_id='ctx1', task_id='task1', role=Role.ROLE_USER
4547
)
4648
assert msg.role == Role.ROLE_USER
4749
assert msg.parts == parts
@@ -52,11 +54,16 @@ def test_new_message() -> None:
5254

5355
def test_new_text_message() -> None:
5456
msg = new_text_message(
55-
text='hello', context_id='ctx1', task_id='task1', role=Role.ROLE_USER
57+
'hello',
58+
media_type='text/plain',
59+
context_id='ctx1',
60+
task_id='task1',
61+
role=Role.ROLE_USER,
5662
)
5763
assert msg.role == Role.ROLE_USER
5864
assert len(msg.parts) == 1
5965
assert msg.parts[0].text == 'hello'
66+
assert msg.parts[0].media_type == 'text/plain'
6067
assert msg.context_id == 'ctx1'
6168
assert msg.task_id == 'task1'
6269
assert msg.message_id != ''
@@ -65,6 +72,7 @@ def test_new_text_message() -> None:
6572
def test_new_data_message() -> None:
6673
msg = new_data_message(
6774
data={'key': 'value'},
75+
media_type='application/json',
6876
context_id='ctx1',
6977
task_id='task1',
7078
role=Role.ROLE_USER,
@@ -73,6 +81,7 @@ def test_new_data_message() -> None:
7381
assert len(msg.parts) == 1
7482
assert msg.parts[0].HasField('data')
7583
assert msg.parts[0].data.struct_value.fields['key'].string_value == 'value'
84+
assert msg.parts[0].media_type == 'application/json'
7685
assert msg.context_id == 'ctx1'
7786
assert msg.task_id == 'task1'
7887
assert msg.message_id != ''
@@ -85,7 +94,9 @@ def test_new_raw_message() -> None:
8594
filename='img.png',
8695
context_id='ctx1',
8796
task_id='task1',
97+
role=Role.ROLE_USER,
8898
)
99+
assert msg.role == Role.ROLE_USER
89100
assert len(msg.parts) == 1
90101
assert msg.parts[0].HasField('raw')
91102
assert msg.parts[0].raw == b'\x89PNG'
@@ -103,7 +114,9 @@ def test_new_url_message() -> None:
103114
filename='file.pdf',
104115
context_id='ctx1',
105116
task_id='task1',
117+
role=Role.ROLE_USER,
106118
)
119+
assert msg.role == Role.ROLE_USER
107120
assert len(msg.parts) == 1
108121
assert msg.parts[0].HasField('url')
109122
assert msg.parts[0].url == 'https://example.com/file.pdf'

0 commit comments

Comments
 (0)