-
Notifications
You must be signed in to change notification settings - Fork 450
Comparing changes
Open a pull request
base repository: a2aproject/a2a-python
base: v0.3.1
head repository: a2aproject/a2a-python
compare: v0.3.2
- 10 commits
- 13 files changed
- 9 contributors
Commits on Aug 13, 2025
-
Configuration menu - View commit details
-
Copy full SHA for 1dbe33d - Browse repository at this point
Copy the full SHA 1dbe33dView commit details
Commits on Aug 15, 2025
-
fix: Add missing mime_type and name in proto conversion utils (#408)
# Description Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly: - [x] Follow the [`CONTRIBUTING` Guide](https://github.com/a2aproject/a2a-python/blob/main/CONTRIBUTING.md). - [x] Make your Pull Request title in the <https://www.conventionalcommits.org/> specification. - Important Prefixes for [release-please](https://github.com/googleapis/release-please): - `fix:` which represents bug fixes, and correlates to a [SemVer](https://semver.org/) patch. - `feat:` represents a new feature, and correlates to a SemVer minor. - `feat!:`, or `fix!:`, `refactor!:`, etc., which represent a breaking change (indicated by the `!`) and will result in a SemVer major. - [x] Ensure the tests and linter pass (Run `bash scripts/format.sh` from the repository root to format) - [ ] Appropriate docs were updated (if necessary) Fixes the issue when using protoutils, mime type and file name are lost
Configuration menu - View commit details
-
Copy full SHA for 72b2ee7 - Browse repository at this point
Copy the full SHA 72b2ee7View commit details
Commits on Aug 20, 2025
-
Configuration menu - View commit details
-
Copy full SHA for da14cea - Browse repository at this point
Copy the full SHA da14ceaView commit details -
fix: make
event_consumertolerant to closed queues on py3.13 (#407)# Issue On Python 3.13, the closed-queue signal is `asyncio.QueueShutDown`. `event_consumer.py` aliased `asyncio.QueueShutDown` to `ClosedQueue`, but `asyncio.QueueEmpty` can still arise on py3.13 and it's not handled properly in `consume_all()`'s except blocks. # How it's reproduced In any `AgentExecutor` class: ``` # (...) async def execute( self, request: RequestContext, event_queue: EventQueue, ) -> None: await event_queue.enqueue_event( new_task(request.message) ) ``` In python < 3.13: - Sending a `message/send` request works, a task is added to the `InMemoryTaskStore`. In python >= 3.13: - Sending a `message/send` request crashes with exception: ``` File "venv/lib/python3.13/site-packages/a2a/server/apps/jsonrpc/jsonrpc_app.py", line 219, in _handle_requests return await self._process_non_streaming_request( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ request_id, a2a_request, call_context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "venv/lib/python3.13/site-packages/a2a/server/apps/jsonrpc/jsonrpc_app.py", line 306, in _process_non_streaming_request handler_result = await self.handler.on_message_send( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ request_obj, context ^^^^^^^^^^^^^^^^^^^^ ) ^ File "venv/lib/python3.13/site-packages/a2a/utils/telemetry.py", line 162, in async_wrapper result = await func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "venv/lib/python3.13/site-packages/a2a/server/request_handlers/jsonrpc_handler.py", line 87, in on_message_send task_or_message = await self.request_handler.on_message_send( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ request.params, context ^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "venv/lib/python3.13/site-packages/a2a/utils/telemetry.py", line 162, in async_wrapper result = await func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "venv/lib/python3.13/site-packages/a2a/server/request_handlers/default_request_handler.py", line 282, in on_message_send ) = await result_aggregator.consume_and_break_on_interrupt(consumer) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "venv/lib/python3.13/site-packages/a2a/server/tasks/result_aggregator.py", line 115, in consume_and_break_on_interrupt async for event in event_stream: ...<20 lines>... break File "venv/lib/python3.13/site-packages/a2a/server/events/event_consumer.py", line 87, in consume_all raise self._exception File "venv/lib/python3.13/site-packages/a2a/server/events/event_consumer.py", line 94, in consume_all event = await asyncio.wait_for( ^^^^^^^^^^^^^^^^^^^^^^^ self.queue.dequeue_event(), timeout=self._timeout ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/opt/homebrew/Cellar/python@3.13/3.13.5/Frameworks/Python.framework/Versions/3.13/lib/python3.13/asyncio/tasks.py", line 507, in wait_for return await fut ^^^^^^^^^ File "venv/lib/python3.13/site-packages/a2a/utils/telemetry.py", line 162, in async_wrapper result = await func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "venv/lib/python3.13/site-packages/a2a/server/events/event_queue.py", line 95, in dequeue_event raise asyncio.QueueEmpty('Queue is closed.') asyncio.queues.QueueEmpty: Queue is closed. ``` # Fix ## Code - `event_consumer.consume_all`: - Catch `(QueueClosed, asyncio.QueueEmpty)` and break only when `queue.is_closed()` is True; otherwise continue polling. - `event_queue.dequeue_event`: - Version-guard the early-raise: on <3.13 keep raising `QueueEmpty` when closed+empty; on ≥3.13 skip the early raise and rely on `queue.shutdown()` to surface `QueueShutDown` exceptions. ## Tests Added 2 tests which fail on current implementation, but pass after the fix. --------- Co-authored-by: taralesc <taralesc@adobe.com>Configuration menu - View commit details
-
Copy full SHA for a371461 - Browse repository at this point
Copy the full SHA a371461View commit details -
fix: non-blocking
send_messageserver handler not invoke push notif……ication (#394) - Problem: When client use `send_message` with `MessageSendConfiguration.blocking=False`, the `result_aggregator` will enter the logic of `_continue_consuming`. But it's not push notification to client. The client can't get notification for long-running task(non-blocking invoke) at this situation. - Solution: Simply add push notification logic to result_aggregator is okay. Fixes #239 🦕 Co-authored-by: Holt Skinner <13262395+holtskinner@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for db82a65 - Browse repository at this point
Copy the full SHA db82a65View commit details -
fix: Client hangs when implementing
AgentExecutorandawaiting tw…Configuration menu - View commit details
-
Copy full SHA for c147a83 - Browse repository at this point
Copy the full SHA c147a83View commit details -
fix(grpc): Update
CreateTaskPushNotificationConfigendpoint to `/v1……/{parent=tasks/*/pushNotificationConfigs}` (#415) Commit: a2aproject/A2A@911f9b0Configuration menu - View commit details
-
Copy full SHA for 73dddc3 - Browse repository at this point
Copy the full SHA 73dddc3View commit details -
Configuration menu - View commit details
-
Copy full SHA for 00703e3 - Browse repository at this point
Copy the full SHA 00703e3View commit details -
chore(gRPC): Update
a2a.prototo includemetadataon `GetTaskRequ……est` (#417) Commit: a2aproject/A2A@f0d48cd --------- Co-authored-by: Holt Skinner <holtskinner@google.com>
Configuration menu - View commit details
-
Copy full SHA for 5999cd4 - Browse repository at this point
Copy the full SHA 5999cd4View commit details -
chore(main): release 0.3.2 (#404)
🤖 I have created a release *beep* *boop* --- ## [0.3.2](v0.3.1...v0.3.2) (2025-08-20) ### Bug Fixes * Add missing mime_type and name in proto conversion utils ([#408](#408)) ([72b2ee7](72b2ee7)) * Add name field to FilePart protobuf message ([#403](#403)) ([1dbe33d](1dbe33d)) * Client hangs when implementing `AgentExecutor` and `await`ing twice in execute method ([#379](#379)) ([c147a83](c147a83)) * **grpc:** Update `CreateTaskPushNotificationConfig` endpoint to `/v1/{parent=tasks/*/pushNotificationConfigs}` ([#415](#415)) ([73dddc3](73dddc3)) * make `event_consumer` tolerant to closed queues on py3.13 ([#407](#407)) ([a371461](a371461)) * non-blocking `send_message` server handler not invoke push notification ([#394](#394)) ([db82a65](db82a65)) * **proto:** Add `icon_url` to `a2a.proto` ([#416](#416)) ([00703e3](00703e3)) * **spec:** Suggest Unique Identifier fields to be UUID ([#405](#405)) ([da14cea](da14cea)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
Configuration menu - View commit details
-
Copy full SHA for 5912b28 - Browse repository at this point
Copy the full SHA 5912b28View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v0.3.1...v0.3.2