pydantic-ai 0.3.7__tar.gz → 0.4.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 (316) hide show
  1. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/PKG-INFO +3 -3
  2. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/evals/test_dataset.py +3 -3
  3. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/evals/test_otel.py +4 -3
  4. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/evals/test_reports.py +4 -2
  5. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/test_bedrock.py +3 -3
  6. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/test_gemini.py +36 -27
  7. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/test_openai.py +10 -7
  8. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/test_openai_responses.py +3 -3
  9. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/test_direct.py +1 -3
  10. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/test_logfire.py +1 -1
  11. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/test_mcp.py +1 -0
  12. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/test_messages.py +4 -0
  13. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/test_tools.py +5 -10
  14. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/.gitignore +0 -0
  15. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/LICENSE +0 -0
  16. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/Makefile +0 -0
  17. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/README.md +0 -0
  18. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/pyproject.toml +0 -0
  19. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/__init__.py +0 -0
  20. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/assets/dummy.pdf +0 -0
  21. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/assets/kiwi.png +0 -0
  22. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/assets/marcelo.mp3 +0 -0
  23. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/assets/small_video.mp4 +0 -0
  24. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml +0 -0
  25. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/cassettes/test_mcp/test_tool_returning_audio_resource.yaml +0 -0
  26. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml +0 -0
  27. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/cassettes/test_mcp/test_tool_returning_error.yaml +0 -0
  28. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/cassettes/test_mcp/test_tool_returning_image.yaml +0 -0
  29. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/cassettes/test_mcp/test_tool_returning_image_resource.yaml +0 -0
  30. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/cassettes/test_mcp/test_tool_returning_multiple_items.yaml +0 -0
  31. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/cassettes/test_mcp/test_tool_returning_none.yaml +0 -0
  32. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/cassettes/test_mcp/test_tool_returning_str.yaml +0 -0
  33. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/cassettes/test_mcp/test_tool_returning_text_resource.yaml +0 -0
  34. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/cassettes/test_settings/test_stop_settings[anthropic].yaml +0 -0
  35. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/cassettes/test_settings/test_stop_settings[bedrock].yaml +0 -0
  36. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/cassettes/test_settings/test_stop_settings[cohere].yaml +0 -0
  37. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/cassettes/test_settings/test_stop_settings[gemini].yaml +0 -0
  38. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/cassettes/test_settings/test_stop_settings[google].yaml +0 -0
  39. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/cassettes/test_settings/test_stop_settings[groq].yaml +0 -0
  40. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/cassettes/test_settings/test_stop_settings[mistral].yaml +0 -0
  41. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/cassettes/test_settings/test_stop_settings[openai].yaml +0 -0
  42. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/conftest.py +0 -0
  43. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/evals/__init__.py +0 -0
  44. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/evals/test_evaluator_base.py +0 -0
  45. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/evals/test_evaluator_common.py +0 -0
  46. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/evals/test_evaluator_context.py +0 -0
  47. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/evals/test_evaluator_spec.py +0 -0
  48. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/evals/test_evaluators.py +0 -0
  49. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/evals/test_llm_as_a_judge.py +0 -0
  50. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/evals/test_render_numbers.py +0 -0
  51. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/evals/test_reporting.py +0 -0
  52. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/evals/test_utils.py +0 -0
  53. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/evals/utils.py +0 -0
  54. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/example_modules/README.md +0 -0
  55. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/example_modules/bank_database.py +0 -0
  56. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/example_modules/fake_database.py +0 -0
  57. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/example_modules/mcp_server.py +0 -0
  58. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/example_modules/weather_service.py +0 -0
  59. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/ext/__init__.py +0 -0
  60. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/ext/test_langchain.py +0 -0
  61. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/fasta2a/__init__.py +0 -0
  62. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/fasta2a/test_applications.py +0 -0
  63. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/graph/__init__.py +0 -0
  64. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/graph/test_file_persistence.py +0 -0
  65. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/graph/test_graph.py +0 -0
  66. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/graph/test_mermaid.py +0 -0
  67. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/graph/test_persistence.py +0 -0
  68. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/graph/test_state.py +0 -0
  69. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/graph/test_utils.py +0 -0
  70. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/import_examples.py +0 -0
  71. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/json_body_serializer.py +0 -0
  72. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/mcp_server.py +0 -0
  73. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/__init__.py +0 -0
  74. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_empty_message_on_history.yaml +0 -0
  75. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_instructions.yaml +0 -0
  76. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part.yaml +0 -0
  77. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_stream.yaml +0 -0
  78. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output.yaml +0 -0
  79. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output_multiple.yaml +0 -0
  80. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_text_output_function.yaml +0 -0
  81. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_tool_output.yaml +0 -0
  82. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_anthropic/test_anthropic_tool_with_thinking.yaml +0 -0
  83. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_anthropic/test_document_binary_content_input.yaml +0 -0
  84. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_anthropic/test_document_url_input.yaml +0 -0
  85. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_anthropic/test_extra_headers.yaml +0 -0
  86. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_anthropic/test_image_as_binary_content_tool_response.yaml +0 -0
  87. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_anthropic/test_image_url_input.yaml +0 -0
  88. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +0 -0
  89. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_anthropic/test_multiple_parallel_tool_calls.yaml +0 -0
  90. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_anthropic/test_text_document_url_input.yaml +0 -0
  91. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_empty_system_prompt.yaml +0 -0
  92. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml +0 -0
  93. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_anthropic_model_without_tools.yaml +0 -0
  94. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_guardrail_config.yaml +0 -0
  95. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_instructions.yaml +0 -0
  96. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_iter_stream.yaml +0 -0
  97. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_max_tokens.yaml +0 -0
  98. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_other_parameters.yaml +0 -0
  99. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_performance_config.yaml +0 -0
  100. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_retry.yaml +0 -0
  101. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream.yaml +0 -0
  102. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_structured_output.yaml +0 -0
  103. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part.yaml +0 -0
  104. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_stream.yaml +0 -0
  105. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_model_top_p.yaml +0 -0
  106. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_bedrock/test_bedrock_multiple_documents_in_history.yaml +0 -0
  107. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_bedrock/test_document_url_input.yaml +0 -0
  108. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_bedrock/test_image_as_binary_content_input.yaml +0 -0
  109. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_bedrock/test_image_url_input.yaml +0 -0
  110. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_bedrock/test_text_as_binary_content_input.yaml +0 -0
  111. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_bedrock/test_text_document_url_input.yaml +0 -0
  112. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_bedrock/test_video_as_binary_content_input.yaml +0 -0
  113. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_bedrock/test_video_url_input.yaml +0 -0
  114. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_cohere/test_cohere_model_instructions.yaml +0 -0
  115. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_cohere/test_cohere_model_thinking_part.yaml +0 -0
  116. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_cohere/test_request_simple_success_with_vcr.yaml +0 -0
  117. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_part.yaml +0 -0
  118. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_download_item/test_download_item_application_octet_stream.yaml +0 -0
  119. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_download_item/test_download_item_no_content_type.yaml +0 -0
  120. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini/test_document_url_input.yaml +0 -0
  121. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_false.yaml +0 -0
  122. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_true.yaml +0 -0
  123. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini/test_gemini_drop_exclusive_maximum.yaml +0 -0
  124. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini/test_gemini_exclusive_minimum_and_maximum.yaml +0 -0
  125. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini/test_gemini_model_instructions.yaml +0 -0
  126. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini/test_gemini_model_thinking_part.yaml +0 -0
  127. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini/test_gemini_native_output.yaml +0 -0
  128. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini/test_gemini_native_output_multiple.yaml +0 -0
  129. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini/test_gemini_prompted_output.yaml +0 -0
  130. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_multiple.yaml +0 -0
  131. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_with_tools.yaml +0 -0
  132. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini/test_gemini_text_output_function.yaml +0 -0
  133. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini/test_gemini_tool_config_any_with_tool_without_args.yaml +0 -0
  134. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini/test_gemini_tool_output.yaml +0 -0
  135. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini/test_gemini_youtube_video_url_input.yaml +0 -0
  136. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini/test_image_as_binary_content_input.yaml +0 -0
  137. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini/test_image_as_binary_content_tool_response.yaml +0 -0
  138. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini/test_image_url_input.yaml +0 -0
  139. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini/test_labels_are_ignored_with_gla_provider.yaml +0 -0
  140. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini/test_video_as_binary_content_input.yaml +0 -0
  141. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini/test_video_url_input.yaml +0 -0
  142. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini_vertex/test_labels.yaml +0 -0
  143. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl (gs)].yaml +0 -0
  144. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl].yaml +0 -0
  145. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl (gs)].yaml +0 -0
  146. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl].yaml +0 -0
  147. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl (gs)].yaml +0 -0
  148. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl].yaml +0 -0
  149. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (YouTube)].yaml +0 -0
  150. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (gs)].yaml +0 -0
  151. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl].yaml +0 -0
  152. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_gemini_vertex/test_url_input_force_download.yaml +0 -0
  153. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_model.yaml +0 -0
  154. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_model_document_url_input.yaml +0 -0
  155. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_model_empty_user_prompt.yaml +0 -0
  156. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_model_image_as_binary_content_input.yaml +0 -0
  157. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_model_image_url_input.yaml +0 -0
  158. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_model_instructions.yaml +0 -0
  159. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_model_iter_stream.yaml +0 -0
  160. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_model_max_tokens.yaml +0 -0
  161. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_model_multiple_documents_in_history.yaml +0 -0
  162. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_model_retry.yaml +0 -0
  163. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_model_safety_settings.yaml +0 -0
  164. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_model_stream.yaml +0 -0
  165. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_model_structured_output.yaml +0 -0
  166. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_model_text_as_binary_content_input.yaml +0 -0
  167. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_model_text_document_url_input.yaml +0 -0
  168. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_model_thinking_config.yaml +0 -0
  169. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_model_thinking_part.yaml +0 -0
  170. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_model_thinking_part_iter.yaml +0 -0
  171. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_model_top_p.yaml +0 -0
  172. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_model_vertex_labels.yaml +0 -0
  173. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_model_vertex_provider.yaml +0 -0
  174. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input.yaml +0 -0
  175. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input_with_vendor_metadata.yaml +0 -0
  176. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_model_video_url_input.yaml +0 -0
  177. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_model_youtube_video_url_input_with_vendor_metadata.yaml +0 -0
  178. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_native_output.yaml +0 -0
  179. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_native_output_multiple.yaml +0 -0
  180. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_prompted_output.yaml +0 -0
  181. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_prompted_output_multiple.yaml +0 -0
  182. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_prompted_output_with_tools.yaml +0 -0
  183. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_text_output_function.yaml +0 -0
  184. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_timeout.yaml +0 -0
  185. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_tool_config_any_with_tool_without_args.yaml +0 -0
  186. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_tool_output.yaml +0 -0
  187. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl (gs)].yaml +0 -0
  188. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl].yaml +0 -0
  189. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl (gs)].yaml +0 -0
  190. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl].yaml +0 -0
  191. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl (gs)].yaml +0 -0
  192. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl].yaml +0 -0
  193. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (YouTube)].yaml +0 -0
  194. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (gs)].yaml +0 -0
  195. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl].yaml +0 -0
  196. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_google/test_google_url_input_force_download.yaml +0 -0
  197. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_groq/test_extra_headers.yaml +0 -0
  198. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_groq/test_groq_model_instructions.yaml +0 -0
  199. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_groq/test_groq_model_thinking_part.yaml +0 -0
  200. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_groq/test_image_as_binary_content_input.yaml +0 -0
  201. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_groq/test_image_as_binary_content_tool_response.yaml +0 -0
  202. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_groq/test_image_url_input.yaml +0 -0
  203. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_mistral/test_image_as_binary_content_tool_response.yaml +0 -0
  204. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_mistral/test_mistral_model_instructions.yaml +0 -0
  205. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part.yaml +0 -0
  206. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_model_names/test_known_model_names.yaml +0 -0
  207. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_audio_as_binary_content_input.yaml +0 -0
  208. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_compatible_api_with_tool_calls_without_id.yaml +0 -0
  209. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_document_as_binary_content_input.yaml +0 -0
  210. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_document_url_input.yaml +0 -0
  211. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_extra_headers.yaml +0 -0
  212. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_image_as_binary_content_input.yaml +0 -0
  213. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_image_as_binary_content_tool_response.yaml +0 -0
  214. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_image_url_tool_response.yaml +0 -0
  215. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4.5-preview].yaml +0 -0
  216. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4o-mini].yaml +0 -0
  217. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_max_completion_tokens[o3-mini].yaml +0 -0
  218. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_multiple_agent_tool_calls.yaml +0 -0
  219. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_openai_audio_url_input.yaml +0 -0
  220. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_openai_instructions.yaml +0 -0
  221. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_openai_instructions_with_tool_calls_keep_instructions.yaml +0 -0
  222. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_openai_model_thinking_part.yaml +0 -0
  223. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_openai_model_thinking_part_iter.yaml +0 -0
  224. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_openai_model_without_system_prompt.yaml +0 -0
  225. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_openai_native_output.yaml +0 -0
  226. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_openai_native_output_multiple.yaml +0 -0
  227. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[developer].yaml +0 -0
  228. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[system].yaml +0 -0
  229. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_openai_prompted_output.yaml +0 -0
  230. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_openai_prompted_output_multiple.yaml +0 -0
  231. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_openai_responses_model_thinking_part.yaml +0 -0
  232. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_openai_text_output_function.yaml +0 -0
  233. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_openai_tool_output.yaml +0 -0
  234. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_reasoning_model_with_temperature.yaml +0 -0
  235. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai/test_user_id.yaml +0 -0
  236. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai_responses/test_audio_as_binary_content_input.yaml +0 -0
  237. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_input.yaml +0 -0
  238. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_tool_response.yaml +0 -0
  239. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai_responses/test_native_output.yaml +0 -0
  240. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai_responses/test_native_output_multiple.yaml +0 -0
  241. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_as_binary_content_input.yaml +0 -0
  242. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_url_input.yaml +0 -0
  243. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_url_input.yaml +0 -0
  244. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools.yaml +0 -0
  245. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_http_error.yaml +0 -0
  246. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_instructions.yaml +0 -0
  247. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_retry.yaml +0 -0
  248. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response.yaml +0 -0
  249. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response_with_tool_call.yaml +0 -0
  250. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_output_type.yaml +0 -0
  251. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_effort.yaml +0 -0
  252. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_generate_summary.yaml +0 -0
  253. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_stream.yaml +0 -0
  254. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_system_prompt.yaml +0 -0
  255. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai_responses/test_openai_responses_text_document_url_input.yaml +0 -0
  256. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai_responses/test_prompted_output.yaml +0 -0
  257. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai_responses/test_prompted_output_multiple.yaml +0 -0
  258. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai_responses/test_reasoning_model_with_temperature.yaml +0 -0
  259. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai_responses/test_text_output_function.yaml +0 -0
  260. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/cassettes/test_openai_responses/test_tool_output.yaml +0 -0
  261. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/mock_async_stream.py +0 -0
  262. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/test_anthropic.py +0 -0
  263. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/test_cohere.py +0 -0
  264. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/test_deepseek.py +0 -0
  265. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/test_download_item.py +0 -0
  266. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/test_fallback.py +0 -0
  267. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/test_gemini_vertex.py +0 -0
  268. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/test_google.py +0 -0
  269. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/test_groq.py +0 -0
  270. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/test_instrumented.py +0 -0
  271. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/test_mcp_sampling.py +0 -0
  272. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/test_mistral.py +0 -0
  273. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/test_model.py +0 -0
  274. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/test_model_function.py +0 -0
  275. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/test_model_names.py +0 -0
  276. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/test_model_request_parameters.py +0 -0
  277. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/models/test_model_test.py +0 -0
  278. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/providers/__init__.py +0 -0
  279. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/providers/cassettes/test_azure/test_azure_provider_call.yaml +0 -0
  280. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/providers/cassettes/test_google_vertex/test_vertexai_provider.yaml +0 -0
  281. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/providers/cassettes/test_heroku/test_heroku_model_provider_claude_3_7_sonnet.yaml +0 -0
  282. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/providers/cassettes/test_openrouter/test_openrouter_with_google_model.yaml +0 -0
  283. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/providers/test_anthropic.py +0 -0
  284. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/providers/test_azure.py +0 -0
  285. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/providers/test_bedrock.py +0 -0
  286. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/providers/test_cohere.py +0 -0
  287. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/providers/test_deepseek.py +0 -0
  288. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/providers/test_fireworks.py +0 -0
  289. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/providers/test_github.py +0 -0
  290. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/providers/test_google_gla.py +0 -0
  291. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/providers/test_google_vertex.py +0 -0
  292. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/providers/test_grok.py +0 -0
  293. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/providers/test_groq.py +0 -0
  294. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/providers/test_heroku.py +0 -0
  295. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/providers/test_mistral.py +0 -0
  296. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/providers/test_openai.py +0 -0
  297. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/providers/test_openrouter.py +0 -0
  298. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/providers/test_provider_names.py +0 -0
  299. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/providers/test_together.py +0 -0
  300. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/test_a2a.py +0 -0
  301. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/test_agent.py +0 -0
  302. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/test_cli.py +0 -0
  303. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/test_deps.py +0 -0
  304. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/test_examples.py +0 -0
  305. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/test_format_as_xml.py +0 -0
  306. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/test_history_processor.py +0 -0
  307. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/test_json_body_serializer.py +0 -0
  308. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/test_live.py +0 -0
  309. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/test_parts_manager.py +0 -0
  310. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/test_settings.py +0 -0
  311. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/test_streaming.py +0 -0
  312. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/test_thinking_part.py +0 -0
  313. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/test_usage_limits.py +0 -0
  314. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/test_utils.py +0 -0
  315. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/typed_agent.py +0 -0
  316. {pydantic_ai-0.3.7 → pydantic_ai-0.4.0}/tests/typed_graph.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pydantic-ai
3
- Version: 0.3.7
3
+ Version: 0.4.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
@@ -28,9 +28,9 @@ Classifier: Topic :: Internet
28
28
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
29
29
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
30
30
  Requires-Python: >=3.9
31
- Requires-Dist: pydantic-ai-slim[a2a,anthropic,bedrock,cli,cohere,evals,google,groq,mcp,mistral,openai,vertexai]==0.3.7
31
+ Requires-Dist: pydantic-ai-slim[a2a,anthropic,bedrock,cli,cohere,evals,google,groq,mcp,mistral,openai,vertexai]==0.4.0
32
32
  Provides-Extra: examples
33
- Requires-Dist: pydantic-ai-examples==0.3.7; extra == 'examples'
33
+ Requires-Dist: pydantic-ai-examples==0.4.0; extra == 'examples'
34
34
  Provides-Extra: logfire
35
35
  Requires-Dist: logfire>=3.11.0; extra == 'logfire'
36
36
  Description-Content-Type: text/markdown
@@ -33,7 +33,7 @@ with try_import() as imports_successful:
33
33
  def evaluate(self, ctx: EvaluatorContext[object, object, object]) -> EvaluatorOutput:
34
34
  return self.output
35
35
 
36
- from pydantic_evals.reporting import ReportCase
36
+ from pydantic_evals.reporting import ReportCase, ReportCaseAdapter
37
37
 
38
38
  pytestmark = [pytest.mark.skipif(not imports_successful(), reason='pydantic-evals not installed'), pytest.mark.anyio]
39
39
 
@@ -196,7 +196,7 @@ async def test_evaluate(
196
196
 
197
197
  assert report is not None
198
198
  assert len(report.cases) == 2
199
- assert report.cases[0].model_dump() == snapshot(
199
+ assert ReportCaseAdapter.dump_python(report.cases[0]) == snapshot(
200
200
  {
201
201
  'assertions': {
202
202
  'correct': {
@@ -248,7 +248,7 @@ async def test_evaluate_with_concurrency(
248
248
 
249
249
  assert report is not None
250
250
  assert len(report.cases) == 2
251
- assert report.cases[0].model_dump() == snapshot(
251
+ assert ReportCaseAdapter.dump_python(report.cases[0]) == snapshot(
252
252
  {
253
253
  'assertions': {
254
254
  'correct': {
@@ -65,9 +65,10 @@ async def test_context_subtree_concurrent():
65
65
  task1_root = tree1.roots[0]
66
66
  assert len(task1_root.children) == 2, 'task1 should have exactly two children'
67
67
  task1_child_names = {child.name for child in task1_root.children}
68
- assert task1_child_names == {'task1_child1', 'task1_child2'}, (
69
- "task1's children should be task1_child1 and task1_child2"
70
- )
68
+ assert task1_child_names == {
69
+ 'task1_child1',
70
+ 'task1_child2',
71
+ }, "task1's children should be task1_child1 and task1_child2"
71
72
 
72
73
  # Verify that tree2 only contains spans from task2
73
74
  assert len(tree2.roots) == 1, 'tree2 should have exactly one root span'
@@ -12,9 +12,11 @@ with try_import() as imports_successful:
12
12
  from pydantic_evals.evaluators import EvaluationResult, Evaluator, EvaluatorContext
13
13
  from pydantic_evals.reporting import (
14
14
  EvaluationReport,
15
+ EvaluationReportAdapter,
15
16
  RenderNumberConfig,
16
17
  RenderValueConfig,
17
18
  ReportCase,
19
+ ReportCaseAdapter,
18
20
  ReportCaseAggregate,
19
21
  )
20
22
 
@@ -157,7 +159,7 @@ async def test_report_case_aggregate():
157
159
  async def test_report_serialization(sample_report: EvaluationReport):
158
160
  """Test serializing a report to dict."""
159
161
  # Serialize the report
160
- serialized = sample_report.model_dump()
162
+ serialized = EvaluationReportAdapter.dump_python(sample_report)
161
163
 
162
164
  # Check the serialized structure
163
165
  assert 'cases' in serialized
@@ -202,7 +204,7 @@ async def test_report_with_error(mock_evaluator: Evaluator[TaskInput, TaskOutput
202
204
  name='error_report',
203
205
  )
204
206
 
205
- assert report.cases[0].model_dump() == snapshot(
207
+ assert ReportCaseAdapter.dump_python(report.cases[0]) == snapshot(
206
208
  {
207
209
  'assertions': {
208
210
  'error_evaluator': {
@@ -1443,9 +1443,9 @@ async def test_bedrock_mistral_tool_result_format(bedrock_provider: BedrockProvi
1443
1443
 
1444
1444
  async def test_bedrock_anthropic_no_tool_choice(bedrock_provider: BedrockProvider):
1445
1445
  my_tool = ToolDefinition(
1446
- 'my_tool',
1447
- 'This is my tool',
1448
- {'type': 'object', 'title': 'Result', 'properties': {'spam': {'type': 'number'}}},
1446
+ name='my_tool',
1447
+ description='This is my tool',
1448
+ parameters_json_schema={'type': 'object', 'title': 'Result', 'properties': {'spam': {'type': 'number'}}},
1449
1449
  )
1450
1450
  mrp = ModelRequestParameters(output_mode='tool', function_tools=[my_tool], allow_text_output=False, output_tools=[])
1451
1451
 
@@ -83,14 +83,18 @@ async def test_model_tools(allow_model_requests: None):
83
83
  m = GeminiModel('gemini-1.5-flash', provider=GoogleGLAProvider(api_key='via-arg'))
84
84
  tools = [
85
85
  ToolDefinition(
86
- 'foo',
87
- 'This is foo',
88
- {'type': 'object', 'title': 'Foo', 'properties': {'bar': {'type': 'number', 'title': 'Bar'}}},
86
+ name='foo',
87
+ description='This is foo',
88
+ parameters_json_schema={
89
+ 'type': 'object',
90
+ 'title': 'Foo',
91
+ 'properties': {'bar': {'type': 'number', 'title': 'Bar'}},
92
+ },
89
93
  ),
90
94
  ToolDefinition(
91
- 'apple',
92
- 'This is apple',
93
- {
95
+ name='apple',
96
+ description='This is apple',
97
+ parameters_json_schema={
94
98
  'type': 'object',
95
99
  'properties': {
96
100
  'banana': {'type': 'array', 'title': 'Banana', 'items': {'type': 'number', 'title': 'Bar'}}
@@ -99,9 +103,14 @@ async def test_model_tools(allow_model_requests: None):
99
103
  ),
100
104
  ]
101
105
  output_tool = ToolDefinition(
102
- 'result',
103
- 'This is the tool for the final Result',
104
- {'type': 'object', 'title': 'Result', 'properties': {'spam': {'type': 'number'}}, 'required': ['spam']},
106
+ name='result',
107
+ description='This is the tool for the final Result',
108
+ parameters_json_schema={
109
+ 'type': 'object',
110
+ 'title': 'Result',
111
+ 'properties': {'spam': {'type': 'number'}},
112
+ 'required': ['spam'],
113
+ },
105
114
  )
106
115
 
107
116
  mrp = ModelRequestParameters(
@@ -148,9 +157,9 @@ async def test_model_tools(allow_model_requests: None):
148
157
  async def test_require_response_tool(allow_model_requests: None):
149
158
  m = GeminiModel('gemini-1.5-flash', provider=GoogleGLAProvider(api_key='via-arg'))
150
159
  output_tool = ToolDefinition(
151
- 'result',
152
- 'This is the tool for the final Result',
153
- {'type': 'object', 'title': 'Result', 'properties': {'spam': {'type': 'number'}}},
160
+ name='result',
161
+ description='This is the tool for the final Result',
162
+ parameters_json_schema={'type': 'object', 'title': 'Result', 'properties': {'spam': {'type': 'number'}}},
154
163
  )
155
164
  mrp = ModelRequestParameters(
156
165
  function_tools=[],
@@ -235,9 +244,9 @@ async def test_json_def_replaced(allow_model_requests: None):
235
244
 
236
245
  m = GeminiModel('gemini-1.5-flash', provider=GoogleGLAProvider(api_key='via-arg'))
237
246
  output_tool = ToolDefinition(
238
- 'result',
239
- 'This is the tool for the final Result',
240
- json_schema,
247
+ name='result',
248
+ description='This is the tool for the final Result',
249
+ parameters_json_schema=json_schema,
241
250
  )
242
251
  mrp = ModelRequestParameters(
243
252
  function_tools=[],
@@ -320,9 +329,9 @@ async def test_json_def_enum(allow_model_requests: None):
320
329
  )
321
330
  m = GeminiModel('gemini-1.5-flash', provider=GoogleGLAProvider(api_key='via-arg'))
322
331
  output_tool = ToolDefinition(
323
- 'result',
324
- 'This is the tool for the final Result',
325
- json_schema,
332
+ name='result',
333
+ description='This is the tool for the final Result',
334
+ parameters_json_schema=json_schema,
326
335
  )
327
336
  mrp = ModelRequestParameters(
328
337
  function_tools=[],
@@ -368,9 +377,9 @@ async def test_json_def_replaced_any_of(allow_model_requests: None):
368
377
 
369
378
  m = GeminiModel('gemini-1.5-flash', provider=GoogleGLAProvider(api_key='via-arg'))
370
379
  output_tool = ToolDefinition(
371
- 'result',
372
- 'This is the tool for the final Result',
373
- json_schema,
380
+ name='result',
381
+ description='This is the tool for the final Result',
382
+ parameters_json_schema=json_schema,
374
383
  )
375
384
  mrp = ModelRequestParameters(
376
385
  function_tools=[],
@@ -437,9 +446,9 @@ async def test_json_def_recursive(allow_model_requests: None):
437
446
 
438
447
  m = GeminiModel('gemini-1.5-flash', provider=GoogleGLAProvider(api_key='via-arg'))
439
448
  output_tool = ToolDefinition(
440
- 'result',
441
- 'This is the tool for the final Result',
442
- json_schema,
449
+ name='result',
450
+ description='This is the tool for the final Result',
451
+ parameters_json_schema=json_schema,
443
452
  )
444
453
  with pytest.raises(UserError, match=r'Recursive `\$ref`s in JSON Schema are not supported by Gemini'):
445
454
  mrp = ModelRequestParameters(
@@ -476,9 +485,9 @@ async def test_json_def_date(allow_model_requests: None):
476
485
 
477
486
  m = GeminiModel('gemini-1.5-flash', provider=GoogleGLAProvider(api_key='via-arg'))
478
487
  output_tool = ToolDefinition(
479
- 'result',
480
- 'This is the tool for the final Result',
481
- json_schema,
488
+ name='result',
489
+ description='This is the tool for the final Result',
490
+ parameters_json_schema=json_schema,
482
491
  )
483
492
  mrp = ModelRequestParameters(
484
493
  function_tools=[],
@@ -1095,7 +1095,10 @@ def tool_with_tuples(x: tuple[int], y: tuple[str] = ('abc',)) -> str:
1095
1095
  '$defs': {
1096
1096
  'MyDefaultRecursiveDc': {
1097
1097
  'properties': {
1098
- 'field': {'anyOf': [{'$ref': '#/$defs/MyDefaultRecursiveDc'}, {'type': 'null'}]}
1098
+ 'field': {
1099
+ 'anyOf': [{'$ref': '#/$defs/MyDefaultRecursiveDc'}, {'type': 'null'}],
1100
+ 'default': None,
1101
+ }
1099
1102
  },
1100
1103
  'type': 'object',
1101
1104
  },
@@ -1213,7 +1216,7 @@ def tool_with_tuples(x: tuple[int], y: tuple[str] = ('abc',)) -> str:
1213
1216
  {
1214
1217
  '$defs': {
1215
1218
  'MyDefaultDc': {
1216
- 'properties': {'x': {'type': 'integer'}},
1219
+ 'properties': {'x': {'default': 1, 'type': 'integer'}},
1217
1220
  'type': 'object',
1218
1221
  }
1219
1222
  },
@@ -1253,7 +1256,7 @@ def tool_with_tuples(x: tuple[int], y: tuple[str] = ('abc',)) -> str:
1253
1256
  {
1254
1257
  '$defs': {
1255
1258
  'MyDefaultDc': {
1256
- 'properties': {'x': {'type': 'integer'}},
1259
+ 'properties': {'x': {'default': 1, 'type': 'integer'}},
1257
1260
  'type': 'object',
1258
1261
  }
1259
1262
  },
@@ -1293,7 +1296,7 @@ def tool_with_tuples(x: tuple[int], y: tuple[str] = ('abc',)) -> str:
1293
1296
  {
1294
1297
  '$defs': {
1295
1298
  'MyDefaultDc': {
1296
- 'properties': {'x': {'type': 'integer'}},
1299
+ 'properties': {'x': {'default': 1, 'type': 'integer'}},
1297
1300
  'type': 'object',
1298
1301
  }
1299
1302
  },
@@ -1913,9 +1916,9 @@ def test_openai_model_profile_from_provider():
1913
1916
 
1914
1917
  def test_model_profile_strict_not_supported():
1915
1918
  my_tool = ToolDefinition(
1916
- 'my_tool',
1917
- 'This is my tool',
1918
- {'type': 'object', 'title': 'Result', 'properties': {'spam': {'type': 'number'}}},
1919
+ name='my_tool',
1920
+ description='This is my tool',
1921
+ parameters_json_schema={'type': 'object', 'title': 'Result', 'properties': {'spam': {'type': 'number'}}},
1919
1922
  strict=True,
1920
1923
  )
1921
1924
 
@@ -473,9 +473,9 @@ async def test_openai_responses_model_instructions(allow_model_requests: None, o
473
473
 
474
474
  def test_model_profile_strict_not_supported():
475
475
  my_tool = ToolDefinition(
476
- 'my_tool',
477
- 'This is my tool',
478
- {'type': 'object', 'title': 'Result', 'properties': {'spam': {'type': 'number'}}},
476
+ name='my_tool',
477
+ description='This is my tool',
478
+ parameters_json_schema={'type': 'object', 'title': 'Result', 'properties': {'spam': {'type': 'number'}}},
479
479
  strict=True,
480
480
  )
481
481
 
@@ -54,9 +54,7 @@ async def test_model_request_tool_call():
54
54
  'test',
55
55
  [ModelRequest.user_text_prompt('x')],
56
56
  model_request_parameters=ModelRequestParameters(
57
- function_tools=[
58
- ToolDefinition(name='tool_name', description='', parameters_json_schema={'type': 'object'})
59
- ],
57
+ function_tools=[ToolDefinition(name='tool_name', parameters_json_schema={'type': 'object'})],
60
58
  allow_text_output=False,
61
59
  ),
62
60
  )
@@ -280,7 +280,7 @@ def test_logfire(
280
280
  'function_tools': [
281
281
  {
282
282
  'name': 'my_ret',
283
- 'description': '',
283
+ 'description': None,
284
284
  'parameters_json_schema': {
285
285
  'additionalProperties': False,
286
286
  'properties': {'x': {'type': 'integer'}},
@@ -60,6 +60,7 @@ async def test_stdio_server():
60
60
  tools = await server.list_tools()
61
61
  assert len(tools) == snapshot(13)
62
62
  assert tools[0].name == 'celsius_to_fahrenheit'
63
+ assert isinstance(tools[0].description, str)
63
64
  assert tools[0].description.startswith('Convert Celsius to Fahrenheit.')
64
65
 
65
66
  # Test calling the temperature conversion tool
@@ -125,6 +125,10 @@ def test_binary_content_document(media_type: str, format: str):
125
125
  [
126
126
  pytest.param(AudioUrl('foobar.mp3'), 'audio/mpeg', 'mp3', id='mp3'),
127
127
  pytest.param(AudioUrl('foobar.wav'), 'audio/wav', 'wav', id='wav'),
128
+ pytest.param(AudioUrl('foobar.oga'), 'audio/ogg', 'oga', id='oga'),
129
+ pytest.param(AudioUrl('foobar.flac'), 'audio/flac', 'flac', id='flac'),
130
+ pytest.param(AudioUrl('foobar.aiff'), 'audio/aiff', 'aiff', id='aiff'),
131
+ pytest.param(AudioUrl('foobar.aac'), 'audio/aac', 'aac', id='aac'),
128
132
  ],
129
133
  )
130
134
  def test_audio_url(audio_url: AudioUrl, media_type: str, format: str):
@@ -107,11 +107,6 @@ def test_docstring_google(docstring_format: Literal['google', 'auto']):
107
107
  'strict': None,
108
108
  }
109
109
  )
110
- keys = list(json_schema.keys())
111
- # name should be the first key
112
- assert keys[0] == 'name'
113
- # description should be the second key
114
- assert keys[1] == 'description'
115
110
 
116
111
 
117
112
  def sphinx_style_docstring(foo: int, /) -> str: # pragma: no cover
@@ -444,7 +439,7 @@ def test_takes_model_and_int():
444
439
  assert json_schema == snapshot(
445
440
  {
446
441
  'name': 'takes_just_model',
447
- 'description': '',
442
+ 'description': None,
448
443
  'parameters_json_schema': {
449
444
  '$defs': {
450
445
  'Foo': {
@@ -862,7 +857,7 @@ def test_json_schema_required_parameters():
862
857
  assert json_schema == snapshot(
863
858
  [
864
859
  {
865
- 'description': '',
860
+ 'description': None,
866
861
  'name': 'my_tool',
867
862
  'outer_typed_dict_key': None,
868
863
  'parameters_json_schema': {
@@ -874,7 +869,7 @@ def test_json_schema_required_parameters():
874
869
  'strict': None,
875
870
  },
876
871
  {
877
- 'description': '',
872
+ 'description': None,
878
873
  'name': 'my_tool_plain',
879
874
  'outer_typed_dict_key': None,
880
875
  'parameters_json_schema': {
@@ -960,7 +955,7 @@ def test_schema_generator():
960
955
  assert json_schema == snapshot(
961
956
  [
962
957
  {
963
- 'description': '',
958
+ 'description': None,
964
959
  'name': 'my_tool_1',
965
960
  'outer_typed_dict_key': None,
966
961
  'parameters_json_schema': {
@@ -970,7 +965,7 @@ def test_schema_generator():
970
965
  'strict': None,
971
966
  },
972
967
  {
973
- 'description': '',
968
+ 'description': None,
974
969
  'name': 'my_tool_2',
975
970
  'outer_typed_dict_key': None,
976
971
  'parameters_json_schema': {
File without changes
File without changes
File without changes
File without changes
File without changes