Skip to content

Commit cbfd286

Browse files
committed
Merge branch 'test-uuid' of https://github.com/a2aproject/a2a-python into test-uuid
2 parents 34799ae + 8fc84e3 commit cbfd286

File tree

4 files changed

+18
-14
lines changed

4 files changed

+18
-14
lines changed

.github/workflows/unit-tests.yml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,17 +40,15 @@ jobs:
4040
steps:
4141
- name: Checkout code
4242
uses: actions/checkout@v4
43-
- name: Set up Python ${{ matrix.python-version }}
44-
uses: actions/setup-python@v5
45-
with:
46-
python-version: ${{ matrix.python-version }}
4743
- name: Set up test environment variables
4844
run: |
4945
echo "POSTGRES_TEST_DSN=postgresql+asyncpg://a2a:a2a_password@localhost:5432/a2a_test" >> $GITHUB_ENV
5046
echo "MYSQL_TEST_DSN=mysql+aiomysql://a2a:a2a_password@localhost:3306/a2a_test" >> $GITHUB_ENV
5147
52-
- name: Install uv
48+
- name: Install uv for Python ${{ matrix.python-version }}
5349
uses: astral-sh/setup-uv@v6
50+
with:
51+
python-version: ${{ matrix.python-version }}
5452
- name: Add uv to PATH
5553
run: |
5654
echo "$HOME/.cargo/bin" >> $GITHUB_PATH

src/a2a/server/request_handlers/default_request_handler.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ async def _setup_message_execution(
195195
if task.status.state in TERMINAL_TASK_STATES:
196196
raise ServerError(
197197
error=InvalidParamsError(
198-
message=f'Task {task.id} is in terminal state: {task.status.state}'
198+
message=f'Task {task.id} is in terminal state: {task.status.state.value}'
199199
)
200200
)
201201

@@ -437,7 +437,7 @@ async def on_resubscribe_to_task(
437437
if task.status.state in TERMINAL_TASK_STATES:
438438
raise ServerError(
439439
error=InvalidParamsError(
440-
message=f'Task {task.id} is in terminal state: {task.status.state}'
440+
message=f'Task {task.id} is in terminal state: {task.status.state.value}'
441441
)
442442
)
443443

tests/server/apps/jsonrpc/test_jsonrpc_app.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ def test_jsonrpc_app_build_method_abstract_raises_typeerror(
9292
# This will fail at definition time if an abstract method is not implemented
9393
with pytest.raises(
9494
TypeError,
95-
match="Can't instantiate abstract class IncompleteJSONRPCApp with abstract method build",
95+
match=".*abstract class IncompleteJSONRPCApp .* abstract method '?build'?",
9696
):
9797

9898
class IncompleteJSONRPCApp(JSONRPCApplication):

tests/server/events/test_event_queue.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import asyncio
2+
import sys
23

34
from typing import Any
45
from unittest.mock import (
@@ -196,15 +197,22 @@ async def test_enqueue_event_when_closed(event_queue: EventQueue) -> None:
196197
await child_queue.dequeue_event(no_wait=True)
197198

198199

200+
@pytest.fixture
201+
def expected_queue_closed_exception():
202+
if sys.version_info < (3, 13):
203+
return asyncio.QueueEmpty
204+
return asyncio.QueueShutDown
205+
206+
199207
@pytest.mark.asyncio
200208
async def test_dequeue_event_closed_and_empty_no_wait(
201-
event_queue: EventQueue,
209+
event_queue: EventQueue, expected_queue_closed_exception
202210
) -> None:
203211
"""Test dequeue_event raises QueueEmpty when closed, empty, and no_wait=True."""
204212
await event_queue.close()
205213
assert event_queue.is_closed()
206214
# Ensure queue is actually empty (e.g. by trying a non-blocking get on internal queue)
207-
with pytest.raises(asyncio.QueueEmpty):
215+
with pytest.raises(expected_queue_closed_exception):
208216
event_queue.queue.get_nowait()
209217

210218
with pytest.raises(asyncio.QueueEmpty, match='Queue is closed.'):
@@ -213,14 +221,12 @@ async def test_dequeue_event_closed_and_empty_no_wait(
213221

214222
@pytest.mark.asyncio
215223
async def test_dequeue_event_closed_and_empty_waits_then_raises(
216-
event_queue: EventQueue,
224+
event_queue: EventQueue, expected_queue_closed_exception
217225
) -> None:
218226
"""Test dequeue_event raises QueueEmpty eventually when closed, empty, and no_wait=False."""
219227
await event_queue.close()
220228
assert event_queue.is_closed()
221-
with pytest.raises(
222-
asyncio.QueueEmpty
223-
): # Should still raise QueueEmpty as per current implementation
229+
with pytest.raises(expected_queue_closed_exception):
224230
event_queue.queue.get_nowait() # verify internal queue is empty
225231

226232
# This test is tricky because await event_queue.dequeue_event() would hang if not for the close check.

0 commit comments

Comments
 (0)