33# pyright: reportUnknownParameterType=false
44# pyright: reportPrivateUsage=false
55import asyncio
6+ import inspect
67import time
78
89import 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