Skip to content

Commit 8e2c8f8

Browse files
committed
fix older pydantic ai versions
1 parent b4bdc54 commit 8e2c8f8

1 file changed

Lines changed: 26 additions & 14 deletions

File tree

py/src/braintrust/wrappers/test_pydantic_ai_integration.py

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
# pyright: reportUnknownParameterType=false
44
# pyright: reportPrivateUsage=false
55
import asyncio
6+
import inspect
67
import time
78

89
import pytest
@@ -173,9 +174,10 @@ def test_agent_to_cli_sync(memory_logger, monkeypatch):
173174
"""Test Agent.to_cli_sync() records a CLI session span."""
174175
assert not memory_logger.pop()
175176

177+
cli_signature = inspect.signature(Agent.to_cli_sync)
176178
message_history = [ModelRequest(parts=[UserPromptPart(content="Previous question")])]
177-
usage_limits = UsageLimits(request_limit=3)
178179
agent = Agent(MODEL, name="cli-agent", model_settings=ModelSettings(max_tokens=50))
180+
captured = {}
179181

180182
async def fake_run_chat(
181183
*,
@@ -186,25 +188,31 @@ async def fake_run_chat(
186188
code_theme,
187189
prog_name,
188190
message_history,
189-
model_settings,
190-
usage_limits,
191+
model_settings=None,
192+
usage_limits=None,
191193
):
192194
assert stream is True
193195
assert prog_name == "braintrust-cli"
194196
assert message_history is not None
195-
assert model_settings is not None
196-
assert usage_limits is not None
197+
captured["model_settings"] = model_settings
198+
captured["usage_limits"] = usage_limits
197199
return 0
198200

199201
monkeypatch.setattr("pydantic_ai._cli.run_chat", fake_run_chat)
200202

203+
cli_kwargs = {
204+
"prog_name": "braintrust-cli",
205+
"message_history": message_history,
206+
}
207+
# pydantic_ai 1.10.0 exposes a smaller to_cli_sync API; newer versions add
208+
# model_settings and usage_limits, so assert those fields only when present.
209+
if "model_settings" in cli_signature.parameters:
210+
cli_kwargs["model_settings"] = ModelSettings(max_tokens=20, temperature=0.2)
211+
if "usage_limits" in cli_signature.parameters:
212+
cli_kwargs["usage_limits"] = UsageLimits(request_limit=3)
213+
201214
start = time.time()
202-
agent.to_cli_sync(
203-
prog_name="braintrust-cli",
204-
message_history=message_history,
205-
model_settings=ModelSettings(max_tokens=20, temperature=0.2),
206-
usage_limits=usage_limits,
207-
)
215+
agent.to_cli_sync(**cli_kwargs)
208216
end = time.time()
209217

210218
spans = memory_logger.pop()
@@ -217,9 +225,13 @@ async def fake_run_chat(
217225
assert cli_span["metadata"]["provider"] == "openai"
218226
assert cli_span["input"]["prog_name"] == "braintrust-cli"
219227
assert "message_history" in cli_span["input"]
220-
assert cli_span["input"]["model_settings"]["max_tokens"] == 20
221-
assert cli_span["input"]["model_settings"]["temperature"] == 0.2
222-
assert cli_span["input"]["usage_limits"]["request_limit"] == 3
228+
if "model_settings" in cli_signature.parameters:
229+
assert captured["model_settings"] is not None
230+
assert cli_span["input"]["model_settings"]["max_tokens"] == 20
231+
assert cli_span["input"]["model_settings"]["temperature"] == 0.2
232+
if "usage_limits" in cli_signature.parameters:
233+
assert captured["usage_limits"] is not None
234+
assert cli_span["input"]["usage_limits"]["request_limit"] == 3
223235
_assert_metrics_are_valid(cli_span["metrics"], start, end)
224236

225237

0 commit comments

Comments
 (0)