Skip to content

Commit d90abf4

Browse files
committed
Formatting
1 parent bb61b49 commit d90abf4

File tree

9 files changed

+147
-89
lines changed

9 files changed

+147
-89
lines changed

src/a2a/server/agent_execution/context.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
from a2a.types import (
44
InvalidParamsError,
55
Message,
6-
MessageSendParams,
76
MessageSendConfiguration,
7+
MessageSendParams,
88
Task,
99
)
1010
from a2a.utils import get_message_text

src/a2a/server/request_handlers/default_request_handler.py

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,14 @@ async def on_message_send(
128128
if task:
129129
task = task_manager.update_with_message(params.message, task)
130130
if self.should_add_push_info(params):
131-
assert isinstance(self._push_notifier, PushNotifier) # For typechecker
132-
assert isinstance(params.configuration, MessageSendConfiguration) # For typechecker
133-
assert isinstance(params.configuration.pushNotificationConfig, PushNotificationConfig) # For typechecker
131+
assert isinstance(self._push_notifier, PushNotifier)
132+
assert isinstance(
133+
params.configuration, MessageSendConfiguration
134+
)
135+
assert isinstance(
136+
params.configuration.pushNotificationConfig,
137+
PushNotificationConfig,
138+
)
134139
await self._push_notifier.set_info(
135140
task.id, params.configuration.pushNotificationConfig
136141
)
@@ -193,9 +198,14 @@ async def on_message_send_stream(
193198
task = task_manager.update_with_message(params.message, task)
194199

195200
if self.should_add_push_info(params):
196-
assert isinstance(self._push_notifier, PushNotifier) # For typechecker
197-
assert isinstance(params.configuration, MessageSendConfiguration) # For typechecker
198-
assert isinstance(params.configuration.pushNotificationConfig, PushNotificationConfig) # For typechecker
201+
assert isinstance(self._push_notifier, PushNotifier)
202+
assert isinstance(
203+
params.configuration, MessageSendConfiguration
204+
)
205+
assert isinstance(
206+
params.configuration.pushNotificationConfig,
207+
PushNotificationConfig,
208+
)
199209
await self._push_notifier.set_info(
200210
task.id, params.configuration.pushNotificationConfig
201211
)
@@ -324,11 +334,8 @@ async def on_resubscribe_to_task(
324334
yield event
325335

326336
def should_add_push_info(self, params: MessageSendParams) -> bool:
327-
if (
337+
return bool(
328338
self._push_notifier
329339
and params.configuration
330340
and params.configuration.pushNotificationConfig
331-
):
332-
return True
333-
else:
334-
return False
341+
)

src/a2a/server/tasks/task_updater.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,7 @@ def complete(self, message: Message | None = None):
6868

6969
def failed(self, message: Message | None = None):
7070
"""Mark the task as failed."""
71-
self.update_status(
72-
TaskState.failed,
73-
message=message,
74-
final=True
75-
)
71+
self.update_status(TaskState.failed, message=message, final=True)
7672

7773
def submit(self, message: Message | None = None):
7874
"""Mark the task as submitted."""

src/a2a/utils/__init__.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,34 +5,34 @@
55
)
66
from a2a.utils.helpers import (
77
append_artifact_to_task,
8+
are_modalities_compatible,
89
build_text_artifact,
910
create_task_obj,
10-
are_modalities_compatible,
1111
)
1212
from a2a.utils.message import (
1313
get_message_text,
1414
get_text_parts,
15-
new_agent_text_message,
1615
new_agent_parts_message,
16+
new_agent_text_message,
1717
)
1818
from a2a.utils.task import (
19-
new_task,
2019
completed_task,
20+
new_task,
2121
)
2222

2323

2424
__all__ = [
2525
'append_artifact_to_task',
26+
'are_modalities_compatible',
2627
'build_text_artifact',
28+
'completed_task',
2729
'create_task_obj',
2830
'get_message_text',
2931
'get_text_parts',
30-
'new_agent_text_message',
31-
'new_task',
32-
'new_text_artifact',
3332
'new_agent_parts_message',
34-
'completed_task',
33+
'new_agent_text_message',
3534
'new_artifact',
3635
'new_data_artifact',
37-
'are_modalities_compatible',
36+
'new_task',
37+
'new_text_artifact',
3838
]

src/a2a/utils/artifact.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import uuid
22

3-
from a2a.types import Artifact, Part, TextPart
3+
from a2a.types import Artifact, DataPart, Part, TextPart
44

55

66
def new_artifact(
@@ -13,20 +13,26 @@ def new_artifact(
1313
description=description,
1414
)
1515

16+
1617
def new_text_artifact(
1718
name: str,
1819
text: str,
1920
description: str = '',
2021
) -> Artifact:
2122
return new_artifact(
22-
[Part(root=TextPart(text=text))], name, description,
23+
[Part(root=TextPart(text=text))],
24+
name,
25+
description,
2326
)
2427

28+
2529
def new_data_artifact(
2630
name: str,
2731
data: dict[str, any],
2832
description: str = '',
2933
):
3034
return new_artifact(
31-
[Part(root=DataPart(data=data))], name, description,
35+
[Part(root=DataPart(data=data))],
36+
name,
37+
description,
3238
)

src/a2a/utils/message.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ def new_agent_text_message(
2222
contextId=context_id,
2323
)
2424

25+
2526
def new_agent_parts_message(
2627
parts: list[Part],
2728
context_id: str | None,
@@ -35,6 +36,7 @@ def new_agent_parts_message(
3536
contextId=context_id,
3637
)
3738

39+
3840
def get_text_parts(parts: list[Part]) -> list[str]:
3941
"""Return all text parts from a list of parts."""
4042
return [part.root.text for part in parts if isinstance(part.root, TextPart)]

src/a2a/utils/task.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,10 @@ def completed_task(
1818
task_id: str,
1919
context_id: str,
2020
artifacts: list[Artifact],
21-
history: list[Message] = [],
21+
history: list[Message] = None,
2222
) -> Task:
23+
if history is None:
24+
history = []
2325
return Task(
2426
status=TaskStatus(state=TaskState.completed),
2527
id=task_id,

tests/utils/test_helpers.py

Lines changed: 48 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
from typing import Any
22
import pytest
3-
from unittest.mock import MagicMock
4-
from uuid import uuid4
53
from a2a.utils.helpers import (
64
create_task_obj,
75
append_artifact_to_task,
@@ -15,11 +13,10 @@
1513
Task,
1614
TaskArtifactUpdateEvent,
1715
TaskState,
18-
TaskStatus,
1916
TextPart,
2017
Part,
2118
)
22-
from a2a.utils.errors import ServerError, UnsupportedOperationError
19+
from a2a.utils.errors import ServerError
2320

2421
# --- Helper Data ---
2522
TEXT_PART_DATA: dict[str, Any] = {'type': 'text', 'text': 'Hello'}
@@ -40,6 +37,7 @@
4037
'type': 'task',
4138
}
4239

40+
4341
# Test create_task_obj
4442
def test_create_task_obj():
4543
message = Message(**MINIMAL_MESSAGE_USER)
@@ -55,7 +53,7 @@ def test_create_task_obj():
5553

5654
# Test append_artifact_to_task
5755
def test_append_artifact_to_task():
58-
# Prepare base task
56+
# Prepare base task
5957
task = Task(**MINIMAL_TASK)
6058
assert task.id == 'task-abc'
6159
assert task.contextId == 'session-xyz'
@@ -66,66 +64,86 @@ def test_append_artifact_to_task():
6664

6765
# Prepare appending artifact and event
6866
artifact_1 = Artifact(
69-
artifactId="artifact-123", parts=[Part(root=TextPart(text="Hello"))]
67+
artifactId='artifact-123', parts=[Part(root=TextPart(text='Hello'))]
68+
)
69+
append_event_1 = TaskArtifactUpdateEvent(
70+
artifact=artifact_1, append=False, taskId='123', contextId='123'
7071
)
71-
append_event_1 = TaskArtifactUpdateEvent(artifact=artifact_1, append=False, taskId="123", contextId="123")
7272

7373
# Test adding a new artifact (not appending)
7474
append_artifact_to_task(task, append_event_1)
7575
assert len(task.artifacts) == 1
76-
assert task.artifacts[0].artifactId == "artifact-123"
76+
assert task.artifacts[0].artifactId == 'artifact-123'
7777
assert task.artifacts[0].name == None
7878
assert len(task.artifacts[0].parts) == 1
79-
assert task.artifacts[0].parts[0].root.text == "Hello"
79+
assert task.artifacts[0].parts[0].root.text == 'Hello'
8080

8181
# Test replacing the artifact
8282
artifact_2 = Artifact(
83-
artifactId="artifact-123", name="updated name", parts=[Part(root=TextPart(text="Updated"))]
83+
artifactId='artifact-123',
84+
name='updated name',
85+
parts=[Part(root=TextPart(text='Updated'))],
86+
)
87+
append_event_2 = TaskArtifactUpdateEvent(
88+
artifact=artifact_2, append=False, taskId='123', contextId='123'
8489
)
85-
append_event_2 = TaskArtifactUpdateEvent(artifact=artifact_2, append=False, taskId="123", contextId="123")
8690
append_artifact_to_task(task, append_event_2)
8791
assert len(task.artifacts) == 1 # Should still have one artifact
88-
assert task.artifacts[0].artifactId == "artifact-123"
89-
assert task.artifacts[0].name == "updated name"
92+
assert task.artifacts[0].artifactId == 'artifact-123'
93+
assert task.artifacts[0].name == 'updated name'
9094
assert len(task.artifacts[0].parts) == 1
91-
assert task.artifacts[0].parts[0].root.text == "Updated"
95+
assert task.artifacts[0].parts[0].root.text == 'Updated'
9296

9397
# Test appending parts to an existing artifact
9498
artifact_with_parts = Artifact(
95-
artifactId="artifact-123", parts=[Part(root=TextPart(text="Part 2"))]
99+
artifactId='artifact-123', parts=[Part(root=TextPart(text='Part 2'))]
100+
)
101+
append_event_3 = TaskArtifactUpdateEvent(
102+
artifact=artifact_with_parts, append=True, taskId='123', contextId='123'
96103
)
97-
append_event_3 = TaskArtifactUpdateEvent(artifact=artifact_with_parts, append=True, taskId="123", contextId="123")
98104
append_artifact_to_task(task, append_event_3)
99105
assert len(task.artifacts[0].parts) == 2
100-
assert task.artifacts[0].parts[0].root.text == "Updated"
101-
assert task.artifacts[0].parts[1].root.text == "Part 2"
106+
assert task.artifacts[0].parts[0].root.text == 'Updated'
107+
assert task.artifacts[0].parts[1].root.text == 'Part 2'
102108

103109
# Test adding another new artifact
104110
another_artifact_with_parts = Artifact(
105-
artifactId="new_artifact", parts=[Part(root=TextPart(text="new artifact Part 1"))]
111+
artifactId='new_artifact',
112+
parts=[Part(root=TextPart(text='new artifact Part 1'))],
113+
)
114+
append_event_4 = TaskArtifactUpdateEvent(
115+
artifact=another_artifact_with_parts,
116+
append=False,
117+
taskId='123',
118+
contextId='123',
106119
)
107-
append_event_4 = TaskArtifactUpdateEvent(artifact=another_artifact_with_parts, append=False, taskId="123", contextId="123")
108120
append_artifact_to_task(task, append_event_4)
109121
assert len(task.artifacts) == 2
110-
assert task.artifacts[0].artifactId == "artifact-123"
111-
assert task.artifacts[1].artifactId == "new_artifact"
122+
assert task.artifacts[0].artifactId == 'artifact-123'
123+
assert task.artifacts[1].artifactId == 'new_artifact'
112124
assert len(task.artifacts[0].parts) == 2
113125
assert len(task.artifacts[1].parts) == 1
114126

115127
# Test appending part to a task that does not have a matching artifact
116128
non_existing_artifact_with_parts = Artifact(
117-
artifactId="artifact-456", parts=[Part(root=TextPart(text="Part 1"))]
129+
artifactId='artifact-456', parts=[Part(root=TextPart(text='Part 1'))]
130+
)
131+
append_event_5 = TaskArtifactUpdateEvent(
132+
artifact=non_existing_artifact_with_parts,
133+
append=True,
134+
taskId='123',
135+
contextId='123',
118136
)
119-
append_event_5 = TaskArtifactUpdateEvent(artifact=non_existing_artifact_with_parts, append=True, taskId="123", contextId="123")
120137
append_artifact_to_task(task, append_event_5)
121138
assert len(task.artifacts) == 2
122139
assert len(task.artifacts[0].parts) == 2
123140
assert len(task.artifacts[1].parts) == 1
124141

142+
125143
# Test build_text_artifact
126144
def test_build_text_artifact():
127-
artifact_id = "text_artifact"
128-
text = "This is a sample text"
145+
artifact_id = 'text_artifact'
146+
text = 'This is a sample text'
129147
artifact = build_text_artifact(text, artifact_id)
130148

131149
assert artifact.artifactId == artifact_id
@@ -138,17 +156,17 @@ def test_validate_decorator():
138156
class TestClass:
139157
condition = True
140158

141-
@validate(lambda self: self.condition, "Condition not met")
159+
@validate(lambda self: self.condition, 'Condition not met')
142160
def test_method(self):
143-
return "Success"
161+
return 'Success'
144162

145163
obj = TestClass()
146164

147165
# Test passing condition
148-
assert obj.test_method() == "Success"
166+
assert obj.test_method() == 'Success'
149167

150168
# Test failing condition
151169
obj.condition = False
152170
with pytest.raises(ServerError) as exc_info:
153171
obj.test_method()
154-
assert "Condition not met" in str(exc_info.value)
172+
assert 'Condition not met' in str(exc_info.value)

0 commit comments

Comments
 (0)