pydantic-ai 1.0.10__tar.gz → 1.0.11__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 (461) hide show
  1. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/PKG-INFO +5 -6
  2. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/README.md +1 -1
  3. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/pyproject.toml +2 -2
  4. pydantic_ai-1.0.11/tests/models/cassettes/test_anthropic/test_anthropic_output_tool_with_thinking.yaml +74 -0
  5. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/test_anthropic.py +24 -0
  6. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/test_instrumented.py +110 -1
  7. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/test_model_names.py +2 -6
  8. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/test_openai.py +21 -0
  9. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/test_openai_responses.py +35 -1
  10. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/test_ollama.py +8 -0
  11. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/test_dbos.py +26 -6
  12. pydantic_ai-1.0.11/tests/test_function_schema.py +201 -0
  13. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/test_history_processor.py +82 -0
  14. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/.gitignore +0 -0
  15. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/LICENSE +0 -0
  16. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/Makefile +0 -0
  17. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/__init__.py +0 -0
  18. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/assets/dummy.pdf +0 -0
  19. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/assets/kiwi.png +0 -0
  20. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/assets/marcelo.mp3 +0 -0
  21. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/assets/product_name.txt +0 -0
  22. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/assets/small_video.mp4 +0 -0
  23. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_dbos/test_complex_agent_run.yaml +0 -0
  24. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_dbos/test_complex_agent_run_in_workflow.yaml +0 -0
  25. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_dbos/test_complex_agent_run_stream_in_workflow.yaml +0 -0
  26. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_dbos/test_dbos_agent_iter.yaml +0 -0
  27. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_dbos/test_dbos_agent_iter_in_workflow.yaml +0 -0
  28. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_dbos/test_dbos_agent_override_deps_in_workflow.yaml +0 -0
  29. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_dbos/test_dbos_agent_override_tools_in_workflow.yaml +0 -0
  30. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_dbos/test_dbos_agent_run.yaml +0 -0
  31. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_dbos/test_dbos_agent_run_in_workflow_with_toolsets.yaml +0 -0
  32. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_dbos/test_dbos_agent_run_stream.yaml +0 -0
  33. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_dbos/test_dbos_agent_run_sync.yaml +0 -0
  34. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_dbos/test_dbos_agent_run_sync_in_workflow.yaml +0 -0
  35. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_dbos/test_dbos_agent_with_dataclass_deps_as_dict.yaml +0 -0
  36. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_dbos/test_dbos_agent_with_hitl_tool.yaml +0 -0
  37. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_dbos/test_dbos_agent_with_hitl_tool_sync.yaml +0 -0
  38. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_dbos/test_dbos_agent_with_model_retry.yaml +0 -0
  39. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_dbos/test_dbos_agent_with_non_dict_deps.yaml +0 -0
  40. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_dbos/test_dbos_agent_with_unserializable_deps_type.yaml +0 -0
  41. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_dbos/test_dbos_model_stream_direct.yaml +0 -0
  42. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_dbos/test_multiple_agents.yaml +0 -0
  43. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_dbos/test_simple_agent_run_in_workflow.yaml +0 -0
  44. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_mcp/test_agent_with_server_not_running.yaml +0 -0
  45. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml +0 -0
  46. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_mcp/test_tool_returning_audio_resource.yaml +0 -0
  47. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_mcp/test_tool_returning_audio_resource_link.yaml +0 -0
  48. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml +0 -0
  49. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_mcp/test_tool_returning_error.yaml +0 -0
  50. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_mcp/test_tool_returning_image.yaml +0 -0
  51. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_mcp/test_tool_returning_image_resource.yaml +0 -0
  52. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_mcp/test_tool_returning_image_resource_link.yaml +0 -0
  53. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_mcp/test_tool_returning_multiple_items.yaml +0 -0
  54. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_mcp/test_tool_returning_none.yaml +0 -0
  55. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_mcp/test_tool_returning_str.yaml +0 -0
  56. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_mcp/test_tool_returning_text_resource.yaml +0 -0
  57. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_mcp/test_tool_returning_text_resource_link.yaml +0 -0
  58. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_settings/test_stop_settings[anthropic].yaml +0 -0
  59. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_settings/test_stop_settings[bedrock].yaml +0 -0
  60. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_settings/test_stop_settings[cohere].yaml +0 -0
  61. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_settings/test_stop_settings[gemini].yaml +0 -0
  62. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_settings/test_stop_settings[google].yaml +0 -0
  63. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_settings/test_stop_settings[groq].yaml +0 -0
  64. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_settings/test_stop_settings[mistral].yaml +0 -0
  65. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_settings/test_stop_settings[openai].yaml +0 -0
  66. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_temporal/test_complex_agent_run.yaml +0 -0
  67. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_temporal/test_complex_agent_run_in_workflow.yaml +0 -0
  68. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_temporal/test_complex_agent_run_stream_in_workflow.yaml +0 -0
  69. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_temporal/test_logfire_plugin.yaml +0 -0
  70. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_temporal/test_multiple_agents.yaml +0 -0
  71. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_temporal/test_simple_agent_run_in_workflow.yaml +0 -0
  72. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_temporal/test_temporal_agent_iter.yaml +0 -0
  73. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_temporal/test_temporal_agent_override_deps_in_workflow.yaml +0 -0
  74. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_temporal/test_temporal_agent_run.yaml +0 -0
  75. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_temporal/test_temporal_agent_run_stream.yaml +0 -0
  76. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_temporal/test_temporal_agent_run_sync.yaml +0 -0
  77. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_temporal/test_temporal_agent_sync_tool_activity_disabled.yaml +0 -0
  78. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_temporal/test_temporal_agent_with_dataclass_deps_as_dict.yaml +0 -0
  79. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_temporal/test_temporal_agent_with_hitl_tool.yaml +0 -0
  80. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_temporal/test_temporal_agent_with_model_retry.yaml +0 -0
  81. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_temporal/test_temporal_agent_with_non_dict_deps.yaml +0 -0
  82. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/cassettes/test_temporal/test_temporal_agent_with_unserializable_deps_type.yaml +0 -0
  83. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/conftest.py +0 -0
  84. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/evals/__init__.py +0 -0
  85. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/evals/test_dataset.py +0 -0
  86. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/evals/test_evaluator_base.py +0 -0
  87. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/evals/test_evaluator_common.py +0 -0
  88. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/evals/test_evaluator_context.py +0 -0
  89. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/evals/test_evaluator_spec.py +0 -0
  90. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/evals/test_evaluators.py +0 -0
  91. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/evals/test_llm_as_a_judge.py +0 -0
  92. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/evals/test_otel.py +0 -0
  93. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/evals/test_render_numbers.py +0 -0
  94. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/evals/test_reporting.py +0 -0
  95. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/evals/test_reports.py +0 -0
  96. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/evals/test_utils.py +0 -0
  97. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/evals/utils.py +0 -0
  98. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/example_modules/README.md +0 -0
  99. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/example_modules/bank_database.py +0 -0
  100. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/example_modules/fake_database.py +0 -0
  101. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/example_modules/mcp_server.py +0 -0
  102. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/example_modules/weather_service.py +0 -0
  103. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/ext/__init__.py +0 -0
  104. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/ext/test_langchain.py +0 -0
  105. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/graph/__init__.py +0 -0
  106. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/graph/test_file_persistence.py +0 -0
  107. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/graph/test_graph.py +0 -0
  108. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/graph/test_mermaid.py +0 -0
  109. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/graph/test_persistence.py +0 -0
  110. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/graph/test_state.py +0 -0
  111. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/graph/test_utils.py +0 -0
  112. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/import_examples.py +0 -0
  113. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/json_body_serializer.py +0 -0
  114. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/mcp_server.py +0 -0
  115. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/__init__.py +0 -0
  116. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_anthropic_code_execution_tool.yaml +0 -0
  117. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_anthropic_code_execution_tool_stream.yaml +0 -0
  118. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_anthropic_model_empty_message_on_history.yaml +0 -0
  119. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_anthropic_model_instructions.yaml +0 -0
  120. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part.yaml +0 -0
  121. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_from_other_model.yaml +0 -0
  122. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_redacted.yaml +0 -0
  123. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_redacted_stream.yaml +0 -0
  124. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_stream.yaml +0 -0
  125. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_anthropic_model_web_search_tool_stream.yaml +0 -0
  126. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output.yaml +0 -0
  127. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output_multiple.yaml +0 -0
  128. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_anthropic_server_tool_pass_history_to_another_provider.yaml +0 -0
  129. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_anthropic_server_tool_receive_history_from_another_provider.yaml +0 -0
  130. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_anthropic_text_output_function.yaml +0 -0
  131. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_anthropic_text_parts_ahead_of_built_in_tool_call.yaml +0 -0
  132. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_anthropic_tool_output.yaml +0 -0
  133. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_anthropic_tool_with_thinking.yaml +0 -0
  134. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_anthropic_web_search_tool.yaml +0 -0
  135. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_anthropic_web_search_tool_stream.yaml +0 -0
  136. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_document_binary_content_input.yaml +0 -0
  137. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_document_url_input.yaml +0 -0
  138. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_extra_headers.yaml +0 -0
  139. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_image_as_binary_content_tool_response.yaml +0 -0
  140. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_image_url_input.yaml +0 -0
  141. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +0 -0
  142. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_multiple_parallel_tool_calls.yaml +0 -0
  143. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_anthropic/test_text_document_url_input.yaml +0 -0
  144. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_bedrock_anthropic_tool_with_thinking.yaml +0 -0
  145. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_bedrock_empty_system_prompt.yaml +0 -0
  146. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml +0 -0
  147. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_anthropic_model_without_tools.yaml +0 -0
  148. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_guardrail_config.yaml +0 -0
  149. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_instructions.yaml +0 -0
  150. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_iter_stream.yaml +0 -0
  151. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_max_tokens.yaml +0 -0
  152. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_other_parameters.yaml +0 -0
  153. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_performance_config.yaml +0 -0
  154. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_retry.yaml +0 -0
  155. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream.yaml +0 -0
  156. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_structured_output.yaml +0 -0
  157. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_anthropic.yaml +0 -0
  158. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_deepseek.yaml +0 -0
  159. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_from_other_model.yaml +0 -0
  160. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_redacted.yaml +0 -0
  161. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_redacted_stream.yaml +0 -0
  162. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_stream.yaml +0 -0
  163. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_bedrock_model_top_p.yaml +0 -0
  164. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_bedrock_multiple_documents_in_history.yaml +0 -0
  165. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_document_url_input.yaml +0 -0
  166. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_image_as_binary_content_input.yaml +0 -0
  167. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_image_url_input.yaml +0 -0
  168. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_text_as_binary_content_input.yaml +0 -0
  169. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_text_document_url_input.yaml +0 -0
  170. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_video_as_binary_content_input.yaml +0 -0
  171. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_bedrock/test_video_url_input.yaml +0 -0
  172. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_cohere/test_cohere_model_instructions.yaml +0 -0
  173. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_cohere/test_cohere_model_thinking_part.yaml +0 -0
  174. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_cohere/test_request_simple_success_with_vcr.yaml +0 -0
  175. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_part.yaml +0 -0
  176. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_stream.yaml +0 -0
  177. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_download_item/test_download_item_application_octet_stream.yaml +0 -0
  178. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_download_item/test_download_item_audio_mpeg.yaml +0 -0
  179. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_download_item/test_download_item_no_content_type.yaml +0 -0
  180. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini/test_document_url_input.yaml +0 -0
  181. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_false.yaml +0 -0
  182. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_true.yaml +0 -0
  183. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini/test_gemini_drop_exclusive_maximum.yaml +0 -0
  184. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini/test_gemini_exclusive_minimum_and_maximum.yaml +0 -0
  185. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini/test_gemini_model_instructions.yaml +0 -0
  186. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini/test_gemini_model_thinking_part.yaml +0 -0
  187. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini/test_gemini_native_output.yaml +0 -0
  188. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini/test_gemini_native_output_multiple.yaml +0 -0
  189. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini/test_gemini_prompted_output.yaml +0 -0
  190. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_multiple.yaml +0 -0
  191. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_with_tools.yaml +0 -0
  192. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini/test_gemini_text_output_function.yaml +0 -0
  193. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini/test_gemini_tool_config_any_with_tool_without_args.yaml +0 -0
  194. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini/test_gemini_tool_output.yaml +0 -0
  195. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini/test_gemini_youtube_video_url_input.yaml +0 -0
  196. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini/test_image_as_binary_content_input.yaml +0 -0
  197. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini/test_image_as_binary_content_tool_response.yaml +0 -0
  198. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini/test_image_url_input.yaml +0 -0
  199. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini/test_labels_are_ignored_with_gla_provider.yaml +0 -0
  200. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini/test_video_as_binary_content_input.yaml +0 -0
  201. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini/test_video_url_input.yaml +0 -0
  202. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini_vertex/test_labels.yaml +0 -0
  203. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl (gs)].yaml +0 -0
  204. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl].yaml +0 -0
  205. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl (gs)].yaml +0 -0
  206. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl].yaml +0 -0
  207. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl (gs)].yaml +0 -0
  208. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl].yaml +0 -0
  209. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (YouTube)].yaml +0 -0
  210. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (gs)].yaml +0 -0
  211. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl].yaml +0 -0
  212. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_gemini_vertex/test_url_input_force_download.yaml +0 -0
  213. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_builtin_tools_with_other_tools.yaml +0 -0
  214. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model.yaml +0 -0
  215. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_builtin_code_execution_stream.yaml +0 -0
  216. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_code_execution_tool.yaml +0 -0
  217. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_document_url_input.yaml +0 -0
  218. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_empty_assistant_response.yaml +0 -0
  219. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_empty_user_prompt.yaml +0 -0
  220. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_image_as_binary_content_input.yaml +0 -0
  221. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_image_url_input.yaml +0 -0
  222. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_instructions.yaml +0 -0
  223. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_iter_stream.yaml +0 -0
  224. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_max_tokens.yaml +0 -0
  225. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_multiple_documents_in_history.yaml +0 -0
  226. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_receive_web_search_history_from_another_provider.yaml +0 -0
  227. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_retry.yaml +0 -0
  228. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_safety_settings.yaml +0 -0
  229. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_server_tool_receive_history_from_another_provider.yaml +0 -0
  230. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_stream.yaml +0 -0
  231. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_structured_output.yaml +0 -0
  232. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_text_as_binary_content_input.yaml +0 -0
  233. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_text_document_url_input.yaml +0 -0
  234. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_thinking_config.yaml +0 -0
  235. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_thinking_part.yaml +0 -0
  236. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_thinking_part_from_other_model.yaml +0 -0
  237. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_thinking_part_iter.yaml +0 -0
  238. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_top_p.yaml +0 -0
  239. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_url_context_tool.yaml +0 -0
  240. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_usage_limit_exceeded.yaml +0 -0
  241. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_usage_limit_not_exceeded.yaml +0 -0
  242. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_vertex_labels.yaml +0 -0
  243. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_vertex_provider.yaml +0 -0
  244. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input.yaml +0 -0
  245. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input_with_vendor_metadata.yaml +0 -0
  246. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_video_url_input.yaml +0 -0
  247. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_web_search_tool.yaml +0 -0
  248. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_web_search_tool_stream.yaml +0 -0
  249. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_model_youtube_video_url_input_with_vendor_metadata.yaml +0 -0
  250. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_native_output.yaml +0 -0
  251. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_native_output_multiple.yaml +0 -0
  252. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_prompted_output.yaml +0 -0
  253. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_prompted_output_multiple.yaml +0 -0
  254. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_prompted_output_with_tools.yaml +0 -0
  255. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_text_output_function.yaml +0 -0
  256. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_timeout.yaml +0 -0
  257. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_tool_config_any_with_tool_without_args.yaml +0 -0
  258. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_tool_output.yaml +0 -0
  259. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl (gs)].yaml +0 -0
  260. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl].yaml +0 -0
  261. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl (gs)].yaml +0 -0
  262. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl].yaml +0 -0
  263. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl (gs)].yaml +0 -0
  264. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl].yaml +0 -0
  265. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (YouTube)].yaml +0 -0
  266. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (gs)].yaml +0 -0
  267. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl].yaml +0 -0
  268. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_url_input_force_download.yaml +0 -0
  269. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_google/test_google_vertexai_model_usage_limit_exceeded.yaml +0 -0
  270. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_groq/test_extra_headers.yaml +0 -0
  271. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_groq/test_groq_model_instructions.yaml +0 -0
  272. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_groq/test_groq_model_thinking_part.yaml +0 -0
  273. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_groq/test_groq_model_thinking_part_iter.yaml +0 -0
  274. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_groq/test_groq_model_web_search_tool.yaml +0 -0
  275. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_groq/test_groq_model_web_search_tool_stream.yaml +0 -0
  276. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_groq/test_groq_native_output.yaml +0 -0
  277. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_groq/test_groq_prompted_output.yaml +0 -0
  278. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_groq/test_image_as_binary_content_input.yaml +0 -0
  279. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_groq/test_image_as_binary_content_tool_response.yaml +0 -0
  280. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_groq/test_image_url_input.yaml +0 -0
  281. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_groq/test_tool_regular_error.yaml +0 -0
  282. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_groq/test_tool_use_failed_error.yaml +0 -0
  283. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_groq/test_tool_use_failed_error_streaming.yaml +0 -0
  284. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_huggingface/test_hf_model_instructions.yaml +0 -0
  285. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part.yaml +0 -0
  286. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part_iter.yaml +0 -0
  287. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_huggingface/test_image_as_binary_content_input.yaml +0 -0
  288. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_huggingface/test_image_url_input.yaml +0 -0
  289. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[Qwen-Qwen2.5-72B-Instruct].yaml +0 -0
  290. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[deepseek-ai-DeepSeek-R1-0528].yaml +0 -0
  291. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[meta-llama-Llama-3.3-70B-Instruct].yaml +0 -0
  292. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_huggingface/test_request_simple_success_with_vcr.yaml +0 -0
  293. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_huggingface/test_request_simple_usage.yaml +0 -0
  294. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_huggingface/test_simple_completion.yaml +0 -0
  295. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_huggingface/test_stream_completion.yaml +0 -0
  296. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_mistral/test_image_as_binary_content_tool_response.yaml +0 -0
  297. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_mistral/test_mistral_model_instructions.yaml +0 -0
  298. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part.yaml +0 -0
  299. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part_iter.yaml +0 -0
  300. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_model_names/test_known_model_names.yaml +0 -0
  301. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_audio_as_binary_content_input.yaml +0 -0
  302. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_compatible_api_with_tool_calls_without_id.yaml +0 -0
  303. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_document_as_binary_content_input.yaml +0 -0
  304. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_document_as_binary_content_input_with_tool.yaml +0 -0
  305. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_document_url_input.yaml +0 -0
  306. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_extra_headers.yaml +0 -0
  307. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_image_as_binary_content_input.yaml +0 -0
  308. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_image_as_binary_content_tool_response.yaml +0 -0
  309. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_image_url_tool_response.yaml +0 -0
  310. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_invalid_response.yaml +0 -0
  311. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4.5-preview].yaml +0 -0
  312. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4o-mini].yaml +0 -0
  313. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_max_completion_tokens[o3-mini].yaml +0 -0
  314. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_multiple_agent_tool_calls.yaml +0 -0
  315. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_openai_audio_url_input.yaml +0 -0
  316. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_openai_instructions.yaml +0 -0
  317. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_openai_instructions_with_tool_calls_keep_instructions.yaml +0 -0
  318. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider.yaml +0 -0
  319. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider_harmony.yaml +0 -0
  320. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider_qwen_3_coder.yaml +0 -0
  321. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_openai_model_settings_temperature_ignored_on_gpt_5.yaml +0 -0
  322. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_openai_model_thinking_part.yaml +0 -0
  323. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_openai_model_without_system_prompt.yaml +0 -0
  324. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_openai_native_output.yaml +0 -0
  325. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_openai_native_output_multiple.yaml +0 -0
  326. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[developer].yaml +0 -0
  327. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[system].yaml +0 -0
  328. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_openai_prompted_output.yaml +0 -0
  329. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_openai_prompted_output_multiple.yaml +0 -0
  330. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_openai_text_output_function.yaml +0 -0
  331. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_openai_tool_output.yaml +0 -0
  332. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_openai_web_search_tool.yaml +0 -0
  333. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_openai_web_search_tool_model_not_supported.yaml +0 -0
  334. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_openai_web_search_tool_with_user_location.yaml +0 -0
  335. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_reasoning_model_with_temperature.yaml +0 -0
  336. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_system_prompt_role_o1_mini.yaml +0 -0
  337. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_text_response.yaml +0 -0
  338. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_user_id.yaml +0 -0
  339. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai/test_valid_response.yaml +0 -0
  340. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_audio_as_binary_content_input.yaml +0 -0
  341. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_input.yaml +0 -0
  342. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_tool_response.yaml +0 -0
  343. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_native_output.yaml +0 -0
  344. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_native_output_multiple.yaml +0 -0
  345. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_previous_response_id.yaml +0 -0
  346. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_previous_response_id_auto_mode.yaml +0 -0
  347. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_code_execution_return_image.yaml +0 -0
  348. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_as_binary_content_input.yaml +0 -0
  349. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_url_input.yaml +0 -0
  350. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_url_input.yaml +0 -0
  351. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools.yaml +0 -0
  352. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools_web_search.yaml +0 -0
  353. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_http_error.yaml +0 -0
  354. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_instructions.yaml +0 -0
  355. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_retry.yaml +0 -0
  356. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response.yaml +0 -0
  357. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response_with_tool_call.yaml +0 -0
  358. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_thinking_part.yaml +0 -0
  359. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool.yaml +0 -0
  360. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_stream.yaml +0 -0
  361. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_with_invalid_region.yaml +0 -0
  362. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_with_user_location.yaml +0 -0
  363. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_non_reasoning_model_no_item_ids.yaml +0 -0
  364. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_output_type.yaml +0 -0
  365. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_effort.yaml +0 -0
  366. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_generate_summary.yaml +0 -0
  367. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_stream.yaml +0 -0
  368. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_streaming_usage.yaml +0 -0
  369. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_system_prompt.yaml +0 -0
  370. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_text_document_url_input.yaml +0 -0
  371. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_part_from_other_model.yaml +0 -0
  372. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_part_iter.yaml +0 -0
  373. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_code_execution_tool.yaml +0 -0
  374. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_code_execution_tool_stream.yaml +0 -0
  375. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_modified_history.yaml +0 -0
  376. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_thinking_with_tool_calls.yaml +0 -0
  377. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_openai_responses_verbosity.yaml +0 -0
  378. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_prompted_output.yaml +0 -0
  379. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_prompted_output_multiple.yaml +0 -0
  380. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_reasoning_model_with_temperature.yaml +0 -0
  381. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_text_output_function.yaml +0 -0
  382. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/cassettes/test_openai_responses/test_tool_output.yaml +0 -0
  383. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/mock_async_stream.py +0 -0
  384. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/mock_openai.py +0 -0
  385. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/test_bedrock.py +0 -0
  386. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/test_cohere.py +0 -0
  387. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/test_deepseek.py +0 -0
  388. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/test_download_item.py +0 -0
  389. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/test_fallback.py +0 -0
  390. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/test_gemini.py +0 -0
  391. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/test_gemini_vertex.py +0 -0
  392. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/test_google.py +0 -0
  393. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/test_groq.py +0 -0
  394. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/test_huggingface.py +0 -0
  395. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/test_mcp_sampling.py +0 -0
  396. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/test_mistral.py +0 -0
  397. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/test_model.py +0 -0
  398. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/test_model_function.py +0 -0
  399. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/test_model_request_parameters.py +0 -0
  400. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/test_model_settings.py +0 -0
  401. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/models/test_model_test.py +0 -0
  402. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/parts_from_messages.py +0 -0
  403. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/__init__.py +0 -0
  404. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/cassettes/test_azure/test_azure_provider_call.yaml +0 -0
  405. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_anthropic.yaml +0 -0
  406. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_google_vertex.yaml +0 -0
  407. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_groq.yaml +0 -0
  408. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_openai.yaml +0 -0
  409. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/cassettes/test_gateway/test_gateway_provider_with_openai_responses.yaml +0 -0
  410. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/cassettes/test_google_vertex/test_vertexai_provider.yaml +0 -0
  411. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/cassettes/test_heroku/test_heroku_model_provider_claude_3_7_sonnet.yaml +0 -0
  412. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/cassettes/test_openrouter/test_openrouter_with_google_model.yaml +0 -0
  413. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/test_anthropic.py +0 -0
  414. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/test_azure.py +0 -0
  415. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/test_bedrock.py +0 -0
  416. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/test_cerebras.py +0 -0
  417. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/test_cohere.py +0 -0
  418. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/test_deepseek.py +0 -0
  419. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/test_fireworks.py +0 -0
  420. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/test_gateway.py +0 -0
  421. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/test_github.py +0 -0
  422. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/test_google_gla.py +0 -0
  423. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/test_google_vertex.py +0 -0
  424. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/test_grok.py +0 -0
  425. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/test_groq.py +0 -0
  426. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/test_heroku.py +0 -0
  427. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/test_huggingface.py +0 -0
  428. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/test_litellm.py +0 -0
  429. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/test_mistral.py +0 -0
  430. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/test_moonshotai.py +0 -0
  431. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/test_openai.py +0 -0
  432. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/test_openrouter.py +0 -0
  433. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/test_provider_names.py +0 -0
  434. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/test_together.py +0 -0
  435. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/providers/test_vercel.py +0 -0
  436. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/test_a2a.py +0 -0
  437. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/test_ag_ui.py +0 -0
  438. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/test_agent.py +0 -0
  439. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/test_builtin_tools.py +0 -0
  440. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/test_cli.py +0 -0
  441. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/test_deps.py +0 -0
  442. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/test_direct.py +0 -0
  443. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/test_examples.py +0 -0
  444. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/test_format_as_xml.py +0 -0
  445. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/test_json_body_serializer.py +0 -0
  446. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/test_live.py +0 -0
  447. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/test_logfire.py +0 -0
  448. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/test_mcp.py +0 -0
  449. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/test_messages.py +0 -0
  450. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/test_parts_manager.py +0 -0
  451. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/test_settings.py +0 -0
  452. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/test_streaming.py +0 -0
  453. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/test_temporal.py +0 -0
  454. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/test_tenacity.py +0 -0
  455. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/test_thinking_part.py +0 -0
  456. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/test_tools.py +0 -0
  457. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/test_toolsets.py +0 -0
  458. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/test_usage_limits.py +0 -0
  459. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/test_utils.py +0 -0
  460. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/typed_agent.py +0 -0
  461. {pydantic_ai-1.0.10 → pydantic_ai-1.0.11}/tests/typed_graph.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pydantic-ai
3
- Version: 1.0.10
3
+ Version: 1.0.11
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
@@ -14,7 +14,6 @@ Classifier: Framework :: Pydantic
14
14
  Classifier: Framework :: Pydantic :: 2
15
15
  Classifier: Intended Audience :: Developers
16
16
  Classifier: Intended Audience :: Information Technology
17
- Classifier: License :: OSI Approved :: MIT License
18
17
  Classifier: Operating System :: OS Independent
19
18
  Classifier: Programming Language :: Python
20
19
  Classifier: Programming Language :: Python :: 3
@@ -27,13 +26,13 @@ Classifier: Topic :: Internet
27
26
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
28
27
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
29
28
  Requires-Python: >=3.10
30
- Requires-Dist: pydantic-ai-slim[ag-ui,anthropic,bedrock,cli,cohere,evals,google,groq,huggingface,logfire,mcp,mistral,openai,retries,temporal,vertexai]==1.0.10
29
+ Requires-Dist: pydantic-ai-slim[ag-ui,anthropic,bedrock,cli,cohere,evals,google,groq,huggingface,logfire,mcp,mistral,openai,retries,temporal,vertexai]==1.0.11
31
30
  Provides-Extra: a2a
32
31
  Requires-Dist: fasta2a>=0.4.1; extra == 'a2a'
33
32
  Provides-Extra: dbos
34
- Requires-Dist: pydantic-ai-slim[dbos]==1.0.10; extra == 'dbos'
33
+ Requires-Dist: pydantic-ai-slim[dbos]==1.0.11; extra == 'dbos'
35
34
  Provides-Extra: examples
36
- Requires-Dist: pydantic-ai-examples==1.0.10; extra == 'examples'
35
+ Requires-Dist: pydantic-ai-examples==1.0.11; extra == 'examples'
37
36
  Description-Content-Type: text/markdown
38
37
 
39
38
  <div align="center">
@@ -95,7 +94,7 @@ Integrates the [Model Context Protocol](https://ai.pydantic.dev/mcp/client), [Ag
95
94
  Easily lets you flag that certain tool calls [require approval](https://ai.pydantic.dev/deferred-tools#human-in-the-loop-tool-approval) before they can proceed, possibly depending on tool call arguments, conversation history, or user preferences.
96
95
 
97
96
  8. **Durable Execution**:
98
- Enables you to build [durable agents](https://ai.pydantic.dev/temporal) that can preserve their progress across transient API failures and application errors or restarts, and handle long-running, asynchronous, and human-in-the-loop workflows with production-grade reliability.
97
+ Enables you to build [durable agents](https://ai.pydantic.dev/durable_execution/overview/) that can preserve their progress across transient API failures and application errors or restarts, and handle long-running, asynchronous, and human-in-the-loop workflows with production-grade reliability.
99
98
 
100
99
  9. **Streamed Outputs**:
101
100
  Provides the ability to [stream](https://ai.pydantic.dev/output#streamed-results) structured output continuously, with immediate validation, ensuring real time access to generated data.
@@ -57,7 +57,7 @@ Integrates the [Model Context Protocol](https://ai.pydantic.dev/mcp/client), [Ag
57
57
  Easily lets you flag that certain tool calls [require approval](https://ai.pydantic.dev/deferred-tools#human-in-the-loop-tool-approval) before they can proceed, possibly depending on tool call arguments, conversation history, or user preferences.
58
58
 
59
59
  8. **Durable Execution**:
60
- Enables you to build [durable agents](https://ai.pydantic.dev/temporal) that can preserve their progress across transient API failures and application errors or restarts, and handle long-running, asynchronous, and human-in-the-loop workflows with production-grade reliability.
60
+ Enables you to build [durable agents](https://ai.pydantic.dev/durable_execution/overview/) that can preserve their progress across transient API failures and application errors or restarts, and handle long-running, asynchronous, and human-in-the-loop workflows with production-grade reliability.
61
61
 
62
62
  9. **Streamed Outputs**:
63
63
  Provides the ability to [stream](https://ai.pydantic.dev/output#streamed-results) structured output continuously, with immediate validation, ensuring real time access to generated data.
@@ -22,6 +22,7 @@ authors = [
22
22
  { name = "Douwe Maan", email = "douwe@pydantic.dev" },
23
23
  ]
24
24
  license = "MIT"
25
+ license-files = ["LICENSE"]
25
26
  readme = "README.md"
26
27
  classifiers = [
27
28
  "Development Status :: 5 - Production/Stable",
@@ -34,7 +35,6 @@ classifiers = [
34
35
  "Programming Language :: Python :: 3.13",
35
36
  "Intended Audience :: Developers",
36
37
  "Intended Audience :: Information Technology",
37
- "License :: OSI Approved :: MIT License",
38
38
  "Operating System :: OS Independent",
39
39
  "Topic :: Internet",
40
40
  "Topic :: Scientific/Engineering :: Artificial Intelligence",
@@ -102,7 +102,7 @@ dev = [
102
102
  "pytest-xdist>=3.6.1",
103
103
  # Needed for PyCharm users
104
104
  "pip>=25.2",
105
- "genai-prices>=0.0.22",
105
+ "genai-prices>=0.0.28",
106
106
  "mcp-run-python>=0.0.20",
107
107
  ]
108
108
  lint = ["mypy>=1.11.2", "pyright>=1.1.390", "ruff>=0.6.9"]
@@ -0,0 +1,74 @@
1
+ interactions:
2
+ - request:
3
+ headers:
4
+ accept:
5
+ - application/json
6
+ accept-encoding:
7
+ - gzip, deflate
8
+ connection:
9
+ - keep-alive
10
+ content-length:
11
+ - '471'
12
+ content-type:
13
+ - application/json
14
+ host:
15
+ - api.anthropic.com
16
+ method: POST
17
+ parsed_body:
18
+ max_tokens: 4096
19
+ messages:
20
+ - content:
21
+ - text: What is 3 + 3?
22
+ type: text
23
+ role: user
24
+ model: claude-sonnet-4-0
25
+ stream: false
26
+ system: |-
27
+ Always respond with a JSON object that's compatible with this schema:
28
+
29
+ {"properties": {"response": {"type": "integer"}}, "required": ["response"], "type": "object", "title": "int"}
30
+
31
+ Don't include any text or Markdown fencing before or after.
32
+ thinking:
33
+ budget_tokens: 3000
34
+ type: enabled
35
+ uri: https://api.anthropic.com/v1/messages?beta=true
36
+ response:
37
+ headers:
38
+ connection:
39
+ - keep-alive
40
+ content-length:
41
+ - '1032'
42
+ content-type:
43
+ - application/json
44
+ strict-transport-security:
45
+ - max-age=31536000; includeSubDomains; preload
46
+ transfer-encoding:
47
+ - chunked
48
+ parsed_body:
49
+ content:
50
+ - signature: ErQCCkYICBgCKkDId3yuTWB+RmnrHX1N/m+Q+uvt6TTyU6tRWGzFYK1UmQo+lkK5PFjgRvLK6eXA/q8sbVIC6mO3/1eq5aTkSX7+EgzYnRzfZdWJZ1X+410aDC5zyOhlAbOmBiBUmiIwPC3/mI3lVg3woo5Q2jwuZ/u+Pl8LMzrFxG0YbK2F5YDVuCjhrJsOq5e1V36GWJjqKpsBsKiPfPZQ6wizN25g64pwJb+Wjm55hDeGpK8xJeVFuren6PNKKkruBtlK1PIVpjSXBGkdTJCC69xlhwaXF20zah/A8HDm/2QEqid8Gz8+7zu+b7OGa22WdW0uZEwQgJtydTscZFqWzyAm8CZtsCh8STbRNPggOaCNg9vX5ipu2D+jXnAaL6MIOOQ3FUO+CdljS0mvfoyeCabS8TUYAQ==
51
+ thinking: The user is asking for 3 + 3, which equals 6. I need to respond with a JSON object that has a "response"
52
+ field containing an integer value.
53
+ type: thinking
54
+ - text: '{"response": 6}'
55
+ type: text
56
+ id: msg_01Fo4JKsQzJMTQBgLSAeCJDG
57
+ model: claude-sonnet-4-20250514
58
+ role: assistant
59
+ stop_reason: end_turn
60
+ stop_sequence: null
61
+ type: message
62
+ usage:
63
+ cache_creation:
64
+ ephemeral_1h_input_tokens: 0
65
+ ephemeral_5m_input_tokens: 0
66
+ cache_creation_input_tokens: 0
67
+ cache_read_input_tokens: 0
68
+ input_tokens: 105
69
+ output_tokens: 55
70
+ service_tier: standard
71
+ status:
72
+ code: 200
73
+ message: OK
74
+ version: 1
@@ -2,6 +2,7 @@ from __future__ import annotations as _annotations
2
2
 
3
3
  import json
4
4
  import os
5
+ import re
5
6
  from collections.abc import Callable, Sequence
6
7
  from dataclasses import dataclass, field
7
8
  from datetime import timezone
@@ -4182,6 +4183,29 @@ async def test_anthropic_native_output(allow_model_requests: None, anthropic_api
4182
4183
  await agent.run('What is the largest city in the user country?')
4183
4184
 
4184
4185
 
4186
+ async def test_anthropic_output_tool_with_thinking(allow_model_requests: None, anthropic_api_key: str):
4187
+ m = AnthropicModel(
4188
+ 'claude-sonnet-4-0',
4189
+ provider=AnthropicProvider(api_key=anthropic_api_key),
4190
+ settings=AnthropicModelSettings(anthropic_thinking={'type': 'enabled', 'budget_tokens': 3000}),
4191
+ )
4192
+
4193
+ agent = Agent(m, output_type=int)
4194
+
4195
+ with pytest.raises(
4196
+ UserError,
4197
+ match=re.escape(
4198
+ 'Anthropic does not support thinking and output tools at the same time. Use `output_type=PromptedOutput(...)` instead.'
4199
+ ),
4200
+ ):
4201
+ await agent.run('What is 3 + 3?')
4202
+
4203
+ agent = Agent(m, output_type=PromptedOutput(int))
4204
+
4205
+ result = await agent.run('What is 3 + 3?')
4206
+ assert result.output == snapshot(6)
4207
+
4208
+
4185
4209
  async def test_anthropic_tool_with_thinking(allow_model_requests: None, anthropic_api_key: str):
4186
4210
  """When using thinking with tool calls in Anthropic, we need to send the thinking part back to the provider.
4187
4211
 
@@ -42,7 +42,7 @@ from pydantic_ai.models.instrumented import InstrumentationSettings, Instrumente
42
42
  from pydantic_ai.settings import ModelSettings
43
43
  from pydantic_ai.usage import RequestUsage
44
44
 
45
- from ..conftest import IsStr, try_import
45
+ from ..conftest import IsInt, IsStr, try_import
46
46
 
47
47
  with try_import() as imports_successful:
48
48
  from logfire.testing import CaptureLogfire
@@ -831,6 +831,115 @@ Fix the errors and try again.\
831
831
  ]
832
832
  )
833
833
 
834
+ assert capfire.get_collected_metrics() == snapshot(
835
+ [
836
+ {
837
+ 'name': 'gen_ai.client.token.usage',
838
+ 'description': 'Measures number of input and output tokens used',
839
+ 'unit': '{token}',
840
+ 'data': {
841
+ 'data_points': [
842
+ {
843
+ 'attributes': {
844
+ 'gen_ai.system': 'openai',
845
+ 'gen_ai.operation.name': 'chat',
846
+ 'gen_ai.request.model': 'gpt-4o',
847
+ 'gen_ai.response.model': 'gpt-4o-2024-11-20',
848
+ 'gen_ai.token.type': 'input',
849
+ },
850
+ 'start_time_unix_nano': IsInt(),
851
+ 'time_unix_nano': IsInt(),
852
+ 'count': 1,
853
+ 'sum': 100,
854
+ 'scale': 20,
855
+ 'zero_count': 0,
856
+ 'positive': {'offset': 6966588, 'bucket_counts': [1]},
857
+ 'negative': {'offset': 0, 'bucket_counts': [0]},
858
+ 'flags': 0,
859
+ 'min': 100,
860
+ 'max': 100,
861
+ 'exemplars': [],
862
+ },
863
+ {
864
+ 'attributes': {
865
+ 'gen_ai.system': 'openai',
866
+ 'gen_ai.operation.name': 'chat',
867
+ 'gen_ai.request.model': 'gpt-4o',
868
+ 'gen_ai.response.model': 'gpt-4o-2024-11-20',
869
+ 'gen_ai.token.type': 'output',
870
+ },
871
+ 'start_time_unix_nano': IsInt(),
872
+ 'time_unix_nano': IsInt(),
873
+ 'count': 1,
874
+ 'sum': 200,
875
+ 'scale': 20,
876
+ 'zero_count': 0,
877
+ 'positive': {'offset': 8015164, 'bucket_counts': [1]},
878
+ 'negative': {'offset': 0, 'bucket_counts': [0]},
879
+ 'flags': 0,
880
+ 'min': 200,
881
+ 'max': 200,
882
+ 'exemplars': [],
883
+ },
884
+ ],
885
+ 'aggregation_temporality': 1,
886
+ },
887
+ },
888
+ {
889
+ 'name': 'operation.cost',
890
+ 'description': 'Monetary cost',
891
+ 'unit': '{USD}',
892
+ 'data': {
893
+ 'data_points': [
894
+ {
895
+ 'attributes': {
896
+ 'gen_ai.system': 'openai',
897
+ 'gen_ai.operation.name': 'chat',
898
+ 'gen_ai.request.model': 'gpt-4o',
899
+ 'gen_ai.response.model': 'gpt-4o-2024-11-20',
900
+ 'gen_ai.token.type': 'input',
901
+ },
902
+ 'start_time_unix_nano': IsInt(),
903
+ 'time_unix_nano': IsInt(),
904
+ 'count': 1,
905
+ 'sum': 0.00025,
906
+ 'scale': 20,
907
+ 'zero_count': 0,
908
+ 'positive': {'offset': -12547035, 'bucket_counts': [1]},
909
+ 'negative': {'offset': 0, 'bucket_counts': [0]},
910
+ 'flags': 0,
911
+ 'min': 0.00025,
912
+ 'max': 0.00025,
913
+ 'exemplars': [],
914
+ },
915
+ {
916
+ 'attributes': {
917
+ 'gen_ai.system': 'openai',
918
+ 'gen_ai.operation.name': 'chat',
919
+ 'gen_ai.request.model': 'gpt-4o',
920
+ 'gen_ai.response.model': 'gpt-4o-2024-11-20',
921
+ 'gen_ai.token.type': 'output',
922
+ },
923
+ 'start_time_unix_nano': IsInt(),
924
+ 'time_unix_nano': IsInt(),
925
+ 'count': 1,
926
+ 'sum': 0.002,
927
+ 'scale': 20,
928
+ 'zero_count': 0,
929
+ 'positive': {'offset': -9401307, 'bucket_counts': [1]},
930
+ 'negative': {'offset': 0, 'bucket_counts': [0]},
931
+ 'flags': 0,
932
+ 'min': 0.002,
933
+ 'max': 0.002,
934
+ 'exemplars': [],
935
+ },
936
+ ],
937
+ 'aggregation_temporality': 1,
938
+ },
939
+ },
940
+ ]
941
+ )
942
+
834
943
 
835
944
  def test_messages_to_otel_events_serialization_errors():
836
945
  class Foo:
@@ -58,9 +58,7 @@ def test_known_model_names(): # pragma: lax no cover
58
58
  else:
59
59
  yield from get_model_names(arg)
60
60
 
61
- anthropic_names = [f'anthropic:{n}' for n in get_model_names(AnthropicModelName)] + [
62
- n for n in get_model_names(AnthropicModelName) if n.startswith('claude')
63
- ]
61
+ anthropic_names = [f'anthropic:{n}' for n in get_model_names(AnthropicModelName)]
64
62
  cohere_names = [f'cohere:{n}' for n in get_model_names(CohereModelName)]
65
63
  google_names = [f'google-gla:{n}' for n in get_model_names(GeminiModelName)] + [
66
64
  f'google-vertex:{n}' for n in get_model_names(GeminiModelName)
@@ -69,9 +67,7 @@ def test_known_model_names(): # pragma: lax no cover
69
67
  groq_names = [f'groq:{n}' for n in get_model_names(GroqModelName)]
70
68
  moonshotai_names = [f'moonshotai:{n}' for n in get_model_names(MoonshotAIModelName)]
71
69
  mistral_names = [f'mistral:{n}' for n in get_model_names(MistralModelName)]
72
- openai_names = [f'openai:{n}' for n in get_model_names(OpenAIModelName)] + [
73
- n for n in get_model_names(OpenAIModelName) if n.startswith('o1') or n.startswith('gpt') or n.startswith('o3')
74
- ]
70
+ openai_names = [f'openai:{n}' for n in get_model_names(OpenAIModelName)]
75
71
  bedrock_names = [f'bedrock:{n}' for n in get_model_names(BedrockModelName)]
76
72
  deepseek_names = ['deepseek:deepseek-chat', 'deepseek:deepseek-reasoner']
77
73
  huggingface_names = [f'huggingface:{n}' for n in get_model_names(HuggingFaceModelName)]
@@ -172,6 +172,27 @@ async def test_request_simple_usage(allow_model_requests: None):
172
172
  )
173
173
 
174
174
 
175
+ async def test_openai_chat_image_detail_vendor_metadata(allow_model_requests: None):
176
+ c = completion_message(
177
+ ChatCompletionMessage(content='done', role='assistant'),
178
+ )
179
+ mock_client = MockOpenAI.create_mock(c)
180
+ model = OpenAIChatModel('gpt-4o', provider=OpenAIProvider(openai_client=mock_client))
181
+ agent = Agent(model)
182
+
183
+ image_url = ImageUrl('https://example.com/image.png', vendor_metadata={'detail': 'high'})
184
+ binary_image = BinaryContent(b'\x89PNG', media_type='image/png', vendor_metadata={'detail': 'high'})
185
+
186
+ await agent.run(['Describe these inputs.', image_url, binary_image])
187
+
188
+ request_kwargs = get_mock_chat_completion_kwargs(mock_client)
189
+ image_parts = [
190
+ item['image_url'] for item in request_kwargs[0]['messages'][0]['content'] if item['type'] == 'image_url'
191
+ ]
192
+ assert image_parts
193
+ assert all(part['detail'] == 'high' for part in image_parts)
194
+
195
+
175
196
  async def test_request_structured_response(allow_model_requests: None):
176
197
  c = completion_message(
177
198
  ChatCompletionMessage(
@@ -39,7 +39,7 @@ from pydantic_ai.tools import ToolDefinition
39
39
  from pydantic_ai.usage import RequestUsage, RunUsage
40
40
 
41
41
  from ..conftest import IsDatetime, IsStr, TestEnv, try_import
42
- from .mock_openai import MockOpenAIResponses, response_message
42
+ from .mock_openai import MockOpenAIResponses, get_mock_responses_kwargs, response_message
43
43
 
44
44
  with try_import() as imports_successful:
45
45
  from openai.types.responses.response_output_message import Content, ResponseOutputMessage, ResponseOutputText
@@ -78,6 +78,40 @@ async def test_openai_responses_model_simple_response(allow_model_requests: None
78
78
  assert result.output == snapshot('The capital of France is Paris.')
79
79
 
80
80
 
81
+ async def test_openai_responses_image_detail_vendor_metadata(allow_model_requests: None):
82
+ c = response_message(
83
+ [
84
+ ResponseOutputMessage(
85
+ id='output-1',
86
+ content=cast(list[Content], [ResponseOutputText(text='done', type='output_text', annotations=[])]),
87
+ role='assistant',
88
+ status='completed',
89
+ type='message',
90
+ )
91
+ ]
92
+ )
93
+ mock_client = MockOpenAIResponses.create_mock(c)
94
+ model = OpenAIResponsesModel('gpt-4o', provider=OpenAIProvider(openai_client=mock_client))
95
+ agent = Agent(model=model)
96
+
97
+ image_url = ImageUrl('https://example.com/image.png', vendor_metadata={'detail': 'high'})
98
+ binary_image = BinaryContent(b'\x89PNG', media_type='image/png', vendor_metadata={'detail': 'high'})
99
+
100
+ result = await agent.run(['Describe these inputs.', image_url, binary_image])
101
+ assert result.output == 'done'
102
+
103
+ response_kwargs = get_mock_responses_kwargs(mock_client)
104
+ image_parts = [
105
+ item
106
+ for message in response_kwargs[0]['input']
107
+ if message.get('role') == 'user'
108
+ for item in message['content']
109
+ if item['type'] == 'input_image'
110
+ ]
111
+ assert image_parts
112
+ assert all(part['detail'] == 'high' for part in image_parts)
113
+
114
+
81
115
  async def test_openai_responses_model_simple_response_with_tool_call(allow_model_requests: None, openai_api_key: str):
82
116
  model = OpenAIResponsesModel('gpt-4o', provider=OpenAIProvider(api_key=openai_api_key))
83
117
 
@@ -9,6 +9,7 @@ from pydantic_ai.profiles._json_schema import InlineDefsJsonSchemaTransformer
9
9
  from pydantic_ai.profiles.cohere import cohere_model_profile
10
10
  from pydantic_ai.profiles.deepseek import deepseek_model_profile
11
11
  from pydantic_ai.profiles.google import GoogleJsonSchemaTransformer, google_model_profile
12
+ from pydantic_ai.profiles.harmony import harmony_model_profile
12
13
  from pydantic_ai.profiles.meta import meta_model_profile
13
14
  from pydantic_ai.profiles.mistral import mistral_model_profile
14
15
  from pydantic_ai.profiles.openai import OpenAIJsonSchemaTransformer
@@ -77,6 +78,7 @@ def test_ollama_provider_model_profile(mocker: MockerFixture):
77
78
  mistral_model_profile_mock = mocker.patch(f'{ns}.mistral_model_profile', wraps=mistral_model_profile)
78
79
  qwen_model_profile_mock = mocker.patch(f'{ns}.qwen_model_profile', wraps=qwen_model_profile)
79
80
  cohere_model_profile_mock = mocker.patch(f'{ns}.cohere_model_profile', wraps=cohere_model_profile)
81
+ harmony_model_profile_mock = mocker.patch(f'{ns}.harmony_model_profile', wraps=harmony_model_profile)
80
82
 
81
83
  meta_profile = provider.model_profile('llama3.2')
82
84
  meta_model_profile_mock.assert_called_with('llama3.2')
@@ -115,6 +117,12 @@ def test_ollama_provider_model_profile(mocker: MockerFixture):
115
117
  assert cohere_profile is not None
116
118
  assert cohere_profile.json_schema_transformer == OpenAIJsonSchemaTransformer
117
119
 
120
+ harmony_profile = provider.model_profile('gpt-oss')
121
+ harmony_model_profile_mock.assert_called_with('gpt-oss')
122
+ assert harmony_profile is not None
123
+ assert harmony_profile.json_schema_transformer == OpenAIJsonSchemaTransformer
124
+ assert harmony_profile.ignore_streamed_leading_whitespace is True
125
+
118
126
  unknown_profile = provider.model_profile('unknown-model')
119
127
  assert unknown_profile is not None
120
128
  assert unknown_profile.json_schema_transformer == OpenAIJsonSchemaTransformer
@@ -43,9 +43,14 @@ from pydantic_ai.usage import RequestUsage
43
43
  from .conftest import IsDatetime, IsStr
44
44
 
45
45
  try:
46
+ import importlib.metadata
47
+
46
48
  from dbos import DBOS, DBOSConfig, SetWorkflowID
49
+ from packaging.version import Version
47
50
 
48
51
  from pydantic_ai.durable_exec.dbos import DBOSAgent, DBOSMCPServer, DBOSModel
52
+
53
+ dbos_version = Version(importlib.metadata.version('dbos'))
49
54
  except ImportError: # pragma: lax no cover
50
55
  pytest.skip('DBOS is not installed', allow_module_level=True)
51
56
 
@@ -110,9 +115,10 @@ def workflow_raises(exc_type: type[Exception], exc_message: str) -> Iterator[Non
110
115
  DBOS_SQLITE_FILE = 'dbostest.sqlite'
111
116
  DBOS_CONFIG: DBOSConfig = {
112
117
  'name': 'pydantic_dbos_tests',
113
- 'database_url': f'sqlite:///{DBOS_SQLITE_FILE}',
114
118
  'system_database_url': f'sqlite:///{DBOS_SQLITE_FILE}',
115
119
  'run_admin_server': False,
120
+ # enable_otlp requires dbos>1.14
121
+ 'enable_otlp': True,
116
122
  }
117
123
 
118
124
 
@@ -1042,9 +1048,19 @@ async def test_dbos_agent_run_in_workflow_with_event_stream_handler(allow_model_
1042
1048
  ):
1043
1049
  pass
1044
1050
 
1045
- with workflow_raises(TypeError, snapshot('Serialized function should be defined at the top level of a module')):
1051
+ with pytest.raises(Exception) as exc_info:
1046
1052
  await simple_dbos_agent.run('What is the capital of Mexico?', event_stream_handler=simple_event_stream_handler)
1047
1053
 
1054
+ if dbos_version <= Version('1.14'): # pragma: lax no cover
1055
+ # Older DBOS versions used jsonpickle
1056
+ assert str(exc_info.value) == snapshot('Serialized function should be defined at the top level of a module')
1057
+ else:
1058
+ # Newer DBOS versions use pickle
1059
+ assert (
1060
+ "local object 'test_dbos_agent_run_in_workflow_with_event_stream_handler.<locals>.simple_event_stream_handler'"
1061
+ in str(exc_info.value)
1062
+ )
1063
+
1048
1064
 
1049
1065
  async def test_dbos_agent_run_in_workflow_with_model(allow_model_requests: None, dbos: DBOS):
1050
1066
  # A non-DBOS model is not wrapped as steps so it's not deterministic and cannot be used in a DBOS workflow.
@@ -1142,15 +1158,19 @@ async def get_model_name(ctx: RunContext[UnserializableDeps]) -> int:
1142
1158
  async def test_dbos_agent_with_unserializable_deps_type(allow_model_requests: None, dbos: DBOS):
1143
1159
  unserializable_deps_dbos_agent = DBOSAgent(unserializable_deps_agent)
1144
1160
  # Test this raises a serialization error because httpx.AsyncClient is not serializable.
1145
- with pytest.raises(
1146
- Exception,
1147
- match='object proxy must define __reduce_ex__()',
1148
- ):
1161
+ with pytest.raises(Exception) as exc_info:
1149
1162
  async with AsyncClient() as client:
1150
1163
  # This will trigger the client to be unserializable
1151
1164
  logfire.instrument_httpx(client, capture_all=True)
1152
1165
  await unserializable_deps_dbos_agent.run('What is the model name?', deps=UnserializableDeps(client=client))
1153
1166
 
1167
+ if dbos_version <= Version('1.14'): # pragma: lax no cover
1168
+ # Older DBOS versions used jsonpickle
1169
+ assert str(exc_info.value) == snapshot('object proxy must define __reduce_ex__()')
1170
+ else:
1171
+ # Newer DBOS versions use pickle
1172
+ assert str(exc_info.value) == snapshot("cannot pickle '_thread.RLock' object")
1173
+
1154
1174
 
1155
1175
  # Test dynamic toolsets in an agent with DBOS
1156
1176