@@ -103,16 +103,10 @@ async def _handle_non_streaming(
103103 self ,
104104 request : Request ,
105105 handler_func : Callable [[ServerCallContext ], Awaitable [TResponse ]],
106- serializer : Callable [[TResponse ], Any ] = MessageToDict ,
107- ) -> JSONResponse :
108- """Centralized error handling and context management for unary calls.
109-
110- Builds the call context, invokes the handler, and wraps the serialized
111- result in a `JSONResponse`.
112- """
106+ ) -> TResponse :
107+ """Centralized error handling and context management for unary calls."""
113108 context = self ._build_call_context (request )
114- response = await handler_func (context )
115- return JSONResponse (content = serializer (response ))
109+ return await handler_func (context )
116110
117111 async def _handle_streaming (
118112 self ,
@@ -177,7 +171,8 @@ async def _handler(
177171 return a2a_pb2 .SendMessageResponse (task = task_or_message )
178172 return a2a_pb2 .SendMessageResponse (message = task_or_message )
179173
180- return await self ._handle_non_streaming (request , _handler )
174+ response = await self ._handle_non_streaming (request , _handler )
175+ return JSONResponse (content = MessageToDict (response ))
181176
182177 @rest_stream_error_handler
183178 async def on_message_send_stream (
@@ -214,7 +209,8 @@ async def _handler(context: ServerCallContext) -> a2a_pb2.Task:
214209 return task
215210 raise TaskNotFoundError
216211
217- return await self ._handle_non_streaming (request , _handler )
212+ response = await self ._handle_non_streaming (request , _handler )
213+ return JSONResponse (content = MessageToDict (response ))
218214
219215 @rest_stream_error_handler
220216 async def on_subscribe_to_task (
@@ -249,7 +245,8 @@ async def _handler(context: ServerCallContext) -> a2a_pb2.Task:
249245 return task
250246 raise TaskNotFoundError
251247
252- return await self ._handle_non_streaming (request , _handler )
248+ response = await self ._handle_non_streaming (request , _handler )
249+ return JSONResponse (content = MessageToDict (response ))
253250
254251 @rest_error_handler
255252 async def get_push_notification (self , request : Request ) -> Response :
@@ -270,7 +267,8 @@ async def _handler(
270267 )
271268 )
272269
273- return await self ._handle_non_streaming (request , _handler )
270+ response = await self ._handle_non_streaming (request , _handler )
271+ return JSONResponse (content = MessageToDict (response ))
274272
275273 @rest_error_handler
276274 async def delete_push_notification (self , request : Request ) -> Response :
@@ -287,9 +285,8 @@ async def _handler(context: ServerCallContext) -> None:
287285 params , context
288286 )
289287
290- return await self ._handle_non_streaming (
291- request , _handler , serializer = lambda _ : {}
292- )
288+ await self ._handle_non_streaming (request , _handler )
289+ return JSONResponse (content = {})
293290
294291 @rest_error_handler
295292 async def set_push_notification (self , request : Request ) -> Response :
@@ -307,7 +304,8 @@ async def _handler(
307304 params , context
308305 )
309306
310- return await self ._handle_non_streaming (request , _handler )
307+ response = await self ._handle_non_streaming (request , _handler )
308+ return JSONResponse (content = MessageToDict (response ))
311309
312310 @rest_error_handler
313311 async def list_push_notifications (self , request : Request ) -> Response :
@@ -324,7 +322,8 @@ async def _handler(
324322 params , context
325323 )
326324
327- return await self ._handle_non_streaming (request , _handler )
325+ response = await self ._handle_non_streaming (request , _handler )
326+ return JSONResponse (content = MessageToDict (response ))
328327
329328 @rest_error_handler
330329 async def list_tasks (self , request : Request ) -> Response :
@@ -338,12 +337,11 @@ async def _handler(
338337 proto_utils .parse_params (request .query_params , params )
339338 return await self .request_handler .on_list_tasks (params , context )
340339
341- return await self ._handle_non_streaming (
342- request ,
343- _handler ,
344- serializer = lambda r : MessageToDict (
345- r , always_print_fields_with_no_presence = True
346- ),
340+ response = await self ._handle_non_streaming (request , _handler )
341+ return JSONResponse (
342+ content = MessageToDict (
343+ response , always_print_fields_with_no_presence = True
344+ )
347345 )
348346
349347 @rest_error_handler
@@ -361,4 +359,5 @@ async def _handler(
361359 params , context
362360 )
363361
364- return await self ._handle_non_streaming (request , _handler )
362+ response = await self ._handle_non_streaming (request , _handler )
363+ return JSONResponse (content = MessageToDict (response ))
0 commit comments