Skip to content

Commit 6e80123

Browse files
committed
refactor: reorder parameters in JsonRpcTransport and RestTransport constructors for compatability with legacy.py
1 parent 860f2d5 commit 6e80123

File tree

5 files changed

+34
-16
lines changed

5 files changed

+34
-16
lines changed

src/a2a/client/client_factory.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,22 +76,22 @@ def _register_defaults(
7676
self.register(
7777
TransportProtocol.jsonrpc,
7878
lambda card, url, config, interceptors: JsonRpcTransport(
79-
config.httpx_client or httpx.AsyncClient(),
80-
config.extensions or None,
81-
card,
82-
url,
83-
interceptors,
79+
httpx_client=config.httpx_client or httpx.AsyncClient(),
80+
agent_card=card,
81+
url=url,
82+
interceptors=interceptors,
83+
client_extensions=config.extensions or None,
8484
),
8585
)
8686
if TransportProtocol.http_json in supported:
8787
self.register(
8888
TransportProtocol.http_json,
8989
lambda card, url, config, interceptors: RestTransport(
9090
config.httpx_client or httpx.AsyncClient(),
91-
config.extensions or None,
9291
card,
9392
url,
9493
interceptors,
94+
config.extensions or None,
9595
),
9696
)
9797
if TransportProtocol.grpc in supported:

src/a2a/client/transports/jsonrpc.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,10 @@ class JsonRpcTransport(ClientTransport):
6060
def __init__(
6161
self,
6262
httpx_client: httpx.AsyncClient,
63-
client_extensions: list[str] | None = None,
6463
agent_card: AgentCard | None = None,
6564
url: str | None = None,
6665
interceptors: list[ClientCallInterceptor] | None = None,
66+
client_extensions: list[str] | None = None,
6767
):
6868
"""Initializes the JsonRpcTransport."""
6969
if url:
@@ -74,14 +74,14 @@ def __init__(
7474
raise ValueError('Must provide either agent_card or url')
7575

7676
self.httpx_client = httpx_client
77-
self.client_extensions = client_extensions
7877
self.agent_card = agent_card
7978
self.interceptors = interceptors or []
8079
self._needs_extended_card = (
8180
agent_card.supports_authenticated_extended_card
8281
if agent_card
8382
else True
8483
)
84+
self.client_extensions = client_extensions
8585

8686
def _update_extension_header(
8787
self, http_kwargs: dict[str, Any]

src/a2a/client/transports/rest.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ class RestTransport(ClientTransport):
4141
def __init__(
4242
self,
4343
httpx_client: httpx.AsyncClient,
44-
client_extensions: list[str] | None = None,
4544
agent_card: AgentCard | None = None,
4645
url: str | None = None,
4746
interceptors: list[ClientCallInterceptor] | None = None,
47+
client_extensions: list[str] | None = None,
4848
):
4949
"""Initializes the RestTransport."""
5050
if url:
@@ -56,14 +56,14 @@ def __init__(
5656
if self.url.endswith('/'):
5757
self.url = self.url[:-1]
5858
self.httpx_client = httpx_client
59-
self.client_extensions = client_extensions
6059
self.agent_card = agent_card
6160
self.interceptors = interceptors or []
6261
self._needs_extended_card = (
6362
agent_card.supports_authenticated_extended_card
6463
if agent_card
6564
else True
6665
)
66+
self.client_extensions = client_extensions
6767

6868
def _update_extension_header(
6969
self, http_kwargs: dict[str, Any]

tests/client/test_jsonrpc_client.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -794,7 +794,9 @@ def test_update_extension_header_no_initial_headers(
794794
):
795795
extensions = ['test_extension_1', 'test_extension_2']
796796
client = JsonRpcTransport(
797-
mock_httpx_client, extensions, mock_agent_card
797+
httpx_client=mock_httpx_client,
798+
agent_card=mock_agent_card,
799+
client_extensions=extensions,
798800
)
799801
http_kwargs = {}
800802
result_kwargs = client._update_extension_header(http_kwargs)
@@ -809,7 +811,9 @@ def test_update_extension_header_with_existing_other_headers(
809811
):
810812
extensions = ['test_extension_1']
811813
client = JsonRpcTransport(
812-
mock_httpx_client, extensions, mock_agent_card
814+
httpx_client=mock_httpx_client,
815+
agent_card=mock_agent_card,
816+
client_extensions=extensions,
813817
)
814818
http_kwargs = {'headers': {'X_Other': 'Test'}}
815819
result_kwargs = client._update_extension_header(http_kwargs)
@@ -824,7 +828,9 @@ def test_update_extension_header_merge_with_existing_extensions(
824828
):
825829
extensions = ['test_extension_1', 'test_extension_2']
826830
client = JsonRpcTransport(
827-
mock_httpx_client, extensions, mock_agent_card
831+
httpx_client=mock_httpx_client,
832+
agent_card=mock_agent_card,
833+
client_extensions=extensions,
828834
)
829835
http_kwargs = {
830836
'headers': {

tests/client/test_rest_client.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,11 @@ def test_update_extension_header_no_initial_headers(
3737
self, mock_httpx_client: AsyncMock, mock_agent_card: MagicMock
3838
):
3939
extensions = ['test_extension_1', 'test_extension_2']
40-
client = RestTransport(mock_httpx_client, extensions, mock_agent_card)
40+
client = RestTransport(
41+
httpx_client=mock_httpx_client,
42+
agent_card=mock_agent_card,
43+
client_extensions=extensions,
44+
)
4145
http_kwargs = {}
4246
result_kwargs = client._update_extension_header(http_kwargs)
4347
actual_extensions = set(
@@ -50,7 +54,11 @@ def test_update_extension_header_merge_with_existing_extensions(
5054
self, mock_httpx_client: AsyncMock, mock_agent_card: MagicMock
5155
):
5256
extensions = ['test_extension_2', 'test_extension_3']
53-
client = RestTransport(mock_httpx_client, extensions, mock_agent_card)
57+
client = RestTransport(
58+
httpx_client=mock_httpx_client,
59+
agent_card=mock_agent_card,
60+
client_extensions=extensions,
61+
)
5462
http_kwargs = {
5563
'headers': {
5664
HTTP_EXTENSION_HEADER: 'test_extension_1, test_extension_2'
@@ -71,7 +79,11 @@ def test_update_extension_header_with_other_headers(
7179
self, mock_httpx_client: AsyncMock, mock_agent_card: MagicMock
7280
):
7381
extensions = ['test_extension_1']
74-
client = RestTransport(mock_httpx_client, extensions, mock_agent_card)
82+
client = RestTransport(
83+
httpx_client=mock_httpx_client,
84+
agent_card=mock_agent_card,
85+
client_extensions=extensions,
86+
)
7587
http_kwargs = {'headers': {'X_Other': 'Test'}}
7688
result_kwargs = client._update_extension_header(http_kwargs)
7789
headers = result_kwargs.get('headers', {})

0 commit comments

Comments
 (0)