Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions py/noxfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -366,6 +366,9 @@ def test_openai_agents(session, version):
@nox.session()
@nox.parametrize("version", LITELLM_VERSIONS, ids=LITELLM_VERSIONS)
def test_litellm(session, version):
# LiteLLM 1.97.0 leaves Pydantic forward references unresolved on Python 3.10.
if version == LATEST and sys.version_info < (3, 11):
session.skip("Latest LiteLLM is currently broken on Python 3.10")
_install_test_deps(session)
# Auxiliary deps (openai upper-bounded, fastapi, orjson) are locked in the lockfile.
_install_group_locked(session, "test-litellm")
Expand Down Expand Up @@ -571,6 +574,10 @@ def test_google_genai(session, version):
@nox.session()
@nox.parametrize("version", DSPY_VERSIONS, ids=DSPY_VERSIONS)
def test_dspy(session, version):
# DSPy latest preinstalls our latest LiteLLM pin, which is currently broken
# on Python 3.10 due to unresolved Pydantic forward references.
if version == LATEST and sys.version_info < (3, 11):
session.skip("DSPy latest currently resolves a LiteLLM version broken on Python 3.10")
_install_test_deps(session)
if version == LATEST:
# DSPy only lower-bounds LiteLLM, whose 1.92.0 release lacks Windows
Expand Down
45 changes: 24 additions & 21 deletions py/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,9 @@ test = [
test-openai-http2 = [
{include-group = "test"},
"h2==4.4.1",
# OpenAI 3 no longer installs httpx transitively, but this session exercises
# the integration's HTTP/2 behavior with an explicit httpx transport.
"httpx==0.28.1",
]

test-openai-ddtrace = [
Expand Down Expand Up @@ -368,50 +371,50 @@ latest = "ai[openai]==0.4.2"
"0.4.0" = "ai[openai]==0.4.0"

[tool.braintrust.matrix.openai]
latest = "openai==2.53.0"
latest = "openai==3.1.0"
Comment thread
AbhiPrasad marked this conversation as resolved.
"1.92.0" = "openai==1.92.0"
"1.77.0" = "openai==1.77.0"
"1.71.0" = "openai==1.71.0"

[tool.braintrust.matrix.anthropic]
latest = "anthropic==0.121.0"
latest = "anthropic==0.122.0"
"0.48.0" = "anthropic==0.48.0"

[tool.braintrust.matrix.cohere]
latest = "cohere==7.0.8"
"5.0.0" = "cohere==5.0.0"

[tool.braintrust.matrix.openai-agents]
latest = "openai-agents==0.19.4"
latest = "openai-agents==0.21.1"
"0.13.6" = "openai-agents==0.13.6"
"0.0.19" = "openai-agents==0.0.19"

[tool.braintrust.matrix.litellm]
# 1.92.0 only publishes Linux wheels through CPython 3.13, but the test
# matrix also covers Windows and CPython 3.14.
latest = "litellm==1.96.0"
latest = "litellm==1.97.0"
"1.74.0" = "litellm==1.74.0"

[tool.braintrust.matrix.livekit-agents]
latest = "livekit-agents==1.6.9"
latest = "livekit-agents==1.6.10"
"1.3.1" = "livekit-agents==1.3.1"

[tool.braintrust.matrix.pipecat-ai]
latest = "pipecat-ai==1.7.0"
"1.3.0" = "pipecat-ai==1.3.0"

[tool.braintrust.matrix.claude-agent-sdk]
latest = "claude-agent-sdk==0.2.134"
latest = "claude-agent-sdk==0.2.139"
"0.1.10" = "claude-agent-sdk==0.1.10"

[tool.braintrust.matrix.cursor-sdk]
# 1.0.25 fixes bridge callback tokens that could be parsed as CLI flags while
# retaining per-turn usage, sync/async consumption, multimodal, and custom tools.
latest = "cursor-sdk==1.0.27"
latest = "cursor-sdk==1.0.28"
"1.0.25" = "cursor-sdk==1.0.25"

[tool.braintrust.matrix.agno]
latest = "agno==2.8.7"
latest = "agno==2.9.0"
"2.4.0" = "agno==2.4.0"
"2.1.0" = "agno==2.1.0"

Expand All @@ -428,15 +431,15 @@ latest = "autogen-ext[openai]==0.7.5"
"0.7.0" = "autogen-ext[openai]==0.7.0"

[tool.braintrust.matrix.strands-agents]
latest = "strands-agents==1.51.0"
latest = "strands-agents==1.52.0"
"1.20.0" = "strands-agents==1.20.0"

[tool.braintrust.matrix.pydantic-ai-integration]
latest = "pydantic-ai==2.27.0"
latest = "pydantic-ai==2.31.0"
"1.10.0" = "pydantic-ai==1.10.0"

[tool.braintrust.matrix.pydantic-ai-wrap-openai]
latest = "pydantic-ai==2.27.0"
latest = "pydantic-ai==2.31.0"
"1.0.1" = "pydantic-ai==1.0.1"
"0.1.9" = "pydantic-ai==0.1.9"

Expand All @@ -449,7 +452,7 @@ latest = "instructor==1.15.4"
"1.11.0" = "instructor==1.11.0"

[tool.braintrust.matrix.google-genai]
latest = "google-genai==2.17.0"
latest = "google-genai==2.18.1"
"1.75.0" = "google-genai==1.75.0"
"1.30.0" = "google-genai==1.30.0"

Expand All @@ -458,34 +461,34 @@ latest = "dspy==3.3.0"
"2.6.0" = "dspy==2.6.0"

[tool.braintrust.matrix.deepagents]
latest = "deepagents==0.7.5"
latest = "deepagents==0.7.6"
"0.6.0" = "deepagents==0.6.0"

[tool.braintrust.matrix.crewai]
# 1.13.0 is the first release with the full causal-id surface (event_id /
# parent_event_id / started_event_id on BaseEvent) plus the ``usage`` field on
# LLMCallCompletedEvent that the Braintrust CrewAI integration depends on.
latest = "crewai==1.15.14"
latest = "crewai==1.15.16"
"1.13.0" = "crewai==1.13.0"

[tool.braintrust.matrix.google-adk]
latest = "google-adk[mcp]==2.6.3"
latest = "google-adk[mcp]==2.7.0"
"1.14.1" = "google-adk[mcp]==1.14.1"

[tool.braintrust.matrix.langchain-core]
latest = "langchain-core==1.5.3"
latest = "langchain-core==1.5.5"
"0.3.28" = "langchain-core==0.3.28"

[tool.braintrust.matrix.llama-index-core]
latest = "llama-index-core==0.14.23"
"0.13.0" = "llama-index-core==0.13.0"

[tool.braintrust.matrix.openrouter]
latest = "openrouter==1.1.39"
latest = "openrouter==1.1.58"
"0.6.0" = "openrouter==0.6.0"

[tool.braintrust.matrix.mistralai]
latest = "mistralai==2.9.1"
latest = "mistralai==2.9.3"
"1.12.4" = "mistralai==1.12.4"

[tool.braintrust.matrix.huggingface-hub]
Expand All @@ -506,7 +509,7 @@ latest = "temporalio==1.31.0"
"1.19.0" = "temporalio==1.19.0"

[tool.braintrust.matrix.harbor]
latest = "harbor==0.20.0"
latest = "harbor==0.21.0"
# 0.16.0 is the oldest supported release: it is the first with
# TrialEvent.AGENT_END, which the lifecycle state machine subscribes to. Harbor
# gained its plugin system in 0.13.2, so 0.13.2-0.15.0 can load the plugin but
Expand All @@ -523,11 +526,11 @@ latest = "pytest==9.1.1"
latest = "braintrust-core==0.0.59"

[tool.braintrust.matrix.boto3]
latest = "boto3==1.43.67"
latest = "boto3==1.43.72"
"1.34.116" = "boto3==1.34.116"

[tool.braintrust.matrix.botocore]
latest = "botocore==1.43.67"
latest = "botocore==1.43.72"
"1.34.116" = "botocore==1.34.116"

# ---------------------------------------------------------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ interactions:
Content-Type:
- application/json
user-agent:
- google-genai-sdk/2.16.0 gl-python/3.14.6 google-adk/2.6.2 gl-python/3.14.6
- google-genai-sdk/2.18.1 gl-python/3.14.6 google-adk/2.7.0 gl-python/3.14.6
x-goog-api-client:
- google-genai-sdk/2.16.0 gl-python/3.14.6 google-adk/2.6.2 gl-python/3.14.6
- google-genai-sdk/2.18.1 gl-python/3.14.6 google-adk/2.7.0 gl-python/3.14.6
method: POST
uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-lite:generateContent
response:
Expand All @@ -24,18 +24,18 @@ interactions:
[\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 33\n
\ },\n {\n \"modality\": \"IMAGE\",\n \"tokenCount\":
258\n }\n ],\n \"serviceTier\": \"standard\"\n },\n \"modelVersion\":
\"gemini-2.5-flash-lite\",\n \"responseId\": \"PBByap2_POKe-8YP2cy6qQs\"\n}\n"
\"gemini-2.5-flash-lite\",\n \"responseId\": \"8TeDatdfjIyOsQ_E5b6RCg\"\n}\n"
headers:
Alt-Svc:
- h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
Content-Type:
- application/json; charset=UTF-8
Date:
- Tue, 04 Aug 2026 16:15:57 GMT
- Mon, 17 Aug 2026 16:33:53 GMT
Server:
- scaffolding on HTTPServer2
Server-Timing:
- gfet4t7; dur=440
- gfet4t7; dur=405
Transfer-Encoding:
- chunked
Vary:
Expand All @@ -51,7 +51,7 @@ interactions:
X-XSS-Protection:
- '0'
content-length:
- '642'
- '641'
status:
code: 200
message: OK
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ interactions:
Content-Type:
- application/json
user-agent:
- google-genai-sdk/2.16.0 gl-python/3.14.6 google-adk/2.6.2 gl-python/3.14.6
- google-genai-sdk/2.18.1 gl-python/3.14.6 google-adk/2.7.0 gl-python/3.14.6
x-goog-api-client:
- google-genai-sdk/2.16.0 gl-python/3.14.6 google-adk/2.6.2 gl-python/3.14.6
- google-genai-sdk/2.18.1 gl-python/3.14.6 google-adk/2.7.0 gl-python/3.14.6
method: POST
uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-lite:generateContent
response:
Expand All @@ -29,18 +29,18 @@ interactions:
16,\n \"totalTokenCount\": 100,\n \"promptTokensDetails\": [\n {\n
\ \"modality\": \"TEXT\",\n \"tokenCount\": 84\n }\n ],\n
\ \"serviceTier\": \"standard\"\n },\n \"modelVersion\": \"gemini-2.5-flash-lite\",\n
\ \"responseId\": \"OBByaoPaDZ61-8YP6byZ4Aw\"\n}\n"
\ \"responseId\": \"7TeDapbZEq7XjrEPjrygiQ0\"\n}\n"
headers:
Alt-Svc:
- h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
Content-Type:
- application/json; charset=UTF-8
Date:
- Tue, 04 Aug 2026 16:15:52 GMT
- Mon, 17 Aug 2026 16:33:49 GMT
Server:
- scaffolding on HTTPServer2
Server-Timing:
- gfet4t7; dur=291
- gfet4t7; dur=241
Transfer-Encoding:
- chunked
Vary:
Expand Down Expand Up @@ -77,33 +77,33 @@ interactions:
Content-Type:
- application/json
user-agent:
- google-genai-sdk/2.16.0 gl-python/3.14.6 google-adk/2.6.2 gl-python/3.14.6
- google-genai-sdk/2.18.1 gl-python/3.14.6 google-adk/2.7.0 gl-python/3.14.6
x-goog-api-client:
- google-genai-sdk/2.16.0 gl-python/3.14.6 google-adk/2.6.2 gl-python/3.14.6
- google-genai-sdk/2.18.1 gl-python/3.14.6 google-adk/2.7.0 gl-python/3.14.6
method: POST
uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-lite:generateContent
response:
body:
string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\":
[\n {\n \"text\": \"The weather in San Francisco is sunny
with a temperature of 72\xB0F, humidity at 45%, and wind at 5 mph NW.\"\n
\ }\n ],\n \"role\": \"model\"\n },\n \"finishReason\":
\"STOP\",\n \"index\": 0\n }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\":
146,\n \"candidatesTokenCount\": 31,\n \"totalTokenCount\": 177,\n \"promptTokensDetails\":
[\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 146\n
\ }\n ],\n \"serviceTier\": \"standard\"\n },\n \"modelVersion\":
\"gemini-2.5-flash-lite\",\n \"responseId\": \"OBByarDkLIK6jrEPsOzPcQ\"\n}\n"
with a temperature of 72\xB0F, 45% humidity, and winds blowing from the NW
at 5 mph.\"\n }\n ],\n \"role\": \"model\"\n },\n
\ \"finishReason\": \"STOP\",\n \"index\": 0\n }\n ],\n \"usageMetadata\":
{\n \"promptTokenCount\": 146,\n \"candidatesTokenCount\": 34,\n \"totalTokenCount\":
180,\n \"promptTokensDetails\": [\n {\n \"modality\": \"TEXT\",\n
\ \"tokenCount\": 146\n }\n ],\n \"serviceTier\": \"standard\"\n
\ },\n \"modelVersion\": \"gemini-2.5-flash-lite\",\n \"responseId\": \"7TeDarW8Iq2MjrEPk4fwiQI\"\n}\n"
headers:
Alt-Svc:
- h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
Content-Type:
- application/json; charset=UTF-8
Date:
- Tue, 04 Aug 2026 16:15:53 GMT
- Mon, 17 Aug 2026 16:33:49 GMT
Server:
- scaffolding on HTTPServer2
Server-Timing:
- gfet4t7; dur=408
- gfet4t7; dur=349
Transfer-Encoding:
- chunked
Vary:
Expand All @@ -119,7 +119,7 @@ interactions:
X-XSS-Protection:
- '0'
content-length:
- '655'
- '671'
status:
code: 200
message: OK
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,32 +8,32 @@ interactions:
Content-Type:
- application/json
user-agent:
- google-genai-sdk/2.16.0 gl-python/3.14.6 google-adk/2.6.2 gl-python/3.14.6
- google-genai-sdk/2.18.1 gl-python/3.14.6 google-adk/2.7.0 gl-python/3.14.6
x-goog-api-client:
- google-genai-sdk/2.16.0 gl-python/3.14.6 google-adk/2.6.2 gl-python/3.14.6
- google-genai-sdk/2.18.1 gl-python/3.14.6 google-adk/2.7.0 gl-python/3.14.6
method: POST
uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-lite:generateContent
response:
body:
string: "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\":
[\n {\n \"text\": \"Hello, world!\"\n }\n ],\n
\ \"role\": \"model\"\n },\n \"finishReason\": \"STOP\",\n
\ \"index\": 0\n }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\":
29,\n \"candidatesTokenCount\": 4,\n \"totalTokenCount\": 33,\n \"promptTokensDetails\":
[\n {\n \"text\": \"Hello there, friend.\"\n }\n
\ ],\n \"role\": \"model\"\n },\n \"finishReason\":
\"STOP\",\n \"index\": 0\n }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\":
29,\n \"candidatesTokenCount\": 5,\n \"totalTokenCount\": 34,\n \"promptTokensDetails\":
[\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 29\n
\ }\n ],\n \"serviceTier\": \"standard\"\n },\n \"modelVersion\":
\"gemini-2.5-flash-lite\",\n \"responseId\": \"PRByapqBIoK4sOIP5uLD8Qw\"\n}\n"
\"gemini-2.5-flash-lite\",\n \"responseId\": \"9jeDatKNEIq4sOIPyJ_JUQ\"\n}\n"
headers:
Alt-Svc:
- h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
Content-Type:
- application/json; charset=UTF-8
Date:
- Tue, 04 Aug 2026 16:15:57 GMT
- Mon, 17 Aug 2026 16:33:58 GMT
Server:
- scaffolding on HTTPServer2
Server-Timing:
- gfet4t7; dur=238
- gfet4t7; dur=236
Transfer-Encoding:
- chunked
Vary:
Expand All @@ -49,7 +49,7 @@ interactions:
X-XSS-Protection:
- '0'
content-length:
- '560'
- '566'
status:
code: 200
message: OK
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ interactions:
Content-Type:
- application/json
user-agent:
- google-genai-sdk/2.16.0 gl-python/3.14.6 google-adk/2.6.2 gl-python/3.14.6
- google-genai-sdk/2.18.1 gl-python/3.14.6 google-adk/2.7.0 gl-python/3.14.6
x-goog-api-client:
- google-genai-sdk/2.16.0 gl-python/3.14.6 google-adk/2.6.2 gl-python/3.14.6
- google-genai-sdk/2.18.1 gl-python/3.14.6 google-adk/2.7.0 gl-python/3.14.6
method: POST
uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-lite:generateContent
response:
Expand All @@ -34,18 +34,18 @@ interactions:
{\n \"promptTokenCount\": 36,\n \"candidatesTokenCount\": 57,\n \"totalTokenCount\":
93,\n \"promptTokensDetails\": [\n {\n \"modality\": \"TEXT\",\n
\ \"tokenCount\": 36\n }\n ],\n \"serviceTier\": \"standard\"\n
\ },\n \"modelVersion\": \"gemini-2.5-flash-lite\",\n \"responseId\": \"PxByap2tA_GQjrEPnNWpiAs\"\n}\n"
\ },\n \"modelVersion\": \"gemini-2.5-flash-lite\",\n \"responseId\": \"-DeDaoiSB7mcjrEPg7C_wQw\"\n}\n"
headers:
Alt-Svc:
- h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
Content-Type:
- application/json; charset=UTF-8
Date:
- Tue, 04 Aug 2026 16:15:59 GMT
- Mon, 17 Aug 2026 16:34:00 GMT
Server:
- scaffolding on HTTPServer2
Server-Timing:
- gfet4t7; dur=574
- gfet4t7; dur=432
Transfer-Encoding:
- chunked
Vary:
Expand Down
Loading