Repository navigation
chore(deps): weekly dependency update - #998
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 44ee4361d9
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "Codex (@codex) review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "Codex (@codex) address that feedback".
|
|
||
| [tool.braintrust.matrix.anthropic] | ||
| latest = "anthropic==1.15.0" | ||
| latest = "anthropic==2.3.0" |
There was a problem hiding this comment.
Re-record Anthropic fixtures for the major SDK bump
When test_anthropic(latest) runs, nox now installs Anthropic 2.3.0, but this commit leaves the latest cassettes recorded for 1.15.0 unchanged. Because this crosses a major-version boundary, the suite can either fail to match changed requests or pass while exercising obsolete response shapes, missing regressions in the integration's streaming internals and payload handling. Re-record and review integrations/anthropic/cassettes/latest with the new pin before merging.
AGENTS.md reference: AGENTS.md:L30-L35
Useful? React with 👍 / 👎.
Re-record latest cassettes for the major and minor bumps in this update: anthropic (1.15.0 -> 2.3.0), openai, cohere, google-genai, google-adk, mistralai, pydantic-ai, langchain-core (with deepagents), strands-agents, and pipecat-ai. Pin anthropic 1.17.0, the last 1.x release, as a matrix entry so the previous major stays covered, with its own recorded cassettes. The anthropic tests now gate on the installed SDK version (>= 1.0) rather than the literal "latest" matrix key, so 1.x pins run the modern-API tests instead of the 0.x legacy path. Test updates for the bumps: - pydantic-ai 2.61 drops a zero usage.unmeasured_requests from adapter dumps; the raw-vs-dumped parity test now accounts for it. - test_pydantic_wrapped moves from the retired gpt-3.5-turbo to gpt-4o-mini, re-recorded for every wrap_openai matrix version. - The mistral agents stream test asserts that cached_tokens is propagated to prompt_cached_tokens instead of a fixed live value. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 79143992a2
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "Codex (@codex) review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "Codex (@codex) address that feedback".
vcrpy 8.5.0 includes kevin1024/vcrpy#1055, which fixes kevin1024/vcrpy#502 and kevin1024/vcrpy#927: a response streamed while recording keeps its body, a replayed response keeps a single aiohttp StreamReader as its content, so google-genai's readline() loop ends, and closing the response no longer poisons that stream. Since braintrustdata#834, conftest.py has skipped its patches for those (problems 1, 3 and 4) on such releases. Require vcrpy 8.5.0 in the test group and remove them, along with the shims only older vcrpy needed: the AsyncStreamReaderMixin placeholder, the stream_writer constructor and MockStream.iter_chunked. The gzip decoding in text() and read() stays. The weekly dependency update (braintrustdata#998) moved uv's exclude-newer cutoff past vcrpy 9.2.0's upload, so uv.lock already has vcrpy 9.2.0 on Python 3.11 and newer, and 8.5.0 on Python 3.10, which vcrpy 9 doesn't support. It only gains the new requirement, in the groups that include test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GwUvhmzgfkiZ6vo4uGyesN
## Summary Follow-up to #834. VCR.py [8.5.0](https://github.com/kevin1024/vcrpy/releases/tag/v8.5.0) is out with kevin1024/vcrpy#1055, which fixes kevin1024/vcrpy#502 (an aiohttp response streamed while recording came back empty) and kevin1024/vcrpy#927 (a replayed `response.content` restarted on each access, so google-genai's `readline()` loop never ended). Since #834, `_patch_vcr_aiohttp_stubs()` in `py/src/braintrust/conftest.py` skips its patches for those on such releases, and its docstring says to delete them once `uv.lock` has one. ## Changes - Add `vcrpy>=8.5.0` to the `test` dependency group. Since #998, `uv.lock` already has VCR.py 9.2.0 on Python 3.11 and newer, and 8.5.0 on Python 3.10, which VCR.py 9 doesn't support; it only gains the new requirement. - Remove the patches for problems 1, 3 and 4 (cached `content`, no-op `MockStream.set_exception`, `record_response` replacement), and the shims that only older VCR.py needed: the `AsyncStreamReaderMixin` placeholder, the `stream_writer` constructor and `MockStream.iter_chunked`. VCR.py 8.5.0 does all of these itself. The gzip decoding in `text()` and `read()` stays. - This no longer moves the `exclude-newer` cutoff: it's rebased onto #998, whose cutoff (`2026-10-26T06:02:31Z`) already covers 9.2.0. On the old base, the cutoff the earlier push set (`2026-10-25T22:30:00Z`) also let `test_pydantic_ai_integration(latest)` install anthropic 2.3.0 next to the old `pydantic-ai==2.57.0` pin. Anthropic 2 made `BetaMessageParam` a `Union`, so `test_agent_run_anthropic_reasoning_tokens` failed with `TypeError: Cannot instantiate typing.Union` in the previous CI run; #998 moved the pin to 2.61.0, which works with it. VCR.py 9.0 has some breaking changes ([release notes](https://github.com/kevin1024/vcrpy/releases/tag/v9.0.0)). Nothing in this repo matches on the `CannotOverwriteExistingCassetteException` message or uses `filter_post_data_parameters`, and the sessions below pass with 9.2.0. ## Testing nox sessions as CI runs them (`uv run --project ./py nox -f ./py/noxfile.py -s ...`, Python 3.12, cassette replay): | Session | main (VCR.py 9.2.0 since #998) | this PR | |---|---|---| | `test_litellm(latest)` | 43 passed | 43 passed | | `test_litellm(1.74.0)` | 30 passed, 13 skipped | 30 passed, 13 skipped | | `test_dspy(latest)` | 15 passed | 15 passed | | `test_google_genai(latest)` | 44 passed, 2 skipped | 44 passed, 2 skipped | | `test_huggingface_hub(0.32.0)` | 17 passed, 2 skipped | 17 passed, 2 skipped | | `test_google_adk(latest)` | 16 passed | 16 passed | | `test_google_adk(2.6.3)` | 13 passed, 3 skipped | 13 passed, 3 skipped | | `test_google_adk(1.14.1)` | 13 passed, 3 skipped | 13 passed, 3 skipped | All six of CI's nox shards for Python 3.12 on Linux (`py/scripts/nox-matrix.py <n> 6 --python-version 3.12 --os ubuntu-24.04 --exclude-static-checks --exclude-session test_api_codegen`) pass on this branch, as on main: 90 sessions, with the same installed packages in every session. On Python 3.10, where the lock has 8.5.0, the 3.10 shards pass too (75 sessions), and `test_litellm(1.74.0)`, `test_google_genai(latest)` and `test_huggingface_hub(0.32.0)` have the same counts as above. `test_pydantic_ai_integration(latest)` passes on Python 3.11 to 3.15 (61 passed). These replays don't reach the bugs the patches were for: without the patches, `test_litellm` (both versions), `test_dspy(latest)`, `test_google_genai(latest)` and `test_google_adk(latest)` also pass on VCR.py 8.4.0. `test_google_genai` has no aiohttp, since google-genai makes it optional. With aiohttp added to `test_google_genai(latest)`, as with `google-genai[aiohttp]`, this PR on VCR.py 8.4.0 hangs in `test_basic_completion[async_stream]` (kevin1024/vcrpy#927). It passes on 8.5.0 (44 passed, 2 skipped), as main does on 8.4.0. Pre-commit hooks pass on the changed files, and `pylint --errors-only` is clean on `conftest.py`. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01GwUvhmzgfkiZ6vo4uGyesN Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Automated weekly dependency update via
python scripts/update-matrix-latest.py, advancing theuvexclude-newercutoff, anduv lock --upgrade.