pydantic-ai 1.9.1__tar.gz → 1.10.0__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.
Files changed (543) hide show
  1. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/PKG-INFO +10 -10
  2. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_openai_responses.py +2 -0
  3. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_ag_ui.py +191 -0
  4. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_messages.py +2 -0
  5. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_streaming.py +224 -0
  6. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/typed_agent.py +1 -1
  7. pydantic_ai-1.10.0/tests/typed_deps.py +86 -0
  8. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/.gitignore +0 -0
  9. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/LICENSE +0 -0
  10. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/Makefile +0 -0
  11. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/README.md +0 -0
  12. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/pyproject.toml +0 -0
  13. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/__init__.py +0 -0
  14. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/assets/dummy.pdf +0 -0
  15. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/assets/dummy.txt +0 -0
  16. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/assets/kiwi.png +0 -0
  17. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/assets/marcelo.mp3 +0 -0
  18. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/assets/product_name.txt +0 -0
  19. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/assets/small_video.mp4 +0 -0
  20. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_complex_agent_run.yaml +0 -0
  21. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_complex_agent_run_in_workflow.yaml +0 -0
  22. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_complex_agent_run_stream_in_workflow.yaml +0 -0
  23. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_iter.yaml +0 -0
  24. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_iter_in_workflow.yaml +0 -0
  25. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_override_deps_in_workflow.yaml +0 -0
  26. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_override_tools_in_workflow.yaml +0 -0
  27. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_run.yaml +0 -0
  28. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_run_in_workflow_with_toolsets.yaml +0 -0
  29. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_run_stream.yaml +0 -0
  30. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_run_sync.yaml +0 -0
  31. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_run_sync_in_workflow.yaml +0 -0
  32. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_with_dataclass_deps_as_dict.yaml +0 -0
  33. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_with_hitl_tool.yaml +0 -0
  34. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_with_hitl_tool_sync.yaml +0 -0
  35. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_with_model_retry.yaml +0 -0
  36. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_with_non_dict_deps.yaml +0 -0
  37. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_agent_with_unserializable_deps_type.yaml +0 -0
  38. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_dbos_model_stream_direct.yaml +0 -0
  39. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_multiple_agents.yaml +0 -0
  40. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_dbos/test_simple_agent_run_in_workflow.yaml +0 -0
  41. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_agent_with_server_not_running.yaml +0 -0
  42. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml +0 -0
  43. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_tool_returning_audio_resource.yaml +0 -0
  44. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_tool_returning_audio_resource_link.yaml +0 -0
  45. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml +0 -0
  46. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_tool_returning_error.yaml +0 -0
  47. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_tool_returning_image.yaml +0 -0
  48. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_tool_returning_image_resource.yaml +0 -0
  49. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_tool_returning_image_resource_link.yaml +0 -0
  50. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_tool_returning_multiple_items.yaml +0 -0
  51. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_tool_returning_none.yaml +0 -0
  52. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_tool_returning_str.yaml +0 -0
  53. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_tool_returning_text_resource.yaml +0 -0
  54. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_tool_returning_text_resource_link.yaml +0 -0
  55. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_mcp/test_tool_returning_unstructured_dict.yaml +0 -0
  56. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_complex_agent_run_in_flow.yaml +0 -0
  57. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_iter_in_flow.yaml +0 -0
  58. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_multiple_agents.yaml +0 -0
  59. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_prefect_agent_iter.yaml +0 -0
  60. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_prefect_agent_override_deps.yaml +0 -0
  61. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_prefect_agent_override_tools.yaml +0 -0
  62. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_prefect_agent_override_toolsets.yaml +0 -0
  63. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_prefect_agent_run.yaml +0 -0
  64. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_prefect_agent_run_stream.yaml +0 -0
  65. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_prefect_agent_run_stream_events.yaml +0 -0
  66. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_prefect_agent_run_sync.yaml +0 -0
  67. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_prefect_agent_with_hitl_tool.yaml +0 -0
  68. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_prefect_agent_with_hitl_tool_sync.yaml +0 -0
  69. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_prefect_agent_with_model_retry.yaml +0 -0
  70. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_prefect_agent_with_unserializable_deps.yaml +0 -0
  71. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_run_stream_in_flow.yaml +0 -0
  72. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_run_sync_in_flow.yaml +0 -0
  73. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_prefect/test_simple_agent_run_in_flow.yaml +0 -0
  74. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_settings/test_stop_settings[anthropic].yaml +0 -0
  75. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_settings/test_stop_settings[bedrock].yaml +0 -0
  76. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_settings/test_stop_settings[cohere].yaml +0 -0
  77. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_settings/test_stop_settings[gemini].yaml +0 -0
  78. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_settings/test_stop_settings[google].yaml +0 -0
  79. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_settings/test_stop_settings[groq].yaml +0 -0
  80. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_settings/test_stop_settings[mistral].yaml +0 -0
  81. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_settings/test_stop_settings[openai].yaml +0 -0
  82. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_complex_agent_run.yaml +0 -0
  83. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_complex_agent_run_in_workflow.yaml +0 -0
  84. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_complex_agent_run_stream_in_workflow.yaml +0 -0
  85. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_logfire_plugin.yaml +0 -0
  86. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_multiple_agents.yaml +0 -0
  87. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_simple_agent_run_in_workflow.yaml +0 -0
  88. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_temporal_agent_iter.yaml +0 -0
  89. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_temporal_agent_override_deps_in_workflow.yaml +0 -0
  90. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_temporal_agent_run.yaml +0 -0
  91. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_temporal_agent_run_stream.yaml +0 -0
  92. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_temporal_agent_run_stream_events.yaml +0 -0
  93. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_temporal_agent_run_sync.yaml +0 -0
  94. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_temporal_agent_sync_tool_activity_disabled.yaml +0 -0
  95. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_temporal_agent_with_dataclass_deps_as_dict.yaml +0 -0
  96. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_temporal_agent_with_hitl_tool.yaml +0 -0
  97. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_temporal_agent_with_model_retry.yaml +0 -0
  98. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_temporal_agent_with_non_dict_deps.yaml +0 -0
  99. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_temporal_agent_with_unserializable_deps_type.yaml +0 -0
  100. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_temporal/test_web_search_agent_run_in_workflow.yaml +0 -0
  101. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/cassettes/test_vercel_ai/test_run.yaml +0 -0
  102. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/conftest.py +0 -0
  103. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/__init__.py +0 -0
  104. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/test_dataset.py +0 -0
  105. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/test_evaluator_base.py +0 -0
  106. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/test_evaluator_common.py +0 -0
  107. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/test_evaluator_context.py +0 -0
  108. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/test_evaluator_spec.py +0 -0
  109. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/test_evaluators.py +0 -0
  110. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/test_llm_as_a_judge.py +0 -0
  111. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/test_otel.py +0 -0
  112. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/test_render_numbers.py +0 -0
  113. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/test_reporting.py +0 -0
  114. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/test_reports.py +0 -0
  115. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/test_utils.py +0 -0
  116. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/evals/utils.py +0 -0
  117. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/example_modules/README.md +0 -0
  118. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/example_modules/bank_database.py +0 -0
  119. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/example_modules/fake_database.py +0 -0
  120. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/example_modules/mcp_server.py +0 -0
  121. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/example_modules/weather_service.py +0 -0
  122. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/ext/__init__.py +0 -0
  123. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/ext/test_langchain.py +0 -0
  124. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/__init__.py +0 -0
  125. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/__init__.py +0 -0
  126. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_broadcast_and_spread.py +0 -0
  127. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_decisions.py +0 -0
  128. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_edge_cases.py +0 -0
  129. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_edge_labels.py +0 -0
  130. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_graph_builder.py +0 -0
  131. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_graph_edge_cases.py +0 -0
  132. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_graph_execution.py +0 -0
  133. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_graph_iteration.py +0 -0
  134. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_joins_and_reducers.py +0 -0
  135. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_mermaid_rendering.py +0 -0
  136. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_node_and_step.py +0 -0
  137. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_parent_forks.py +0 -0
  138. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_paths.py +0 -0
  139. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_util.py +0 -0
  140. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/beta/test_v1_v2_integration.py +0 -0
  141. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/test_file_persistence.py +0 -0
  142. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/test_graph.py +0 -0
  143. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/test_mermaid.py +0 -0
  144. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/test_persistence.py +0 -0
  145. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/test_state.py +0 -0
  146. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/graph/test_utils.py +0 -0
  147. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/import_examples.py +0 -0
  148. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/json_body_serializer.py +0 -0
  149. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/mcp_server.py +0 -0
  150. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/__init__.py +0 -0
  151. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_code_execution_tool.yaml +0 -0
  152. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_code_execution_tool_stream.yaml +0 -0
  153. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_mcp_servers.yaml +0 -0
  154. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_mcp_servers_stream.yaml +0 -0
  155. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_memory_tool.yaml +0 -0
  156. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_empty_message_on_history.yaml +0 -0
  157. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_instructions.yaml +0 -0
  158. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part.yaml +0 -0
  159. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_from_other_model.yaml +0 -0
  160. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_redacted.yaml +0 -0
  161. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_redacted_stream.yaml +0 -0
  162. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_stream.yaml +0 -0
  163. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_web_search_tool_stream.yaml +0 -0
  164. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_output_tool_with_thinking.yaml +0 -0
  165. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output.yaml +0 -0
  166. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output_multiple.yaml +0 -0
  167. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_server_tool_pass_history_to_another_provider.yaml +0 -0
  168. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_server_tool_receive_history_from_another_provider.yaml +0 -0
  169. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_text_output_function.yaml +0 -0
  170. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_text_parts_ahead_of_built_in_tool_call.yaml +0 -0
  171. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_tool_output.yaml +0 -0
  172. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_tool_with_thinking.yaml +0 -0
  173. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_web_search_tool.yaml +0 -0
  174. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_anthropic_web_search_tool_stream.yaml +0 -0
  175. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_document_binary_content_input.yaml +0 -0
  176. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_document_url_input.yaml +0 -0
  177. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_extra_headers.yaml +0 -0
  178. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_image_as_binary_content_tool_response.yaml +0 -0
  179. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_image_url_input.yaml +0 -0
  180. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +0 -0
  181. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_multiple_parallel_tool_calls.yaml +0 -0
  182. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_anthropic/test_text_document_url_input.yaml +0 -0
  183. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_anthropic_tool_with_thinking.yaml +0 -0
  184. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_empty_system_prompt.yaml +0 -0
  185. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml +0 -0
  186. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_anthropic_model_without_tools.yaml +0 -0
  187. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_guardrail_config.yaml +0 -0
  188. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_instructions.yaml +0 -0
  189. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_iter_stream.yaml +0 -0
  190. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_max_tokens.yaml +0 -0
  191. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_other_parameters.yaml +0 -0
  192. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_performance_config.yaml +0 -0
  193. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_retry.yaml +0 -0
  194. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream.yaml +0 -0
  195. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream_empty_text_delta.yaml +0 -0
  196. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_structured_output.yaml +0 -0
  197. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_anthropic.yaml +0 -0
  198. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_deepseek.yaml +0 -0
  199. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_from_other_model.yaml +0 -0
  200. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_redacted.yaml +0 -0
  201. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_redacted_stream.yaml +0 -0
  202. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_stream.yaml +0 -0
  203. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_top_p.yaml +0 -0
  204. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_bedrock_multiple_documents_in_history.yaml +0 -0
  205. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_document_url_input.yaml +0 -0
  206. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_image_as_binary_content_input.yaml +0 -0
  207. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_image_url_input.yaml +0 -0
  208. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_text_as_binary_content_input.yaml +0 -0
  209. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_text_document_url_input.yaml +0 -0
  210. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_video_as_binary_content_input.yaml +0 -0
  211. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_bedrock/test_video_url_input.yaml +0 -0
  212. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_cohere/test_cohere_model_instructions.yaml +0 -0
  213. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_cohere/test_cohere_model_thinking_part.yaml +0 -0
  214. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_cohere/test_request_simple_success_with_vcr.yaml +0 -0
  215. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_part.yaml +0 -0
  216. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_stream.yaml +0 -0
  217. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_download_item/test_download_item_application_octet_stream.yaml +0 -0
  218. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_download_item/test_download_item_audio_mpeg.yaml +0 -0
  219. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_download_item/test_download_item_no_content_type.yaml +0 -0
  220. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_document_url_input.yaml +0 -0
  221. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_false.yaml +0 -0
  222. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_true.yaml +0 -0
  223. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_drop_exclusive_maximum.yaml +0 -0
  224. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_exclusive_minimum_and_maximum.yaml +0 -0
  225. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_model_instructions.yaml +0 -0
  226. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_model_thinking_part.yaml +0 -0
  227. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_native_output.yaml +0 -0
  228. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_native_output_multiple.yaml +0 -0
  229. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_prompted_output.yaml +0 -0
  230. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_multiple.yaml +0 -0
  231. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_with_tools.yaml +0 -0
  232. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_text_output_function.yaml +0 -0
  233. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_tool_config_any_with_tool_without_args.yaml +0 -0
  234. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_tool_output.yaml +0 -0
  235. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_gemini_youtube_video_url_input.yaml +0 -0
  236. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_image_as_binary_content_input.yaml +0 -0
  237. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_image_as_binary_content_tool_response.yaml +0 -0
  238. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_image_url_input.yaml +0 -0
  239. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_labels_are_ignored_with_gla_provider.yaml +0 -0
  240. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_video_as_binary_content_input.yaml +0 -0
  241. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini/test_video_url_input.yaml +0 -0
  242. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini_vertex/test_labels.yaml +0 -0
  243. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl (gs)].yaml +0 -0
  244. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl].yaml +0 -0
  245. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl (gs)].yaml +0 -0
  246. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl].yaml +0 -0
  247. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl (gs)].yaml +0 -0
  248. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl].yaml +0 -0
  249. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (YouTube)].yaml +0 -0
  250. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (gs)].yaml +0 -0
  251. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl].yaml +0 -0
  252. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_gemini_vertex/test_url_input_force_download.yaml +0 -0
  253. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_builtin_tools_with_other_tools.yaml +0 -0
  254. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_httpx_client_is_not_closed.yaml +0 -0
  255. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_image_and_text_output.yaml +0 -0
  256. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_image_generation.yaml +0 -0
  257. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_image_generation_stream.yaml +0 -0
  258. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_image_generation_with_text.yaml +0 -0
  259. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_image_or_text_output.yaml +0 -0
  260. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model.yaml +0 -0
  261. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_builtin_code_execution_stream.yaml +0 -0
  262. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_code_execution_tool.yaml +0 -0
  263. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_document_url_input.yaml +0 -0
  264. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_empty_assistant_response.yaml +0 -0
  265. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_empty_user_prompt.yaml +0 -0
  266. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_image_as_binary_content_input.yaml +0 -0
  267. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_image_url_input.yaml +0 -0
  268. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_instructions.yaml +0 -0
  269. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_iter_stream.yaml +0 -0
  270. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_max_tokens.yaml +0 -0
  271. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_multiple_documents_in_history.yaml +0 -0
  272. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_receive_web_search_history_from_another_provider.yaml +0 -0
  273. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_retry.yaml +0 -0
  274. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_safety_settings.yaml +0 -0
  275. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_server_tool_receive_history_from_another_provider.yaml +0 -0
  276. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_stream.yaml +0 -0
  277. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_structured_output.yaml +0 -0
  278. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_text_as_binary_content_input.yaml +0 -0
  279. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_text_document_url_input.yaml +0 -0
  280. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_thinking_config.yaml +0 -0
  281. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_thinking_part.yaml +0 -0
  282. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_thinking_part_from_other_model.yaml +0 -0
  283. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_thinking_part_iter.yaml +0 -0
  284. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_top_p.yaml +0 -0
  285. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_url_context_tool.yaml +0 -0
  286. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_usage_limit_exceeded.yaml +0 -0
  287. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_usage_limit_not_exceeded.yaml +0 -0
  288. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_vertex_labels.yaml +0 -0
  289. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_vertex_provider.yaml +0 -0
  290. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input.yaml +0 -0
  291. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input_with_vendor_metadata.yaml +0 -0
  292. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_video_url_input.yaml +0 -0
  293. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_web_search_tool.yaml +0 -0
  294. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_web_search_tool_stream.yaml +0 -0
  295. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_model_youtube_video_url_input_with_vendor_metadata.yaml +0 -0
  296. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_multiple_images.yaml +0 -0
  297. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_native_output.yaml +0 -0
  298. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_native_output_multiple.yaml +0 -0
  299. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_prompted_output.yaml +0 -0
  300. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_prompted_output_multiple.yaml +0 -0
  301. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_prompted_output_with_tools.yaml +0 -0
  302. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_text_output_function.yaml +0 -0
  303. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_timeout.yaml +0 -0
  304. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_tool_config_any_with_tool_without_args.yaml +0 -0
  305. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_tool_output.yaml +0 -0
  306. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl (gs)].yaml +0 -0
  307. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl].yaml +0 -0
  308. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl (gs)].yaml +0 -0
  309. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl].yaml +0 -0
  310. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl (gs)].yaml +0 -0
  311. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl].yaml +0 -0
  312. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (YouTube)].yaml +0 -0
  313. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (gs)].yaml +0 -0
  314. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl].yaml +0 -0
  315. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_url_input_force_download.yaml +0 -0
  316. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_vertexai_image_generation.yaml +0 -0
  317. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_google/test_google_vertexai_model_usage_limit_exceeded.yaml +0 -0
  318. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_extra_headers.yaml +0 -0
  319. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_groq_model_instructions.yaml +0 -0
  320. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_groq_model_thinking_part.yaml +0 -0
  321. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_groq_model_thinking_part_iter.yaml +0 -0
  322. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_groq_model_web_search_tool.yaml +0 -0
  323. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_groq_model_web_search_tool_stream.yaml +0 -0
  324. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_groq_native_output.yaml +0 -0
  325. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_groq_prompted_output.yaml +0 -0
  326. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_image_as_binary_content_input.yaml +0 -0
  327. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_image_as_binary_content_tool_response.yaml +0 -0
  328. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_image_url_input.yaml +0 -0
  329. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_tool_regular_error.yaml +0 -0
  330. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_tool_use_failed_error.yaml +0 -0
  331. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_groq/test_tool_use_failed_error_streaming.yaml +0 -0
  332. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_huggingface/test_hf_model_instructions.yaml +0 -0
  333. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part.yaml +0 -0
  334. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part_iter.yaml +0 -0
  335. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_huggingface/test_image_as_binary_content_input.yaml +0 -0
  336. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_huggingface/test_image_url_input.yaml +0 -0
  337. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[Qwen-Qwen2.5-72B-Instruct].yaml +0 -0
  338. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[deepseek-ai-DeepSeek-R1-0528].yaml +0 -0
  339. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[meta-llama-Llama-3.3-70B-Instruct].yaml +0 -0
  340. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_huggingface/test_request_simple_success_with_vcr.yaml +0 -0
  341. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_huggingface/test_request_simple_usage.yaml +0 -0
  342. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_huggingface/test_simple_completion.yaml +0 -0
  343. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_huggingface/test_stream_completion.yaml +0 -0
  344. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_mistral/test_image_as_binary_content_tool_response.yaml +0 -0
  345. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_mistral/test_mistral_model_instructions.yaml +0 -0
  346. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part.yaml +0 -0
  347. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part_iter.yaml +0 -0
  348. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_model_names/test_known_model_names.yaml +0 -0
  349. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_audio_as_binary_content_input.yaml +0 -0
  350. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_compatible_api_with_tool_calls_without_id.yaml +0 -0
  351. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_document_as_binary_content_input.yaml +0 -0
  352. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_document_as_binary_content_input_with_tool.yaml +0 -0
  353. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_document_url_input.yaml +0 -0
  354. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_extra_headers.yaml +0 -0
  355. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_image_as_binary_content_input.yaml +0 -0
  356. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_image_as_binary_content_tool_response.yaml +0 -0
  357. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_image_url_input_force_download.yaml +0 -0
  358. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_image_url_input_force_download_response_api.yaml +0 -0
  359. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_image_url_tool_response.yaml +0 -0
  360. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_invalid_response.yaml +0 -0
  361. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4.5-preview].yaml +0 -0
  362. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4o-mini].yaml +0 -0
  363. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_max_completion_tokens[o3-mini].yaml +0 -0
  364. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_multiple_agent_tool_calls.yaml +0 -0
  365. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_audio_url_input.yaml +0 -0
  366. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_instructions.yaml +0 -0
  367. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_instructions_with_tool_calls_keep_instructions.yaml +0 -0
  368. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider.yaml +0 -0
  369. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider_harmony.yaml +0 -0
  370. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider_qwen_3_coder.yaml +0 -0
  371. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_model_settings_temperature_ignored_on_gpt_5.yaml +0 -0
  372. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_model_thinking_part.yaml +0 -0
  373. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_model_without_system_prompt.yaml +0 -0
  374. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_native_output.yaml +0 -0
  375. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_native_output_multiple.yaml +0 -0
  376. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[developer].yaml +0 -0
  377. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[system].yaml +0 -0
  378. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_prompted_output.yaml +0 -0
  379. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_prompted_output_multiple.yaml +0 -0
  380. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_text_output_function.yaml +0 -0
  381. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_tool_output.yaml +0 -0
  382. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_web_search_tool.yaml +0 -0
  383. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_web_search_tool_model_not_supported.yaml +0 -0
  384. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_openai_web_search_tool_with_user_location.yaml +0 -0
  385. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_reasoning_model_with_temperature.yaml +0 -0
  386. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_system_prompt_role_o1_mini.yaml +0 -0
  387. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_text_document_as_binary_content_input.yaml +0 -0
  388. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_text_document_url_input.yaml +0 -0
  389. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_text_response.yaml +0 -0
  390. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_user_id.yaml +0 -0
  391. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai/test_valid_response.yaml +0 -0
  392. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_audio_as_binary_content_input.yaml +0 -0
  393. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_input.yaml +0 -0
  394. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_tool_response.yaml +0 -0
  395. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_native_output.yaml +0 -0
  396. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_native_output_multiple.yaml +0 -0
  397. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_previous_response_id.yaml +0 -0
  398. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_previous_response_id_auto_mode.yaml +0 -0
  399. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_code_execution_return_image.yaml +0 -0
  400. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_code_execution_return_image_stream.yaml +0 -0
  401. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_as_binary_content_input.yaml +0 -0
  402. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_url_input.yaml +0 -0
  403. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_history_with_combined_tool_call_id.yaml +0 -0
  404. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_and_text_output.yaml +0 -0
  405. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation.yaml +0 -0
  406. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_jpeg.yaml +0 -0
  407. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_stream.yaml +0 -0
  408. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_tool_without_image_output.yaml +0 -0
  409. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_with_native_output.yaml +0 -0
  410. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_with_prompted_output.yaml +0 -0
  411. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_with_tool_output.yaml +0 -0
  412. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_with_tools.yaml +0 -0
  413. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_or_text_output.yaml +0 -0
  414. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_url_input.yaml +0 -0
  415. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools.yaml +0 -0
  416. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools_web_search.yaml +0 -0
  417. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_http_error.yaml +0 -0
  418. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_instructions.yaml +0 -0
  419. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_mcp_server_tool.yaml +0 -0
  420. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_mcp_server_tool_stream.yaml +0 -0
  421. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_mcp_server_tool_with_connector.yaml +0 -0
  422. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_retry.yaml +0 -0
  423. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response.yaml +0 -0
  424. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response_with_tool_call.yaml +0 -0
  425. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_thinking_part.yaml +0 -0
  426. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool.yaml +0 -0
  427. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_stream.yaml +0 -0
  428. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_with_invalid_region.yaml +0 -0
  429. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_with_user_location.yaml +0 -0
  430. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_multiple_images.yaml +0 -0
  431. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_non_reasoning_model_no_item_ids.yaml +0 -0
  432. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_output_type.yaml +0 -0
  433. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_effort.yaml +0 -0
  434. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_generate_summary.yaml +0 -0
  435. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_requires_function_call_status_none.yaml +0 -0
  436. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_stream.yaml +0 -0
  437. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_streaming_usage.yaml +0 -0
  438. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_system_prompt.yaml +0 -0
  439. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_text_document_url_input.yaml +0 -0
  440. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_part_from_other_model.yaml +0 -0
  441. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_part_iter.yaml +0 -0
  442. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_code_execution_tool.yaml +0 -0
  443. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_code_execution_tool_stream.yaml +0 -0
  444. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_modified_history.yaml +0 -0
  445. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_tool_calls.yaml +0 -0
  446. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_verbosity.yaml +0 -0
  447. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_prompted_output.yaml +0 -0
  448. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_prompted_output_multiple.yaml +0 -0
  449. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_reasoning_model_with_temperature.yaml +0 -0
  450. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_text_output_function.yaml +0 -0
  451. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/cassettes/test_openai_responses/test_tool_output.yaml +0 -0
  452. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/mock_async_stream.py +0 -0
  453. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/mock_openai.py +0 -0
  454. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_anthropic.py +0 -0
  455. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_bedrock.py +0 -0
  456. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_cohere.py +0 -0
  457. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_deepseek.py +0 -0
  458. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_download_item.py +0 -0
  459. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_fallback.py +0 -0
  460. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_gemini.py +0 -0
  461. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_gemini_vertex.py +0 -0
  462. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_google.py +0 -0
  463. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_groq.py +0 -0
  464. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_huggingface.py +0 -0
  465. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_instrumented.py +0 -0
  466. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_mcp_sampling.py +0 -0
  467. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_mistral.py +0 -0
  468. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_model.py +0 -0
  469. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_model_function.py +0 -0
  470. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_model_names.py +0 -0
  471. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_model_request_parameters.py +0 -0
  472. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_model_settings.py +0 -0
  473. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_model_test.py +0 -0
  474. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_openai.py +0 -0
  475. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/models/test_outlines.py +0 -0
  476. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/parts_from_messages.py +0 -0
  477. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/__init__.py +0 -0
  478. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/cassettes/test_azure/test_azure_provider_call.yaml +0 -0
  479. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_anthropic.yaml +0 -0
  480. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_bedrock.yaml +0 -0
  481. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_google_vertex.yaml +0 -0
  482. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_groq.yaml +0 -0
  483. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_openai.yaml +0 -0
  484. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_openai_responses.yaml +0 -0
  485. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/cassettes/test_google_vertex/test_vertexai_provider.yaml +0 -0
  486. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/cassettes/test_heroku/test_heroku_model_provider_claude_3_7_sonnet.yaml +0 -0
  487. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/cassettes/test_openrouter/test_openrouter_with_google_model.yaml +0 -0
  488. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_anthropic.py +0 -0
  489. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_azure.py +0 -0
  490. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_bedrock.py +0 -0
  491. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_cerebras.py +0 -0
  492. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_cohere.py +0 -0
  493. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_deepseek.py +0 -0
  494. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_fireworks.py +0 -0
  495. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_gateway.py +0 -0
  496. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_github.py +0 -0
  497. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_google_gla.py +0 -0
  498. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_google_vertex.py +0 -0
  499. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_grok.py +0 -0
  500. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_groq.py +0 -0
  501. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_heroku.py +0 -0
  502. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_huggingface.py +0 -0
  503. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_litellm.py +0 -0
  504. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_mistral.py +0 -0
  505. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_moonshotai.py +0 -0
  506. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_nebius.py +0 -0
  507. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_ollama.py +0 -0
  508. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_openai.py +0 -0
  509. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_openrouter.py +0 -0
  510. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_outlines.py +0 -0
  511. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_ovhcloud.py +0 -0
  512. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_provider_names.py +0 -0
  513. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_together.py +0 -0
  514. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/providers/test_vercel.py +0 -0
  515. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_a2a.py +0 -0
  516. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_agent.py +0 -0
  517. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_builtin_tools.py +0 -0
  518. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_cli.py +0 -0
  519. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_dbos.py +0 -0
  520. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_deps.py +0 -0
  521. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_direct.py +0 -0
  522. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_examples.py +0 -0
  523. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_fastmcp.py +0 -0
  524. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_format_as_xml.py +0 -0
  525. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_function_schema.py +0 -0
  526. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_history_processor.py +0 -0
  527. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_json_body_serializer.py +0 -0
  528. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_live.py +0 -0
  529. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_logfire.py +0 -0
  530. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_mcp.py +0 -0
  531. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_parts_manager.py +0 -0
  532. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_prefect.py +0 -0
  533. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_settings.py +0 -0
  534. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_temporal.py +0 -0
  535. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_tenacity.py +0 -0
  536. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_thinking_part.py +0 -0
  537. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_tools.py +0 -0
  538. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_toolsets.py +0 -0
  539. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_ui.py +0 -0
  540. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_usage_limits.py +0 -0
  541. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_utils.py +0 -0
  542. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/test_vercel_ai.py +0 -0
  543. {pydantic_ai-1.9.1 → pydantic_ai-1.10.0}/tests/typed_graph.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pydantic-ai
3
- Version: 1.9.1
3
+ Version: 1.10.0
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,25 +26,25 @@ 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,fastmcp,google,groq,huggingface,logfire,mcp,mistral,openai,retries,temporal,ui,vertexai]==1.9.1
29
+ Requires-Dist: pydantic-ai-slim[ag-ui,anthropic,bedrock,cli,cohere,evals,fastmcp,google,groq,huggingface,logfire,mcp,mistral,openai,retries,temporal,ui,vertexai]==1.10.0
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.9.1; extra == 'dbos'
33
+ Requires-Dist: pydantic-ai-slim[dbos]==1.10.0; extra == 'dbos'
34
34
  Provides-Extra: examples
35
- Requires-Dist: pydantic-ai-examples==1.9.1; extra == 'examples'
35
+ Requires-Dist: pydantic-ai-examples==1.10.0; extra == 'examples'
36
36
  Provides-Extra: outlines-llamacpp
37
- Requires-Dist: pydantic-ai-slim[outlines-llamacpp]==1.9.1; extra == 'outlines-llamacpp'
37
+ Requires-Dist: pydantic-ai-slim[outlines-llamacpp]==1.10.0; extra == 'outlines-llamacpp'
38
38
  Provides-Extra: outlines-mlxlm
39
- Requires-Dist: pydantic-ai-slim[outlines-mlxlm]==1.9.1; extra == 'outlines-mlxlm'
39
+ Requires-Dist: pydantic-ai-slim[outlines-mlxlm]==1.10.0; extra == 'outlines-mlxlm'
40
40
  Provides-Extra: outlines-sglang
41
- Requires-Dist: pydantic-ai-slim[outlines-sglang]==1.9.1; extra == 'outlines-sglang'
41
+ Requires-Dist: pydantic-ai-slim[outlines-sglang]==1.10.0; extra == 'outlines-sglang'
42
42
  Provides-Extra: outlines-transformers
43
- Requires-Dist: pydantic-ai-slim[outlines-transformers]==1.9.1; extra == 'outlines-transformers'
43
+ Requires-Dist: pydantic-ai-slim[outlines-transformers]==1.10.0; extra == 'outlines-transformers'
44
44
  Provides-Extra: outlines-vllm-offline
45
- Requires-Dist: pydantic-ai-slim[outlines-vllm-offline]==1.9.1; extra == 'outlines-vllm-offline'
45
+ Requires-Dist: pydantic-ai-slim[outlines-vllm-offline]==1.10.0; extra == 'outlines-vllm-offline'
46
46
  Provides-Extra: prefect
47
- Requires-Dist: pydantic-ai-slim[prefect]==1.9.1; extra == 'prefect'
47
+ Requires-Dist: pydantic-ai-slim[prefect]==1.10.0; extra == 'prefect'
48
48
  Description-Content-Type: text/markdown
49
49
 
50
50
  <div align="center">
@@ -78,6 +78,8 @@ def test_openai_responses_model(env: TestEnv):
78
78
  model = OpenAIResponsesModel('gpt-4o')
79
79
  assert model.model_name == 'gpt-4o'
80
80
  assert model.system == 'openai'
81
+ assert model.base_url == 'https://api.openai.com/v1/'
82
+ assert model.client.api_key == 'test'
81
83
 
82
84
 
83
85
  async def test_openai_responses_model_simple_response(allow_model_requests: None, openai_api_key: str):
@@ -19,6 +19,8 @@ from pydantic import BaseModel
19
19
  from pydantic_ai import (
20
20
  BuiltinToolCallPart,
21
21
  BuiltinToolReturnPart,
22
+ FunctionToolCallEvent,
23
+ FunctionToolResultEvent,
22
24
  ModelMessage,
23
25
  ModelRequest,
24
26
  ModelResponse,
@@ -29,6 +31,7 @@ from pydantic_ai import (
29
31
  TextPart,
30
32
  TextPartDelta,
31
33
  ToolCallPart,
34
+ ToolCallPartDelta,
32
35
  ToolReturn,
33
36
  ToolReturnPart,
34
37
  UserPromptPart,
@@ -1661,6 +1664,194 @@ async def test_event_stream_back_to_back_text():
1661
1664
  )
1662
1665
 
1663
1666
 
1667
+ async def test_event_stream_multiple_responses_with_tool_calls():
1668
+ async def event_generator():
1669
+ yield PartStartEvent(index=0, part=TextPart(content='Hello'))
1670
+ yield PartDeltaEvent(index=0, delta=TextPartDelta(content_delta=' world'))
1671
+ yield PartEndEvent(index=0, part=TextPart(content='Hello world'), next_part_kind='tool-call')
1672
+
1673
+ yield PartStartEvent(
1674
+ index=1,
1675
+ part=ToolCallPart(tool_name='tool_call_1', args='{}', tool_call_id='tool_call_1'),
1676
+ previous_part_kind='text',
1677
+ )
1678
+ yield PartDeltaEvent(
1679
+ index=1, delta=ToolCallPartDelta(args_delta='{"query": "Hello world"}', tool_call_id='tool_call_1')
1680
+ )
1681
+ yield PartEndEvent(
1682
+ index=1,
1683
+ part=ToolCallPart(tool_name='tool_call_1', args='{"query": "Hello world"}', tool_call_id='tool_call_1'),
1684
+ next_part_kind='tool-call',
1685
+ )
1686
+
1687
+ yield PartStartEvent(
1688
+ index=2,
1689
+ part=ToolCallPart(tool_name='tool_call_2', args='{}', tool_call_id='tool_call_2'),
1690
+ previous_part_kind='tool-call',
1691
+ )
1692
+ yield PartDeltaEvent(
1693
+ index=2, delta=ToolCallPartDelta(args_delta='{"query": "Goodbye world"}', tool_call_id='tool_call_2')
1694
+ )
1695
+ yield PartEndEvent(
1696
+ index=2,
1697
+ part=ToolCallPart(tool_name='tool_call_2', args='{"query": "Hello world"}', tool_call_id='tool_call_2'),
1698
+ next_part_kind=None,
1699
+ )
1700
+
1701
+ yield FunctionToolCallEvent(
1702
+ part=ToolCallPart(tool_name='tool_call_1', args='{"query": "Hello world"}', tool_call_id='tool_call_1')
1703
+ )
1704
+ yield FunctionToolCallEvent(
1705
+ part=ToolCallPart(tool_name='tool_call_2', args='{"query": "Goodbye world"}', tool_call_id='tool_call_2')
1706
+ )
1707
+
1708
+ yield FunctionToolResultEvent(
1709
+ result=ToolReturnPart(tool_name='tool_call_1', content='Hi!', tool_call_id='tool_call_1')
1710
+ )
1711
+ yield FunctionToolResultEvent(
1712
+ result=ToolReturnPart(tool_name='tool_call_2', content='Bye!', tool_call_id='tool_call_2')
1713
+ )
1714
+
1715
+ yield PartStartEvent(
1716
+ index=0,
1717
+ part=ToolCallPart(tool_name='tool_call_3', args='{}', tool_call_id='tool_call_3'),
1718
+ previous_part_kind=None,
1719
+ )
1720
+ yield PartDeltaEvent(
1721
+ index=0, delta=ToolCallPartDelta(args_delta='{"query": "Hello world"}', tool_call_id='tool_call_3')
1722
+ )
1723
+ yield PartEndEvent(
1724
+ index=0,
1725
+ part=ToolCallPart(tool_name='tool_call_3', args='{"query": "Hello world"}', tool_call_id='tool_call_3'),
1726
+ next_part_kind='tool-call',
1727
+ )
1728
+
1729
+ yield PartStartEvent(
1730
+ index=1,
1731
+ part=ToolCallPart(tool_name='tool_call_4', args='{}', tool_call_id='tool_call_4'),
1732
+ previous_part_kind='tool-call',
1733
+ )
1734
+ yield PartDeltaEvent(
1735
+ index=1, delta=ToolCallPartDelta(args_delta='{"query": "Goodbye world"}', tool_call_id='tool_call_4')
1736
+ )
1737
+ yield PartEndEvent(
1738
+ index=1,
1739
+ part=ToolCallPart(tool_name='tool_call_4', args='{"query": "Goodbye world"}', tool_call_id='tool_call_4'),
1740
+ next_part_kind=None,
1741
+ )
1742
+
1743
+ yield FunctionToolCallEvent(
1744
+ part=ToolCallPart(tool_name='tool_call_3', args='{"query": "Hello world"}', tool_call_id='tool_call_3')
1745
+ )
1746
+ yield FunctionToolCallEvent(
1747
+ part=ToolCallPart(tool_name='tool_call_4', args='{"query": "Goodbye world"}', tool_call_id='tool_call_4')
1748
+ )
1749
+
1750
+ yield FunctionToolResultEvent(
1751
+ result=ToolReturnPart(tool_name='tool_call_3', content='Hi!', tool_call_id='tool_call_3')
1752
+ )
1753
+ yield FunctionToolResultEvent(
1754
+ result=ToolReturnPart(tool_name='tool_call_4', content='Bye!', tool_call_id='tool_call_4')
1755
+ )
1756
+
1757
+ run_input = create_input(
1758
+ UserMessage(
1759
+ id='msg_1',
1760
+ content='Tell me about Hello World',
1761
+ ),
1762
+ )
1763
+ event_stream = AGUIEventStream(run_input=run_input)
1764
+ events = [
1765
+ json.loads(event.removeprefix('data: '))
1766
+ async for event in event_stream.encode_stream(event_stream.transform_stream(event_generator()))
1767
+ ]
1768
+
1769
+ assert events == snapshot(
1770
+ [
1771
+ {
1772
+ 'type': 'RUN_STARTED',
1773
+ 'threadId': (thread_id := IsSameStr()),
1774
+ 'runId': (run_id := IsSameStr()),
1775
+ },
1776
+ {'type': 'TEXT_MESSAGE_START', 'messageId': (message_id := IsSameStr()), 'role': 'assistant'},
1777
+ {'type': 'TEXT_MESSAGE_CONTENT', 'messageId': message_id, 'delta': 'Hello'},
1778
+ {'type': 'TEXT_MESSAGE_CONTENT', 'messageId': message_id, 'delta': ' world'},
1779
+ {'type': 'TEXT_MESSAGE_END', 'messageId': message_id},
1780
+ {
1781
+ 'type': 'TOOL_CALL_START',
1782
+ 'toolCallId': 'tool_call_1',
1783
+ 'toolCallName': 'tool_call_1',
1784
+ 'parentMessageId': message_id,
1785
+ },
1786
+ {'type': 'TOOL_CALL_ARGS', 'toolCallId': 'tool_call_1', 'delta': '{}'},
1787
+ {'type': 'TOOL_CALL_ARGS', 'toolCallId': 'tool_call_1', 'delta': '{"query": "Hello world"}'},
1788
+ {'type': 'TOOL_CALL_END', 'toolCallId': 'tool_call_1'},
1789
+ {
1790
+ 'type': 'TOOL_CALL_START',
1791
+ 'toolCallId': 'tool_call_2',
1792
+ 'toolCallName': 'tool_call_2',
1793
+ 'parentMessageId': message_id,
1794
+ },
1795
+ {'type': 'TOOL_CALL_ARGS', 'toolCallId': 'tool_call_2', 'delta': '{}'},
1796
+ {'type': 'TOOL_CALL_ARGS', 'toolCallId': 'tool_call_2', 'delta': '{"query": "Goodbye world"}'},
1797
+ {'type': 'TOOL_CALL_END', 'toolCallId': 'tool_call_2'},
1798
+ {
1799
+ 'type': 'TOOL_CALL_RESULT',
1800
+ 'messageId': IsStr(),
1801
+ 'toolCallId': 'tool_call_1',
1802
+ 'content': 'Hi!',
1803
+ 'role': 'tool',
1804
+ },
1805
+ {
1806
+ 'type': 'TOOL_CALL_RESULT',
1807
+ 'messageId': (result_message_id := IsSameStr()),
1808
+ 'toolCallId': 'tool_call_2',
1809
+ 'content': 'Bye!',
1810
+ 'role': 'tool',
1811
+ },
1812
+ {
1813
+ 'type': 'TOOL_CALL_START',
1814
+ 'toolCallId': 'tool_call_3',
1815
+ 'toolCallName': 'tool_call_3',
1816
+ 'parentMessageId': (new_message_id := IsSameStr()),
1817
+ },
1818
+ {'type': 'TOOL_CALL_ARGS', 'toolCallId': 'tool_call_3', 'delta': '{}'},
1819
+ {'type': 'TOOL_CALL_ARGS', 'toolCallId': 'tool_call_3', 'delta': '{"query": "Hello world"}'},
1820
+ {'type': 'TOOL_CALL_END', 'toolCallId': 'tool_call_3'},
1821
+ {
1822
+ 'type': 'TOOL_CALL_START',
1823
+ 'toolCallId': 'tool_call_4',
1824
+ 'toolCallName': 'tool_call_4',
1825
+ 'parentMessageId': new_message_id,
1826
+ },
1827
+ {'type': 'TOOL_CALL_ARGS', 'toolCallId': 'tool_call_4', 'delta': '{}'},
1828
+ {'type': 'TOOL_CALL_ARGS', 'toolCallId': 'tool_call_4', 'delta': '{"query": "Goodbye world"}'},
1829
+ {'type': 'TOOL_CALL_END', 'toolCallId': 'tool_call_4'},
1830
+ {
1831
+ 'type': 'TOOL_CALL_RESULT',
1832
+ 'messageId': IsStr(),
1833
+ 'toolCallId': 'tool_call_3',
1834
+ 'content': 'Hi!',
1835
+ 'role': 'tool',
1836
+ },
1837
+ {
1838
+ 'type': 'TOOL_CALL_RESULT',
1839
+ 'messageId': IsStr(),
1840
+ 'toolCallId': 'tool_call_4',
1841
+ 'content': 'Bye!',
1842
+ 'role': 'tool',
1843
+ },
1844
+ {
1845
+ 'type': 'RUN_FINISHED',
1846
+ 'threadId': thread_id,
1847
+ 'runId': run_id,
1848
+ },
1849
+ ]
1850
+ )
1851
+
1852
+ assert result_message_id != new_message_id
1853
+
1854
+
1664
1855
  async def test_handle_ag_ui_request():
1665
1856
  agent = Agent(model=TestModel())
1666
1857
  run_input = create_input(
@@ -147,6 +147,7 @@ def test_binary_content_video(media_type: str, format: str):
147
147
  ('application/pdf', 'pdf'),
148
148
  ('text/plain', 'txt'),
149
149
  ('text/csv', 'csv'),
150
+ ('application/msword', 'doc'),
150
151
  ('application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'docx'),
151
152
  ('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'xlsx'),
152
153
  ('text/html', 'html'),
@@ -209,6 +210,7 @@ _url_formats = [
209
210
  pytest.param(DocumentUrl('foobar.pdf'), 'application/pdf', 'pdf', id='pdf'),
210
211
  pytest.param(DocumentUrl('foobar.txt'), 'text/plain', 'txt', id='txt'),
211
212
  pytest.param(DocumentUrl('foobar.csv'), 'text/csv', 'csv', id='csv'),
213
+ pytest.param(DocumentUrl('foobar.doc'), 'application/msword', 'doc', id='doc'),
212
214
  pytest.param(
213
215
  DocumentUrl('foobar.docx'),
214
216
  'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
@@ -135,6 +135,96 @@ async def test_streamed_text_response():
135
135
  )
136
136
 
137
137
 
138
+ def test_streamed_text_sync_response():
139
+ m = TestModel()
140
+
141
+ test_agent = Agent(m)
142
+ assert test_agent.name is None
143
+
144
+ @test_agent.tool_plain
145
+ async def ret_a(x: str) -> str:
146
+ return f'{x}-apple'
147
+
148
+ result = test_agent.run_stream_sync('Hello')
149
+ assert test_agent.name == 'test_agent'
150
+ assert not result.is_complete
151
+ assert result.all_messages() == snapshot(
152
+ [
153
+ ModelRequest(parts=[UserPromptPart(content='Hello', timestamp=IsNow(tz=timezone.utc))]),
154
+ ModelResponse(
155
+ parts=[ToolCallPart(tool_name='ret_a', args={'x': 'a'}, tool_call_id=IsStr())],
156
+ usage=RequestUsage(input_tokens=51),
157
+ model_name='test',
158
+ timestamp=IsNow(tz=timezone.utc),
159
+ provider_name='test',
160
+ ),
161
+ ModelRequest(
162
+ parts=[
163
+ ToolReturnPart(
164
+ tool_name='ret_a', content='a-apple', timestamp=IsNow(tz=timezone.utc), tool_call_id=IsStr()
165
+ )
166
+ ]
167
+ ),
168
+ ]
169
+ )
170
+ assert result.new_messages() == result.all_messages()
171
+ assert result.usage() == snapshot(
172
+ RunUsage(
173
+ requests=2,
174
+ input_tokens=103,
175
+ output_tokens=5,
176
+ tool_calls=1,
177
+ )
178
+ )
179
+ response = result.get_output()
180
+ assert response == snapshot('{"ret_a":"a-apple"}')
181
+ assert result.is_complete
182
+ assert result.timestamp() == IsNow(tz=timezone.utc)
183
+ assert result.response == snapshot(
184
+ ModelResponse(
185
+ parts=[TextPart(content='{"ret_a":"a-apple"}')],
186
+ usage=RequestUsage(input_tokens=52, output_tokens=11),
187
+ model_name='test',
188
+ timestamp=IsDatetime(),
189
+ provider_name='test',
190
+ )
191
+ )
192
+ assert result.all_messages() == snapshot(
193
+ [
194
+ ModelRequest(parts=[UserPromptPart(content='Hello', timestamp=IsNow(tz=timezone.utc))]),
195
+ ModelResponse(
196
+ parts=[ToolCallPart(tool_name='ret_a', args={'x': 'a'}, tool_call_id=IsStr())],
197
+ usage=RequestUsage(input_tokens=51),
198
+ model_name='test',
199
+ timestamp=IsNow(tz=timezone.utc),
200
+ provider_name='test',
201
+ ),
202
+ ModelRequest(
203
+ parts=[
204
+ ToolReturnPart(
205
+ tool_name='ret_a', content='a-apple', timestamp=IsNow(tz=timezone.utc), tool_call_id=IsStr()
206
+ )
207
+ ]
208
+ ),
209
+ ModelResponse(
210
+ parts=[TextPart(content='{"ret_a":"a-apple"}')],
211
+ usage=RequestUsage(input_tokens=52, output_tokens=11),
212
+ model_name='test',
213
+ timestamp=IsNow(tz=timezone.utc),
214
+ provider_name='test',
215
+ ),
216
+ ]
217
+ )
218
+ assert result.usage() == snapshot(
219
+ RunUsage(
220
+ requests=2,
221
+ input_tokens=103,
222
+ output_tokens=11,
223
+ tool_calls=1,
224
+ )
225
+ )
226
+
227
+
138
228
  async def test_streamed_structured_response():
139
229
  m = TestModel()
140
230
 
@@ -302,6 +392,119 @@ async def test_streamed_text_stream():
302
392
  )
303
393
 
304
394
 
395
+ def test_streamed_text_stream_sync():
396
+ m = TestModel(custom_output_text='The cat sat on the mat.')
397
+
398
+ agent = Agent(m)
399
+
400
+ result = agent.run_stream_sync('Hello')
401
+ # typehint to test (via static typing) that the stream type is correctly inferred
402
+ chunks: list[str] = [c for c in result.stream_text()]
403
+ # one chunk with `stream_text()` due to group_by_temporal
404
+ assert chunks == snapshot(['The cat sat on the mat.'])
405
+ assert result.is_complete
406
+
407
+ result = agent.run_stream_sync('Hello')
408
+ # typehint to test (via static typing) that the stream type is correctly inferred
409
+ chunks: list[str] = [c for c in result.stream_output()]
410
+ # two chunks with `stream()` due to not-final vs. final
411
+ assert chunks == snapshot(['The cat sat on the mat.'])
412
+ assert result.is_complete
413
+
414
+ result = agent.run_stream_sync('Hello')
415
+ assert [c for c in result.stream_text(debounce_by=None)] == snapshot(
416
+ [
417
+ 'The ',
418
+ 'The cat ',
419
+ 'The cat sat ',
420
+ 'The cat sat on ',
421
+ 'The cat sat on the ',
422
+ 'The cat sat on the mat.',
423
+ ]
424
+ )
425
+
426
+ result = agent.run_stream_sync('Hello')
427
+ # with stream_text, there is no need to do partial validation, so we only get the final message once:
428
+ assert [c for c in result.stream_text(delta=False, debounce_by=None)] == snapshot(
429
+ ['The ', 'The cat ', 'The cat sat ', 'The cat sat on ', 'The cat sat on the ', 'The cat sat on the mat.']
430
+ )
431
+
432
+ result = agent.run_stream_sync('Hello')
433
+ assert [c for c in result.stream_text(delta=True, debounce_by=None)] == snapshot(
434
+ ['The ', 'cat ', 'sat ', 'on ', 'the ', 'mat.']
435
+ )
436
+
437
+ def upcase(text: str) -> str:
438
+ return text.upper()
439
+
440
+ result = agent.run_stream_sync('Hello', output_type=TextOutput(upcase))
441
+ assert [c for c in result.stream_output(debounce_by=None)] == snapshot(
442
+ ['THE ', 'THE CAT ', 'THE CAT SAT ', 'THE CAT SAT ON ', 'THE CAT SAT ON THE ', 'THE CAT SAT ON THE MAT.']
443
+ )
444
+
445
+ result = agent.run_stream_sync('Hello')
446
+ assert [c for c, _is_last in result.stream_responses(debounce_by=None)] == snapshot(
447
+ [
448
+ ModelResponse(
449
+ parts=[TextPart(content='The ')],
450
+ usage=RequestUsage(input_tokens=51, output_tokens=1),
451
+ model_name='test',
452
+ timestamp=IsNow(tz=timezone.utc),
453
+ provider_name='test',
454
+ ),
455
+ ModelResponse(
456
+ parts=[TextPart(content='The cat ')],
457
+ usage=RequestUsage(input_tokens=51, output_tokens=2),
458
+ model_name='test',
459
+ timestamp=IsNow(tz=timezone.utc),
460
+ provider_name='test',
461
+ ),
462
+ ModelResponse(
463
+ parts=[TextPart(content='The cat sat ')],
464
+ usage=RequestUsage(input_tokens=51, output_tokens=3),
465
+ model_name='test',
466
+ timestamp=IsNow(tz=timezone.utc),
467
+ provider_name='test',
468
+ ),
469
+ ModelResponse(
470
+ parts=[TextPart(content='The cat sat on ')],
471
+ usage=RequestUsage(input_tokens=51, output_tokens=4),
472
+ model_name='test',
473
+ timestamp=IsNow(tz=timezone.utc),
474
+ provider_name='test',
475
+ ),
476
+ ModelResponse(
477
+ parts=[TextPart(content='The cat sat on the ')],
478
+ usage=RequestUsage(input_tokens=51, output_tokens=5),
479
+ model_name='test',
480
+ timestamp=IsNow(tz=timezone.utc),
481
+ provider_name='test',
482
+ ),
483
+ ModelResponse(
484
+ parts=[TextPart(content='The cat sat on the mat.')],
485
+ usage=RequestUsage(input_tokens=51, output_tokens=7),
486
+ model_name='test',
487
+ timestamp=IsNow(tz=timezone.utc),
488
+ provider_name='test',
489
+ ),
490
+ ModelResponse(
491
+ parts=[TextPart(content='The cat sat on the mat.')],
492
+ usage=RequestUsage(input_tokens=51, output_tokens=7),
493
+ model_name='test',
494
+ timestamp=IsNow(tz=timezone.utc),
495
+ provider_name='test',
496
+ ),
497
+ ModelResponse(
498
+ parts=[TextPart(content='The cat sat on the mat.')],
499
+ usage=RequestUsage(input_tokens=51, output_tokens=7),
500
+ model_name='test',
501
+ timestamp=IsDatetime(),
502
+ provider_name='test',
503
+ ),
504
+ ]
505
+ )
506
+
507
+
305
508
  async def test_plain_response():
306
509
  call_index = 0
307
510
 
@@ -1892,3 +2095,24 @@ async def test_run_stream_events():
1892
2095
  AgentRunResultEvent(result=AgentRunResult(output='{"ret_a":"a-apple"}')),
1893
2096
  ]
1894
2097
  )
2098
+
2099
+
2100
+ def test_structured_response_sync_validation():
2101
+ async def text_stream(_messages: list[ModelMessage], agent_info: AgentInfo) -> AsyncIterator[DeltaToolCalls]:
2102
+ assert agent_info.output_tools is not None
2103
+ assert len(agent_info.output_tools) == 1
2104
+ name = agent_info.output_tools[0].name
2105
+ json_data = json.dumps({'response': [1, 2, 3, 4]})
2106
+ yield {0: DeltaToolCall(name=name)}
2107
+ yield {0: DeltaToolCall(json_args=json_data[:15])}
2108
+ yield {0: DeltaToolCall(json_args=json_data[15:])}
2109
+
2110
+ agent = Agent(FunctionModel(stream_function=text_stream), output_type=list[int])
2111
+
2112
+ chunks: list[list[int]] = []
2113
+ result = agent.run_stream_sync('')
2114
+ for structured_response, last in result.stream_responses(debounce_by=None):
2115
+ response_data = result.validate_response_output(structured_response, allow_partial=not last)
2116
+ chunks.append(response_data)
2117
+
2118
+ assert chunks == snapshot([[1], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]])
@@ -260,7 +260,7 @@ else:
260
260
  Tool(foobar_ctx, takes_ctx=True)
261
261
  Tool(foobar_ctx)
262
262
  Tool(foobar_plain, takes_ctx=False)
263
- assert_type(Tool(foobar_plain), Tool[None])
263
+ assert_type(Tool(foobar_plain), Tool[object])
264
264
  assert_type(Tool(foobar_plain), Tool)
265
265
 
266
266
  # unfortunately we can't type check these cases, since from a typing perspect `foobar_ctx` is valid as a plain tool
@@ -0,0 +1,86 @@
1
+ from dataclasses import dataclass
2
+ from typing import Any
3
+
4
+ from typing_extensions import assert_type
5
+
6
+ from pydantic_ai import Agent, RunContext, Tool, ToolDefinition
7
+
8
+
9
+ @dataclass
10
+ class DepsA:
11
+ a: int
12
+
13
+
14
+ @dataclass
15
+ class DepsB:
16
+ b: str
17
+
18
+
19
+ @dataclass
20
+ class AgentDeps(DepsA, DepsB):
21
+ pass
22
+
23
+
24
+ agent = Agent(
25
+ instructions='...',
26
+ model='...',
27
+ deps_type=AgentDeps,
28
+ )
29
+
30
+
31
+ @agent.tool
32
+ def tool_func_1(ctx: RunContext[DepsA]) -> int:
33
+ return ctx.deps.a
34
+
35
+
36
+ @agent.tool
37
+ def tool_func_2(ctx: RunContext[DepsB]) -> str:
38
+ return ctx.deps.b
39
+
40
+
41
+ # Ensure that you can use tools with deps that are supertypes of the agent's deps
42
+ agent.run_sync('...', deps=AgentDeps(a=0, b='test'))
43
+
44
+
45
+ def my_plain_tool() -> str:
46
+ return 'abc'
47
+
48
+
49
+ def my_context_tool(ctx: RunContext[int]) -> str:
50
+ return str(ctx.deps)
51
+
52
+
53
+ async def my_prepare_none(ctx: RunContext, tool_defn: ToolDefinition) -> None:
54
+ pass
55
+
56
+
57
+ async def my_prepare_object(ctx: RunContext[object], tool_defn: ToolDefinition) -> None:
58
+ pass
59
+
60
+
61
+ async def my_prepare_any(ctx: RunContext[Any], tool_defn: ToolDefinition) -> None:
62
+ pass
63
+
64
+
65
+ tool_1 = Tool(my_plain_tool)
66
+ assert_type(tool_1, Tool[object])
67
+
68
+ tool_2 = Tool(my_plain_tool, prepare=my_prepare_none)
69
+ assert_type(tool_2, Tool[None]) # due to default parameter of RunContext being None and inferring from prepare
70
+
71
+ tool_3 = Tool(my_plain_tool, prepare=my_prepare_object)
72
+ assert_type(tool_3, Tool[object])
73
+
74
+ tool_4 = Tool(my_plain_tool, prepare=my_prepare_any)
75
+ assert_type(tool_4, Tool[Any])
76
+
77
+ tool_5 = Tool(my_context_tool)
78
+ assert_type(tool_5, Tool[int])
79
+
80
+ tool_6 = Tool(my_context_tool, prepare=my_prepare_object)
81
+ assert_type(tool_6, Tool[int])
82
+
83
+ # Note: The following is not ideal behavior, but the workaround is to just not use Any as the argument to your prepare
84
+ # function, as shown in the example immediately above
85
+ tool_7 = Tool(my_context_tool, prepare=my_prepare_any)
86
+ assert_type(tool_7, Tool[Any])
File without changes
File without changes
File without changes
File without changes
File without changes