pydantic-ai 1.9.1__tar.gz → 1.11.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.

Potentially problematic release.


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

Files changed (543) hide show
  1. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/PKG-INFO +10 -10
  2. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/graph/beta/test_graph_execution.py +38 -1
  3. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini/test_gemini_drop_exclusive_maximum.yaml +1 -1
  4. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/test_openai_responses.py +2 -0
  5. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_ag_ui.py +191 -0
  6. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_agent.py +111 -5
  7. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_examples.py +1 -0
  8. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_messages.py +2 -0
  9. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_streaming.py +224 -0
  10. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/typed_agent.py +1 -1
  11. pydantic_ai-1.11.0/tests/typed_deps.py +86 -0
  12. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/.gitignore +0 -0
  13. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/LICENSE +0 -0
  14. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/Makefile +0 -0
  15. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/README.md +0 -0
  16. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/pyproject.toml +0 -0
  17. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/__init__.py +0 -0
  18. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/assets/dummy.pdf +0 -0
  19. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/assets/dummy.txt +0 -0
  20. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/assets/kiwi.png +0 -0
  21. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/assets/marcelo.mp3 +0 -0
  22. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/assets/product_name.txt +0 -0
  23. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/assets/small_video.mp4 +0 -0
  24. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_dbos/test_complex_agent_run.yaml +0 -0
  25. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_dbos/test_complex_agent_run_in_workflow.yaml +0 -0
  26. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_dbos/test_complex_agent_run_stream_in_workflow.yaml +0 -0
  27. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_dbos/test_dbos_agent_iter.yaml +0 -0
  28. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_dbos/test_dbos_agent_iter_in_workflow.yaml +0 -0
  29. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_dbos/test_dbos_agent_override_deps_in_workflow.yaml +0 -0
  30. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_dbos/test_dbos_agent_override_tools_in_workflow.yaml +0 -0
  31. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_dbos/test_dbos_agent_run.yaml +0 -0
  32. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_dbos/test_dbos_agent_run_in_workflow_with_toolsets.yaml +0 -0
  33. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_dbos/test_dbos_agent_run_stream.yaml +0 -0
  34. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_dbos/test_dbos_agent_run_sync.yaml +0 -0
  35. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_dbos/test_dbos_agent_run_sync_in_workflow.yaml +0 -0
  36. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_dbos/test_dbos_agent_with_dataclass_deps_as_dict.yaml +0 -0
  37. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_dbos/test_dbos_agent_with_hitl_tool.yaml +0 -0
  38. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_dbos/test_dbos_agent_with_hitl_tool_sync.yaml +0 -0
  39. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_dbos/test_dbos_agent_with_model_retry.yaml +0 -0
  40. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_dbos/test_dbos_agent_with_non_dict_deps.yaml +0 -0
  41. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_dbos/test_dbos_agent_with_unserializable_deps_type.yaml +0 -0
  42. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_dbos/test_dbos_model_stream_direct.yaml +0 -0
  43. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_dbos/test_multiple_agents.yaml +0 -0
  44. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_dbos/test_simple_agent_run_in_workflow.yaml +0 -0
  45. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_mcp/test_agent_with_server_not_running.yaml +0 -0
  46. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml +0 -0
  47. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_mcp/test_tool_returning_audio_resource.yaml +0 -0
  48. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_mcp/test_tool_returning_audio_resource_link.yaml +0 -0
  49. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml +0 -0
  50. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_mcp/test_tool_returning_error.yaml +0 -0
  51. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_mcp/test_tool_returning_image.yaml +0 -0
  52. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_mcp/test_tool_returning_image_resource.yaml +0 -0
  53. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_mcp/test_tool_returning_image_resource_link.yaml +0 -0
  54. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_mcp/test_tool_returning_multiple_items.yaml +0 -0
  55. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_mcp/test_tool_returning_none.yaml +0 -0
  56. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_mcp/test_tool_returning_str.yaml +0 -0
  57. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_mcp/test_tool_returning_text_resource.yaml +0 -0
  58. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_mcp/test_tool_returning_text_resource_link.yaml +0 -0
  59. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_mcp/test_tool_returning_unstructured_dict.yaml +0 -0
  60. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_prefect/test_complex_agent_run_in_flow.yaml +0 -0
  61. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_prefect/test_iter_in_flow.yaml +0 -0
  62. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_prefect/test_multiple_agents.yaml +0 -0
  63. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_prefect/test_prefect_agent_iter.yaml +0 -0
  64. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_prefect/test_prefect_agent_override_deps.yaml +0 -0
  65. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_prefect/test_prefect_agent_override_tools.yaml +0 -0
  66. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_prefect/test_prefect_agent_override_toolsets.yaml +0 -0
  67. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_prefect/test_prefect_agent_run.yaml +0 -0
  68. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_prefect/test_prefect_agent_run_stream.yaml +0 -0
  69. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_prefect/test_prefect_agent_run_stream_events.yaml +0 -0
  70. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_prefect/test_prefect_agent_run_sync.yaml +0 -0
  71. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_prefect/test_prefect_agent_with_hitl_tool.yaml +0 -0
  72. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_prefect/test_prefect_agent_with_hitl_tool_sync.yaml +0 -0
  73. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_prefect/test_prefect_agent_with_model_retry.yaml +0 -0
  74. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_prefect/test_prefect_agent_with_unserializable_deps.yaml +0 -0
  75. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_prefect/test_run_stream_in_flow.yaml +0 -0
  76. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_prefect/test_run_sync_in_flow.yaml +0 -0
  77. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_prefect/test_simple_agent_run_in_flow.yaml +0 -0
  78. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_settings/test_stop_settings[anthropic].yaml +0 -0
  79. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_settings/test_stop_settings[bedrock].yaml +0 -0
  80. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_settings/test_stop_settings[cohere].yaml +0 -0
  81. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_settings/test_stop_settings[gemini].yaml +0 -0
  82. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_settings/test_stop_settings[google].yaml +0 -0
  83. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_settings/test_stop_settings[groq].yaml +0 -0
  84. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_settings/test_stop_settings[mistral].yaml +0 -0
  85. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_settings/test_stop_settings[openai].yaml +0 -0
  86. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_temporal/test_complex_agent_run.yaml +0 -0
  87. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_temporal/test_complex_agent_run_in_workflow.yaml +0 -0
  88. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_temporal/test_complex_agent_run_stream_in_workflow.yaml +0 -0
  89. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_temporal/test_logfire_plugin.yaml +0 -0
  90. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_temporal/test_multiple_agents.yaml +0 -0
  91. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_temporal/test_simple_agent_run_in_workflow.yaml +0 -0
  92. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_temporal/test_temporal_agent_iter.yaml +0 -0
  93. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_temporal/test_temporal_agent_override_deps_in_workflow.yaml +0 -0
  94. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_temporal/test_temporal_agent_run.yaml +0 -0
  95. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_temporal/test_temporal_agent_run_stream.yaml +0 -0
  96. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_temporal/test_temporal_agent_run_stream_events.yaml +0 -0
  97. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_temporal/test_temporal_agent_run_sync.yaml +0 -0
  98. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_temporal/test_temporal_agent_sync_tool_activity_disabled.yaml +0 -0
  99. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_temporal/test_temporal_agent_with_dataclass_deps_as_dict.yaml +0 -0
  100. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_temporal/test_temporal_agent_with_hitl_tool.yaml +0 -0
  101. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_temporal/test_temporal_agent_with_model_retry.yaml +0 -0
  102. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_temporal/test_temporal_agent_with_non_dict_deps.yaml +0 -0
  103. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_temporal/test_temporal_agent_with_unserializable_deps_type.yaml +0 -0
  104. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_temporal/test_web_search_agent_run_in_workflow.yaml +0 -0
  105. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/cassettes/test_vercel_ai/test_run.yaml +0 -0
  106. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/conftest.py +0 -0
  107. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/evals/__init__.py +0 -0
  108. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/evals/test_dataset.py +0 -0
  109. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/evals/test_evaluator_base.py +0 -0
  110. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/evals/test_evaluator_common.py +0 -0
  111. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/evals/test_evaluator_context.py +0 -0
  112. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/evals/test_evaluator_spec.py +0 -0
  113. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/evals/test_evaluators.py +0 -0
  114. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/evals/test_llm_as_a_judge.py +0 -0
  115. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/evals/test_otel.py +0 -0
  116. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/evals/test_render_numbers.py +0 -0
  117. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/evals/test_reporting.py +0 -0
  118. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/evals/test_reports.py +0 -0
  119. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/evals/test_utils.py +0 -0
  120. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/evals/utils.py +0 -0
  121. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/example_modules/README.md +0 -0
  122. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/example_modules/bank_database.py +0 -0
  123. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/example_modules/fake_database.py +0 -0
  124. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/example_modules/mcp_server.py +0 -0
  125. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/example_modules/weather_service.py +0 -0
  126. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/ext/__init__.py +0 -0
  127. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/ext/test_langchain.py +0 -0
  128. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/graph/__init__.py +0 -0
  129. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/graph/beta/__init__.py +0 -0
  130. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/graph/beta/test_broadcast_and_spread.py +0 -0
  131. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/graph/beta/test_decisions.py +0 -0
  132. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/graph/beta/test_edge_cases.py +0 -0
  133. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/graph/beta/test_edge_labels.py +0 -0
  134. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/graph/beta/test_graph_builder.py +0 -0
  135. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/graph/beta/test_graph_edge_cases.py +0 -0
  136. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/graph/beta/test_graph_iteration.py +0 -0
  137. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/graph/beta/test_joins_and_reducers.py +0 -0
  138. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/graph/beta/test_mermaid_rendering.py +0 -0
  139. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/graph/beta/test_node_and_step.py +0 -0
  140. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/graph/beta/test_parent_forks.py +0 -0
  141. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/graph/beta/test_paths.py +0 -0
  142. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/graph/beta/test_util.py +0 -0
  143. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/graph/beta/test_v1_v2_integration.py +0 -0
  144. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/graph/test_file_persistence.py +0 -0
  145. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/graph/test_graph.py +0 -0
  146. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/graph/test_mermaid.py +0 -0
  147. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/graph/test_persistence.py +0 -0
  148. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/graph/test_state.py +0 -0
  149. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/graph/test_utils.py +0 -0
  150. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/import_examples.py +0 -0
  151. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/json_body_serializer.py +0 -0
  152. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/mcp_server.py +0 -0
  153. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/__init__.py +0 -0
  154. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_anthropic_code_execution_tool.yaml +0 -0
  155. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_anthropic_code_execution_tool_stream.yaml +0 -0
  156. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_anthropic_mcp_servers.yaml +0 -0
  157. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_anthropic_mcp_servers_stream.yaml +0 -0
  158. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_anthropic_memory_tool.yaml +0 -0
  159. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_empty_message_on_history.yaml +0 -0
  160. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_instructions.yaml +0 -0
  161. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part.yaml +0 -0
  162. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_from_other_model.yaml +0 -0
  163. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_redacted.yaml +0 -0
  164. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_redacted_stream.yaml +0 -0
  165. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_stream.yaml +0 -0
  166. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_web_search_tool_stream.yaml +0 -0
  167. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_anthropic_output_tool_with_thinking.yaml +0 -0
  168. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output.yaml +0 -0
  169. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output_multiple.yaml +0 -0
  170. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_anthropic_server_tool_pass_history_to_another_provider.yaml +0 -0
  171. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_anthropic_server_tool_receive_history_from_another_provider.yaml +0 -0
  172. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_anthropic_text_output_function.yaml +0 -0
  173. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_anthropic_text_parts_ahead_of_built_in_tool_call.yaml +0 -0
  174. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_anthropic_tool_output.yaml +0 -0
  175. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_anthropic_tool_with_thinking.yaml +0 -0
  176. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_anthropic_web_search_tool.yaml +0 -0
  177. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_anthropic_web_search_tool_stream.yaml +0 -0
  178. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_document_binary_content_input.yaml +0 -0
  179. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_document_url_input.yaml +0 -0
  180. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_extra_headers.yaml +0 -0
  181. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_image_as_binary_content_tool_response.yaml +0 -0
  182. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_image_url_input.yaml +0 -0
  183. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +0 -0
  184. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_multiple_parallel_tool_calls.yaml +0 -0
  185. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_anthropic/test_text_document_url_input.yaml +0 -0
  186. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_bedrock_anthropic_tool_with_thinking.yaml +0 -0
  187. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_bedrock_empty_system_prompt.yaml +0 -0
  188. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml +0 -0
  189. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_anthropic_model_without_tools.yaml +0 -0
  190. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_guardrail_config.yaml +0 -0
  191. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_instructions.yaml +0 -0
  192. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_iter_stream.yaml +0 -0
  193. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_max_tokens.yaml +0 -0
  194. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_other_parameters.yaml +0 -0
  195. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_performance_config.yaml +0 -0
  196. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_retry.yaml +0 -0
  197. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream.yaml +0 -0
  198. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream_empty_text_delta.yaml +0 -0
  199. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_structured_output.yaml +0 -0
  200. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_anthropic.yaml +0 -0
  201. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_deepseek.yaml +0 -0
  202. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_from_other_model.yaml +0 -0
  203. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_redacted.yaml +0 -0
  204. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_redacted_stream.yaml +0 -0
  205. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_stream.yaml +0 -0
  206. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_top_p.yaml +0 -0
  207. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_bedrock_multiple_documents_in_history.yaml +0 -0
  208. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_document_url_input.yaml +0 -0
  209. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_image_as_binary_content_input.yaml +0 -0
  210. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_image_url_input.yaml +0 -0
  211. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_text_as_binary_content_input.yaml +0 -0
  212. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_text_document_url_input.yaml +0 -0
  213. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_video_as_binary_content_input.yaml +0 -0
  214. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_bedrock/test_video_url_input.yaml +0 -0
  215. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_cohere/test_cohere_model_instructions.yaml +0 -0
  216. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_cohere/test_cohere_model_thinking_part.yaml +0 -0
  217. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_cohere/test_request_simple_success_with_vcr.yaml +0 -0
  218. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_part.yaml +0 -0
  219. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_stream.yaml +0 -0
  220. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_download_item/test_download_item_application_octet_stream.yaml +0 -0
  221. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_download_item/test_download_item_audio_mpeg.yaml +0 -0
  222. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_download_item/test_download_item_no_content_type.yaml +0 -0
  223. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini/test_document_url_input.yaml +0 -0
  224. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_false.yaml +0 -0
  225. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_true.yaml +0 -0
  226. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini/test_gemini_exclusive_minimum_and_maximum.yaml +0 -0
  227. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini/test_gemini_model_instructions.yaml +0 -0
  228. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini/test_gemini_model_thinking_part.yaml +0 -0
  229. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini/test_gemini_native_output.yaml +0 -0
  230. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini/test_gemini_native_output_multiple.yaml +0 -0
  231. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini/test_gemini_prompted_output.yaml +0 -0
  232. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_multiple.yaml +0 -0
  233. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_with_tools.yaml +0 -0
  234. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini/test_gemini_text_output_function.yaml +0 -0
  235. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini/test_gemini_tool_config_any_with_tool_without_args.yaml +0 -0
  236. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini/test_gemini_tool_output.yaml +0 -0
  237. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini/test_gemini_youtube_video_url_input.yaml +0 -0
  238. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini/test_image_as_binary_content_input.yaml +0 -0
  239. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini/test_image_as_binary_content_tool_response.yaml +0 -0
  240. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini/test_image_url_input.yaml +0 -0
  241. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini/test_labels_are_ignored_with_gla_provider.yaml +0 -0
  242. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini/test_video_as_binary_content_input.yaml +0 -0
  243. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini/test_video_url_input.yaml +0 -0
  244. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini_vertex/test_labels.yaml +0 -0
  245. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl (gs)].yaml +0 -0
  246. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl].yaml +0 -0
  247. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl (gs)].yaml +0 -0
  248. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl].yaml +0 -0
  249. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl (gs)].yaml +0 -0
  250. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl].yaml +0 -0
  251. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (YouTube)].yaml +0 -0
  252. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (gs)].yaml +0 -0
  253. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl].yaml +0 -0
  254. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_gemini_vertex/test_url_input_force_download.yaml +0 -0
  255. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_builtin_tools_with_other_tools.yaml +0 -0
  256. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_httpx_client_is_not_closed.yaml +0 -0
  257. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_image_and_text_output.yaml +0 -0
  258. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_image_generation.yaml +0 -0
  259. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_image_generation_stream.yaml +0 -0
  260. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_image_generation_with_text.yaml +0 -0
  261. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_image_or_text_output.yaml +0 -0
  262. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model.yaml +0 -0
  263. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_builtin_code_execution_stream.yaml +0 -0
  264. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_code_execution_tool.yaml +0 -0
  265. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_document_url_input.yaml +0 -0
  266. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_empty_assistant_response.yaml +0 -0
  267. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_empty_user_prompt.yaml +0 -0
  268. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_image_as_binary_content_input.yaml +0 -0
  269. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_image_url_input.yaml +0 -0
  270. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_instructions.yaml +0 -0
  271. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_iter_stream.yaml +0 -0
  272. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_max_tokens.yaml +0 -0
  273. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_multiple_documents_in_history.yaml +0 -0
  274. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_receive_web_search_history_from_another_provider.yaml +0 -0
  275. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_retry.yaml +0 -0
  276. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_safety_settings.yaml +0 -0
  277. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_server_tool_receive_history_from_another_provider.yaml +0 -0
  278. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_stream.yaml +0 -0
  279. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_structured_output.yaml +0 -0
  280. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_text_as_binary_content_input.yaml +0 -0
  281. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_text_document_url_input.yaml +0 -0
  282. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_thinking_config.yaml +0 -0
  283. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_thinking_part.yaml +0 -0
  284. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_thinking_part_from_other_model.yaml +0 -0
  285. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_thinking_part_iter.yaml +0 -0
  286. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_top_p.yaml +0 -0
  287. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_url_context_tool.yaml +0 -0
  288. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_usage_limit_exceeded.yaml +0 -0
  289. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_usage_limit_not_exceeded.yaml +0 -0
  290. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_vertex_labels.yaml +0 -0
  291. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_vertex_provider.yaml +0 -0
  292. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input.yaml +0 -0
  293. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input_with_vendor_metadata.yaml +0 -0
  294. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_video_url_input.yaml +0 -0
  295. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_web_search_tool.yaml +0 -0
  296. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_web_search_tool_stream.yaml +0 -0
  297. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_model_youtube_video_url_input_with_vendor_metadata.yaml +0 -0
  298. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_multiple_images.yaml +0 -0
  299. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_native_output.yaml +0 -0
  300. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_native_output_multiple.yaml +0 -0
  301. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_prompted_output.yaml +0 -0
  302. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_prompted_output_multiple.yaml +0 -0
  303. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_prompted_output_with_tools.yaml +0 -0
  304. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_text_output_function.yaml +0 -0
  305. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_timeout.yaml +0 -0
  306. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_tool_config_any_with_tool_without_args.yaml +0 -0
  307. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_tool_output.yaml +0 -0
  308. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl (gs)].yaml +0 -0
  309. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl].yaml +0 -0
  310. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl (gs)].yaml +0 -0
  311. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl].yaml +0 -0
  312. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl (gs)].yaml +0 -0
  313. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl].yaml +0 -0
  314. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (YouTube)].yaml +0 -0
  315. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (gs)].yaml +0 -0
  316. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl].yaml +0 -0
  317. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_url_input_force_download.yaml +0 -0
  318. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_vertexai_image_generation.yaml +0 -0
  319. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_google/test_google_vertexai_model_usage_limit_exceeded.yaml +0 -0
  320. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_groq/test_extra_headers.yaml +0 -0
  321. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_groq/test_groq_model_instructions.yaml +0 -0
  322. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_groq/test_groq_model_thinking_part.yaml +0 -0
  323. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_groq/test_groq_model_thinking_part_iter.yaml +0 -0
  324. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_groq/test_groq_model_web_search_tool.yaml +0 -0
  325. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_groq/test_groq_model_web_search_tool_stream.yaml +0 -0
  326. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_groq/test_groq_native_output.yaml +0 -0
  327. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_groq/test_groq_prompted_output.yaml +0 -0
  328. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_groq/test_image_as_binary_content_input.yaml +0 -0
  329. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_groq/test_image_as_binary_content_tool_response.yaml +0 -0
  330. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_groq/test_image_url_input.yaml +0 -0
  331. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_groq/test_tool_regular_error.yaml +0 -0
  332. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_groq/test_tool_use_failed_error.yaml +0 -0
  333. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_groq/test_tool_use_failed_error_streaming.yaml +0 -0
  334. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_huggingface/test_hf_model_instructions.yaml +0 -0
  335. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part.yaml +0 -0
  336. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part_iter.yaml +0 -0
  337. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_huggingface/test_image_as_binary_content_input.yaml +0 -0
  338. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_huggingface/test_image_url_input.yaml +0 -0
  339. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[Qwen-Qwen2.5-72B-Instruct].yaml +0 -0
  340. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[deepseek-ai-DeepSeek-R1-0528].yaml +0 -0
  341. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[meta-llama-Llama-3.3-70B-Instruct].yaml +0 -0
  342. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_huggingface/test_request_simple_success_with_vcr.yaml +0 -0
  343. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_huggingface/test_request_simple_usage.yaml +0 -0
  344. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_huggingface/test_simple_completion.yaml +0 -0
  345. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_huggingface/test_stream_completion.yaml +0 -0
  346. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_mistral/test_image_as_binary_content_tool_response.yaml +0 -0
  347. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_mistral/test_mistral_model_instructions.yaml +0 -0
  348. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part.yaml +0 -0
  349. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part_iter.yaml +0 -0
  350. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_model_names/test_known_model_names.yaml +0 -0
  351. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_audio_as_binary_content_input.yaml +0 -0
  352. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_compatible_api_with_tool_calls_without_id.yaml +0 -0
  353. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_document_as_binary_content_input.yaml +0 -0
  354. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_document_as_binary_content_input_with_tool.yaml +0 -0
  355. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_document_url_input.yaml +0 -0
  356. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_extra_headers.yaml +0 -0
  357. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_image_as_binary_content_input.yaml +0 -0
  358. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_image_as_binary_content_tool_response.yaml +0 -0
  359. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_image_url_input_force_download.yaml +0 -0
  360. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_image_url_input_force_download_response_api.yaml +0 -0
  361. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_image_url_tool_response.yaml +0 -0
  362. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_invalid_response.yaml +0 -0
  363. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4.5-preview].yaml +0 -0
  364. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4o-mini].yaml +0 -0
  365. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_max_completion_tokens[o3-mini].yaml +0 -0
  366. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_multiple_agent_tool_calls.yaml +0 -0
  367. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_openai_audio_url_input.yaml +0 -0
  368. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_openai_instructions.yaml +0 -0
  369. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_openai_instructions_with_tool_calls_keep_instructions.yaml +0 -0
  370. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider.yaml +0 -0
  371. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider_harmony.yaml +0 -0
  372. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider_qwen_3_coder.yaml +0 -0
  373. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_openai_model_settings_temperature_ignored_on_gpt_5.yaml +0 -0
  374. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_openai_model_thinking_part.yaml +0 -0
  375. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_openai_model_without_system_prompt.yaml +0 -0
  376. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_openai_native_output.yaml +0 -0
  377. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_openai_native_output_multiple.yaml +0 -0
  378. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[developer].yaml +0 -0
  379. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[system].yaml +0 -0
  380. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_openai_prompted_output.yaml +0 -0
  381. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_openai_prompted_output_multiple.yaml +0 -0
  382. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_openai_text_output_function.yaml +0 -0
  383. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_openai_tool_output.yaml +0 -0
  384. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_openai_web_search_tool.yaml +0 -0
  385. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_openai_web_search_tool_model_not_supported.yaml +0 -0
  386. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_openai_web_search_tool_with_user_location.yaml +0 -0
  387. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_reasoning_model_with_temperature.yaml +0 -0
  388. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_system_prompt_role_o1_mini.yaml +0 -0
  389. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_text_document_as_binary_content_input.yaml +0 -0
  390. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_text_document_url_input.yaml +0 -0
  391. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_text_response.yaml +0 -0
  392. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_user_id.yaml +0 -0
  393. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai/test_valid_response.yaml +0 -0
  394. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_audio_as_binary_content_input.yaml +0 -0
  395. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_input.yaml +0 -0
  396. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_tool_response.yaml +0 -0
  397. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_native_output.yaml +0 -0
  398. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_native_output_multiple.yaml +0 -0
  399. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_previous_response_id.yaml +0 -0
  400. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_previous_response_id_auto_mode.yaml +0 -0
  401. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_code_execution_return_image.yaml +0 -0
  402. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_code_execution_return_image_stream.yaml +0 -0
  403. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_as_binary_content_input.yaml +0 -0
  404. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_url_input.yaml +0 -0
  405. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_history_with_combined_tool_call_id.yaml +0 -0
  406. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_and_text_output.yaml +0 -0
  407. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation.yaml +0 -0
  408. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_jpeg.yaml +0 -0
  409. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_stream.yaml +0 -0
  410. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_tool_without_image_output.yaml +0 -0
  411. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_with_native_output.yaml +0 -0
  412. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_with_prompted_output.yaml +0 -0
  413. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_with_tool_output.yaml +0 -0
  414. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_generation_with_tools.yaml +0 -0
  415. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_or_text_output.yaml +0 -0
  416. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_url_input.yaml +0 -0
  417. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools.yaml +0 -0
  418. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools_web_search.yaml +0 -0
  419. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_http_error.yaml +0 -0
  420. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_instructions.yaml +0 -0
  421. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_mcp_server_tool.yaml +0 -0
  422. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_mcp_server_tool_stream.yaml +0 -0
  423. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_mcp_server_tool_with_connector.yaml +0 -0
  424. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_retry.yaml +0 -0
  425. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response.yaml +0 -0
  426. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response_with_tool_call.yaml +0 -0
  427. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_thinking_part.yaml +0 -0
  428. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool.yaml +0 -0
  429. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_stream.yaml +0 -0
  430. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_with_invalid_region.yaml +0 -0
  431. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_with_user_location.yaml +0 -0
  432. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_multiple_images.yaml +0 -0
  433. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_non_reasoning_model_no_item_ids.yaml +0 -0
  434. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_output_type.yaml +0 -0
  435. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_effort.yaml +0 -0
  436. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_generate_summary.yaml +0 -0
  437. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_requires_function_call_status_none.yaml +0 -0
  438. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_stream.yaml +0 -0
  439. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_streaming_usage.yaml +0 -0
  440. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_system_prompt.yaml +0 -0
  441. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_text_document_url_input.yaml +0 -0
  442. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_part_from_other_model.yaml +0 -0
  443. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_part_iter.yaml +0 -0
  444. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_code_execution_tool.yaml +0 -0
  445. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_code_execution_tool_stream.yaml +0 -0
  446. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_modified_history.yaml +0 -0
  447. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_tool_calls.yaml +0 -0
  448. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_verbosity.yaml +0 -0
  449. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_prompted_output.yaml +0 -0
  450. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_prompted_output_multiple.yaml +0 -0
  451. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_reasoning_model_with_temperature.yaml +0 -0
  452. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_text_output_function.yaml +0 -0
  453. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/cassettes/test_openai_responses/test_tool_output.yaml +0 -0
  454. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/mock_async_stream.py +0 -0
  455. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/mock_openai.py +0 -0
  456. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/test_anthropic.py +0 -0
  457. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/test_bedrock.py +0 -0
  458. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/test_cohere.py +0 -0
  459. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/test_deepseek.py +0 -0
  460. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/test_download_item.py +0 -0
  461. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/test_fallback.py +0 -0
  462. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/test_gemini.py +0 -0
  463. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/test_gemini_vertex.py +0 -0
  464. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/test_google.py +0 -0
  465. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/test_groq.py +0 -0
  466. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/test_huggingface.py +0 -0
  467. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/test_instrumented.py +0 -0
  468. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/test_mcp_sampling.py +0 -0
  469. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/test_mistral.py +0 -0
  470. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/test_model.py +0 -0
  471. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/test_model_function.py +0 -0
  472. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/test_model_names.py +0 -0
  473. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/test_model_request_parameters.py +0 -0
  474. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/test_model_settings.py +0 -0
  475. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/test_model_test.py +0 -0
  476. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/test_openai.py +0 -0
  477. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/models/test_outlines.py +0 -0
  478. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/parts_from_messages.py +0 -0
  479. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/__init__.py +0 -0
  480. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/cassettes/test_azure/test_azure_provider_call.yaml +0 -0
  481. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_anthropic.yaml +0 -0
  482. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_bedrock.yaml +0 -0
  483. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_google_vertex.yaml +0 -0
  484. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_groq.yaml +0 -0
  485. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_openai.yaml +0 -0
  486. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_openai_responses.yaml +0 -0
  487. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/cassettes/test_google_vertex/test_vertexai_provider.yaml +0 -0
  488. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/cassettes/test_heroku/test_heroku_model_provider_claude_3_7_sonnet.yaml +0 -0
  489. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/cassettes/test_openrouter/test_openrouter_with_google_model.yaml +0 -0
  490. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_anthropic.py +0 -0
  491. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_azure.py +0 -0
  492. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_bedrock.py +0 -0
  493. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_cerebras.py +0 -0
  494. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_cohere.py +0 -0
  495. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_deepseek.py +0 -0
  496. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_fireworks.py +0 -0
  497. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_gateway.py +0 -0
  498. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_github.py +0 -0
  499. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_google_gla.py +0 -0
  500. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_google_vertex.py +0 -0
  501. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_grok.py +0 -0
  502. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_groq.py +0 -0
  503. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_heroku.py +0 -0
  504. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_huggingface.py +0 -0
  505. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_litellm.py +0 -0
  506. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_mistral.py +0 -0
  507. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_moonshotai.py +0 -0
  508. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_nebius.py +0 -0
  509. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_ollama.py +0 -0
  510. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_openai.py +0 -0
  511. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_openrouter.py +0 -0
  512. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_outlines.py +0 -0
  513. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_ovhcloud.py +0 -0
  514. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_provider_names.py +0 -0
  515. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_together.py +0 -0
  516. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/providers/test_vercel.py +0 -0
  517. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_a2a.py +0 -0
  518. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_builtin_tools.py +0 -0
  519. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_cli.py +0 -0
  520. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_dbos.py +0 -0
  521. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_deps.py +0 -0
  522. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_direct.py +0 -0
  523. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_fastmcp.py +0 -0
  524. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_format_as_xml.py +0 -0
  525. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_function_schema.py +0 -0
  526. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_history_processor.py +0 -0
  527. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_json_body_serializer.py +0 -0
  528. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_live.py +0 -0
  529. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_logfire.py +0 -0
  530. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_mcp.py +0 -0
  531. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_parts_manager.py +0 -0
  532. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_prefect.py +0 -0
  533. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_settings.py +0 -0
  534. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_temporal.py +0 -0
  535. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_tenacity.py +0 -0
  536. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_thinking_part.py +0 -0
  537. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_tools.py +0 -0
  538. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_toolsets.py +0 -0
  539. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_ui.py +0 -0
  540. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_usage_limits.py +0 -0
  541. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_utils.py +0 -0
  542. {pydantic_ai-1.9.1 → pydantic_ai-1.11.0}/tests/test_vercel_ai.py +0 -0
  543. {pydantic_ai-1.9.1 → pydantic_ai-1.11.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.11.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.11.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.11.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.11.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.11.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.11.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.11.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.11.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.11.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.11.0; extra == 'prefect'
48
48
  Description-Content-Type: text/markdown
49
49
 
50
50
  <div align="center">
@@ -7,7 +7,7 @@ from dataclasses import dataclass, field
7
7
  import pytest
8
8
 
9
9
  from pydantic_graph.beta import GraphBuilder, StepContext
10
- from pydantic_graph.beta.join import ReduceFirstValue, reduce_list_append
10
+ from pydantic_graph.beta.join import ReduceFirstValue, reduce_list_append, reduce_list_extend
11
11
 
12
12
  pytestmark = pytest.mark.anyio
13
13
 
@@ -343,3 +343,40 @@ async def test_mixed_sequential_and_parallel_execution():
343
343
  assert 'parallel-100' in state.log
344
344
  assert 'step3' in state.log
345
345
  assert result == 'Result: 152' # (50+1) + (100+1) = 152
346
+
347
+
348
+ async def test_multiple_sequential_joins():
349
+ g = GraphBuilder(output_type=list[int])
350
+
351
+ @g.step
352
+ async def source(ctx: StepContext[None, None, None]) -> int:
353
+ return 10
354
+
355
+ @g.step
356
+ async def add_one(ctx: StepContext[None, None, int]) -> list[int]:
357
+ return [ctx.inputs + 1]
358
+
359
+ @g.step
360
+ async def add_two(ctx: StepContext[None, None, int]) -> list[int]:
361
+ return [ctx.inputs + 2]
362
+
363
+ @g.step
364
+ async def add_three(ctx: StepContext[None, None, int]) -> list[int]:
365
+ return [ctx.inputs + 3]
366
+
367
+ collect = g.join(reduce_list_extend, initial_factory=list[int], parent_fork_id='source_fork', node_id='collect')
368
+ mediator = g.join(reduce_list_extend, initial_factory=list[int], node_id='mediator')
369
+
370
+ # Broadcasting: send the value from source to all three steps
371
+ g.add(
372
+ g.edge_from(g.start_node).to(source),
373
+ g.edge_from(source).to(add_one, add_two, add_three, fork_id='source_fork'),
374
+ g.edge_from(add_one, add_two).to(mediator),
375
+ g.edge_from(mediator).to(collect),
376
+ g.edge_from(add_three).to(collect),
377
+ g.edge_from(collect).to(g.end_node),
378
+ )
379
+
380
+ graph = g.build()
381
+ result = await graph.run()
382
+ assert sorted(result) == [11, 12, 13]
@@ -259,7 +259,7 @@ interactions:
259
259
  name: get_chinese_zodiac
260
260
  response:
261
261
  call_error: |-
262
- 1 validation errors: [
262
+ 1 validation error: [
263
263
  {
264
264
  "type": "greater_than",
265
265
  "loc": [
@@ -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(
@@ -3,7 +3,7 @@ import json
3
3
  import re
4
4
  import sys
5
5
  from collections import defaultdict
6
- from collections.abc import AsyncIterable, Callable
6
+ from collections.abc import AsyncIterable, AsyncIterator, Callable
7
7
  from dataclasses import dataclass, replace
8
8
  from datetime import timezone
9
9
  from typing import Any, Generic, Literal, TypeVar, Union
@@ -59,7 +59,7 @@ from pydantic_ai._output import (
59
59
  )
60
60
  from pydantic_ai.agent import AgentRunResult, WrapperAgent
61
61
  from pydantic_ai.builtin_tools import CodeExecutionTool, MCPServerTool, WebSearchTool
62
- from pydantic_ai.models.function import AgentInfo, FunctionModel
62
+ from pydantic_ai.models.function import AgentInfo, DeltaToolCall, DeltaToolCalls, FunctionModel
63
63
  from pydantic_ai.models.test import TestModel
64
64
  from pydantic_ai.output import StructuredDict, ToolOutput
65
65
  from pydantic_ai.result import RunUsage
@@ -201,7 +201,7 @@ def test_result_pydantic_model_retry():
201
201
  ),
202
202
  ModelResponse(
203
203
  parts=[ToolCallPart(tool_name='final_result', args='{"a": 42, "b": "foo"}', tool_call_id=IsStr())],
204
- usage=RequestUsage(input_tokens=87, output_tokens=14),
204
+ usage=RequestUsage(input_tokens=89, output_tokens=14),
205
205
  model_name='function:return_model:',
206
206
  timestamp=IsNow(tz=timezone.utc),
207
207
  ),
@@ -260,7 +260,9 @@ def test_result_pydantic_model_validation_error():
260
260
  retry_prompt = user_retry.parts[0]
261
261
  assert isinstance(retry_prompt, RetryPromptPart)
262
262
  assert retry_prompt.model_response() == snapshot("""\
263
- 1 validation errors: [
263
+ 1 validation error:
264
+ ```json
265
+ [
264
266
  {
265
267
  "type": "value_error",
266
268
  "loc": [
@@ -270,6 +272,7 @@ def test_result_pydantic_model_validation_error():
270
272
  "input": "foo"
271
273
  }
272
274
  ]
275
+ ```
273
276
 
274
277
  Fix the errors and try again.""")
275
278
 
@@ -335,6 +338,85 @@ def test_output_validator():
335
338
  )
336
339
 
337
340
 
341
+ def test_output_validator_partial_sync():
342
+ """Test that output validators receive correct value for `partial_output` in sync mode."""
343
+ call_log: list[tuple[str, bool]] = []
344
+
345
+ agent = Agent[None, str](TestModel(custom_output_text='test output'))
346
+
347
+ @agent.output_validator
348
+ def validate_output(ctx: RunContext[None], output: str) -> str:
349
+ call_log.append((output, ctx.partial_output))
350
+ return output
351
+
352
+ result = agent.run_sync('Hello')
353
+ assert result.output == 'test output'
354
+
355
+ assert call_log == snapshot([('test output', False)])
356
+
357
+
358
+ async def test_output_validator_partial_stream_text():
359
+ """Test that output validators receive correct value for `partial_output` when using stream_text()."""
360
+ call_log: list[tuple[str, bool]] = []
361
+
362
+ async def stream_text(messages: list[ModelMessage], info: AgentInfo) -> AsyncIterator[str]:
363
+ for chunk in ['Hello', ' ', 'world', '!']:
364
+ yield chunk
365
+
366
+ agent = Agent(FunctionModel(stream_function=stream_text))
367
+
368
+ @agent.output_validator
369
+ def validate_output(ctx: RunContext[None], output: str) -> str:
370
+ call_log.append((output, ctx.partial_output))
371
+ return output
372
+
373
+ async with agent.run_stream('Hello') as result:
374
+ text_parts = []
375
+ async for chunk in result.stream_text(debounce_by=None):
376
+ text_parts.append(chunk)
377
+
378
+ assert text_parts[-1] == 'Hello world!'
379
+ assert call_log == snapshot(
380
+ [
381
+ ('Hello', True),
382
+ ('Hello ', True),
383
+ ('Hello world', True),
384
+ ('Hello world!', True),
385
+ ('Hello world!', False),
386
+ ]
387
+ )
388
+
389
+
390
+ async def test_output_validator_partial_stream_output():
391
+ """Test that output validators receive correct value for `partial_output` when using stream_output()."""
392
+ call_log: list[tuple[Foo, bool]] = []
393
+
394
+ async def stream_model(messages: list[ModelMessage], info: AgentInfo) -> AsyncIterator[DeltaToolCalls]:
395
+ assert info.output_tools is not None
396
+ yield {0: DeltaToolCall(name=info.output_tools[0].name, json_args='{"a": 42')}
397
+ yield {0: DeltaToolCall(json_args=', "b": "f')}
398
+ yield {0: DeltaToolCall(json_args='oo"}')}
399
+
400
+ agent = Agent(FunctionModel(stream_function=stream_model), output_type=Foo)
401
+
402
+ @agent.output_validator
403
+ def validate_output(ctx: RunContext[None], output: Foo) -> Foo:
404
+ call_log.append((output, ctx.partial_output))
405
+ return output
406
+
407
+ async with agent.run_stream('Hello') as result:
408
+ outputs = [output async for output in result.stream_output(debounce_by=None)]
409
+
410
+ assert outputs[-1] == Foo(a=42, b='foo')
411
+ assert call_log == snapshot(
412
+ [
413
+ (Foo(a=42, b='f'), True),
414
+ (Foo(a=42, b='foo'), True),
415
+ (Foo(a=42, b='foo'), False),
416
+ ]
417
+ )
418
+
419
+
338
420
  def test_plain_response_then_tuple():
339
421
  call_index = 0
340
422
 
@@ -1796,7 +1878,7 @@ def test_native_output():
1796
1878
  ),
1797
1879
  ModelResponse(
1798
1880
  parts=[TextPart(content='{"city": "Mexico City", "country": "Mexico"}')],
1799
- usage=RequestUsage(input_tokens=85, output_tokens=12),
1881
+ usage=RequestUsage(input_tokens=87, output_tokens=12),
1800
1882
  model_name='function:return_city_location:',
1801
1883
  timestamp=IsDatetime(),
1802
1884
  ),
@@ -3894,6 +3976,30 @@ You are a potato.\
3894
3976
  )
3895
3977
 
3896
3978
 
3979
+ def test_instructions_during_run():
3980
+ agent = Agent('test', instructions='You are a helpful assistant.')
3981
+ result = agent.run_sync('Hello', instructions='Your task is to greet people.')
3982
+ assert result.all_messages()[0] == snapshot(
3983
+ ModelRequest(
3984
+ parts=[UserPromptPart(content='Hello', timestamp=IsDatetime())],
3985
+ instructions="""\
3986
+ You are a helpful assistant.
3987
+ Your task is to greet people.\
3988
+ """,
3989
+ )
3990
+ )
3991
+
3992
+ result2 = agent.run_sync('Hello again!')
3993
+ assert result2.all_messages()[0] == snapshot(
3994
+ ModelRequest(
3995
+ parts=[UserPromptPart(content='Hello again!', timestamp=IsDatetime())],
3996
+ instructions="""\
3997
+ You are a helpful assistant.\
3998
+ """,
3999
+ )
4000
+ )
4001
+
4002
+
3897
4003
  def test_multi_agent_instructions_with_structured_output():
3898
4004
  """Test that Agent2 uses its own instructions when called with Agent1's history.
3899
4005
 
@@ -522,6 +522,7 @@ text_responses: dict[str, str | ToolCallPart | Sequence[ToolCallPart]] = {
522
522
  'Where do I live?': 'You live in Mexico City.',
523
523
  'Tell me about the pydantic/pydantic-ai repo.': 'The pydantic/pydantic-ai repo is a Python agent framework for building Generative AI applications.',
524
524
  'What do I have on my calendar today?': "You're going to spend all day playing with Pydantic AI.",
525
+ 'Write a long story about a cat': 'Once upon a time, there was a curious cat named Whiskers who loved to explore the world around him...',
525
526
  }
526
527
 
527
528
  tool_responses: dict[tuple[str, str], str] = {
@@ -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',