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
38 changes: 19 additions & 19 deletions py/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ lint = [
"numpy",
"strands-agents",
"temporalio",
"pydantic-ai>=1.99.0",
"pydantic-ai>=1.99.0,<2",
"opentelemetry-instrumentation-openai==0.59.1",
"langsmith==0.8.0",
"langchain-core",
Expand Down Expand Up @@ -312,43 +312,43 @@ conflicts = [
[tool.braintrust.matrix]

[tool.braintrust.matrix.openai]
latest = "openai==2.43.0"
latest = "openai==2.44.0"
"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.111.0"
latest = "anthropic==0.112.0"
"0.48.0" = "anthropic==0.48.0"

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

[tool.braintrust.matrix.openai-agents]
latest = "openai-agents==0.17.6"
latest = "openai-agents==0.17.7"
"0.13.6" = "openai-agents==0.13.6"
"0.0.19" = "openai-agents==0.0.19"

[tool.braintrust.matrix.litellm]
latest = "litellm==1.89.3"
latest = "litellm==1.90.0"
"1.74.0" = "litellm==1.74.0"

[tool.braintrust.matrix.livekit-agents]
latest = "livekit-agents==1.6.2"
latest = "livekit-agents==1.6.4"
"1.3.1" = "livekit-agents==1.3.1"

[tool.braintrust.matrix.claude-agent-sdk]
latest = "claude-agent-sdk==0.2.106"
latest = "claude-agent-sdk==0.2.110"
"0.1.10" = "claude-agent-sdk==0.1.10"

[tool.braintrust.matrix.agno]
latest = "agno==2.6.18"
latest = "agno==2.6.20"
"2.4.0" = "agno==2.4.0"
"2.1.0" = "agno==2.1.0"

[tool.braintrust.matrix.agentscope]
latest = "agentscope==2.0.2"
latest = "agentscope==2.0.3"
"1.0.0" = "agentscope==1.0.0"

[tool.braintrust.matrix.autogen-agentchat]
Expand All @@ -360,7 +360,7 @@ 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.44.0"
latest = "strands-agents==1.45.0"
"1.20.0" = "strands-agents==1.20.0"

[tool.braintrust.matrix.pydantic-ai-integration]
Expand All @@ -377,11 +377,11 @@ latest = "autoevals==0.3.0"
"0.0.129" = "autoevals==0.0.129"

[tool.braintrust.matrix.instructor]
latest = "instructor==1.15.3"
latest = "instructor==1.15.4"
"1.11.0" = "instructor==1.11.0"

[tool.braintrust.matrix.google-genai]
latest = "google-genai==2.9.0"
latest = "google-genai==2.10.0"
"1.75.0" = "google-genai==1.75.0"
"1.30.0" = "google-genai==1.30.0"

Expand All @@ -393,7 +393,7 @@ latest = "dspy==3.2.1"
# 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.14.7"
latest = "crewai==1.15.1"
"1.13.0" = "crewai==1.13.0"

[tool.braintrust.matrix.google-adk]
Expand All @@ -405,23 +405,23 @@ latest = "langchain-core==1.4.8"
"0.3.28" = "langchain-core==0.3.28"

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

[tool.braintrust.matrix.openrouter]
latest = "openrouter==0.10.0"
latest = "openrouter==0.10.8"
"0.6.0" = "openrouter==0.6.0"

[tool.braintrust.matrix.mistralai]
latest = "mistralai==2.4.13"
latest = "mistralai==2.5.0"
"1.12.4" = "mistralai==1.12.4"

[tool.braintrust.matrix.huggingface-hub]
# Floor pinned to 0.32.0: the earliest release that exposes the
# ``provider="auto"`` routing mode the integration relies on for multi-
# provider use, while still keeping the same chat_completion /
# text_generation / feature_extraction / sentence_similarity method names.
latest = "huggingface-hub==1.20.1"
latest = "huggingface-hub==1.21.0"
"0.32.0" = "huggingface-hub==0.32.0"

[tool.braintrust.matrix.temporalio]
Expand All @@ -439,11 +439,11 @@ latest = "pytest==9.1.1"
latest = "braintrust-core==0.0.59"

[tool.braintrust.matrix.boto3]
latest = "boto3==1.43.34"
latest = "boto3==1.43.36"
"1.34.116" = "boto3==1.34.116"

[tool.braintrust.matrix.botocore]
latest = "botocore==1.43.34"
latest = "botocore==1.43.36"
"1.34.116" = "botocore==1.34.116"

# ---------------------------------------------------------------------------
Expand Down
7 changes: 6 additions & 1 deletion py/src/braintrust/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,12 @@ async def _patched_record_response(cassette, vcr_request, response):
# aiohttp's ClientResponse stores the payload in response.content which
# is a StreamReader. After read() exhausts it, we replace it with a new
# stream containing the same data.
new_stream = streams.StreamReader(response._protocol, 2**16, loop=asyncio.get_event_loop())
# Use a limit larger than the captured body so StreamReader.feed_data()
# does not try to pause the original aiohttp parser. Large responses
# (for example image-generation payloads) can otherwise trip an
# assertion inside aiohttp's parser when VCR records the response.
stream_limit = max(2**16, len(body_bytes) + 1)
new_stream = streams.StreamReader(response._protocol, stream_limit, loop=asyncio.get_event_loop())
new_stream.feed_data(body_bytes)
new_stream.feed_eof()
response.content = new_stream
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,46 +2,46 @@ interactions:
- request:
body: '{"messages":[{"role":"user","content":"Say hi"}],"model":"gpt-4o-mini"}'
headers:
Accept:
accept:
- application/json
Accept-Encoding:
accept-encoding:
- gzip, deflate
Connection:
connection:
- keep-alive
Content-Length:
content-length:
- '71'
Content-Type:
content-type:
- application/json
Host:
host:
- api.openai.com
User-Agent:
- OpenAI/Python 2.38.0
X-Stainless-Arch:
user-agent:
- OpenAI/Python 2.44.0
x-stainless-arch:
- arm64
X-Stainless-Async:
x-stainless-async:
- 'false'
X-Stainless-Lang:
x-stainless-lang:
- python
X-Stainless-OS:
x-stainless-os:
- MacOS
X-Stainless-Package-Version:
- 2.38.0
X-Stainless-Raw-Response:
x-stainless-package-version:
- 2.44.0
x-stainless-raw-response:
- 'true'
X-Stainless-Runtime:
- CPython
X-Stainless-Runtime-Version:
- 3.14.3
x-stainless-read-timeout:
- '600.0'
x-stainless-retry-count:
- '0'
x-stainless-runtime:
- CPython
x-stainless-runtime-version:
- 3.14.3
method: POST
uri: https://api.openai.com/v1/chat/completions
response:
body:
string: "{\n \"id\": \"chatcmpl-DjUJQR5hAaSThPk3F6iJbuMbiTVcI\",\n \"object\":
\"chat.completion\",\n \"created\": 1779733652,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n
string: "{\n \"id\": \"chatcmpl-Dw6tnq3wLigHjugFBUn28yAGi0Svz\",\n \"object\":
\"chat.completion\",\n \"created\": 1782741915,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"Hi there! How can I assist you today?\",\n
\ \"refusal\": null,\n \"annotations\": []\n },\n \"logprobs\":
Expand All @@ -50,44 +50,46 @@ interactions:
{\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\":
{\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\":
0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\":
\"default\",\n \"system_fingerprint\": \"fp_6e71a9f378\"\n}\n"
\"default\",\n \"system_fingerprint\": \"fp_93ce1a0f2a\"\n}\n"
headers:
Access-Control-Expose-Headers:
access-control-expose-headers:
- X-Request-ID
- CF-Ray
- CF-Ray
CF-Cache-Status:
- DYNAMIC
CF-Ray:
- a0169840bddc3a03-YYZ
Connection:
- keep-alive
Content-Type:
- application/json
Date:
- Mon, 25 May 2026 18:27:33 GMT
Server:
- cloudflare
Strict-Transport-Security:
- max-age=31536000; includeSubDomains; preload
Transfer-Encoding:
- chunked
X-Content-Type-Options:
- nosniff
alt-svc:
- h3=":443"; ma=86400
cf-cache-status:
- DYNAMIC
cf-ray:
- a1357c2b8ce8abf7-YYZ
connection:
- keep-alive
content-length:
- '843'
content-type:
- application/json
date:
- Mon, 29 Jun 2026 14:05:16 GMT
openai-organization:
- braintrust-data
openai-processing-ms:
- '690'
- '714'
openai-project:
- proj_vsCSXafhhByzWOThMrJcZiw9
openai-version:
- '2020-10-01'
server:
- cloudflare
set-cookie:
- __cf_bm=I0Uys99moT6ZRtpyJMepSqDjcpZmZTTV2sFnpqF_.JE-1779733652.593364-1.0.1.1-4Go9zrRm3Kc3HKgcArrcK4emO0EBZCk.di72NlQyCs6HJLx6TwHZnfdIipeSFixi_HiDSNVY4Xgco35r7hzQVbe4O458q9TPGbj6ZFAOOmhignv2XySnhH2Ppfl7Fbh7;
- __cf_bm=RbBAgKAsBhe0EJks2oP.16UurqK8L7WeikxZMnOGz3s-1782741915.4466283-1.0.1.1-X9SYmttTipGKYkWtrvbPzxZAqp6O7YEyFkpED0W_JEtfhdTCLIMpq_TCLVHJzEQ8a0S8pp_d4I_y9TEGo_BeUK0qZOLTw5pGdtClC_KBVPU3oklv_4mJp..ACWnfRKfi;
HttpOnly; SameSite=None; Secure; Path=/; Domain=api.openai.com; Expires=Mon,
25 May 2026 18:57:33 GMT
29 Jun 2026 14:35:16 GMT
strict-transport-security:
- max-age=31536000; includeSubDomains; preload
transfer-encoding:
- chunked
x-content-type-options:
- nosniff
x-openai-proxy-wasm:
- v0.1
x-ratelimit-limit-requests:
Expand All @@ -103,7 +105,7 @@ interactions:
x-ratelimit-reset-tokens:
- 0s
x-request-id:
- req_5c63a3194e814dd2a6e6ed64f34a4595
- req_79a7e38c4c38401e9ea92c44a02867a9
status:
code: 200
message: OK
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ interactions:
host:
- api.openai.com
user-agent:
- AsyncOpenAI/Python 2.38.0
- AsyncOpenAI/Python 2.44.0
x-stainless-arch:
- arm64
x-stainless-async:
Expand All @@ -25,7 +25,7 @@ interactions:
x-stainless-os:
- MacOS
x-stainless-package-version:
- 2.38.0
- 2.44.0
x-stainless-raw-response:
- 'true'
x-stainless-read-timeout:
Expand All @@ -40,8 +40,8 @@ interactions:
uri: https://api.openai.com/v1/chat/completions
response:
body:
string: "{\n \"id\": \"chatcmpl-DjUIS5z8VSPVmjvEN6AkqzqdUTFJ6\",\n \"object\":
\"chat.completion\",\n \"created\": 1779733592,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n
string: "{\n \"id\": \"chatcmpl-Dw6siY7aZppJUM39qepUTCeMSVb2z\",\n \"object\":
\"chat.completion\",\n \"created\": 1782741848,\n \"model\": \"gpt-4o-mini-2024-07-18\",\n
\ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\":
\"assistant\",\n \"content\": \"12 + 12 equals 24.\",\n \"refusal\":
null,\n \"annotations\": []\n },\n \"logprobs\": null,\n
Expand All @@ -50,7 +50,7 @@ interactions:
{\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\":
{\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\":
0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\":
\"default\",\n \"system_fingerprint\": \"fp_7aa59af5dc\"\n}\n"
\"default\",\n \"system_fingerprint\": \"fp_d0b314e02e\"\n}\n"
headers:
Access-Control-Expose-Headers:
- X-Request-ID
Expand All @@ -59,19 +59,19 @@ interactions:
CF-Cache-Status:
- DYNAMIC
CF-Ray:
- a01696c9181357af-YYZ
- a1357a8ace72a1f8-YYZ
Connection:
- keep-alive
Content-Type:
- application/json
Date:
- Mon, 25 May 2026 18:26:33 GMT
- Mon, 29 Jun 2026 14:04:09 GMT
Server:
- cloudflare
Set-Cookie:
- __cf_bm=vR3XICN4DGrl0B.l.4xEA0TlTjzRQw7eq98NYxLFkTg-1779733592.4995396-1.0.1.1-doCrThp55SKeV2zI_jQgv.upm8oBjHnK.XZ5BT1TvQD9eSnsNjXqX1.DaNpnyupbgAeC_fDFIXI2o_heWCOut4rrVFX90XZI5YJrJRb_lH0ickBsamA3ClFTnJuTCrKy;
- __cf_bm=4GtQVn_YfbWRG3KBKXGqFDRGaMn326f9MKbTZ68J8HE-1782741848.7631176-1.0.1.1-tkIMT_2Tn0pdW6oe.iqZGnc2nCKV5x0wFkTpYWlFyOtAWSaADMMDbgU94EbBn.X52AbjPOfTTFcYMd2cqQWSG3HQacpr7QIS0tOTeUlmFIMNtjV_b1KoAqdcoWz5FTyI;
HttpOnly; SameSite=None; Secure; Path=/; Domain=api.openai.com; Expires=Mon,
25 May 2026 18:56:33 GMT
29 Jun 2026 14:34:09 GMT
Strict-Transport-Security:
- max-age=31536000; includeSubDomains; preload
Transfer-Encoding:
Expand All @@ -85,7 +85,7 @@ interactions:
openai-organization:
- braintrust-data
openai-processing-ms:
- '421'
- '475'
openai-project:
- proj_vsCSXafhhByzWOThMrJcZiw9
openai-version:
Expand All @@ -105,7 +105,7 @@ interactions:
x-ratelimit-reset-tokens:
- 0s
x-request-id:
- req_a1f10db1404b4221850bf031bce73f8a
- req_3b039667f8404c2fac0bf8de2298ca74
status:
code: 200
message: OK
Expand Down
Loading
Loading