Skip to content

Commit 7dec763

Browse files
authored
refactor(client)!: rename "callback" -> "push_notification_config" (#749)
Currently client uses `callback` terminology for push notifications which doesn't match the spec and data model names coming from the proto. In addition having `get_task` and `get_task_callback` side by side may give an impression that `get_task_callback` is some sort of an extension point for `get_task` rather than a completely different method. Re #702.
1 parent 041f0f5 commit 7dec763

11 files changed

Lines changed: 76 additions & 68 deletions

File tree

src/a2a/client/base_client.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ async def cancel_task(
208208
request, context=context, extensions=extensions
209209
)
210210

211-
async def set_task_callback(
211+
async def create_task_push_notification_config(
212212
self,
213213
request: CreateTaskPushNotificationConfigRequest,
214214
*,
@@ -225,11 +225,11 @@ async def set_task_callback(
225225
Returns:
226226
The created or updated `TaskPushNotificationConfig` object.
227227
"""
228-
return await self._transport.set_task_callback(
228+
return await self._transport.create_task_push_notification_config(
229229
request, context=context, extensions=extensions
230230
)
231231

232-
async def get_task_callback(
232+
async def get_task_push_notification_config(
233233
self,
234234
request: GetTaskPushNotificationConfigRequest,
235235
*,
@@ -246,11 +246,11 @@ async def get_task_callback(
246246
Returns:
247247
A `TaskPushNotificationConfig` object containing the configuration.
248248
"""
249-
return await self._transport.get_task_callback(
249+
return await self._transport.get_task_push_notification_config(
250250
request, context=context, extensions=extensions
251251
)
252252

253-
async def list_task_callback(
253+
async def list_task_push_notification_configs(
254254
self,
255255
request: ListTaskPushNotificationConfigsRequest,
256256
*,
@@ -267,11 +267,11 @@ async def list_task_callback(
267267
Returns:
268268
A `ListTaskPushNotificationConfigsResponse` object.
269269
"""
270-
return await self._transport.list_task_callback(
270+
return await self._transport.list_task_push_notification_configs(
271271
request, context=context, extensions=extensions
272272
)
273273

274-
async def delete_task_callback(
274+
async def delete_task_push_notification_config(
275275
self,
276276
request: DeleteTaskPushNotificationConfigRequest,
277277
*,
@@ -285,7 +285,7 @@ async def delete_task_callback(
285285
context: The client call context.
286286
extensions: List of extensions to be activated.
287287
"""
288-
await self._transport.delete_task_callback(
288+
await self._transport.delete_task_push_notification_config(
289289
request, context=context, extensions=extensions
290290
)
291291

src/a2a/client/client.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ class ClientConfig:
7171
push_notification_configs: list[PushNotificationConfig] = dataclasses.field(
7272
default_factory=list
7373
)
74-
"""Push notification callbacks to use for every request."""
74+
"""Push notification configurations to use for every request."""
7575

7676
extensions: list[str] = dataclasses.field(default_factory=list)
7777
"""A list of extension URIs the client supports."""
@@ -161,7 +161,7 @@ async def cancel_task(
161161
"""Requests the agent to cancel a specific task."""
162162

163163
@abstractmethod
164-
async def set_task_callback(
164+
async def create_task_push_notification_config(
165165
self,
166166
request: CreateTaskPushNotificationConfigRequest,
167167
*,
@@ -171,7 +171,7 @@ async def set_task_callback(
171171
"""Sets or updates the push notification configuration for a specific task."""
172172

173173
@abstractmethod
174-
async def get_task_callback(
174+
async def get_task_push_notification_config(
175175
self,
176176
request: GetTaskPushNotificationConfigRequest,
177177
*,
@@ -181,7 +181,7 @@ async def get_task_callback(
181181
"""Retrieves the push notification configuration for a specific task."""
182182

183183
@abstractmethod
184-
async def list_task_callback(
184+
async def list_task_push_notification_configs(
185185
self,
186186
request: ListTaskPushNotificationConfigsRequest,
187187
*,
@@ -191,7 +191,7 @@ async def list_task_callback(
191191
"""Lists push notification configurations for a specific task."""
192192

193193
@abstractmethod
194-
async def delete_task_callback(
194+
async def delete_task_push_notification_config(
195195
self,
196196
request: DeleteTaskPushNotificationConfigRequest,
197197
*,

src/a2a/client/transports/base.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ async def cancel_task(
9494
"""Requests the agent to cancel a specific task."""
9595

9696
@abstractmethod
97-
async def set_task_callback(
97+
async def create_task_push_notification_config(
9898
self,
9999
request: CreateTaskPushNotificationConfigRequest,
100100
*,
@@ -104,7 +104,7 @@ async def set_task_callback(
104104
"""Sets or updates the push notification configuration for a specific task."""
105105

106106
@abstractmethod
107-
async def get_task_callback(
107+
async def get_task_push_notification_config(
108108
self,
109109
request: GetTaskPushNotificationConfigRequest,
110110
*,
@@ -114,7 +114,7 @@ async def get_task_callback(
114114
"""Retrieves the push notification configuration for a specific task."""
115115

116116
@abstractmethod
117-
async def list_task_callback(
117+
async def list_task_push_notification_configs(
118118
self,
119119
request: ListTaskPushNotificationConfigsRequest,
120120
*,
@@ -124,7 +124,7 @@ async def list_task_callback(
124124
"""Lists push notification configurations for a specific task."""
125125

126126
@abstractmethod
127-
async def delete_task_callback(
127+
async def delete_task_push_notification_config(
128128
self,
129129
request: DeleteTaskPushNotificationConfigRequest,
130130
*,

src/a2a/client/transports/grpc.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ async def cancel_task(
175175
metadata=self._get_grpc_metadata(extensions),
176176
)
177177

178-
async def set_task_callback(
178+
async def create_task_push_notification_config(
179179
self,
180180
request: CreateTaskPushNotificationConfigRequest,
181181
*,
@@ -188,7 +188,7 @@ async def set_task_callback(
188188
metadata=self._get_grpc_metadata(extensions),
189189
)
190190

191-
async def get_task_callback(
191+
async def get_task_push_notification_config(
192192
self,
193193
request: GetTaskPushNotificationConfigRequest,
194194
*,
@@ -201,7 +201,7 @@ async def get_task_callback(
201201
metadata=self._get_grpc_metadata(extensions),
202202
)
203203

204-
async def list_task_callback(
204+
async def list_task_push_notification_configs(
205205
self,
206206
request: ListTaskPushNotificationConfigsRequest,
207207
*,
@@ -214,7 +214,7 @@ async def list_task_callback(
214214
metadata=self._get_grpc_metadata(extensions),
215215
)
216216

217-
async def delete_task_callback(
217+
async def delete_task_push_notification_config(
218218
self,
219219
request: DeleteTaskPushNotificationConfigRequest,
220220
*,

src/a2a/client/transports/jsonrpc.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ async def cancel_task(
303303
response: Task = json_format.ParseDict(json_rpc_response.result, Task())
304304
return response
305305

306-
async def set_task_callback(
306+
async def create_task_push_notification_config(
307307
self,
308308
request: CreateTaskPushNotificationConfigRequest,
309309
*,
@@ -335,7 +335,7 @@ async def set_task_callback(
335335
)
336336
return response
337337

338-
async def get_task_callback(
338+
async def get_task_push_notification_config(
339339
self,
340340
request: GetTaskPushNotificationConfigRequest,
341341
*,
@@ -367,7 +367,7 @@ async def get_task_callback(
367367
)
368368
return response
369369

370-
async def list_task_callback(
370+
async def list_task_push_notification_configs(
371371
self,
372372
request: ListTaskPushNotificationConfigsRequest,
373373
*,
@@ -402,7 +402,7 @@ async def list_task_callback(
402402
)
403403
return response
404404

405-
async def delete_task_callback(
405+
async def delete_task_push_notification_config(
406406
self,
407407
request: DeleteTaskPushNotificationConfigRequest,
408408
*,

src/a2a/client/transports/rest.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ async def cancel_task(
298298
response: Task = ParseDict(response_data, Task())
299299
return response
300300

301-
async def set_task_callback(
301+
async def create_task_push_notification_config(
302302
self,
303303
request: CreateTaskPushNotificationConfigRequest,
304304
*,
@@ -324,7 +324,7 @@ async def set_task_callback(
324324
)
325325
return response
326326

327-
async def get_task_callback(
327+
async def get_task_push_notification_config(
328328
self,
329329
request: GetTaskPushNotificationConfigRequest,
330330
*,
@@ -356,7 +356,7 @@ async def get_task_callback(
356356
)
357357
return response
358358

359-
async def list_task_callback(
359+
async def list_task_push_notification_configs(
360360
self,
361361
request: ListTaskPushNotificationConfigsRequest,
362362
*,
@@ -386,7 +386,7 @@ async def list_task_callback(
386386
)
387387
return response
388388

389-
async def delete_task_callback(
389+
async def delete_task_push_notification_config(
390390
self,
391391
request: DeleteTaskPushNotificationConfigRequest,
392392
*,

tests/client/transports/test_grpc_client.py

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,7 @@ async def test_cancel_task(
418418

419419

420420
@pytest.mark.asyncio
421-
async def test_set_task_callback_with_valid_task(
421+
async def test_create_task_push_notification_config_with_valid_task(
422422
grpc_transport: GrpcTransport,
423423
mock_grpc_stub: AsyncMock,
424424
sample_task_push_notification_config: TaskPushNotificationConfig,
@@ -433,7 +433,9 @@ async def test_set_task_callback_with_valid_task(
433433
task_id='task-1',
434434
config=sample_task_push_notification_config.push_notification_config,
435435
)
436-
response = await grpc_transport.set_task_callback(request)
436+
response = await grpc_transport.create_task_push_notification_config(
437+
request
438+
)
437439

438440
mock_grpc_stub.CreateTaskPushNotificationConfig.assert_awaited_once_with(
439441
request,
@@ -448,7 +450,7 @@ async def test_set_task_callback_with_valid_task(
448450

449451

450452
@pytest.mark.asyncio
451-
async def test_set_task_callback_with_invalid_task(
453+
async def test_create_task_push_notification_config_with_invalid_task(
452454
grpc_transport: GrpcTransport,
453455
mock_grpc_stub: AsyncMock,
454456
sample_push_notification_config: PushNotificationConfig,
@@ -469,12 +471,14 @@ async def test_set_task_callback_with_invalid_task(
469471

470472
# Note: The transport doesn't validate the response name format
471473
# It just returns the response from the stub
472-
response = await grpc_transport.set_task_callback(request)
474+
response = await grpc_transport.create_task_push_notification_config(
475+
request
476+
)
473477
assert response.task_id == 'invalid-path-to-task-1'
474478

475479

476480
@pytest.mark.asyncio
477-
async def test_get_task_callback_with_valid_task(
481+
async def test_get_task_push_notification_config_with_valid_task(
478482
grpc_transport: GrpcTransport,
479483
mock_grpc_stub: AsyncMock,
480484
sample_task_push_notification_config: TaskPushNotificationConfig,
@@ -485,7 +489,7 @@ async def test_get_task_callback_with_valid_task(
485489
)
486490
config_id = sample_task_push_notification_config.push_notification_config.id
487491

488-
response = await grpc_transport.get_task_callback(
492+
response = await grpc_transport.get_task_push_notification_config(
489493
GetTaskPushNotificationConfigRequest(
490494
task_id='task-1',
491495
id=config_id,
@@ -508,7 +512,7 @@ async def test_get_task_callback_with_valid_task(
508512

509513

510514
@pytest.mark.asyncio
511-
async def test_get_task_callback_with_invalid_task(
515+
async def test_get_task_push_notification_config_with_invalid_task(
512516
grpc_transport: GrpcTransport,
513517
mock_grpc_stub: AsyncMock,
514518
sample_push_notification_config: PushNotificationConfig,
@@ -521,7 +525,7 @@ async def test_get_task_callback_with_invalid_task(
521525
)
522526
)
523527

524-
response = await grpc_transport.get_task_callback(
528+
response = await grpc_transport.get_task_push_notification_config(
525529
GetTaskPushNotificationConfigRequest(
526530
task_id='task-1',
527531
id='config-1',
@@ -532,7 +536,7 @@ async def test_get_task_callback_with_invalid_task(
532536

533537

534538
@pytest.mark.asyncio
535-
async def test_list_task_callback(
539+
async def test_list_task_push_notification_configs(
536540
grpc_transport: GrpcTransport,
537541
mock_grpc_stub: AsyncMock,
538542
sample_task_push_notification_config: TaskPushNotificationConfig,
@@ -544,7 +548,7 @@ async def test_list_task_callback(
544548
)
545549
)
546550

547-
response = await grpc_transport.list_task_callback(
551+
response = await grpc_transport.list_task_push_notification_configs(
548552
ListTaskPushNotificationConfigsRequest(task_id='task-1')
549553
)
550554

@@ -562,15 +566,15 @@ async def test_list_task_callback(
562566

563567

564568
@pytest.mark.asyncio
565-
async def test_delete_task_callback(
569+
async def test_delete_task_push_notification_config(
566570
grpc_transport: GrpcTransport,
567571
mock_grpc_stub: AsyncMock,
568572
sample_task_push_notification_config: TaskPushNotificationConfig,
569573
) -> None:
570574
"""Test deleting task push notification config."""
571575
mock_grpc_stub.DeleteTaskPushNotificationConfig.return_value = None
572576

573-
await grpc_transport.delete_task_callback(
577+
await grpc_transport.delete_task_push_notification_config(
574578
DeleteTaskPushNotificationConfigRequest(
575579
task_id='task-1',
576580
id='config-1',

0 commit comments

Comments
 (0)