Skip to content

Commit 06390e6

Browse files
committed
wip
1 parent aac8b00 commit 06390e6

14 files changed

Lines changed: 220 additions & 343 deletions

docs/ai/ai_learnings.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,3 @@ derived from them. Every entry must follow the format below.
1515
**Mistake**: What went wrong.
1616
**Root cause**: Why it happened.
1717
**Rule**: The concrete rule added to prevent recurrence.
18-
19-
---

scripts/test_minimal_install.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
'a2a.utils',
5353
'a2a.utils.constants',
5454
'a2a.utils.error_handlers',
55-
'a2a.utils.helpers',
55+
'a2a.utils.version_validator',
5656
'a2a.utils.proto_utils',
5757
'a2a.utils.task',
5858
'a2a.helpers.agent_card',

src/a2a/compat/v0_3/jsonrpc_adapter.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
ServerCallContextBuilder,
4141
)
4242
from a2a.utils import constants
43-
from a2a.utils.helpers import validate_version
43+
from a2a.utils.version_validator import validate_version
4444

4545

4646
logger = logging.getLogger(__name__)

src/a2a/compat/v0_3/rest_handler.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,8 @@
2828
from a2a.compat.v0_3.request_handler import RequestHandler03
2929
from a2a.server.context import ServerCallContext
3030
from a2a.utils import constants
31-
from a2a.utils.helpers import (
32-
validate_version,
33-
)
3431
from a2a.utils.telemetry import SpanKind, trace_class
32+
from a2a.utils.version_validator import validate_version
3533

3634

3735
logger = logging.getLogger(__name__)

src/a2a/server/request_handlers/default_request_handler.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@
5858
TaskNotFoundError,
5959
UnsupportedOperationError,
6060
)
61-
from a2a.utils.helpers import maybe_await
6261
from a2a.utils.task import (
6362
apply_history_length,
6463
validate_history_length,
@@ -100,7 +99,7 @@ def __init__( # noqa: PLR0913
10099
request_context_builder: RequestContextBuilder | None = None,
101100
extended_agent_card: AgentCard | None = None,
102101
extended_card_modifier: Callable[
103-
[AgentCard, ServerCallContext], Awaitable[AgentCard] | AgentCard
102+
[AgentCard, ServerCallContext], Awaitable[AgentCard]
104103
]
105104
| None = None,
106105
) -> None:
@@ -695,8 +694,8 @@ async def on_get_extended_agent_card(
695694
raise ExtendedAgentCardNotConfiguredError
696695

697696
if self.extended_card_modifier:
698-
return await maybe_await(
699-
self.extended_card_modifier(extended_card, context)
697+
extended_card = await self.extended_card_modifier(
698+
extended_card, context
700699
)
701700

702701
return extended_card

src/a2a/server/request_handlers/default_request_handler_v2.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@
4747
TaskNotCancelableError,
4848
TaskNotFoundError,
4949
)
50-
from a2a.utils.helpers import maybe_await
5150
from a2a.utils.task import (
5251
apply_history_length,
5352
validate_history_length,
@@ -93,7 +92,7 @@ def __init__( # noqa: PLR0913
9392
request_context_builder: RequestContextBuilder | None = None,
9493
extended_agent_card: AgentCard | None = None,
9594
extended_card_modifier: Callable[
96-
[AgentCard, ServerCallContext], Awaitable[AgentCard] | AgentCard
95+
[AgentCard, ServerCallContext], Awaitable[AgentCard]
9796
]
9897
| None = None,
9998
) -> None:
@@ -467,8 +466,8 @@ async def on_get_extended_agent_card(
467466
raise ExtendedAgentCardNotConfiguredError
468467

469468
if self.extended_card_modifier:
470-
return await maybe_await(
471-
self.extended_card_modifier(extended_card, context)
469+
extended_card = await self.extended_card_modifier(
470+
extended_card, context
472471
)
473472

474473
return extended_card

src/a2a/server/routes/agent_card_routes.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,11 @@
2626
from a2a.server.request_handlers.response_helpers import agent_card_to_dict
2727
from a2a.types.a2a_pb2 import AgentCard
2828
from a2a.utils.constants import AGENT_CARD_WELL_KNOWN_PATH
29-
from a2a.utils.helpers import maybe_await
3029

3130

3231
def create_agent_card_routes(
3332
agent_card: AgentCard,
34-
card_modifier: Callable[[AgentCard], Awaitable[AgentCard] | AgentCard]
35-
| None = None,
33+
card_modifier: Callable[[AgentCard], Awaitable[AgentCard]] | None = None,
3634
card_url: str = AGENT_CARD_WELL_KNOWN_PATH,
3735
) -> list['Route']:
3836
"""Creates the Starlette Route for the A2A protocol agent card endpoint."""
@@ -45,7 +43,7 @@ def create_agent_card_routes(
4543
async def _get_agent_card(request: Request) -> Response:
4644
card_to_serve = agent_card
4745
if card_modifier:
48-
card_to_serve = await maybe_await(card_modifier(card_to_serve))
46+
card_to_serve = await card_modifier(card_to_serve)
4947
return JSONResponse(agent_card_to_dict(card_to_serve))
5048

5149
return [

src/a2a/server/routes/jsonrpc_dispatcher.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@
5252
TaskNotFoundError,
5353
UnsupportedOperationError,
5454
)
55-
from a2a.utils.helpers import validate_version
5655
from a2a.utils.telemetry import SpanKind, trace_class
56+
from a2a.utils.version_validator import validate_version
5757

5858

5959
INTERNAL_ERROR_CODE = -32603

src/a2a/server/routes/rest_dispatcher.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@
2828
InvalidRequestError,
2929
TaskNotFoundError,
3030
)
31-
from a2a.utils.helpers import validate_version
3231
from a2a.utils.telemetry import SpanKind, trace_class
32+
from a2a.utils.version_validator import validate_version
3333

3434

3535
if TYPE_CHECKING:
Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import inspect
55
import logging
66

7-
from collections.abc import AsyncIterator, Awaitable, Callable
7+
from collections.abc import AsyncIterator, Callable
88
from typing import Any, TypeVar, cast
99

1010
from packaging.version import InvalidVersion, Version
@@ -14,20 +14,12 @@
1414
from a2a.utils.errors import VersionNotSupportedError
1515

1616

17-
T = TypeVar('T')
1817
F = TypeVar('F', bound=Callable[..., Any])
1918

2019

2120
logger = logging.getLogger(__name__)
2221

2322

24-
async def maybe_await(value: T | Awaitable[T]) -> T:
25-
"""Awaits a value if it's awaitable, otherwise simply provides it back."""
26-
if inspect.isawaitable(value):
27-
return await value
28-
return value
29-
30-
3123
def validate_version(expected_version: str) -> Callable[[F], F]:
3224
"""Decorator that validates the A2A-Version header in the request context.
3325

0 commit comments

Comments
 (0)