Skip to content

chore(deps): Update a2a-sdk requirement from <0.3.0,>=0.2.5 to >=0.2.5,<0.4.0 in /a2a/a2a_currency_converter#168

Merged
pdettori merged 7 commits intomainfrom
dependabot/pip/a2a/a2a_currency_converter/a2a-sdk-gte-0.2.5-and-lt-0.4.0
Mar 12, 2026
Merged

chore(deps): Update a2a-sdk requirement from <0.3.0,>=0.2.5 to >=0.2.5,<0.4.0 in /a2a/a2a_currency_converter#168
pdettori merged 7 commits intomainfrom
dependabot/pip/a2a/a2a_currency_converter/a2a-sdk-gte-0.2.5-and-lt-0.4.0

Conversation

@dependabot
Copy link
Contributor

@dependabot dependabot bot commented on behalf of github Mar 12, 2026

Updates the requirements on a2a-sdk to permit the latest version.

Release notes

Sourced from a2a-sdk's releases.

v0.3.25

0.3.25 (2026-03-10)

Features

Bug Fixes

  • return background task from consume_and_break_on_interrupt to prevent GC (#775) (a236d4d)
  • use default_factory for mutable field defaults in ServerCallContext (#744) (22b25d6)
Changelog

Sourced from a2a-sdk's changelog.

0.3.25 (2026-03-10)

Features

Bug Fixes

  • return background task from consume_and_break_on_interrupt to prevent GC (#775) (a236d4d)
  • use default_factory for mutable field defaults in ServerCallContext (#744) (22b25d6)

0.3.24 (2026-02-20)

Bug Fixes

  • core: preserve legitimate falsy values in _clean_empty (#713) (7632f55)
  • deps: DeprecationWarning on HTTP_413_REQUEST_ENTITY_TOO_LARGE (#693) (9968f9c)

0.3.23 (2026-02-13)

Features

  • add async context manager support to BaseClient (#688) (ae9dc88)
  • add async context manager support to ClientTransport (#682) (2e45c0d)
  • support async card modifiers (#654) (a802500)
  • support disabling OTel instrumentation via env var (#611) (72216b9)

Bug Fixes

  • do not crash on SSE comment line (#636) (3dcb847)
  • gRPC metadata header casing and invocation_metadata() call (#676) (390b763)
  • Improve error handling for Timeout exceptions on REST and JSON-RPC clients (#690) (2acd838)
  • map rejected task state in proto converters (#668) (957e92b), closes #625
  • server: fix deadlocks on agent execution failure in non-streaming (#614) (d3c973f)

Documentation

  • explicitly mention supported spec version and transports in readme (#681) (c91d4fb), closes #677
  • Update README to include Code Wiki badge (2698cc0)

0.3.22 (2025-12-16)

Features

... (truncated)

Commits
  • 697ab8e chore(main): release 0.3.25 (#730)
  • 22b25d6 fix: use default_factory for mutable field defaults in ServerCallContext (#744)
  • a236d4d fix: return background task from consume_and_break_on_interrupt to prevent GC...
  • fa14dbf feat: Implement a vertex based task store (#752)
  • 8b647bd chore(deps): bump the all group with 13 updates (#747)
  • 2325ad2 chore(deps): bump the github-actions group with 3 updates (#746)
  • cced34d test: sync mypy command in GEMINI.md with CI (#733)
  • 3ad2503 docs: GEMINI.md updates (#729)
  • d2d3860 chore(main): release 0.3.24 (#708)
  • 7632f55 fix(core): preserve legitimate falsy values in _clean_empty (#713)
  • Additional commits viewable in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Updates the requirements on [a2a-sdk](https://github.com/a2aproject/a2a-python) to permit the latest version.
- [Release notes](https://github.com/a2aproject/a2a-python/releases)
- [Changelog](https://github.com/a2aproject/a2a-python/blob/main/CHANGELOG.md)
- [Commits](a2aproject/a2a-python@v0.2.5...v0.3.25)

---
updated-dependencies:
- dependency-name: a2a-sdk
  dependency-version: 0.3.25
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot bot added dependencies Pull requests that update a dependency file python Pull requests that update python code labels Mar 12, 2026
Copy link
Contributor

@pdettori pdettori left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review: a2a-sdk <0.3.0 → <0.4.0

Widening the constraint is safe in intent but premature — the agent code uses the camelCase API removed in 0.3.0, and includes a manual route workaround that conflicts with 0.3.x built-in behavior. The uv.lock still pins 0.2.5 so uv sync won't break today, but any lock refresh pulls 0.3.25 and breaks the agent.

Issue 1 — camelCase field access removed in 0.3.0

a2a-sdk 0.3.0 removed __getattr__/__setattr__ camelCase aliases from types.py (#335). The agent code still uses camelCase:

Location camelCase Required
__main__.py AgentCapabilities(pushNotifications=True) push_notifications=True
__main__.py AgentCard(defaultInputModes=..., defaultOutputModes=...) default_input_modes, default_output_modes
agent_executor.py task.contextId (×4) task.context_id

Migration script: https://github.com/a2aproject/a2a-samples/blob/main/samples/python/refactor_camel_to_snake.sh

Issue 2 — Duplicate route conflict in 0.3.x

__main__.py manually inserts /.well-known/agent-card.json as a workaround for 0.2.x. In 0.3.0+ this path is served natively by the SDK (#352). The manual app.routes.insert(...) block must be removed before widening the constraint.

requires-python = ">=3.12"
dependencies = [
"a2a-sdk>=0.2.5,<0.3.0",
"a2a-sdk>=0.2.5,<0.4.0",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a2a-sdk 0.3.0 removed camelCase field access from types.py. The agent uses pushNotifications, defaultInputModes, defaultOutputModes (constructors) and task.contextId (attribute access) — all break with 0.3.x. Migrate with the refactor script before widening this constraint.

Migrate camelCase fields to snake_case and remove manual agent-card
route workaround (now built into SDK >= 0.3.0):
- AgentCapabilities: pushNotifications -> push_notifications
- AgentCard: defaultInputModes/defaultOutputModes -> snake_case
- Remove manual /.well-known/agent-card.json route insertion
- task.contextId -> task.context_id in agent_executor.py

Signed-off-by: Paolo Dettori <dettori@us.ibm.com>
Update all task.contextId attribute accesses to task.context_id
to comply with a2a-sdk 0.3.x API (camelCase access removed).

Signed-off-by: Paolo Dettori <dettori@us.ibm.com>
InMemoryPushNotifier was removed in a2a-sdk 0.3.0. Replace with
InMemoryPushNotificationConfigStore + BasePushNotificationSender.

Signed-off-by: Paolo Dettori <dettori@us.ibm.com>
Update all task.contextId attribute accesses to task.context_id
to comply with a2a-sdk 0.3.x API (camelCase access removed).

Signed-off-by: Paolo Dettori <dettori@us.ibm.com>
In a2a-sdk 0.3.x, starlette and sse-starlette became optional dependencies
under the [http-server] extra. Update the dependency specifier accordingly.

Signed-off-by: Paolo Dettori <dettori@us.ibm.com>
@pdettori
Copy link
Contributor

Verification: Fix confirmed ✅

Migrated the currency converter to a2a-sdk 0.3.x and verified locally with a2a-sdk==0.3.25.

Breaking changes found and fixed across 4 commits:

# Change Fix
1 camelCase field access removed (pushNotifications, defaultInputModes, defaultOutputModes) Renamed to push_notifications, default_input_modes, default_output_modes
2 task.contextId attribute removed (×7 occurrences in agent_executor.py) Updated to task.context_id
3 InMemoryPushNotifier removed from a2a.server.tasks Replaced with InMemoryPushNotificationConfigStore + BasePushNotificationSender
4 starlette / sse-starlette became optional in a2a-sdk[http-server] Updated pyproject.toml to a2a-sdk[http-server]>=0.2.5,<0.4.0
5 Manual /.well-known/agent-card.json route (0.2.x workaround) conflicts with built-in 0.3.x path Removed the manual app.routes.insert(...) block

Result:

uv sync --upgrade  →  a2a-sdk 0.2.5 → 0.3.25, EXIT:0
GET /.well-known/agent-card.json  →  HTTP 200, agent name: Currency Agent
STARTUP: OK

Signed-off-by: Paolo Dettori <dettori@us.ibm.com>
Copy link
Contributor

@pdettori pdettori left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/lgtm

@pdettori pdettori merged commit 0870a9d into main Mar 12, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file python Pull requests that update python code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant