Skip to content

ci(python): update litellm requirement from <=1.95.0,>=1.75.9 to >=1.75.9,<=1.96.0 in /strands-py - #3775

Merged
Unshure merged 1 commit into
mainfrom
dependabot/pip/strands-py/litellm-gte-1.75.9-and-lte-1.96.0
Aug 12, 2026
Merged

Unshure merged 1 commit into
mainfrom
dependabot/pip/strands-py/litellm-gte-1.75.9-and-lte-1.96.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 12, 2026

Copy link
Copy Markdown
Contributor

Updates the requirements on litellm to permit the latest version.

Release notes

Sourced from litellm's releases.

v1.96.0

Verify Docker Image Signature

All LiteLLM Docker images are signed with cosign. Every release is signed with the same key introduced in commit 0112e53.

Verify using the pinned commit hash (recommended):

A commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \
  ghcr.io/berriai/litellm:v1.96.0

Verify using the release tag (convenience):

Tags are protected in this repository and resolve to the same key. This option is easier to read but relies on tag protection rules:

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/v1.96.0/cosign.pub \
  ghcr.io/berriai/litellm:v1.96.0

Expected output:

The following checks were performed on each of these signatures:
  - The cosign claims were validated
  - The signatures were verified against the specified public key

What's Changed

... (truncated)

Commits
  • 8843766 Merge pull request #36320 from BerriAI/litellm_/litellm-1-96-0-release-ui-48fbeb
  • d6f5338 chore: update Next.js build artifacts (2026-08-08 23:40 UTC, node v20.20.2)
  • 2c2e9fd Merge pull request #36294 from BerriAI/litellm_backport_rc_1_96_0_bp-rc196-0808
  • 4788d34 chore(deps): carry the pypdf scanner exceptions from staging
  • c5026e1 chore(deps): bump js-yaml, brace-expansion, postcss and nanoid in the dashboard
  • 502b03b chore(deps): bump cryptography to 50.0.0
  • 7cdb02a chore(deps): bump h2 to 4.4.1
  • 737881e chore(deps): bump gitpython to 3.1.58
  • f4cef64 Merge pull request #35844 from BerriAI/litellm_/terraform-provider-dep-bump-5...
  • ca18a2a Merge pull request #35835 from BerriAI/litellm_/elated-margulis-7f300f
  • 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 [litellm](https://github.com/BerriAI/litellm) to permit the latest version.
- [Release notes](https://github.com/BerriAI/litellm/releases)
- [Commits](BerriAI/litellm@litellm_1.81.13-dev...v1.96.0)

---
updated-dependencies:
- dependency-name: litellm
  dependency-version: 1.96.0
  dependency-type: direct:development
...

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 Aug 12, 2026
@dependabot
dependabot Bot requested a review from a team as a code owner August 12, 2026 07:54
@dependabot
dependabot Bot requested a review from liramon2 August 12, 2026 07:54
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file python Pull requests that update python code labels Aug 12, 2026
@github-actions github-actions Bot added chore Maintenance tasks, dependency updates, CI changes, refactoring with no user-facing impact area-community Related to community and contributor health size/xs labels Aug 12, 2026
@Unshure

Unshure commented Aug 12, 2026

Copy link
Copy Markdown
Member

@strandly-the-agent any concerns with this change?

@strandly-the-agent

Copy link
Copy Markdown
Contributor

No concerns — this one looks safe. Verified at head 2149725f: litellm 1.96.0 does not regress the Python-3.14 constraint this cap exists for, and the install closure grows by exactly one package.

  • 3.14 intact — 1.96.0 keeps Requires-Python >=3.10,<3.15 and ships cp314 wheels. CI agrees: py3.14 green on linux, windows and macOS.
  • Resolution delta is +1 packagepydantic-settings 2.15.0. Nothing removed, no other version shifts, openai resolves 2.54.0 (inside this extra's <3.0.0).
  • tests/strands/models/test_litellm.py → 52 passed against a real 1.96.0 install, plus 18/18 API-surface checks against genuine litellm.types.utils objects (the suite's MagicMock can't catch shape drift).
  • ✅ No advisories, no yanked files in range.

Bonus: 1.96.0 is the first release in this chain to publish macOS and musllinux wheels, so the "macOS installs build from sdist" caveat I flagged on #3603/#3649 is now retired.

The one thing I'd fix while you're on this line — the comment immediately above it is now actively wrong, and this PR moves the ceiling further from what it claims:

# litellm's exact upper bound is intentional: we ship what we test. Bump it
# deliberately (see #1961 for why the ceiling is `<=` rather than `<2.0.0`).
litellm = ["litellm>=1.75.9,<=1.96.0", "openai>=1.68.0,<3.0.0"]

It currently says the cap keeps litellm "lower than 1.92.0" until Python 3.14 is supported — but the pin is <=1.96.0 and 3.14 support landed in 1.93.0, so its own stated exit condition was met four bumps ago. Docs-only, no runtime path, and dependabot will never fix it. (Raised on #3603; noting it once more because this PR edits the adjacent line, then I'll leave it be.)

Detail — what changed in 1.96.0, and what I ran

The two dependency deltas are real, and both are deliberate upstream:

1.95.0 1.96.0 Verdict
aiohttp >=3.10,<4.0 >=3.14.2,<4.0 benign — BerriAI/litellm#35337 ("clear pooled-connection timeouts"). aiohttp 3.14.2 declares >=3.10 with cp310–cp314 wheels; nothing in this repo pins aiohttp (only tests_integ/mcp/test_mcp_client.py:471 imports it). Resolves 3.14.3.
pydantic-settings extras only base dep >=2.14.1,<3.0 benign — BerriAI/litellm#35518. This is the entire +1. Declares >=3.10; its deps (pydantic, python-dotenv, typing-inspection) were already in the closure.

Every other core requirement is byte-identical 1.95.0 → 1.96.0 (fastuuid, httpx, openai, jinja2, jsonschema, tiktoken, tokenizers, click, importlib-metadata, pydantic, python-dotenv).

Breaking changes in 1.96.0 — three, all marked !, all proxy/MCP-scoped and invisible to litellm.acompletion library callers: revert(proxy)!: stop enforcing user budget on team keys (#35271), feat(mcp)!: extend keyless gateway OAuth flow (#34856), feat(proxy)!: gate mock testing request params behind a config flag (#35423). Nothing in the release touches exception types, supports_response_schema, or response_format handling. (Changelog read, not executed — everything else below was run.)

One to be aware of but not act on: fix(anthropic): split mixed stream chunks by payload kind (#35289) does touch streaming, but it's inside the Anthropic adapter; this SDK parses generic OpenAI-shaped chunks, and my real-object streaming drive came out unchanged.

Commands run (sandbox, PR head 2149725f, CPython 3.13):

pip install --dry-run 'litellm>=1.75.9,<=1.96.0' 'openai>=1.68.0,<3.0.0'
  -> litellm 1.96.0 | openai 2.54.0 | aiohttp 3.14.3 | 49 pkgs
  vs <=1.95.0 baseline (48 pkgs): NEW=[pydantic-settings 2.15.0] REMOVED=[none]

pip install -e 'strands-py[litellm]'   -> litellm 1.96.0, pydantic-settings 2.15.0
pytest tests/strands/models/test_litellm.py -q
  -> 52 passed, 1 warning in 2.86s

18/18 surface checks vs real litellm 1.96.0 objects: FAILURES: none
  acompletion(+model/messages/stream/tools/response_format), ContextWindowExceededError,
  supports_response_schema, ModelResponse{,Stream}, Delta, Usage, StreamingChoices,
  Choices, Message, Function, ChatCompletionDeltaToolCall
  invariant behind the regression test at test_litellm.py:722-737 still holds:
  'usage' not in ModelResponseStream.model_fields == True
format_request keys: ['messages','model','stream','stream_options','tools']

Not verified by me: live-provider behavior (tests_integ/models/test_model_litellm.py needs credentials), and Windows/macOS installs — inferred from CI's green legs, not executed locally. A deeper cross-version pass I'd queued didn't complete (I cancelled it after it hung); the checks above are all first-hand and I don't think it would have changed the verdict.

Merge-gate note: 2 Approvers for Bots is green only because dependabot[bot] is in EXEMPT_AUTHORS (.github/workflows/bot-pr-review-gate.yml) — the gate skipped rather than verified approvals, and Trigger Strands Review is still WAITING. Human approval still needed.

Solid work for a human to approve, not an approval itself.

@Unshure
Unshure merged commit 928bc00 into main Aug 12, 2026
38 of 39 checks passed
@Unshure
Unshure deleted the dependabot/pip/strands-py/litellm-gte-1.75.9-and-lte-1.96.0 branch August 12, 2026 17:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-community Related to community and contributor health chore Maintenance tasks, dependency updates, CI changes, refactoring with no user-facing impact dependencies Pull requests that update a dependency file python Pull requests that update python code size/xs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants