pydantic-ai 1.0.17__tar.gz → 1.0.18__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pydantic-ai might be problematic. Click here for more details.

Files changed (490) hide show
  1. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/PKG-INFO +5 -5
  2. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/README.md +1 -1
  3. pydantic_ai-1.0.18/tests/models/cassettes/test_openai_responses/test_openai_responses_history_with_combined_tool_call_id.yaml +148 -0
  4. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/test_openai_responses.py +164 -24
  5. pydantic_ai-1.0.18/tests/providers/test_nebius.py +131 -0
  6. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/test_provider_names.py +2 -0
  7. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_dbos.py +7 -7
  8. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_examples.py +1 -0
  9. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_temporal.py +7 -7
  10. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/.gitignore +0 -0
  11. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/LICENSE +0 -0
  12. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/Makefile +0 -0
  13. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/pyproject.toml +0 -0
  14. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/__init__.py +0 -0
  15. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/assets/dummy.pdf +0 -0
  16. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/assets/dummy.txt +0 -0
  17. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/assets/kiwi.png +0 -0
  18. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/assets/marcelo.mp3 +0 -0
  19. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/assets/product_name.txt +0 -0
  20. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/assets/small_video.mp4 +0 -0
  21. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_dbos/test_complex_agent_run.yaml +0 -0
  22. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_dbos/test_complex_agent_run_in_workflow.yaml +0 -0
  23. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_dbos/test_complex_agent_run_stream_in_workflow.yaml +0 -0
  24. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_dbos/test_dbos_agent_iter.yaml +0 -0
  25. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_dbos/test_dbos_agent_iter_in_workflow.yaml +0 -0
  26. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_dbos/test_dbos_agent_override_deps_in_workflow.yaml +0 -0
  27. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_dbos/test_dbos_agent_override_tools_in_workflow.yaml +0 -0
  28. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_dbos/test_dbos_agent_run.yaml +0 -0
  29. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_dbos/test_dbos_agent_run_in_workflow_with_toolsets.yaml +0 -0
  30. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_dbos/test_dbos_agent_run_stream.yaml +0 -0
  31. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_dbos/test_dbos_agent_run_sync.yaml +0 -0
  32. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_dbos/test_dbos_agent_run_sync_in_workflow.yaml +0 -0
  33. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_dbos/test_dbos_agent_with_dataclass_deps_as_dict.yaml +0 -0
  34. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_dbos/test_dbos_agent_with_hitl_tool.yaml +0 -0
  35. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_dbos/test_dbos_agent_with_hitl_tool_sync.yaml +0 -0
  36. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_dbos/test_dbos_agent_with_model_retry.yaml +0 -0
  37. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_dbos/test_dbos_agent_with_non_dict_deps.yaml +0 -0
  38. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_dbos/test_dbos_agent_with_unserializable_deps_type.yaml +0 -0
  39. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_dbos/test_dbos_model_stream_direct.yaml +0 -0
  40. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_dbos/test_multiple_agents.yaml +0 -0
  41. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_dbos/test_simple_agent_run_in_workflow.yaml +0 -0
  42. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_mcp/test_agent_with_server_not_running.yaml +0 -0
  43. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml +0 -0
  44. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_mcp/test_tool_returning_audio_resource.yaml +0 -0
  45. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_mcp/test_tool_returning_audio_resource_link.yaml +0 -0
  46. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml +0 -0
  47. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_mcp/test_tool_returning_error.yaml +0 -0
  48. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_mcp/test_tool_returning_image.yaml +0 -0
  49. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_mcp/test_tool_returning_image_resource.yaml +0 -0
  50. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_mcp/test_tool_returning_image_resource_link.yaml +0 -0
  51. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_mcp/test_tool_returning_multiple_items.yaml +0 -0
  52. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_mcp/test_tool_returning_none.yaml +0 -0
  53. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_mcp/test_tool_returning_str.yaml +0 -0
  54. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_mcp/test_tool_returning_text_resource.yaml +0 -0
  55. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_mcp/test_tool_returning_text_resource_link.yaml +0 -0
  56. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_mcp/test_tool_returning_unstructured_dict.yaml +0 -0
  57. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_settings/test_stop_settings[anthropic].yaml +0 -0
  58. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_settings/test_stop_settings[bedrock].yaml +0 -0
  59. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_settings/test_stop_settings[cohere].yaml +0 -0
  60. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_settings/test_stop_settings[gemini].yaml +0 -0
  61. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_settings/test_stop_settings[google].yaml +0 -0
  62. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_settings/test_stop_settings[groq].yaml +0 -0
  63. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_settings/test_stop_settings[mistral].yaml +0 -0
  64. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_settings/test_stop_settings[openai].yaml +0 -0
  65. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_temporal/test_complex_agent_run.yaml +0 -0
  66. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_temporal/test_complex_agent_run_in_workflow.yaml +0 -0
  67. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_temporal/test_complex_agent_run_stream_in_workflow.yaml +0 -0
  68. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_temporal/test_logfire_plugin.yaml +0 -0
  69. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_temporal/test_multiple_agents.yaml +0 -0
  70. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_temporal/test_simple_agent_run_in_workflow.yaml +0 -0
  71. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_temporal/test_temporal_agent_iter.yaml +0 -0
  72. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_temporal/test_temporal_agent_override_deps_in_workflow.yaml +0 -0
  73. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_temporal/test_temporal_agent_run.yaml +0 -0
  74. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_temporal/test_temporal_agent_run_stream.yaml +0 -0
  75. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_temporal/test_temporal_agent_run_stream_events.yaml +0 -0
  76. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_temporal/test_temporal_agent_run_sync.yaml +0 -0
  77. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_temporal/test_temporal_agent_sync_tool_activity_disabled.yaml +0 -0
  78. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_temporal/test_temporal_agent_with_dataclass_deps_as_dict.yaml +0 -0
  79. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_temporal/test_temporal_agent_with_hitl_tool.yaml +0 -0
  80. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_temporal/test_temporal_agent_with_model_retry.yaml +0 -0
  81. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_temporal/test_temporal_agent_with_non_dict_deps.yaml +0 -0
  82. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/cassettes/test_temporal/test_temporal_agent_with_unserializable_deps_type.yaml +0 -0
  83. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/conftest.py +0 -0
  84. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/evals/__init__.py +0 -0
  85. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/evals/test_dataset.py +0 -0
  86. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/evals/test_evaluator_base.py +0 -0
  87. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/evals/test_evaluator_common.py +0 -0
  88. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/evals/test_evaluator_context.py +0 -0
  89. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/evals/test_evaluator_spec.py +0 -0
  90. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/evals/test_evaluators.py +0 -0
  91. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/evals/test_llm_as_a_judge.py +0 -0
  92. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/evals/test_otel.py +0 -0
  93. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/evals/test_render_numbers.py +0 -0
  94. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/evals/test_reporting.py +0 -0
  95. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/evals/test_reports.py +0 -0
  96. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/evals/test_utils.py +0 -0
  97. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/evals/utils.py +0 -0
  98. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/example_modules/README.md +0 -0
  99. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/example_modules/bank_database.py +0 -0
  100. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/example_modules/fake_database.py +0 -0
  101. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/example_modules/mcp_server.py +0 -0
  102. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/example_modules/weather_service.py +0 -0
  103. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/ext/__init__.py +0 -0
  104. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/ext/test_langchain.py +0 -0
  105. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/graph/__init__.py +0 -0
  106. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/graph/test_file_persistence.py +0 -0
  107. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/graph/test_graph.py +0 -0
  108. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/graph/test_mermaid.py +0 -0
  109. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/graph/test_persistence.py +0 -0
  110. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/graph/test_state.py +0 -0
  111. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/graph/test_utils.py +0 -0
  112. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/import_examples.py +0 -0
  113. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/json_body_serializer.py +0 -0
  114. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/mcp_server.py +0 -0
  115. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/__init__.py +0 -0
  116. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_anthropic_code_execution_tool.yaml +0 -0
  117. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_anthropic_code_execution_tool_stream.yaml +0 -0
  118. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_anthropic_memory_tool.yaml +0 -0
  119. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_anthropic_model_empty_message_on_history.yaml +0 -0
  120. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_anthropic_model_instructions.yaml +0 -0
  121. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part.yaml +0 -0
  122. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_from_other_model.yaml +0 -0
  123. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_redacted.yaml +0 -0
  124. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_redacted_stream.yaml +0 -0
  125. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_stream.yaml +0 -0
  126. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_anthropic_model_web_search_tool_stream.yaml +0 -0
  127. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_anthropic_output_tool_with_thinking.yaml +0 -0
  128. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output.yaml +0 -0
  129. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output_multiple.yaml +0 -0
  130. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_anthropic_server_tool_pass_history_to_another_provider.yaml +0 -0
  131. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_anthropic_server_tool_receive_history_from_another_provider.yaml +0 -0
  132. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_anthropic_text_output_function.yaml +0 -0
  133. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_anthropic_text_parts_ahead_of_built_in_tool_call.yaml +0 -0
  134. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_anthropic_tool_output.yaml +0 -0
  135. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_anthropic_tool_with_thinking.yaml +0 -0
  136. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_anthropic_web_search_tool.yaml +0 -0
  137. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_anthropic_web_search_tool_stream.yaml +0 -0
  138. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_document_binary_content_input.yaml +0 -0
  139. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_document_url_input.yaml +0 -0
  140. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_extra_headers.yaml +0 -0
  141. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_image_as_binary_content_tool_response.yaml +0 -0
  142. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_image_url_input.yaml +0 -0
  143. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +0 -0
  144. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_multiple_parallel_tool_calls.yaml +0 -0
  145. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_anthropic/test_text_document_url_input.yaml +0 -0
  146. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_bedrock_anthropic_tool_with_thinking.yaml +0 -0
  147. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_bedrock_empty_system_prompt.yaml +0 -0
  148. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml +0 -0
  149. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_bedrock_model_anthropic_model_without_tools.yaml +0 -0
  150. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_bedrock_model_guardrail_config.yaml +0 -0
  151. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_bedrock_model_instructions.yaml +0 -0
  152. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_bedrock_model_iter_stream.yaml +0 -0
  153. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_bedrock_model_max_tokens.yaml +0 -0
  154. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_bedrock_model_other_parameters.yaml +0 -0
  155. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_bedrock_model_performance_config.yaml +0 -0
  156. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_bedrock_model_retry.yaml +0 -0
  157. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream.yaml +0 -0
  158. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_bedrock_model_structured_output.yaml +0 -0
  159. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_anthropic.yaml +0 -0
  160. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_deepseek.yaml +0 -0
  161. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_from_other_model.yaml +0 -0
  162. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_redacted.yaml +0 -0
  163. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_redacted_stream.yaml +0 -0
  164. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_stream.yaml +0 -0
  165. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_bedrock_model_top_p.yaml +0 -0
  166. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_bedrock_multiple_documents_in_history.yaml +0 -0
  167. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_document_url_input.yaml +0 -0
  168. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_image_as_binary_content_input.yaml +0 -0
  169. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_image_url_input.yaml +0 -0
  170. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_text_as_binary_content_input.yaml +0 -0
  171. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_text_document_url_input.yaml +0 -0
  172. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_video_as_binary_content_input.yaml +0 -0
  173. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_bedrock/test_video_url_input.yaml +0 -0
  174. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_cohere/test_cohere_model_instructions.yaml +0 -0
  175. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_cohere/test_cohere_model_thinking_part.yaml +0 -0
  176. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_cohere/test_request_simple_success_with_vcr.yaml +0 -0
  177. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_part.yaml +0 -0
  178. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_stream.yaml +0 -0
  179. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_download_item/test_download_item_application_octet_stream.yaml +0 -0
  180. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_download_item/test_download_item_audio_mpeg.yaml +0 -0
  181. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_download_item/test_download_item_no_content_type.yaml +0 -0
  182. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini/test_document_url_input.yaml +0 -0
  183. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_false.yaml +0 -0
  184. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_true.yaml +0 -0
  185. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini/test_gemini_drop_exclusive_maximum.yaml +0 -0
  186. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini/test_gemini_exclusive_minimum_and_maximum.yaml +0 -0
  187. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini/test_gemini_model_instructions.yaml +0 -0
  188. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini/test_gemini_model_thinking_part.yaml +0 -0
  189. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini/test_gemini_native_output.yaml +0 -0
  190. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini/test_gemini_native_output_multiple.yaml +0 -0
  191. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini/test_gemini_prompted_output.yaml +0 -0
  192. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_multiple.yaml +0 -0
  193. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_with_tools.yaml +0 -0
  194. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini/test_gemini_text_output_function.yaml +0 -0
  195. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini/test_gemini_tool_config_any_with_tool_without_args.yaml +0 -0
  196. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini/test_gemini_tool_output.yaml +0 -0
  197. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini/test_gemini_youtube_video_url_input.yaml +0 -0
  198. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini/test_image_as_binary_content_input.yaml +0 -0
  199. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini/test_image_as_binary_content_tool_response.yaml +0 -0
  200. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini/test_image_url_input.yaml +0 -0
  201. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini/test_labels_are_ignored_with_gla_provider.yaml +0 -0
  202. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini/test_video_as_binary_content_input.yaml +0 -0
  203. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini/test_video_url_input.yaml +0 -0
  204. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini_vertex/test_labels.yaml +0 -0
  205. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl (gs)].yaml +0 -0
  206. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl].yaml +0 -0
  207. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl (gs)].yaml +0 -0
  208. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl].yaml +0 -0
  209. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl (gs)].yaml +0 -0
  210. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl].yaml +0 -0
  211. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (YouTube)].yaml +0 -0
  212. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (gs)].yaml +0 -0
  213. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl].yaml +0 -0
  214. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_gemini_vertex/test_url_input_force_download.yaml +0 -0
  215. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_builtin_tools_with_other_tools.yaml +0 -0
  216. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_image_and_text_output.yaml +0 -0
  217. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_image_generation.yaml +0 -0
  218. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_image_generation_stream.yaml +0 -0
  219. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_image_generation_with_text.yaml +0 -0
  220. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_image_or_text_output.yaml +0 -0
  221. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model.yaml +0 -0
  222. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_builtin_code_execution_stream.yaml +0 -0
  223. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_code_execution_tool.yaml +0 -0
  224. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_document_url_input.yaml +0 -0
  225. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_empty_assistant_response.yaml +0 -0
  226. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_empty_user_prompt.yaml +0 -0
  227. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_image_as_binary_content_input.yaml +0 -0
  228. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_image_url_input.yaml +0 -0
  229. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_instructions.yaml +0 -0
  230. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_iter_stream.yaml +0 -0
  231. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_max_tokens.yaml +0 -0
  232. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_multiple_documents_in_history.yaml +0 -0
  233. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_receive_web_search_history_from_another_provider.yaml +0 -0
  234. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_retry.yaml +0 -0
  235. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_safety_settings.yaml +0 -0
  236. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_server_tool_receive_history_from_another_provider.yaml +0 -0
  237. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_stream.yaml +0 -0
  238. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_structured_output.yaml +0 -0
  239. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_text_as_binary_content_input.yaml +0 -0
  240. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_text_document_url_input.yaml +0 -0
  241. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_thinking_config.yaml +0 -0
  242. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_thinking_part.yaml +0 -0
  243. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_thinking_part_from_other_model.yaml +0 -0
  244. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_thinking_part_iter.yaml +0 -0
  245. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_top_p.yaml +0 -0
  246. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_url_context_tool.yaml +0 -0
  247. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_usage_limit_exceeded.yaml +0 -0
  248. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_usage_limit_not_exceeded.yaml +0 -0
  249. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_vertex_labels.yaml +0 -0
  250. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_vertex_provider.yaml +0 -0
  251. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input.yaml +0 -0
  252. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input_with_vendor_metadata.yaml +0 -0
  253. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_video_url_input.yaml +0 -0
  254. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_web_search_tool.yaml +0 -0
  255. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_web_search_tool_stream.yaml +0 -0
  256. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_model_youtube_video_url_input_with_vendor_metadata.yaml +0 -0
  257. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_multiple_images.yaml +0 -0
  258. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_native_output.yaml +0 -0
  259. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_native_output_multiple.yaml +0 -0
  260. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_prompted_output.yaml +0 -0
  261. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_prompted_output_multiple.yaml +0 -0
  262. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_prompted_output_with_tools.yaml +0 -0
  263. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_text_output_function.yaml +0 -0
  264. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_timeout.yaml +0 -0
  265. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_tool_config_any_with_tool_without_args.yaml +0 -0
  266. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_tool_output.yaml +0 -0
  267. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl (gs)].yaml +0 -0
  268. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl].yaml +0 -0
  269. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl (gs)].yaml +0 -0
  270. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl].yaml +0 -0
  271. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl (gs)].yaml +0 -0
  272. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl].yaml +0 -0
  273. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (YouTube)].yaml +0 -0
  274. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (gs)].yaml +0 -0
  275. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl].yaml +0 -0
  276. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_url_input_force_download.yaml +0 -0
  277. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_vertexai_image_generation.yaml +0 -0
  278. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_google/test_google_vertexai_model_usage_limit_exceeded.yaml +0 -0
  279. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_groq/test_extra_headers.yaml +0 -0
  280. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_groq/test_groq_model_instructions.yaml +0 -0
  281. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_groq/test_groq_model_thinking_part.yaml +0 -0
  282. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_groq/test_groq_model_thinking_part_iter.yaml +0 -0
  283. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_groq/test_groq_model_web_search_tool.yaml +0 -0
  284. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_groq/test_groq_model_web_search_tool_stream.yaml +0 -0
  285. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_groq/test_groq_native_output.yaml +0 -0
  286. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_groq/test_groq_prompted_output.yaml +0 -0
  287. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_groq/test_image_as_binary_content_input.yaml +0 -0
  288. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_groq/test_image_as_binary_content_tool_response.yaml +0 -0
  289. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_groq/test_image_url_input.yaml +0 -0
  290. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_groq/test_tool_regular_error.yaml +0 -0
  291. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_groq/test_tool_use_failed_error.yaml +0 -0
  292. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_groq/test_tool_use_failed_error_streaming.yaml +0 -0
  293. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_huggingface/test_hf_model_instructions.yaml +0 -0
  294. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part.yaml +0 -0
  295. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part_iter.yaml +0 -0
  296. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_huggingface/test_image_as_binary_content_input.yaml +0 -0
  297. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_huggingface/test_image_url_input.yaml +0 -0
  298. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[Qwen-Qwen2.5-72B-Instruct].yaml +0 -0
  299. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[deepseek-ai-DeepSeek-R1-0528].yaml +0 -0
  300. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[meta-llama-Llama-3.3-70B-Instruct].yaml +0 -0
  301. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_huggingface/test_request_simple_success_with_vcr.yaml +0 -0
  302. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_huggingface/test_request_simple_usage.yaml +0 -0
  303. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_huggingface/test_simple_completion.yaml +0 -0
  304. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_huggingface/test_stream_completion.yaml +0 -0
  305. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_mistral/test_image_as_binary_content_tool_response.yaml +0 -0
  306. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_mistral/test_mistral_model_instructions.yaml +0 -0
  307. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part.yaml +0 -0
  308. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part_iter.yaml +0 -0
  309. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_model_names/test_known_model_names.yaml +0 -0
  310. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_audio_as_binary_content_input.yaml +0 -0
  311. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_compatible_api_with_tool_calls_without_id.yaml +0 -0
  312. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_document_as_binary_content_input.yaml +0 -0
  313. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_document_as_binary_content_input_with_tool.yaml +0 -0
  314. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_document_url_input.yaml +0 -0
  315. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_extra_headers.yaml +0 -0
  316. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_image_as_binary_content_input.yaml +0 -0
  317. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_image_as_binary_content_tool_response.yaml +0 -0
  318. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_image_url_input_force_download.yaml +0 -0
  319. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_image_url_input_force_download_response_api.yaml +0 -0
  320. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_image_url_tool_response.yaml +0 -0
  321. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_invalid_response.yaml +0 -0
  322. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4.5-preview].yaml +0 -0
  323. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4o-mini].yaml +0 -0
  324. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_max_completion_tokens[o3-mini].yaml +0 -0
  325. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_multiple_agent_tool_calls.yaml +0 -0
  326. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_openai_audio_url_input.yaml +0 -0
  327. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_openai_instructions.yaml +0 -0
  328. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_openai_instructions_with_tool_calls_keep_instructions.yaml +0 -0
  329. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider.yaml +0 -0
  330. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider_harmony.yaml +0 -0
  331. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider_qwen_3_coder.yaml +0 -0
  332. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_openai_model_settings_temperature_ignored_on_gpt_5.yaml +0 -0
  333. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_openai_model_thinking_part.yaml +0 -0
  334. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_openai_model_without_system_prompt.yaml +0 -0
  335. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_openai_native_output.yaml +0 -0
  336. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_openai_native_output_multiple.yaml +0 -0
  337. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[developer].yaml +0 -0
  338. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[system].yaml +0 -0
  339. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_openai_prompted_output.yaml +0 -0
  340. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_openai_prompted_output_multiple.yaml +0 -0
  341. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_openai_text_output_function.yaml +0 -0
  342. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_openai_tool_output.yaml +0 -0
  343. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_openai_web_search_tool.yaml +0 -0
  344. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_openai_web_search_tool_model_not_supported.yaml +0 -0
  345. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_openai_web_search_tool_with_user_location.yaml +0 -0
  346. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_reasoning_model_with_temperature.yaml +0 -0
  347. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_system_prompt_role_o1_mini.yaml +0 -0
  348. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_text_document_as_binary_content_input.yaml +0 -0
  349. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_text_document_url_input.yaml +0 -0
  350. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_text_response.yaml +0 -0
  351. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_user_id.yaml +0 -0
  352. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai/test_valid_response.yaml +0 -0
  353. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_audio_as_binary_content_input.yaml +0 -0
  354. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_input.yaml +0 -0
  355. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_tool_response.yaml +0 -0
  356. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_native_output.yaml +0 -0
  357. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_native_output_multiple.yaml +0 -0
  358. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_previous_response_id.yaml +0 -0
  359. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_previous_response_id_auto_mode.yaml +0 -0
  360. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_code_execution_return_image.yaml +0 -0
  361. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_code_execution_return_image_stream.yaml +0 -0
  362. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_as_binary_content_input.yaml +0 -0
  363. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_url_input.yaml +0 -0
  364. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_and_text_output.yaml +0 -0
  365. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation.yaml +0 -0
  366. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_jpeg.yaml +0 -0
  367. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_stream.yaml +0 -0
  368. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_tool_without_image_output.yaml +0 -0
  369. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_with_native_output.yaml +0 -0
  370. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_with_prompted_output.yaml +0 -0
  371. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_with_tool_output.yaml +0 -0
  372. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_with_tools.yaml +0 -0
  373. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_or_text_output.yaml +0 -0
  374. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_url_input.yaml +0 -0
  375. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools.yaml +0 -0
  376. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools_web_search.yaml +0 -0
  377. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_http_error.yaml +0 -0
  378. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_instructions.yaml +0 -0
  379. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_retry.yaml +0 -0
  380. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response.yaml +0 -0
  381. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response_with_tool_call.yaml +0 -0
  382. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_thinking_part.yaml +0 -0
  383. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool.yaml +0 -0
  384. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_stream.yaml +0 -0
  385. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_with_invalid_region.yaml +0 -0
  386. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_with_user_location.yaml +0 -0
  387. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_multiple_images.yaml +0 -0
  388. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_non_reasoning_model_no_item_ids.yaml +0 -0
  389. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_output_type.yaml +0 -0
  390. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_effort.yaml +0 -0
  391. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_generate_summary.yaml +0 -0
  392. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_stream.yaml +0 -0
  393. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_streaming_usage.yaml +0 -0
  394. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_system_prompt.yaml +0 -0
  395. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_text_document_url_input.yaml +0 -0
  396. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_part_from_other_model.yaml +0 -0
  397. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_part_iter.yaml +0 -0
  398. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_code_execution_tool.yaml +0 -0
  399. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_code_execution_tool_stream.yaml +0 -0
  400. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_modified_history.yaml +0 -0
  401. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_tool_calls.yaml +0 -0
  402. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_openai_responses_verbosity.yaml +0 -0
  403. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_prompted_output.yaml +0 -0
  404. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_prompted_output_multiple.yaml +0 -0
  405. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_reasoning_model_with_temperature.yaml +0 -0
  406. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_text_output_function.yaml +0 -0
  407. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/cassettes/test_openai_responses/test_tool_output.yaml +0 -0
  408. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/mock_async_stream.py +0 -0
  409. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/mock_openai.py +0 -0
  410. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/test_anthropic.py +0 -0
  411. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/test_bedrock.py +0 -0
  412. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/test_cohere.py +0 -0
  413. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/test_deepseek.py +0 -0
  414. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/test_download_item.py +0 -0
  415. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/test_fallback.py +0 -0
  416. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/test_gemini.py +0 -0
  417. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/test_gemini_vertex.py +0 -0
  418. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/test_google.py +0 -0
  419. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/test_groq.py +0 -0
  420. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/test_huggingface.py +0 -0
  421. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/test_instrumented.py +0 -0
  422. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/test_mcp_sampling.py +0 -0
  423. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/test_mistral.py +0 -0
  424. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/test_model.py +0 -0
  425. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/test_model_function.py +0 -0
  426. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/test_model_names.py +0 -0
  427. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/test_model_request_parameters.py +0 -0
  428. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/test_model_settings.py +0 -0
  429. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/test_model_test.py +0 -0
  430. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/models/test_openai.py +0 -0
  431. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/parts_from_messages.py +0 -0
  432. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/__init__.py +0 -0
  433. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/cassettes/test_azure/test_azure_provider_call.yaml +0 -0
  434. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_anthropic.yaml +0 -0
  435. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_google_vertex.yaml +0 -0
  436. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_groq.yaml +0 -0
  437. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_openai.yaml +0 -0
  438. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_openai_responses.yaml +0 -0
  439. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/cassettes/test_google_vertex/test_vertexai_provider.yaml +0 -0
  440. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/cassettes/test_heroku/test_heroku_model_provider_claude_3_7_sonnet.yaml +0 -0
  441. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/cassettes/test_openrouter/test_openrouter_with_google_model.yaml +0 -0
  442. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/test_anthropic.py +0 -0
  443. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/test_azure.py +0 -0
  444. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/test_bedrock.py +0 -0
  445. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/test_cerebras.py +0 -0
  446. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/test_cohere.py +0 -0
  447. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/test_deepseek.py +0 -0
  448. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/test_fireworks.py +0 -0
  449. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/test_gateway.py +0 -0
  450. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/test_github.py +0 -0
  451. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/test_google_gla.py +0 -0
  452. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/test_google_vertex.py +0 -0
  453. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/test_grok.py +0 -0
  454. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/test_groq.py +0 -0
  455. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/test_heroku.py +0 -0
  456. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/test_huggingface.py +0 -0
  457. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/test_litellm.py +0 -0
  458. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/test_mistral.py +0 -0
  459. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/test_moonshotai.py +0 -0
  460. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/test_ollama.py +0 -0
  461. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/test_openai.py +0 -0
  462. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/test_openrouter.py +0 -0
  463. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/test_together.py +0 -0
  464. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/providers/test_vercel.py +0 -0
  465. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_a2a.py +0 -0
  466. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_ag_ui.py +0 -0
  467. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_agent.py +0 -0
  468. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_builtin_tools.py +0 -0
  469. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_cli.py +0 -0
  470. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_deps.py +0 -0
  471. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_direct.py +0 -0
  472. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_format_as_xml.py +0 -0
  473. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_function_schema.py +0 -0
  474. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_history_processor.py +0 -0
  475. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_json_body_serializer.py +0 -0
  476. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_live.py +0 -0
  477. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_logfire.py +0 -0
  478. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_mcp.py +0 -0
  479. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_messages.py +0 -0
  480. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_parts_manager.py +0 -0
  481. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_settings.py +0 -0
  482. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_streaming.py +0 -0
  483. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_tenacity.py +0 -0
  484. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_thinking_part.py +0 -0
  485. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_tools.py +0 -0
  486. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_toolsets.py +0 -0
  487. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_usage_limits.py +0 -0
  488. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/test_utils.py +0 -0
  489. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/typed_agent.py +0 -0
  490. {pydantic_ai-1.0.17 → pydantic_ai-1.0.18}/tests/typed_graph.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pydantic-ai
3
- Version: 1.0.17
3
+ Version: 1.0.18
4
4
  Summary: Agent Framework / shim to use Pydantic with LLMs
5
5
  Project-URL: Homepage, https://ai.pydantic.dev
6
6
  Project-URL: Source, https://github.com/pydantic/pydantic-ai
@@ -26,13 +26,13 @@ Classifier: Topic :: Internet
26
26
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
27
27
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
28
28
  Requires-Python: >=3.10
29
- Requires-Dist: pydantic-ai-slim[ag-ui,anthropic,bedrock,cli,cohere,evals,google,groq,huggingface,logfire,mcp,mistral,openai,retries,temporal,vertexai]==1.0.17
29
+ Requires-Dist: pydantic-ai-slim[ag-ui,anthropic,bedrock,cli,cohere,evals,google,groq,huggingface,logfire,mcp,mistral,openai,retries,temporal,vertexai]==1.0.18
30
30
  Provides-Extra: a2a
31
31
  Requires-Dist: fasta2a>=0.4.1; extra == 'a2a'
32
32
  Provides-Extra: dbos
33
- Requires-Dist: pydantic-ai-slim[dbos]==1.0.17; extra == 'dbos'
33
+ Requires-Dist: pydantic-ai-slim[dbos]==1.0.18; extra == 'dbos'
34
34
  Provides-Extra: examples
35
- Requires-Dist: pydantic-ai-examples==1.0.17; extra == 'examples'
35
+ Requires-Dist: pydantic-ai-examples==1.0.18; extra == 'examples'
36
36
  Description-Content-Type: text/markdown
37
37
 
38
38
  <div align="center">
@@ -76,7 +76,7 @@ We built Pydantic AI with one simple aim: to bring that FastAPI feeling to GenAI
76
76
  [Pydantic Validation](https://docs.pydantic.dev/latest/) is the validation layer of the OpenAI SDK, the Google ADK, the Anthropic SDK, LangChain, LlamaIndex, AutoGPT, Transformers, CrewAI, Instructor and many more. _Why use the derivative when you can go straight to the source?_ :smiley:
77
77
 
78
78
  2. **Model-agnostic**:
79
- Supports virtually every [model](https://ai.pydantic.dev/models/overview) and provider: OpenAI, Anthropic, Gemini, DeepSeek, Grok, Cohere, Mistral, and Perplexity; Azure AI Foundry, Amazon Bedrock, Google Vertex AI, Ollama, LiteLLM, Groq, OpenRouter, Together AI, Fireworks AI, Cerebras, Hugging Face, GitHub, Heroku, Vercel. If your favorite model or provider is not listed, you can easily implement a [custom model](https://ai.pydantic.dev/models/overview#custom-models).
79
+ Supports virtually every [model](https://ai.pydantic.dev/models/overview) and provider: OpenAI, Anthropic, Gemini, DeepSeek, Grok, Cohere, Mistral, and Perplexity; Azure AI Foundry, Amazon Bedrock, Google Vertex AI, Ollama, LiteLLM, Groq, OpenRouter, Together AI, Fireworks AI, Cerebras, Hugging Face, GitHub, Heroku, Vercel, Nebius. If your favorite model or provider is not listed, you can easily implement a [custom model](https://ai.pydantic.dev/models/overview#custom-models).
80
80
 
81
81
  3. **Seamless Observability**:
82
82
  Tightly [integrates](https://ai.pydantic.dev/logfire) with [Pydantic Logfire](https://pydantic.dev/logfire), our general-purpose OpenTelemetry observability platform, for real-time debugging, evals-based performance monitoring, and behavior, tracing, and cost tracking. If you already have an observability platform that supports OTel, you can [use that too](https://ai.pydantic.dev/logfire#alternative-observability-backends).
@@ -39,7 +39,7 @@ We built Pydantic AI with one simple aim: to bring that FastAPI feeling to GenAI
39
39
  [Pydantic Validation](https://docs.pydantic.dev/latest/) is the validation layer of the OpenAI SDK, the Google ADK, the Anthropic SDK, LangChain, LlamaIndex, AutoGPT, Transformers, CrewAI, Instructor and many more. _Why use the derivative when you can go straight to the source?_ :smiley:
40
40
 
41
41
  2. **Model-agnostic**:
42
- Supports virtually every [model](https://ai.pydantic.dev/models/overview) and provider: OpenAI, Anthropic, Gemini, DeepSeek, Grok, Cohere, Mistral, and Perplexity; Azure AI Foundry, Amazon Bedrock, Google Vertex AI, Ollama, LiteLLM, Groq, OpenRouter, Together AI, Fireworks AI, Cerebras, Hugging Face, GitHub, Heroku, Vercel. If your favorite model or provider is not listed, you can easily implement a [custom model](https://ai.pydantic.dev/models/overview#custom-models).
42
+ Supports virtually every [model](https://ai.pydantic.dev/models/overview) and provider: OpenAI, Anthropic, Gemini, DeepSeek, Grok, Cohere, Mistral, and Perplexity; Azure AI Foundry, Amazon Bedrock, Google Vertex AI, Ollama, LiteLLM, Groq, OpenRouter, Together AI, Fireworks AI, Cerebras, Hugging Face, GitHub, Heroku, Vercel, Nebius. If your favorite model or provider is not listed, you can easily implement a [custom model](https://ai.pydantic.dev/models/overview#custom-models).
43
43
 
44
44
  3. **Seamless Observability**:
45
45
  Tightly [integrates](https://ai.pydantic.dev/logfire) with [Pydantic Logfire](https://pydantic.dev/logfire), our general-purpose OpenTelemetry observability platform, for real-time debugging, evals-based performance monitoring, and behavior, tracing, and cost tracking. If you already have an observability platform that supports OTel, you can [use that too](https://ai.pydantic.dev/logfire#alternative-observability-backends).
@@ -0,0 +1,148 @@
1
+ interactions:
2
+ - request:
3
+ headers:
4
+ accept:
5
+ - application/json
6
+ accept-encoding:
7
+ - gzip, deflate
8
+ connection:
9
+ - keep-alive
10
+ content-length:
11
+ - '834'
12
+ content-type:
13
+ - application/json
14
+ host:
15
+ - api.openai.com
16
+ method: POST
17
+ parsed_body:
18
+ include:
19
+ - reasoning.encrypted_content
20
+ input:
21
+ - content: What is the largest city in the user country?
22
+ role: user
23
+ - arguments: '{}'
24
+ call_id: call_ZWkVhdUjupo528U9dqgFeRkH
25
+ id: fc_68477f0bb8e4819cba6d781e174d77f8001fd29e2d5573f7
26
+ name: get_user_country
27
+ type: function_call
28
+ - call_id: call_ZWkVhdUjupo528U9dqgFeRkH
29
+ output: Mexico
30
+ type: function_call_output
31
+ - content: What is the largest city in the user country?
32
+ role: user
33
+ model: gpt-5
34
+ previous_response_id: null
35
+ stream: false
36
+ tool_choice: required
37
+ tools:
38
+ - description: The final response which ends this conversation
39
+ name: final_result
40
+ parameters:
41
+ additionalProperties: false
42
+ properties:
43
+ city:
44
+ type: string
45
+ country:
46
+ type: string
47
+ required:
48
+ - city
49
+ - country
50
+ type: object
51
+ strict: true
52
+ type: function
53
+ uri: https://api.openai.com/v1/responses
54
+ response:
55
+ headers:
56
+ alt-svc:
57
+ - h3=":443"; ma=86400
58
+ connection:
59
+ - keep-alive
60
+ content-length:
61
+ - '5572'
62
+ content-type:
63
+ - application/json
64
+ openai-organization:
65
+ - pydantic-28gund
66
+ openai-processing-ms:
67
+ - '6305'
68
+ openai-project:
69
+ - proj_dKobscVY9YJxeEaDJen54e3d
70
+ openai-version:
71
+ - '2020-10-01'
72
+ strict-transport-security:
73
+ - max-age=31536000; includeSubDomains; preload
74
+ transfer-encoding:
75
+ - chunked
76
+ parsed_body:
77
+ background: false
78
+ billing:
79
+ payer: developer
80
+ created_at: 1760355047
81
+ error: null
82
+ id: resp_001fd29e2d5573f70068ece2e6dfbc819c96557f0de72802be
83
+ incomplete_details: null
84
+ instructions: null
85
+ max_output_tokens: null
86
+ max_tool_calls: null
87
+ metadata: {}
88
+ model: gpt-5-2025-08-07
89
+ object: response
90
+ output:
91
+ - encrypted_content: gAAAAABo7OLt_-yMcMz15n_JkwU0selGH2vqiwJDNU86YIjY_jQLXid4usIFjjCppiyOnJjtU_C6e7jUIKnfZRBt1DHVFMGpAVvTBZBVdJhXl0ypGjkAj3Wv_3ecAG9oU3DoUMKrbwEMqL0LaSfNSN1qgCTt-RL2sgeEDgFeiOpX40BWgS8tVMfR4_qBxJcp8KeYvw5niPgwcMF3UPIEjHlaVpglJH2SzZtTOdxeFDfYbnvdWTMvwYFIc0jKOREG_-hZE4AznhHdSLV2-I5nGlxuxqaI4GQCk-Fp8Cvcy15_NYYP62ii50VlR6HPp_gQZEetwgC5pThsiuuG7-n1hGOnsj8gZyjSKsMe2KpzlYzhT7ighmArDVEx8Utvp1FXikqGkEzt4RTqqPInp9kuvqQTSyd8JZ6BEetRl1EuZXT7zXrzLwFN7Vm_gqixmf6mLXZUw6vg6LqGkhSh5fo6C7akPTwwJXjVJ37Dzfejo6RiVKOT-_9sdYCHW2kZ9XfQAmRQfB97UpSZ8QrVfaKy_uRIHLexs8QrQvKuw-uHDQBAL3OEmSTzHzCQ-q7b0FHr514Z29l9etavHNVdpeleWGo6VEtLWGQyblIdIBtf946YnQvr6NYIR8uATn9Z91rr8FsFJTpJh_v5iGA2f8rfPRu27nmw-q8XnPVc_FYCZDk08r_YhdEJZn1INBi8wYSWmpib8VxNpkFO7FFRuK-F8rh3MTpYgIOqPQYbf3LCRvKukTwv1b3mjSKVpHQSm_s6s7djdD-rLuc22-3_MLd0ii4_oOT8w51TQIM61LtonGvxUqf4oKHSUFCVnrWWiT-0ttdpwpJ_iB5frnEeY2mWyU1u7sd38BI3dOzoM82IFaIm98g9fa99bmoA7Z7gI60tzyF8YbJmWF-PCwyKHJ7B1MbCBonO36NmeEM-SplrR54fGykxTmwvtbYGhd5f0cdYzD0zulRDj-AhOd96rrUB_fIgoQGTXey8L_w0whcnVTWdG6is-rx8373Sz8ZRoE5RiLWW1mfHzVXxwslphx4BedRVF0tL-1YO7sg5MXhHCf6hpw8dOht-21NMrb1F1DQadFE_fhySFl-TgOD5BlhAuupLMsqcCIa4lcXP_loyA4ERP6WSdz2Bybz7_1eOiflfVodRrNqvr_DnL0NEXD_JkYTeIn84ziarFV7U7ZnkMvRiA_p1fWdbHTsE_8lu1rsf8fcJ1e76_6ycPkOc4TrOZw8gVRb7gIbMMVrv72BT_sFhW7GkXrzCQpQaeybmRw-bjFhkMMjMDYGXkA_H0q2Zfyh3zCOoa40hl2cqRWp7n1XuafmtKG_F8e9hyWox0q7AhZr5HOOaHz8r3O3-dmNl1KP52bqA8S72rLDslAOQlDupmAQgAmkm5ApYeYcEBredN78jHQ1pviUEI2-3qr4ClXZFHPa54AJ_q4HQ-EcKXEcYQglG21mSUy_tFQF-m4X46Qu8yYWcBVW4E0CG3wbvYx0BCdbc5RhIDkJo1elxLK8XS64lpFkCWy62xLVeMuVuCj8q84-Kk7tZ7gtMtLV9PHQCdbl3s2pAzMfuNIBJog6-HPmwha2n9T0Md5qF7OqCtnYWOWUfIMmQVcdW-ECGsQy9uIUmpsOjdtH31hrX3MUEhIOUB5xErLwfp-_s22ciAY_ap3JlYAiTKGlMCxKxTzK7wWEG_nYhDXC1Afj2z-tgvYhtn9MyDf2v0aIpDM9BoTOLEO-ButzylJ06pJlrJhpdvklvwJxUiuhlwy0bHNilb4Zv4QwnUv3DCrIeKe1ne90vEXe6YlDwSMeWJcz1DZIQBvVcNlN8q2y8Rae3lMWzsvD0YXrcXp02ckYoLSOQZgNYviGYLsgRgPGiIkncjSDt7WWV6td3l-zTrP6MT_hKigmg5F5_F6tS1bKb0jlQBZd0NP-_L_TPqMGRjCYG8johd6VyMiagslDjxG39Dh2wyTI19ZW7h_AOuOpnfkt2armqiq6iGfevA3malqkNakb6mFAS04J9O0butWVAw4yiPCEcLuDNAzzi_qrqLee4gkjh0NplvfGCaE6qqYms61GJbJC4wge6vjyTakurbqWEV3YoR3y_dn-0pjQ7TOx9kkruDwg0nZIV5O6yYxaulmbuvo3fs5CZb9ptZPD0MzGZj7CZU2MDCa4a4gr0McOx2MricxSzIu6emuRUzZuC6C1JxPRC00M0TrZNMIe_WVa9fXDLV1ULEAIMwMXzNT9zV6yiYQCwhkp30Wqde3W0LlIRpSbDuJXcvT8OCbXkdPNIScccdT9LvUQQ--hU2P45kisOev3TYn7yv-pdxM3u1KFNwuFxedSArMBPg7GDz1BOxDQRzv0mfwbf_CcoFbuyj7Tf4zWO46HVdHeRNbvIE--bnaSYD-UFaKknp8ZsBQQhBU_2TEca3fKwmg81-g7Vdb28QUZEuPzgE4ekxZejkKpiKqlLC5nJYgvXrqk2H35D51mYdzPs0ST05Mc41x9MFm_YOLxSFyA0yGAKVINmD5wT6kvRflPkgoksd2ryIvo4KMw3oZQKodv5By0mSJ8iX2vhTGylxiM8wj-ICyNuOsaRFrcMSpX7tZbXcDyysApdmx217BSADoQiNZBLngF7ptxc2QGyo3CwuDjaljwmSgL9KeGthd1RJFd826M287IPpCjLM4WRquCL_E0pQryNqOMn-ZEOCAlBjE37290EhkjKbhiGBEnHUvSbhoH4nL47AmunP_Q5aqh5173VfyoyaybuS3fXjQ5WO0kyFjMdD-a7C6PVdwToCTP-TljoF2YnQKCiqUGs9gNHS9mYhQSXzY4uuGlTHLfKB4JKS5_MQHvwI9zCbTvVG854fPuo_2mzSh-y8TSzBWPokhYWI_q095Sh6tOqDIJNMGyjI2GDFRSyKpKhIFCLyU2JEo9B6l91jPlir0XI8ZOQfBd9J0I4JIqnyoj40_1bF1zUDGc014bdGfxazxwlGph_ysKAP39wV7X9DBFS3ZmeSIn-r3s-sci0HmwnJUb2r03m40rFuNTV1cJMAFP7ZY7PQQQ0TtlO_al0uedaOWylLauap_eoRqc6xGJ2rSz1e7cOevksUlAqzK5xknYKHlsW970xuDGHKOZnKPg8O9nb2PKrcjwEQF5RFPc3l8TtOUXPhhvTERZFGoEuGuSuSp1cJhzba06yPnL-wE3CstYUm3jvkaUme6kKqM4tWBCQDg-_2PYf24xXYlmkIklylskqId826Y3pVVUd7e0vQO0POPeVYU1qwtTp7Ln-MhYEWexxptdNkVQ-kWx63w6HXF6_kefSxaf0UcvL8tOV73u7w_udle9MC_TXgwJZpoW2tSi5HETjQ_i28FAP2iJmclWOm3gP08cMiXvgpTpjzh6meBdvKepnifl_ivPzRnyjz3mYCZH-UJ4LmOHIonv-8arnckhCwHoFIpaIX7eSZyY0JcbBETKImtUwrlTSlbD8l02KDtqw2FJURtEWI5dC1sTS8c2HcyjXyQDA9A25a0M1yIgZyaadODGQ1zoa9xXB
92
+ id: rs_001fd29e2d5573f70068ece2e816fc819c82755f049c987ea4
93
+ summary: []
94
+ type: reasoning
95
+ - arguments: '{"city":"Mexico City","country":"Mexico"}'
96
+ call_id: call_LIXPi261Xx3dGYzlDsOoyHGk
97
+ id: fc_001fd29e2d5573f70068ece2ecc140819c97ca83bd4647a717
98
+ name: final_result
99
+ status: completed
100
+ type: function_call
101
+ parallel_tool_calls: true
102
+ previous_response_id: null
103
+ prompt_cache_key: null
104
+ reasoning:
105
+ effort: medium
106
+ summary: null
107
+ safety_identifier: null
108
+ service_tier: default
109
+ status: completed
110
+ store: true
111
+ temperature: 1.0
112
+ text:
113
+ format:
114
+ type: text
115
+ verbosity: medium
116
+ tool_choice: required
117
+ tools:
118
+ - description: The final response which ends this conversation
119
+ name: final_result
120
+ parameters:
121
+ additionalProperties: false
122
+ properties:
123
+ city:
124
+ type: string
125
+ country:
126
+ type: string
127
+ required:
128
+ - city
129
+ - country
130
+ type: object
131
+ strict: true
132
+ type: function
133
+ top_logprobs: 0
134
+ top_p: 1.0
135
+ truncation: disabled
136
+ usage:
137
+ input_tokens: 103
138
+ input_tokens_details:
139
+ cached_tokens: 0
140
+ output_tokens: 409
141
+ output_tokens_details:
142
+ reasoning_tokens: 384
143
+ total_tokens: 512
144
+ user: null
145
+ status:
146
+ code: 200
147
+ message: OK
148
+ version: 1
@@ -251,11 +251,13 @@ async def test_openai_responses_model_retry(allow_model_requests: None, openai_a
251
251
  tool_name='get_location',
252
252
  args='{"loc_name":"Londos"}',
253
253
  tool_call_id=IsStr(),
254
+ id='fc_67e547c540648191bc7505ac667e023f0ae6111e84dd5c08',
254
255
  ),
255
256
  ToolCallPart(
256
257
  tool_name='get_location',
257
258
  args='{"loc_name":"London"}',
258
259
  tool_call_id=IsStr(),
260
+ id='fc_67e547c55c3081919da7a3f7fe81a1030ae6111e84dd5c08',
259
261
  ),
260
262
  ],
261
263
  usage=RequestUsage(details={'reasoning_tokens': 0}),
@@ -328,7 +330,14 @@ async def test_image_as_binary_content_tool_response(
328
330
  ]
329
331
  ),
330
332
  ModelResponse(
331
- parts=[ToolCallPart(tool_name='get_image', args='{}', tool_call_id=IsStr())],
333
+ parts=[
334
+ ToolCallPart(
335
+ tool_name='get_image',
336
+ args='{}',
337
+ tool_call_id=IsStr(),
338
+ id='fc_681134d47cf48191b3f62e4d28b6c3820fe7a5a4e2123dc3',
339
+ )
340
+ ],
332
341
  usage=RequestUsage(input_tokens=40, output_tokens=11, details={'reasoning_tokens': 0}),
333
342
  model_name='gpt-4o-2024-08-06',
334
343
  timestamp=IsDatetime(),
@@ -342,7 +351,7 @@ async def test_image_as_binary_content_tool_response(
342
351
  ToolReturnPart(
343
352
  tool_name='get_image',
344
353
  content='See file 1c8566',
345
- tool_call_id='call_FLm3B1f8QAan0KpbUXhNY8bA|fc_681134d47cf48191b3f62e4d28b6c3820fe7a5a4e2123dc3',
354
+ tool_call_id='call_FLm3B1f8QAan0KpbUXhNY8bA',
346
355
  timestamp=IsDatetime(),
347
356
  ),
348
357
  UserPromptPart(
@@ -1275,7 +1284,14 @@ async def test_tool_output(allow_model_requests: None, openai_api_key: str):
1275
1284
  ]
1276
1285
  ),
1277
1286
  ModelResponse(
1278
- parts=[ToolCallPart(tool_name='get_user_country', args='{}', tool_call_id=IsStr())],
1287
+ parts=[
1288
+ ToolCallPart(
1289
+ tool_name='get_user_country',
1290
+ args='{}',
1291
+ tool_call_id=IsStr(),
1292
+ id='fc_68477f0bb8e4819cba6d781e174d77f8001fd29e2d5573f7',
1293
+ )
1294
+ ],
1279
1295
  usage=RequestUsage(input_tokens=62, output_tokens=12, details={'reasoning_tokens': 0}),
1280
1296
  model_name='gpt-4o-2024-08-06',
1281
1297
  timestamp=IsDatetime(),
@@ -1289,7 +1305,7 @@ async def test_tool_output(allow_model_requests: None, openai_api_key: str):
1289
1305
  ToolReturnPart(
1290
1306
  tool_name='get_user_country',
1291
1307
  content='Mexico',
1292
- tool_call_id='call_ZWkVhdUjupo528U9dqgFeRkH|fc_68477f0bb8e4819cba6d781e174d77f8001fd29e2d5573f7',
1308
+ tool_call_id='call_ZWkVhdUjupo528U9dqgFeRkH',
1293
1309
  timestamp=IsDatetime(),
1294
1310
  )
1295
1311
  ]
@@ -1299,7 +1315,8 @@ async def test_tool_output(allow_model_requests: None, openai_api_key: str):
1299
1315
  ToolCallPart(
1300
1316
  tool_name='final_result',
1301
1317
  args='{"city":"Mexico City","country":"Mexico"}',
1302
- tool_call_id='call_iFBd0zULhSZRR908DfH73VwN|fc_68477f0c91cc819e8024e7e633f0f09401dc81d4bc91f560',
1318
+ tool_call_id='call_iFBd0zULhSZRR908DfH73VwN',
1319
+ id='fc_68477f0c91cc819e8024e7e633f0f09401dc81d4bc91f560',
1303
1320
  )
1304
1321
  ],
1305
1322
  usage=RequestUsage(input_tokens=85, output_tokens=20, details={'reasoning_tokens': 0}),
@@ -1315,7 +1332,7 @@ async def test_tool_output(allow_model_requests: None, openai_api_key: str):
1315
1332
  ToolReturnPart(
1316
1333
  tool_name='final_result',
1317
1334
  content='Final result processed.',
1318
- tool_call_id='call_iFBd0zULhSZRR908DfH73VwN|fc_68477f0c91cc819e8024e7e633f0f09401dc81d4bc91f560',
1335
+ tool_call_id='call_iFBd0zULhSZRR908DfH73VwN',
1319
1336
  timestamp=IsDatetime(),
1320
1337
  )
1321
1338
  ]
@@ -1355,7 +1372,8 @@ async def test_text_output_function(allow_model_requests: None, openai_api_key:
1355
1372
  ToolCallPart(
1356
1373
  tool_name='get_user_country',
1357
1374
  args='{}',
1358
- tool_call_id='call_aTJhYjzmixZaVGqwl5gn2Ncr|fc_68477f0dff5c819ea17a1ffbaea621e00356a60c98816d6a',
1375
+ tool_call_id='call_aTJhYjzmixZaVGqwl5gn2Ncr',
1376
+ id='fc_68477f0dff5c819ea17a1ffbaea621e00356a60c98816d6a',
1359
1377
  )
1360
1378
  ],
1361
1379
  usage=RequestUsage(input_tokens=36, output_tokens=12, details={'reasoning_tokens': 0}),
@@ -1371,7 +1389,7 @@ async def test_text_output_function(allow_model_requests: None, openai_api_key:
1371
1389
  ToolReturnPart(
1372
1390
  tool_name='get_user_country',
1373
1391
  content='Mexico',
1374
- tool_call_id='call_aTJhYjzmixZaVGqwl5gn2Ncr|fc_68477f0dff5c819ea17a1ffbaea621e00356a60c98816d6a',
1392
+ tool_call_id='call_aTJhYjzmixZaVGqwl5gn2Ncr',
1375
1393
  timestamp=IsDatetime(),
1376
1394
  )
1377
1395
  ]
@@ -1425,7 +1443,14 @@ async def test_native_output(allow_model_requests: None, openai_api_key: str):
1425
1443
  ]
1426
1444
  ),
1427
1445
  ModelResponse(
1428
- parts=[ToolCallPart(tool_name='get_user_country', args='{}', tool_call_id=IsStr())],
1446
+ parts=[
1447
+ ToolCallPart(
1448
+ tool_name='get_user_country',
1449
+ args='{}',
1450
+ tool_call_id=IsStr(),
1451
+ id='fc_68477f0fa7c081a19a525f7c6f180f310b8591d9001d2329',
1452
+ )
1453
+ ],
1429
1454
  usage=RequestUsage(input_tokens=66, output_tokens=12, details={'reasoning_tokens': 0}),
1430
1455
  model_name='gpt-4o-2024-08-06',
1431
1456
  timestamp=IsDatetime(),
@@ -1439,7 +1464,7 @@ async def test_native_output(allow_model_requests: None, openai_api_key: str):
1439
1464
  ToolReturnPart(
1440
1465
  tool_name='get_user_country',
1441
1466
  content='Mexico',
1442
- tool_call_id='call_tTAThu8l2S9hNky2krdwijGP|fc_68477f0fa7c081a19a525f7c6f180f310b8591d9001d2329',
1467
+ tool_call_id='call_tTAThu8l2S9hNky2krdwijGP',
1443
1468
  timestamp=IsDatetime(),
1444
1469
  )
1445
1470
  ]
@@ -1495,7 +1520,14 @@ async def test_native_output_multiple(allow_model_requests: None, openai_api_key
1495
1520
  ]
1496
1521
  ),
1497
1522
  ModelResponse(
1498
- parts=[ToolCallPart(tool_name='get_user_country', args='{}', tool_call_id=IsStr())],
1523
+ parts=[
1524
+ ToolCallPart(
1525
+ tool_name='get_user_country',
1526
+ args='{}',
1527
+ tool_call_id=IsStr(),
1528
+ id='fc_68477f1168a081a3981e847cd94275080dd57d732903c563',
1529
+ )
1530
+ ],
1499
1531
  usage=RequestUsage(input_tokens=153, output_tokens=12, details={'reasoning_tokens': 0}),
1500
1532
  model_name='gpt-4o-2024-08-06',
1501
1533
  timestamp=IsDatetime(),
@@ -1509,7 +1541,7 @@ async def test_native_output_multiple(allow_model_requests: None, openai_api_key
1509
1541
  ToolReturnPart(
1510
1542
  tool_name='get_user_country',
1511
1543
  content='Mexico',
1512
- tool_call_id='call_UaLahjOtaM2tTyYZLxTCbOaP|fc_68477f1168a081a3981e847cd94275080dd57d732903c563',
1544
+ tool_call_id='call_UaLahjOtaM2tTyYZLxTCbOaP',
1513
1545
  timestamp=IsDatetime(),
1514
1546
  )
1515
1547
  ]
@@ -1568,7 +1600,14 @@ Don't include any text or Markdown fencing before or after.\
1568
1600
  """,
1569
1601
  ),
1570
1602
  ModelResponse(
1571
- parts=[ToolCallPart(tool_name='get_user_country', args='{}', tool_call_id=IsStr())],
1603
+ parts=[
1604
+ ToolCallPart(
1605
+ tool_name='get_user_country',
1606
+ args='{}',
1607
+ tool_call_id=IsStr(),
1608
+ id='fc_68482f1b0ff081a1b37b9170ee740d1e02f8ef7f2fb42b50',
1609
+ )
1610
+ ],
1572
1611
  usage=RequestUsage(input_tokens=107, output_tokens=12, details={'reasoning_tokens': 0}),
1573
1612
  model_name='gpt-4o-2024-08-06',
1574
1613
  timestamp=IsDatetime(),
@@ -1582,7 +1621,7 @@ Don't include any text or Markdown fencing before or after.\
1582
1621
  ToolReturnPart(
1583
1622
  tool_name='get_user_country',
1584
1623
  content='Mexico',
1585
- tool_call_id='call_FrlL4M0CbAy8Dhv4VqF1Shom|fc_68482f1b0ff081a1b37b9170ee740d1e02f8ef7f2fb42b50',
1624
+ tool_call_id='call_FrlL4M0CbAy8Dhv4VqF1Shom',
1586
1625
  timestamp=IsDatetime(),
1587
1626
  )
1588
1627
  ],
@@ -1652,7 +1691,14 @@ Don't include any text or Markdown fencing before or after.\
1652
1691
  """,
1653
1692
  ),
1654
1693
  ModelResponse(
1655
- parts=[ToolCallPart(tool_name='get_user_country', args='{}', tool_call_id=IsStr())],
1694
+ parts=[
1695
+ ToolCallPart(
1696
+ tool_name='get_user_country',
1697
+ args='{}',
1698
+ tool_call_id=IsStr(),
1699
+ id='fc_68482f2889d481a199caa61de7ccb62c08e79646fe74d5ee',
1700
+ )
1701
+ ],
1656
1702
  usage=RequestUsage(input_tokens=283, output_tokens=12, details={'reasoning_tokens': 0}),
1657
1703
  model_name='gpt-4o-2024-08-06',
1658
1704
  timestamp=IsDatetime(),
@@ -1666,7 +1712,7 @@ Don't include any text or Markdown fencing before or after.\
1666
1712
  ToolReturnPart(
1667
1713
  tool_name='get_user_country',
1668
1714
  content='Mexico',
1669
- tool_call_id='call_my4OyoVXRT0m7bLWmsxcaCQI|fc_68482f2889d481a199caa61de7ccb62c08e79646fe74d5ee',
1715
+ tool_call_id='call_my4OyoVXRT0m7bLWmsxcaCQI',
1670
1716
  timestamp=IsDatetime(),
1671
1717
  )
1672
1718
  ],
@@ -2200,7 +2246,8 @@ async def test_openai_responses_thinking_with_tool_calls(allow_model_requests: N
2200
2246
  ToolCallPart(
2201
2247
  tool_name='update_plan',
2202
2248
  args=IsStr(),
2203
- tool_call_id='call_gL7JE6GDeGGsFubqO2XGytyO|fc_68c42d3e9e4881968b15fbb8253f58540e8bc41441c948f6',
2249
+ tool_call_id='call_gL7JE6GDeGGsFubqO2XGytyO',
2250
+ id='fc_68c42d3e9e4881968b15fbb8253f58540e8bc41441c948f6',
2204
2251
  ),
2205
2252
  ],
2206
2253
  usage=RequestUsage(input_tokens=124, output_tokens=1926, details={'reasoning_tokens': 1792}),
@@ -2216,7 +2263,7 @@ async def test_openai_responses_thinking_with_tool_calls(allow_model_requests: N
2216
2263
  ToolReturnPart(
2217
2264
  tool_name='update_plan',
2218
2265
  content='plan updated',
2219
- tool_call_id='call_gL7JE6GDeGGsFubqO2XGytyO|fc_68c42d3e9e4881968b15fbb8253f58540e8bc41441c948f6',
2266
+ tool_call_id='call_gL7JE6GDeGGsFubqO2XGytyO',
2220
2267
  timestamp=IsDatetime(),
2221
2268
  )
2222
2269
  ],
@@ -3380,7 +3427,8 @@ async def test_openai_responses_non_reasoning_model_no_item_ids(allow_model_requ
3380
3427
  ToolCallPart(
3381
3428
  tool_name='get_meaning_of_life',
3382
3429
  args='{}',
3383
- tool_call_id='call_3WCunBU7lCG1HHaLmnnRJn8I|fc_68cc4fa649ac8195b0c6c239cd2c14470548824120ffcf74',
3430
+ tool_call_id='call_3WCunBU7lCG1HHaLmnnRJn8I',
3431
+ id='fc_68cc4fa649ac8195b0c6c239cd2c14470548824120ffcf74',
3384
3432
  )
3385
3433
  ],
3386
3434
  usage=RequestUsage(input_tokens=36, output_tokens=15, details={'reasoning_tokens': 0}),
@@ -3396,7 +3444,7 @@ async def test_openai_responses_non_reasoning_model_no_item_ids(allow_model_requ
3396
3444
  ToolReturnPart(
3397
3445
  tool_name='get_meaning_of_life',
3398
3446
  content=42,
3399
- tool_call_id='call_3WCunBU7lCG1HHaLmnnRJn8I|fc_68cc4fa649ac8195b0c6c239cd2c14470548824120ffcf74',
3447
+ tool_call_id='call_3WCunBU7lCG1HHaLmnnRJn8I',
3400
3448
  timestamp=IsDatetime(),
3401
3449
  )
3402
3450
  ]
@@ -5736,7 +5784,8 @@ async def test_openai_responses_image_generation_with_tool_output(allow_model_re
5736
5784
  ToolCallPart(
5737
5785
  tool_name='final_result',
5738
5786
  args='{"species":"Axolotl","name":"Axie"}',
5739
- tool_call_id='call_eE7MHM5WMJnMt5srV69NmBJk|fc_0360827931d9421b0068dd83918a8c81a08a765e558fd5e071',
5787
+ tool_call_id='call_eE7MHM5WMJnMt5srV69NmBJk',
5788
+ id='fc_0360827931d9421b0068dd83918a8c81a08a765e558fd5e071',
5740
5789
  ),
5741
5790
  ],
5742
5791
  usage=RequestUsage(input_tokens=587, output_tokens=2587, details={'reasoning_tokens': 2560}),
@@ -5752,7 +5801,7 @@ async def test_openai_responses_image_generation_with_tool_output(allow_model_re
5752
5801
  ToolReturnPart(
5753
5802
  tool_name='final_result',
5754
5803
  content='Final result processed.',
5755
- tool_call_id='call_eE7MHM5WMJnMt5srV69NmBJk|fc_0360827931d9421b0068dd83918a8c81a08a765e558fd5e071',
5804
+ tool_call_id='call_eE7MHM5WMJnMt5srV69NmBJk',
5756
5805
  timestamp=IsDatetime(),
5757
5806
  )
5758
5807
  ]
@@ -5947,7 +5996,8 @@ async def test_openai_responses_image_generation_with_tools(allow_model_requests
5947
5996
  ToolCallPart(
5948
5997
  tool_name='get_animal',
5949
5998
  args='{}',
5950
- tool_call_id='call_t76xO1K2zqrJkawkU3tur8vj|fc_0481074da98340df0068dd88f000688191afaf54f799b1dfaf',
5999
+ tool_call_id='call_t76xO1K2zqrJkawkU3tur8vj',
6000
+ id='fc_0481074da98340df0068dd88f000688191afaf54f799b1dfaf',
5951
6001
  ),
5952
6002
  ],
5953
6003
  usage=RequestUsage(input_tokens=389, output_tokens=721, details={'reasoning_tokens': 704}),
@@ -5963,7 +6013,7 @@ async def test_openai_responses_image_generation_with_tools(allow_model_requests
5963
6013
  ToolReturnPart(
5964
6014
  tool_name='get_animal',
5965
6015
  content='axolotl',
5966
- tool_call_id='call_t76xO1K2zqrJkawkU3tur8vj|fc_0481074da98340df0068dd88f000688191afaf54f799b1dfaf',
6016
+ tool_call_id='call_t76xO1K2zqrJkawkU3tur8vj',
5967
6017
  timestamp=IsDatetime(),
5968
6018
  )
5969
6019
  ]
@@ -6180,3 +6230,93 @@ async def test_openai_responses_image_generation_jpeg(allow_model_requests: None
6180
6230
  ),
6181
6231
  ]
6182
6232
  )
6233
+
6234
+
6235
+ async def test_openai_responses_history_with_combined_tool_call_id(allow_model_requests: None, openai_api_key: str):
6236
+ m = OpenAIResponsesModel('gpt-5', provider=OpenAIProvider(api_key=openai_api_key))
6237
+
6238
+ class CityLocation(BaseModel):
6239
+ city: str
6240
+ country: str
6241
+
6242
+ agent = Agent(m, output_type=ToolOutput(CityLocation))
6243
+
6244
+ messages = [
6245
+ ModelRequest(
6246
+ parts=[
6247
+ UserPromptPart(
6248
+ content='What is the largest city in the user country?',
6249
+ )
6250
+ ]
6251
+ ),
6252
+ ModelResponse(
6253
+ parts=[
6254
+ ToolCallPart(
6255
+ tool_name='get_user_country',
6256
+ args='{}',
6257
+ tool_call_id='call_ZWkVhdUjupo528U9dqgFeRkH|fc_68477f0bb8e4819cba6d781e174d77f8001fd29e2d5573f7',
6258
+ )
6259
+ ],
6260
+ model_name='gpt-4o-2024-08-06',
6261
+ provider_name='openai',
6262
+ provider_response_id='resp_68477f0b40a8819cb8d55594bc2c232a001fd29e2d5573f7',
6263
+ finish_reason='stop',
6264
+ ),
6265
+ ModelRequest(
6266
+ parts=[
6267
+ ToolReturnPart(
6268
+ tool_name='get_user_country',
6269
+ content='Mexico',
6270
+ tool_call_id='call_ZWkVhdUjupo528U9dqgFeRkH|fc_68477f0bb8e4819cba6d781e174d77f8001fd29e2d5573f7',
6271
+ )
6272
+ ]
6273
+ ),
6274
+ ]
6275
+
6276
+ result = await agent.run('What is the largest city in the user country?', message_history=messages)
6277
+ assert result.output == snapshot(CityLocation(city='Mexico City', country='Mexico'))
6278
+ assert result.new_messages() == snapshot(
6279
+ [
6280
+ ModelRequest(
6281
+ parts=[
6282
+ UserPromptPart(
6283
+ content='What is the largest city in the user country?',
6284
+ timestamp=IsDatetime(),
6285
+ )
6286
+ ]
6287
+ ),
6288
+ ModelResponse(
6289
+ parts=[
6290
+ ThinkingPart(
6291
+ content='',
6292
+ id='rs_001fd29e2d5573f70068ece2e816fc819c82755f049c987ea4',
6293
+ signature='gAAAAABo7OLt_-yMcMz15n_JkwU0selGH2vqiwJDNU86YIjY_jQLXid4usIFjjCppiyOnJjtU_C6e7jUIKnfZRBt1DHVFMGpAVvTBZBVdJhXl0ypGjkAj3Wv_3ecAG9oU3DoUMKrbwEMqL0LaSfNSN1qgCTt-RL2sgeEDgFeiOpX40BWgS8tVMfR4_qBxJcp8KeYvw5niPgwcMF3UPIEjHlaVpglJH2SzZtTOdxeFDfYbnvdWTMvwYFIc0jKOREG_-hZE4AznhHdSLV2-I5nGlxuxqaI4GQCk-Fp8Cvcy15_NYYP62ii50VlR6HPp_gQZEetwgC5pThsiuuG7-n1hGOnsj8gZyjSKsMe2KpzlYzhT7ighmArDVEx8Utvp1FXikqGkEzt4RTqqPInp9kuvqQTSyd8JZ6BEetRl1EuZXT7zXrzLwFN7Vm_gqixmf6mLXZUw6vg6LqGkhSh5fo6C7akPTwwJXjVJ37Dzfejo6RiVKOT-_9sdYCHW2kZ9XfQAmRQfB97UpSZ8QrVfaKy_uRIHLexs8QrQvKuw-uHDQBAL3OEmSTzHzCQ-q7b0FHr514Z29l9etavHNVdpeleWGo6VEtLWGQyblIdIBtf946YnQvr6NYIR8uATn9Z91rr8FsFJTpJh_v5iGA2f8rfPRu27nmw-q8XnPVc_FYCZDk08r_YhdEJZn1INBi8wYSWmpib8VxNpkFO7FFRuK-F8rh3MTpYgIOqPQYbf3LCRvKukTwv1b3mjSKVpHQSm_s6s7djdD-rLuc22-3_MLd0ii4_oOT8w51TQIM61LtonGvxUqf4oKHSUFCVnrWWiT-0ttdpwpJ_iB5frnEeY2mWyU1u7sd38BI3dOzoM82IFaIm98g9fa99bmoA7Z7gI60tzyF8YbJmWF-PCwyKHJ7B1MbCBonO36NmeEM-SplrR54fGykxTmwvtbYGhd5f0cdYzD0zulRDj-AhOd96rrUB_fIgoQGTXey8L_w0whcnVTWdG6is-rx8373Sz8ZRoE5RiLWW1mfHzVXxwslphx4BedRVF0tL-1YO7sg5MXhHCf6hpw8dOht-21NMrb1F1DQadFE_fhySFl-TgOD5BlhAuupLMsqcCIa4lcXP_loyA4ERP6WSdz2Bybz7_1eOiflfVodRrNqvr_DnL0NEXD_JkYTeIn84ziarFV7U7ZnkMvRiA_p1fWdbHTsE_8lu1rsf8fcJ1e76_6ycPkOc4TrOZw8gVRb7gIbMMVrv72BT_sFhW7GkXrzCQpQaeybmRw-bjFhkMMjMDYGXkA_H0q2Zfyh3zCOoa40hl2cqRWp7n1XuafmtKG_F8e9hyWox0q7AhZr5HOOaHz8r3O3-dmNl1KP52bqA8S72rLDslAOQlDupmAQgAmkm5ApYeYcEBredN78jHQ1pviUEI2-3qr4ClXZFHPa54AJ_q4HQ-EcKXEcYQglG21mSUy_tFQF-m4X46Qu8yYWcBVW4E0CG3wbvYx0BCdbc5RhIDkJo1elxLK8XS64lpFkCWy62xLVeMuVuCj8q84-Kk7tZ7gtMtLV9PHQCdbl3s2pAzMfuNIBJog6-HPmwha2n9T0Md5qF7OqCtnYWOWUfIMmQVcdW-ECGsQy9uIUmpsOjdtH31hrX3MUEhIOUB5xErLwfp-_s22ciAY_ap3JlYAiTKGlMCxKxTzK7wWEG_nYhDXC1Afj2z-tgvYhtn9MyDf2v0aIpDM9BoTOLEO-ButzylJ06pJlrJhpdvklvwJxUiuhlwy0bHNilb4Zv4QwnUv3DCrIeKe1ne90vEXe6YlDwSMeWJcz1DZIQBvVcNlN8q2y8Rae3lMWzsvD0YXrcXp02ckYoLSOQZgNYviGYLsgRgPGiIkncjSDt7WWV6td3l-zTrP6MT_hKigmg5F5_F6tS1bKb0jlQBZd0NP-_L_TPqMGRjCYG8johd6VyMiagslDjxG39Dh2wyTI19ZW7h_AOuOpnfkt2armqiq6iGfevA3malqkNakb6mFAS04J9O0butWVAw4yiPCEcLuDNAzzi_qrqLee4gkjh0NplvfGCaE6qqYms61GJbJC4wge6vjyTakurbqWEV3YoR3y_dn-0pjQ7TOx9kkruDwg0nZIV5O6yYxaulmbuvo3fs5CZb9ptZPD0MzGZj7CZU2MDCa4a4gr0McOx2MricxSzIu6emuRUzZuC6C1JxPRC00M0TrZNMIe_WVa9fXDLV1ULEAIMwMXzNT9zV6yiYQCwhkp30Wqde3W0LlIRpSbDuJXcvT8OCbXkdPNIScccdT9LvUQQ--hU2P45kisOev3TYn7yv-pdxM3u1KFNwuFxedSArMBPg7GDz1BOxDQRzv0mfwbf_CcoFbuyj7Tf4zWO46HVdHeRNbvIE--bnaSYD-UFaKknp8ZsBQQhBU_2TEca3fKwmg81-g7Vdb28QUZEuPzgE4ekxZejkKpiKqlLC5nJYgvXrqk2H35D51mYdzPs0ST05Mc41x9MFm_YOLxSFyA0yGAKVINmD5wT6kvRflPkgoksd2ryIvo4KMw3oZQKodv5By0mSJ8iX2vhTGylxiM8wj-ICyNuOsaRFrcMSpX7tZbXcDyysApdmx217BSADoQiNZBLngF7ptxc2QGyo3CwuDjaljwmSgL9KeGthd1RJFd826M287IPpCjLM4WRquCL_E0pQryNqOMn-ZEOCAlBjE37290EhkjKbhiGBEnHUvSbhoH4nL47AmunP_Q5aqh5173VfyoyaybuS3fXjQ5WO0kyFjMdD-a7C6PVdwToCTP-TljoF2YnQKCiqUGs9gNHS9mYhQSXzY4uuGlTHLfKB4JKS5_MQHvwI9zCbTvVG854fPuo_2mzSh-y8TSzBWPokhYWI_q095Sh6tOqDIJNMGyjI2GDFRSyKpKhIFCLyU2JEo9B6l91jPlir0XI8ZOQfBd9J0I4JIqnyoj40_1bF1zUDGc014bdGfxazxwlGph_ysKAP39wV7X9DBFS3ZmeSIn-r3s-sci0HmwnJUb2r03m40rFuNTV1cJMAFP7ZY7PQQQ0TtlO_al0uedaOWylLauap_eoRqc6xGJ2rSz1e7cOevksUlAqzK5xknYKHlsW970xuDGHKOZnKPg8O9nb2PKrcjwEQF5RFPc3l8TtOUXPhhvTERZFGoEuGuSuSp1cJhzba06yPnL-wE3CstYUm3jvkaUme6kKqM4tWBCQDg-_2PYf24xXYlmkIklylskqId826Y3pVVUd7e0vQO0POPeVYU1qwtTp7Ln-MhYEWexxptdNkVQ-kWx63w6HXF6_kefSxaf0UcvL8tOV73u7w_udle9MC_TXgwJZpoW2tSi5HETjQ_i28FAP2iJmclWOm3gP08cMiXvgpTpjzh6meBdvKepnifl_ivPzRnyjz3mYCZH-UJ4LmOHIonv-8arnckhCwHoFIpaIX7eSZyY0JcbBETKImtUwrlTSlbD8l02KDtqw2FJURtEWI5dC1sTS8c2HcyjXyQDA9A25a0M1yIgZyaadODGQ1zoa9xXB',
6294
+ provider_name='openai',
6295
+ ),
6296
+ ToolCallPart(
6297
+ tool_name='final_result',
6298
+ args='{"city":"Mexico City","country":"Mexico"}',
6299
+ tool_call_id='call_LIXPi261Xx3dGYzlDsOoyHGk',
6300
+ id='fc_001fd29e2d5573f70068ece2ecc140819c97ca83bd4647a717',
6301
+ ),
6302
+ ],
6303
+ usage=RequestUsage(input_tokens=103, output_tokens=409, details={'reasoning_tokens': 384}),
6304
+ model_name='gpt-5-2025-08-07',
6305
+ timestamp=IsDatetime(),
6306
+ provider_name='openai',
6307
+ provider_details={'finish_reason': 'completed'},
6308
+ provider_response_id='resp_001fd29e2d5573f70068ece2e6dfbc819c96557f0de72802be',
6309
+ finish_reason='stop',
6310
+ ),
6311
+ ModelRequest(
6312
+ parts=[
6313
+ ToolReturnPart(
6314
+ tool_name='final_result',
6315
+ content='Final result processed.',
6316
+ tool_call_id='call_LIXPi261Xx3dGYzlDsOoyHGk',
6317
+ timestamp=IsDatetime(),
6318
+ )
6319
+ ]
6320
+ ),
6321
+ ]
6322
+ )