Skip to content

Commit 8e7b7f9

Browse files
authored
Merge branch 'main' into test/add-coverage-error-handlers-utils-models
2 parents bc91902 + 2ddf585 commit 8e7b7f9

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 (
@@ -195,15 +196,22 @@ async def test_enqueue_event_when_closed(event_queue: EventQueue) -> None:
195196
await child_queue.dequeue_event(no_wait=True)
196197

197198

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

209217
with pytest.raises(asyncio.QueueEmpty, match='Queue is closed.'):
@@ -212,14 +220,12 @@ async def test_dequeue_event_closed_and_empty_no_wait(
212220

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

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

0 commit comments

Comments
 (0)