pydantic-ai 0.5.1__tar.gz → 0.6.1__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 (347) hide show
  1. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/PKG-INFO +3 -3
  2. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/pyproject.toml +1 -0
  3. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/conftest.py +1 -1
  4. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/graph/test_graph.py +0 -33
  5. pydantic_ai-0.6.1/tests/models/cassettes/test_bedrock/test_bedrock_anthropic_tool_with_thinking.yaml +116 -0
  6. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_model_names/test_known_model_names.yaml +18 -1
  7. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/test_bedrock.py +23 -0
  8. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/test_gemini.py +5 -1
  9. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/test_gemini_vertex.py +1 -0
  10. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/test_openai.py +39 -1
  11. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/providers/test_google_gla.py +5 -0
  12. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/providers/test_google_vertex.py +4 -2
  13. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/providers/test_provider_names.py +9 -5
  14. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/test_agent.py +1 -56
  15. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/test_examples.py +1 -6
  16. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/test_streaming.py +1 -1
  17. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/typed_agent.py +1 -0
  18. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/.gitignore +0 -0
  19. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/LICENSE +0 -0
  20. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/Makefile +0 -0
  21. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/README.md +0 -0
  22. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/__init__.py +0 -0
  23. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/assets/dummy.pdf +0 -0
  24. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/assets/kiwi.png +0 -0
  25. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/assets/marcelo.mp3 +0 -0
  26. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/assets/product_name.txt +0 -0
  27. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/assets/small_video.mp4 +0 -0
  28. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/cassettes/test_mcp/test_agent_with_server_not_running.yaml +0 -0
  29. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml +0 -0
  30. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/cassettes/test_mcp/test_tool_returning_audio_resource.yaml +0 -0
  31. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/cassettes/test_mcp/test_tool_returning_audio_resource_link.yaml +0 -0
  32. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml +0 -0
  33. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/cassettes/test_mcp/test_tool_returning_error.yaml +0 -0
  34. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/cassettes/test_mcp/test_tool_returning_image.yaml +0 -0
  35. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/cassettes/test_mcp/test_tool_returning_image_resource.yaml +0 -0
  36. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/cassettes/test_mcp/test_tool_returning_image_resource_link.yaml +0 -0
  37. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/cassettes/test_mcp/test_tool_returning_multiple_items.yaml +0 -0
  38. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/cassettes/test_mcp/test_tool_returning_none.yaml +0 -0
  39. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/cassettes/test_mcp/test_tool_returning_str.yaml +0 -0
  40. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/cassettes/test_mcp/test_tool_returning_text_resource.yaml +0 -0
  41. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/cassettes/test_mcp/test_tool_returning_text_resource_link.yaml +0 -0
  42. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/cassettes/test_settings/test_stop_settings[anthropic].yaml +0 -0
  43. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/cassettes/test_settings/test_stop_settings[bedrock].yaml +0 -0
  44. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/cassettes/test_settings/test_stop_settings[cohere].yaml +0 -0
  45. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/cassettes/test_settings/test_stop_settings[gemini].yaml +0 -0
  46. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/cassettes/test_settings/test_stop_settings[google].yaml +0 -0
  47. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/cassettes/test_settings/test_stop_settings[groq].yaml +0 -0
  48. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/cassettes/test_settings/test_stop_settings[mistral].yaml +0 -0
  49. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/cassettes/test_settings/test_stop_settings[openai].yaml +0 -0
  50. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/evals/__init__.py +0 -0
  51. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/evals/test_dataset.py +0 -0
  52. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/evals/test_evaluator_base.py +0 -0
  53. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/evals/test_evaluator_common.py +0 -0
  54. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/evals/test_evaluator_context.py +0 -0
  55. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/evals/test_evaluator_spec.py +0 -0
  56. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/evals/test_evaluators.py +0 -0
  57. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/evals/test_llm_as_a_judge.py +0 -0
  58. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/evals/test_otel.py +0 -0
  59. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/evals/test_render_numbers.py +0 -0
  60. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/evals/test_reporting.py +0 -0
  61. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/evals/test_reports.py +0 -0
  62. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/evals/test_utils.py +0 -0
  63. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/evals/utils.py +0 -0
  64. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/example_modules/README.md +0 -0
  65. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/example_modules/bank_database.py +0 -0
  66. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/example_modules/fake_database.py +0 -0
  67. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/example_modules/mcp_server.py +0 -0
  68. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/example_modules/weather_service.py +0 -0
  69. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/ext/__init__.py +0 -0
  70. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/ext/test_langchain.py +0 -0
  71. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/graph/__init__.py +0 -0
  72. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/graph/test_file_persistence.py +0 -0
  73. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/graph/test_mermaid.py +0 -0
  74. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/graph/test_persistence.py +0 -0
  75. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/graph/test_state.py +0 -0
  76. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/graph/test_utils.py +0 -0
  77. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/import_examples.py +0 -0
  78. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/json_body_serializer.py +0 -0
  79. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/mcp_server.py +0 -0
  80. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/__init__.py +0 -0
  81. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_anthropic/test_anthropic_model_empty_message_on_history.yaml +0 -0
  82. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_anthropic/test_anthropic_model_instructions.yaml +0 -0
  83. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part.yaml +0 -0
  84. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_stream.yaml +0 -0
  85. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output.yaml +0 -0
  86. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output_multiple.yaml +0 -0
  87. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_anthropic/test_anthropic_text_output_function.yaml +0 -0
  88. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_anthropic/test_anthropic_tool_output.yaml +0 -0
  89. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_anthropic/test_anthropic_tool_with_thinking.yaml +0 -0
  90. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_anthropic/test_document_binary_content_input.yaml +0 -0
  91. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_anthropic/test_document_url_input.yaml +0 -0
  92. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_anthropic/test_extra_headers.yaml +0 -0
  93. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_anthropic/test_image_as_binary_content_tool_response.yaml +0 -0
  94. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_anthropic/test_image_url_input.yaml +0 -0
  95. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +0 -0
  96. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_anthropic/test_multiple_parallel_tool_calls.yaml +0 -0
  97. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_anthropic/test_text_document_url_input.yaml +0 -0
  98. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_bedrock/test_bedrock_empty_system_prompt.yaml +0 -0
  99. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml +0 -0
  100. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_anthropic_model_without_tools.yaml +0 -0
  101. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_guardrail_config.yaml +0 -0
  102. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_instructions.yaml +0 -0
  103. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_iter_stream.yaml +0 -0
  104. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_max_tokens.yaml +0 -0
  105. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_other_parameters.yaml +0 -0
  106. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_performance_config.yaml +0 -0
  107. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_retry.yaml +0 -0
  108. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream.yaml +0 -0
  109. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_structured_output.yaml +0 -0
  110. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part.yaml +0 -0
  111. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_stream.yaml +0 -0
  112. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_top_p.yaml +0 -0
  113. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_bedrock/test_bedrock_multiple_documents_in_history.yaml +0 -0
  114. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_bedrock/test_document_url_input.yaml +0 -0
  115. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_bedrock/test_image_as_binary_content_input.yaml +0 -0
  116. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_bedrock/test_image_url_input.yaml +0 -0
  117. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_bedrock/test_text_as_binary_content_input.yaml +0 -0
  118. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_bedrock/test_text_document_url_input.yaml +0 -0
  119. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_bedrock/test_video_as_binary_content_input.yaml +0 -0
  120. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_bedrock/test_video_url_input.yaml +0 -0
  121. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_cohere/test_cohere_model_instructions.yaml +0 -0
  122. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_cohere/test_cohere_model_thinking_part.yaml +0 -0
  123. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_cohere/test_request_simple_success_with_vcr.yaml +0 -0
  124. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_part.yaml +0 -0
  125. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_stream.yaml +0 -0
  126. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_download_item/test_download_item_application_octet_stream.yaml +0 -0
  127. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_download_item/test_download_item_audio_mpeg.yaml +0 -0
  128. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_download_item/test_download_item_no_content_type.yaml +0 -0
  129. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini/test_document_url_input.yaml +0 -0
  130. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_false.yaml +0 -0
  131. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_true.yaml +0 -0
  132. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini/test_gemini_drop_exclusive_maximum.yaml +0 -0
  133. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini/test_gemini_exclusive_minimum_and_maximum.yaml +0 -0
  134. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini/test_gemini_model_instructions.yaml +0 -0
  135. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini/test_gemini_model_thinking_part.yaml +0 -0
  136. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini/test_gemini_native_output.yaml +0 -0
  137. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini/test_gemini_native_output_multiple.yaml +0 -0
  138. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini/test_gemini_prompted_output.yaml +0 -0
  139. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_multiple.yaml +0 -0
  140. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_with_tools.yaml +0 -0
  141. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini/test_gemini_text_output_function.yaml +0 -0
  142. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini/test_gemini_tool_config_any_with_tool_without_args.yaml +0 -0
  143. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini/test_gemini_tool_output.yaml +0 -0
  144. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini/test_gemini_youtube_video_url_input.yaml +0 -0
  145. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini/test_image_as_binary_content_input.yaml +0 -0
  146. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini/test_image_as_binary_content_tool_response.yaml +0 -0
  147. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini/test_image_url_input.yaml +0 -0
  148. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini/test_labels_are_ignored_with_gla_provider.yaml +0 -0
  149. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini/test_video_as_binary_content_input.yaml +0 -0
  150. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini/test_video_url_input.yaml +0 -0
  151. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini_vertex/test_labels.yaml +0 -0
  152. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl (gs)].yaml +0 -0
  153. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl].yaml +0 -0
  154. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl (gs)].yaml +0 -0
  155. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl].yaml +0 -0
  156. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl (gs)].yaml +0 -0
  157. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl].yaml +0 -0
  158. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (YouTube)].yaml +0 -0
  159. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (gs)].yaml +0 -0
  160. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl].yaml +0 -0
  161. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_gemini_vertex/test_url_input_force_download.yaml +0 -0
  162. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_model.yaml +0 -0
  163. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_model_document_url_input.yaml +0 -0
  164. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_model_empty_assistant_response.yaml +0 -0
  165. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_model_empty_user_prompt.yaml +0 -0
  166. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_model_image_as_binary_content_input.yaml +0 -0
  167. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_model_image_url_input.yaml +0 -0
  168. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_model_instructions.yaml +0 -0
  169. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_model_iter_stream.yaml +0 -0
  170. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_model_max_tokens.yaml +0 -0
  171. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_model_multiple_documents_in_history.yaml +0 -0
  172. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_model_retry.yaml +0 -0
  173. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_model_safety_settings.yaml +0 -0
  174. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_model_stream.yaml +0 -0
  175. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_model_structured_output.yaml +0 -0
  176. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_model_text_as_binary_content_input.yaml +0 -0
  177. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_model_text_document_url_input.yaml +0 -0
  178. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_model_thinking_config.yaml +0 -0
  179. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_model_thinking_part.yaml +0 -0
  180. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_model_thinking_part_iter.yaml +0 -0
  181. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_model_top_p.yaml +0 -0
  182. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_model_vertex_labels.yaml +0 -0
  183. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_model_vertex_provider.yaml +0 -0
  184. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input.yaml +0 -0
  185. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input_with_vendor_metadata.yaml +0 -0
  186. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_model_video_url_input.yaml +0 -0
  187. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_model_youtube_video_url_input_with_vendor_metadata.yaml +0 -0
  188. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_native_output.yaml +0 -0
  189. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_native_output_multiple.yaml +0 -0
  190. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_prompted_output.yaml +0 -0
  191. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_prompted_output_multiple.yaml +0 -0
  192. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_prompted_output_with_tools.yaml +0 -0
  193. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_text_output_function.yaml +0 -0
  194. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_timeout.yaml +0 -0
  195. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_tool_config_any_with_tool_without_args.yaml +0 -0
  196. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_tool_output.yaml +0 -0
  197. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl (gs)].yaml +0 -0
  198. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl].yaml +0 -0
  199. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl (gs)].yaml +0 -0
  200. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl].yaml +0 -0
  201. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl (gs)].yaml +0 -0
  202. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl].yaml +0 -0
  203. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (YouTube)].yaml +0 -0
  204. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (gs)].yaml +0 -0
  205. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl].yaml +0 -0
  206. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_google/test_google_url_input_force_download.yaml +0 -0
  207. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_groq/test_extra_headers.yaml +0 -0
  208. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_groq/test_groq_model_instructions.yaml +0 -0
  209. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_groq/test_groq_model_thinking_part.yaml +0 -0
  210. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_groq/test_groq_model_thinking_part_iter.yaml +0 -0
  211. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_groq/test_image_as_binary_content_input.yaml +0 -0
  212. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_groq/test_image_as_binary_content_tool_response.yaml +0 -0
  213. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_groq/test_image_url_input.yaml +0 -0
  214. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_huggingface/test_hf_model_instructions.yaml +0 -0
  215. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part.yaml +0 -0
  216. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part_iter.yaml +0 -0
  217. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_huggingface/test_image_as_binary_content_input.yaml +0 -0
  218. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_huggingface/test_image_url_input.yaml +0 -0
  219. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[Qwen-Qwen2.5-72B-Instruct].yaml +0 -0
  220. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[deepseek-ai-DeepSeek-R1-0528].yaml +0 -0
  221. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[meta-llama-Llama-3.3-70B-Instruct].yaml +0 -0
  222. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_huggingface/test_request_simple_success_with_vcr.yaml +0 -0
  223. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_huggingface/test_request_simple_usage.yaml +0 -0
  224. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_huggingface/test_simple_completion.yaml +0 -0
  225. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_huggingface/test_stream_completion.yaml +0 -0
  226. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_mistral/test_image_as_binary_content_tool_response.yaml +0 -0
  227. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_mistral/test_mistral_model_instructions.yaml +0 -0
  228. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part.yaml +0 -0
  229. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_audio_as_binary_content_input.yaml +0 -0
  230. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_compatible_api_with_tool_calls_without_id.yaml +0 -0
  231. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_document_as_binary_content_input.yaml +0 -0
  232. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_document_url_input.yaml +0 -0
  233. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_extra_headers.yaml +0 -0
  234. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_image_as_binary_content_input.yaml +0 -0
  235. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_image_as_binary_content_tool_response.yaml +0 -0
  236. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_image_url_tool_response.yaml +0 -0
  237. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_invalid_response.yaml +0 -0
  238. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4.5-preview].yaml +0 -0
  239. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4o-mini].yaml +0 -0
  240. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_max_completion_tokens[o3-mini].yaml +0 -0
  241. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_multiple_agent_tool_calls.yaml +0 -0
  242. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_openai_audio_url_input.yaml +0 -0
  243. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_openai_instructions.yaml +0 -0
  244. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_openai_instructions_with_tool_calls_keep_instructions.yaml +0 -0
  245. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_openai_model_thinking_part.yaml +0 -0
  246. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_openai_model_thinking_part_iter.yaml +0 -0
  247. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_openai_model_without_system_prompt.yaml +0 -0
  248. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_openai_native_output.yaml +0 -0
  249. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_openai_native_output_multiple.yaml +0 -0
  250. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[developer].yaml +0 -0
  251. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[system].yaml +0 -0
  252. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_openai_prompted_output.yaml +0 -0
  253. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_openai_prompted_output_multiple.yaml +0 -0
  254. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_openai_responses_model_thinking_part.yaml +0 -0
  255. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_openai_text_output_function.yaml +0 -0
  256. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_openai_tool_output.yaml +0 -0
  257. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_reasoning_model_with_temperature.yaml +0 -0
  258. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_text_response.yaml +0 -0
  259. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_user_id.yaml +0 -0
  260. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai/test_valid_response.yaml +0 -0
  261. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai_responses/test_audio_as_binary_content_input.yaml +0 -0
  262. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_input.yaml +0 -0
  263. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_tool_response.yaml +0 -0
  264. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai_responses/test_native_output.yaml +0 -0
  265. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai_responses/test_native_output_multiple.yaml +0 -0
  266. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_as_binary_content_input.yaml +0 -0
  267. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_url_input.yaml +0 -0
  268. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_url_input.yaml +0 -0
  269. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools.yaml +0 -0
  270. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_http_error.yaml +0 -0
  271. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_instructions.yaml +0 -0
  272. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_retry.yaml +0 -0
  273. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response.yaml +0 -0
  274. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response_with_tool_call.yaml +0 -0
  275. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_output_type.yaml +0 -0
  276. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_effort.yaml +0 -0
  277. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_generate_summary.yaml +0 -0
  278. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_stream.yaml +0 -0
  279. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_system_prompt.yaml +0 -0
  280. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_text_document_url_input.yaml +0 -0
  281. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai_responses/test_prompted_output.yaml +0 -0
  282. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai_responses/test_prompted_output_multiple.yaml +0 -0
  283. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai_responses/test_reasoning_model_with_temperature.yaml +0 -0
  284. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai_responses/test_text_output_function.yaml +0 -0
  285. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/cassettes/test_openai_responses/test_tool_output.yaml +0 -0
  286. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/mock_async_stream.py +0 -0
  287. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/test_anthropic.py +0 -0
  288. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/test_cohere.py +0 -0
  289. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/test_deepseek.py +0 -0
  290. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/test_download_item.py +0 -0
  291. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/test_fallback.py +0 -0
  292. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/test_google.py +0 -0
  293. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/test_groq.py +0 -0
  294. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/test_huggingface.py +0 -0
  295. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/test_instrumented.py +0 -0
  296. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/test_mcp_sampling.py +0 -0
  297. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/test_mistral.py +0 -0
  298. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/test_model.py +0 -0
  299. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/test_model_function.py +0 -0
  300. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/test_model_names.py +0 -0
  301. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/test_model_request_parameters.py +0 -0
  302. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/test_model_settings.py +0 -0
  303. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/test_model_test.py +0 -0
  304. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/models/test_openai_responses.py +0 -0
  305. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/providers/__init__.py +0 -0
  306. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/providers/cassettes/test_azure/test_azure_provider_call.yaml +0 -0
  307. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/providers/cassettes/test_google_vertex/test_vertexai_provider.yaml +0 -0
  308. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/providers/cassettes/test_heroku/test_heroku_model_provider_claude_3_7_sonnet.yaml +0 -0
  309. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/providers/cassettes/test_openrouter/test_openrouter_with_google_model.yaml +0 -0
  310. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/providers/test_anthropic.py +0 -0
  311. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/providers/test_azure.py +0 -0
  312. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/providers/test_bedrock.py +0 -0
  313. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/providers/test_cohere.py +0 -0
  314. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/providers/test_deepseek.py +0 -0
  315. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/providers/test_fireworks.py +0 -0
  316. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/providers/test_github.py +0 -0
  317. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/providers/test_grok.py +0 -0
  318. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/providers/test_groq.py +0 -0
  319. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/providers/test_heroku.py +0 -0
  320. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/providers/test_huggingface.py +0 -0
  321. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/providers/test_mistral.py +0 -0
  322. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/providers/test_moonshotai.py +0 -0
  323. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/providers/test_openai.py +0 -0
  324. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/providers/test_openrouter.py +0 -0
  325. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/providers/test_together.py +0 -0
  326. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/providers/test_vercel.py +0 -0
  327. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/test_a2a.py +0 -0
  328. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/test_ag_ui.py +0 -0
  329. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/test_cli.py +0 -0
  330. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/test_deps.py +0 -0
  331. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/test_direct.py +0 -0
  332. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/test_format_as_xml.py +0 -0
  333. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/test_history_processor.py +0 -0
  334. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/test_json_body_serializer.py +0 -0
  335. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/test_live.py +0 -0
  336. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/test_logfire.py +0 -0
  337. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/test_mcp.py +0 -0
  338. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/test_messages.py +0 -0
  339. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/test_parts_manager.py +0 -0
  340. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/test_settings.py +0 -0
  341. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/test_tenacity.py +0 -0
  342. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/test_thinking_part.py +0 -0
  343. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/test_tools.py +0 -0
  344. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/test_toolsets.py +0 -0
  345. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/test_usage_limits.py +0 -0
  346. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/test_utils.py +0 -0
  347. {pydantic_ai-0.5.1 → pydantic_ai-0.6.1}/tests/typed_graph.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pydantic-ai
3
- Version: 0.5.1
3
+ Version: 0.6.1
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,11 +28,11 @@ 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[ag-ui,anthropic,bedrock,cli,cohere,evals,google,groq,huggingface,mcp,mistral,openai,retries,vertexai]==0.5.1
31
+ Requires-Dist: pydantic-ai-slim[ag-ui,anthropic,bedrock,cli,cohere,evals,google,groq,huggingface,mcp,mistral,openai,retries,vertexai]==0.6.1
32
32
  Provides-Extra: a2a
33
33
  Requires-Dist: fasta2a>=0.4.1; extra == 'a2a'
34
34
  Provides-Extra: examples
35
- Requires-Dist: pydantic-ai-examples==0.5.1; extra == 'examples'
35
+ Requires-Dist: pydantic-ai-examples==0.6.1; extra == 'examples'
36
36
  Provides-Extra: logfire
37
37
  Requires-Dist: logfire>=3.11.0; extra == 'logfire'
38
38
  Description-Content-Type: text/markdown
@@ -92,6 +92,7 @@ docs = [
92
92
  "mkdocs-llmstxt>=0.2.0",
93
93
  "mkdocs-material[imaging]>=9.5.45",
94
94
  "mkdocstrings-python>=1.12.2",
95
+ "griffe-warnings-deprecated>=1.1.0",
95
96
  ]
96
97
  docs-upload = ["algoliasearch>=4.12.0", "pydantic>=2.10.1"]
97
98
 
@@ -479,7 +479,7 @@ def model(
479
479
  return CohereModel('command-r-plus', provider=CohereProvider(api_key=co_api_key))
480
480
  elif request.param == 'gemini':
481
481
  from pydantic_ai.models.gemini import GeminiModel # type: ignore[reportDeprecated]
482
- from pydantic_ai.providers.google_gla import GoogleGLAProvider
482
+ from pydantic_ai.providers.google_gla import GoogleGLAProvider # type: ignore[reportDeprecated]
483
483
 
484
484
  return GeminiModel('gemini-1.5-flash', provider=GoogleGLAProvider(api_key=gemini_api_key)) # type: ignore[reportDeprecated]
485
485
  elif request.param == 'google':
@@ -401,39 +401,6 @@ async def test_iter_next_error(mock_snapshot_id: object):
401
401
  await run.next()
402
402
 
403
403
 
404
- async def test_next(mock_snapshot_id: object):
405
- @dataclass
406
- class Foo(BaseNode):
407
- async def run(self, ctx: GraphRunContext) -> Bar:
408
- return Bar()
409
-
410
- @dataclass
411
- class Bar(BaseNode):
412
- async def run(self, ctx: GraphRunContext) -> Foo:
413
- return Foo() # pragma: no cover
414
-
415
- g = Graph(nodes=(Foo, Bar))
416
- assert g.name is None
417
- sp = FullStatePersistence()
418
- with pytest.warns(DeprecationWarning, match='`next` is deprecated, use `async with graph.iter(...)'):
419
- n = await g.next(Foo(), persistence=sp) # pyright: ignore[reportDeprecated]
420
- assert n == Bar()
421
- assert g.name == 'g'
422
- assert sp.history == snapshot(
423
- [
424
- NodeSnapshot(
425
- state=None,
426
- node=Foo(),
427
- start_ts=IsNow(tz=timezone.utc),
428
- duration=IsFloat(),
429
- status='success',
430
- id='Foo:1',
431
- ),
432
- NodeSnapshot(state=None, node=Bar(), id='Bar:2'),
433
- ]
434
- )
435
-
436
-
437
404
  async def test_deps(mock_snapshot_id: object):
438
405
  @dataclass
439
406
  class Deps:
@@ -0,0 +1,116 @@
1
+ interactions:
2
+ - request:
3
+ body: '{"messages": [{"role": "user", "content": [{"text": "What is the largest city in the user country?"}]}], "system":
4
+ [], "inferenceConfig": {}, "toolConfig": {"tools": [{"toolSpec": {"name": "get_user_country", "inputSchema": {"json":
5
+ {"additionalProperties": false, "properties": {}, "type": "object"}}}}]}, "additionalModelRequestFields": {"thinking":
6
+ {"type": "enabled", "budget_tokens": 1024}}}'
7
+ headers:
8
+ amz-sdk-invocation-id:
9
+ - !!binary |
10
+ MmM5YzRmZDctMmNlZS00Yzk2LWIwZWMtZjMxN2NkZDEwYmM5
11
+ amz-sdk-request:
12
+ - !!binary |
13
+ YXR0ZW1wdD0x
14
+ content-length:
15
+ - '396'
16
+ content-type:
17
+ - !!binary |
18
+ YXBwbGljYXRpb24vanNvbg==
19
+ method: POST
20
+ uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-3-7-sonnet-20250219-v1%3A0/converse
21
+ response:
22
+ headers:
23
+ connection:
24
+ - keep-alive
25
+ content-length:
26
+ - '1085'
27
+ content-type:
28
+ - application/json
29
+ parsed_body:
30
+ metrics:
31
+ latencyMs: 3896
32
+ output:
33
+ message:
34
+ content:
35
+ - reasoningContent:
36
+ reasoningText:
37
+ signature: ErcBCkgIBhABGAIiQDYN+P1S3ACL3r24cAMKCrRNiuPPxvmT2uzREPLRyKEUXagRbXn97QCke6L7OEZvlh7NdA/MQNTwMZV8TuB4qPASDLNxYxDx1S3luCIfARoMIwLZXwhsvjjTN72XIjAJrEl5ryAvv6C1+6YMCPC73ffE+kgwB96IcZaOuDFQtyaoWwcFcDPBguM6YNp5e3cqHbDQ3QF5dR4PP5q+3K23pual3pUdT/0e7khyIxXkGAI=
38
+ text: |-
39
+ The user is asking for the largest city in their country. To answer this, I first need to determine what country the user is from. I can use the `get_user_country` function to retrieve this information.
40
+
41
+ Once I have the user's country, I can then provide information about the largest city in that country.
42
+ - text: I'll need to check what country you're from to answer that question.
43
+ - toolUse:
44
+ input: {}
45
+ name: get_user_country
46
+ toolUseId: tooluse_W9DaUFg4Tj2cRPpndqxWSg
47
+ role: assistant
48
+ stopReason: tool_use
49
+ usage:
50
+ cacheReadInputTokenCount: 0
51
+ cacheReadInputTokens: 0
52
+ cacheWriteInputTokenCount: 0
53
+ cacheWriteInputTokens: 0
54
+ inputTokens: 397
55
+ outputTokens: 130
56
+ totalTokens: 527
57
+ status:
58
+ code: 200
59
+ message: OK
60
+ - request:
61
+ body: '{"messages": [{"role": "user", "content": [{"text": "What is the largest city in the user country?"}]}, {"role":
62
+ "assistant", "content": [{"reasoningContent": {"reasoningText": {"text": "The user is asking for the largest city in
63
+ their country. To answer this, I first need to determine what country the user is from. I can use the `get_user_country`
64
+ function to retrieve this information.\n\nOnce I have the user''s country, I can then provide information about the
65
+ largest city in that country.", "signature": "ErcBCkgIBhABGAIiQDYN+P1S3ACL3r24cAMKCrRNiuPPxvmT2uzREPLRyKEUXagRbXn97QCke6L7OEZvlh7NdA/MQNTwMZV8TuB4qPASDLNxYxDx1S3luCIfARoMIwLZXwhsvjjTN72XIjAJrEl5ryAvv6C1+6YMCPC73ffE+kgwB96IcZaOuDFQtyaoWwcFcDPBguM6YNp5e3cqHbDQ3QF5dR4PP5q+3K23pual3pUdT/0e7khyIxXkGAI="}}},
66
+ {"text": "I''ll need to check what country you''re from to answer that question."}, {"toolUse": {"toolUseId": "tooluse_W9DaUFg4Tj2cRPpndqxWSg",
67
+ "name": "get_user_country", "input": {}}}]}, {"role": "user", "content": [{"toolResult": {"toolUseId": "tooluse_W9DaUFg4Tj2cRPpndqxWSg",
68
+ "content": [{"text": "Mexico"}], "status": "success"}}]}], "system": [], "inferenceConfig": {}, "toolConfig": {"tools":
69
+ [{"toolSpec": {"name": "get_user_country", "inputSchema": {"json": {"additionalProperties": false, "properties": {},
70
+ "type": "object"}}}}]}, "additionalModelRequestFields": {"thinking": {"type": "enabled", "budget_tokens": 1024}}}'
71
+ headers:
72
+ amz-sdk-invocation-id:
73
+ - !!binary |
74
+ ZWM5NzBkMzYtZTZhYi00MjdlLWFmMzItMTBhNTc2ZjBiMWNl
75
+ amz-sdk-request:
76
+ - !!binary |
77
+ YXR0ZW1wdD0x
78
+ content-length:
79
+ - '1399'
80
+ content-type:
81
+ - !!binary |
82
+ YXBwbGljYXRpb24vanNvbg==
83
+ method: POST
84
+ uri: https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-3-7-sonnet-20250219-v1%3A0/converse
85
+ response:
86
+ headers:
87
+ connection:
88
+ - keep-alive
89
+ content-length:
90
+ - '756'
91
+ content-type:
92
+ - application/json
93
+ parsed_body:
94
+ metrics:
95
+ latencyMs: 4529
96
+ output:
97
+ message:
98
+ content:
99
+ - text: |-
100
+ Based on your location in Mexico, the largest city is Mexico City (Ciudad de México). It's not only the capital but also the most populous city in Mexico with a metropolitan area population of over 21 million people, making it one of the largest urban agglomerations in the world.
101
+
102
+ Mexico City is an important cultural, financial, and political center for the country and has a rich history dating back to the Aztec empire when it was known as Tenochtitlán.
103
+ role: assistant
104
+ stopReason: end_turn
105
+ usage:
106
+ cacheReadInputTokenCount: 0
107
+ cacheReadInputTokens: 0
108
+ cacheWriteInputTokenCount: 0
109
+ cacheWriteInputTokens: 0
110
+ inputTokens: 539
111
+ outputTokens: 106
112
+ totalTokens: 645
113
+ status:
114
+ code: 200
115
+ message: OK
116
+ version: 1
@@ -15,7 +15,7 @@ interactions:
15
15
  response:
16
16
  headers:
17
17
  content-length:
18
- - '550'
18
+ - '760'
19
19
  content-security-policy:
20
20
  - default-src 'none'; frame-ancestors 'none'
21
21
  content-type:
@@ -56,6 +56,23 @@ interactions:
56
56
  - us
57
57
  type:
58
58
  - text-to-embedding
59
+ - model_id: gpt-oss-120b
60
+ regions:
61
+ - us
62
+ type:
63
+ - text-to-text
64
+ - model_id: nova-lite
65
+ regions:
66
+ - eu
67
+ - us
68
+ type:
69
+ - text-to-text
70
+ - model_id: nova-pro
71
+ regions:
72
+ - eu
73
+ - us
74
+ type:
75
+ - text-to-text
59
76
  - model_id: stable-image-ultra
60
77
  regions:
61
78
  - us
@@ -654,6 +654,29 @@ async def test_bedrock_model_thinking_part(allow_model_requests: None, bedrock_p
654
654
  )
655
655
 
656
656
 
657
+ async def test_bedrock_anthropic_tool_with_thinking(allow_model_requests: None, bedrock_provider: BedrockProvider):
658
+ """When using thinking with tool calls in Anthropic, we need to send the thinking part back to the provider.
659
+
660
+ This tests the issue raised in https://github.com/pydantic/pydantic-ai/issues/2453.
661
+ """
662
+ m = BedrockConverseModel('us.anthropic.claude-3-7-sonnet-20250219-v1:0', provider=bedrock_provider)
663
+ settings = BedrockModelSettings(
664
+ bedrock_additional_model_requests_fields={'thinking': {'type': 'enabled', 'budget_tokens': 1024}},
665
+ )
666
+ agent = Agent(m, model_settings=settings)
667
+
668
+ @agent.tool_plain
669
+ async def get_user_country() -> str:
670
+ return 'Mexico'
671
+
672
+ result = await agent.run('What is the largest city in the user country?')
673
+ assert result.output == snapshot("""\
674
+ Based on your location in Mexico, the largest city is Mexico City (Ciudad de México). It's not only the capital but also the most populous city in Mexico with a metropolitan area population of over 21 million people, making it one of the largest urban agglomerations in the world.
675
+
676
+ Mexico City is an important cultural, financial, and political center for the country and has a rich history dating back to the Aztec empire when it was known as Tenochtitlán.\
677
+ """)
678
+
679
+
657
680
  async def test_bedrock_group_consecutive_tool_return_parts(bedrock_provider: BedrockProvider):
658
681
  """
659
682
  Test that consecutive ToolReturnPart objects are grouped into a single user message for Bedrock.
@@ -61,7 +61,11 @@ from pydantic_ai.tools import ToolDefinition
61
61
 
62
62
  from ..conftest import ClientWithHandler, IsDatetime, IsInstance, IsNow, IsStr, TestEnv, try_import
63
63
 
64
- pytestmark = [pytest.mark.anyio, pytest.mark.filterwarnings('ignore:Use `GoogleModel` instead.:DeprecationWarning')]
64
+ pytestmark = [
65
+ pytest.mark.anyio,
66
+ pytest.mark.filterwarnings('ignore:Use `GoogleModel` instead.:DeprecationWarning'),
67
+ pytest.mark.filterwarnings('ignore:`GoogleGLAProvider` is deprecated.:DeprecationWarning'),
68
+ ]
65
69
 
66
70
 
67
71
  async def test_model_simple(allow_model_requests: None):
@@ -34,6 +34,7 @@ pytestmark = [
34
34
  pytest.mark.skipif(not imports_successful(), reason='google-auth not installed'),
35
35
  pytest.mark.anyio,
36
36
  pytest.mark.filterwarnings('ignore:Use `GoogleModel` instead.:DeprecationWarning'),
37
+ pytest.mark.filterwarnings('ignore:`GoogleVertexProvider` is deprecated.:DeprecationWarning'),
37
38
  ]
38
39
 
39
40
 
@@ -12,7 +12,7 @@ import httpx
12
12
  import pytest
13
13
  from dirty_equals import IsListOrTuple
14
14
  from inline_snapshot import snapshot
15
- from pydantic import AnyUrl, BaseModel, Discriminator, Field, Tag
15
+ from pydantic import AnyUrl, BaseModel, ConfigDict, Discriminator, Field, Tag
16
16
  from typing_extensions import NotRequired, TypedDict
17
17
 
18
18
  from pydantic_ai import Agent, ModelHTTPError, ModelRetry, UnexpectedModelBehavior
@@ -1777,6 +1777,44 @@ def test_strict_schema():
1777
1777
  )
1778
1778
 
1779
1779
 
1780
+ def test_native_output_strict_mode(allow_model_requests: None):
1781
+ class CityLocation(BaseModel):
1782
+ city: str
1783
+ country: str
1784
+
1785
+ c = completion_message(
1786
+ ChatCompletionMessage(content='{"city": "Mexico City", "country": "Mexico"}', role='assistant'),
1787
+ )
1788
+ mock_client = MockOpenAI.create_mock(c)
1789
+ model = OpenAIModel('gpt-4o', provider=OpenAIProvider(openai_client=mock_client))
1790
+
1791
+ # Explicit strict=True
1792
+ agent = Agent(model, output_type=NativeOutput(CityLocation, strict=True))
1793
+
1794
+ agent.run_sync('What is the capital of Mexico?')
1795
+ assert get_mock_chat_completion_kwargs(mock_client)[-1]['response_format']['json_schema']['strict'] is True
1796
+
1797
+ # Explicit strict=False
1798
+ agent = Agent(model, output_type=NativeOutput(CityLocation, strict=False))
1799
+
1800
+ agent.run_sync('What is the capital of Mexico?')
1801
+ assert get_mock_chat_completion_kwargs(mock_client)[-1]['response_format']['json_schema']['strict'] is False
1802
+
1803
+ # Strict-compatible
1804
+ agent = Agent(model, output_type=NativeOutput(CityLocation))
1805
+
1806
+ agent.run_sync('What is the capital of Mexico?')
1807
+ assert get_mock_chat_completion_kwargs(mock_client)[-1]['response_format']['json_schema']['strict'] is True
1808
+
1809
+ # Strict-incompatible
1810
+ CityLocation.model_config = ConfigDict(extra='allow')
1811
+
1812
+ agent = Agent(model, output_type=NativeOutput(CityLocation))
1813
+
1814
+ agent.run_sync('What is the capital of Mexico?')
1815
+ assert get_mock_chat_completion_kwargs(mock_client)[-1]['response_format']['json_schema']['strict'] is False
1816
+
1817
+
1780
1818
  async def test_openai_instructions(allow_model_requests: None, openai_api_key: str):
1781
1819
  m = OpenAIModel('gpt-4o', provider=OpenAIProvider(api_key=openai_api_key))
1782
1820
  agent = Agent(m, instructions='You are a helpful assistant.')
@@ -1,3 +1,4 @@
1
+ # pyright: reportDeprecated=false
1
2
  import re
2
3
 
3
4
  import pytest
@@ -7,6 +8,10 @@ from pydantic_ai.providers.google_gla import GoogleGLAProvider
7
8
 
8
9
  from ..conftest import TestEnv
9
10
 
11
+ pytestmark = [
12
+ pytest.mark.filterwarnings('ignore:`GoogleGLAProvider` is deprecated.:DeprecationWarning'),
13
+ ]
14
+
10
15
 
11
16
  def test_api_key_arg(env: TestEnv):
12
17
  env.set('GEMINI_API_KEY', 'via-env-var')
@@ -1,3 +1,4 @@
1
+ # pyright: reportDeprecated=false
1
2
  from __future__ import annotations as _annotations
2
3
 
3
4
  import json
@@ -13,7 +14,7 @@ from inline_snapshot import snapshot
13
14
  from pytest_mock import MockerFixture
14
15
 
15
16
  from pydantic_ai.agent import Agent
16
- from pydantic_ai.models.gemini import GeminiModel # type: ignore[reportDeprecated]
17
+ from pydantic_ai.models.gemini import GeminiModel
17
18
 
18
19
  from ..conftest import try_import
19
20
 
@@ -26,6 +27,7 @@ pytestmark = [
26
27
  pytest.mark.skipif(not imports_successful(), reason='google-genai not installed'),
27
28
  pytest.mark.anyio(),
28
29
  pytest.mark.filterwarnings('ignore:Use `GoogleModel` instead.:DeprecationWarning'),
30
+ pytest.mark.filterwarnings('ignore:`GoogleVertexProvider` is deprecated.:DeprecationWarning'),
29
31
  ]
30
32
 
31
33
 
@@ -168,7 +170,7 @@ def vertex_provider_auth(mocker: MockerFixture) -> None: # pragma: lax no cover
168
170
  )
169
171
  @pytest.mark.vcr()
170
172
  async def test_vertexai_provider(allow_model_requests: None): # pragma: lax no cover
171
- m = GeminiModel('gemini-2.0-flash', provider='google-vertex') # type: ignore[reportDeprecated]
173
+ m = GeminiModel('gemini-2.0-flash', provider='google-vertex')
172
174
  agent = Agent(m)
173
175
 
174
176
  result = await agent.run('What is the capital of France?')
@@ -20,8 +20,8 @@ with try_import() as imports_successful:
20
20
  from pydantic_ai.providers.deepseek import DeepSeekProvider
21
21
  from pydantic_ai.providers.fireworks import FireworksProvider
22
22
  from pydantic_ai.providers.github import GitHubProvider
23
- from pydantic_ai.providers.google_gla import GoogleGLAProvider
24
- from pydantic_ai.providers.google_vertex import GoogleVertexProvider
23
+ from pydantic_ai.providers.google_gla import GoogleGLAProvider # type: ignore[reportDeprecated]
24
+ from pydantic_ai.providers.google_vertex import GoogleVertexProvider # type: ignore[reportDeprecated]
25
25
  from pydantic_ai.providers.grok import GrokProvider
26
26
  from pydantic_ai.providers.groq import GroqProvider
27
27
  from pydantic_ai.providers.heroku import HerokuProvider
@@ -40,8 +40,8 @@ with try_import() as imports_successful:
40
40
  ('vercel', VercelProvider, 'VERCEL_AI_GATEWAY_API_KEY'),
41
41
  ('openai', OpenAIProvider, 'OPENAI_API_KEY'),
42
42
  ('azure', AzureProvider, 'AZURE_OPENAI'),
43
- ('google-vertex', GoogleVertexProvider, None),
44
- ('google-gla', GoogleGLAProvider, 'GEMINI_API_KEY'),
43
+ ('google-vertex', GoogleVertexProvider, None), # type: ignore[reportDeprecated]
44
+ ('google-gla', GoogleGLAProvider, 'GEMINI_API_KEY'), # type: ignore[reportDeprecated]
45
45
  ('groq', GroqProvider, 'GROQ_API_KEY'),
46
46
  ('mistral', MistralProvider, 'MISTRAL_API_KEY'),
47
47
  ('grok', GrokProvider, 'GROK_API_KEY'),
@@ -55,7 +55,11 @@ with try_import() as imports_successful:
55
55
  if not imports_successful():
56
56
  test_infer_provider_params = [] # pragma: lax no cover
57
57
 
58
- pytestmark = pytest.mark.skipif(not imports_successful(), reason='need to install all extra packages')
58
+ pytestmark = [
59
+ pytest.mark.skipif(not imports_successful(), reason='need to install all extra packages'),
60
+ pytest.mark.filterwarnings('ignore:`GoogleGLAProvider` is deprecated:DeprecationWarning'),
61
+ pytest.mark.filterwarnings('ignore:`GoogleVertexProvider` is deprecated:DeprecationWarning'),
62
+ ]
59
63
 
60
64
 
61
65
  @pytest.fixture(autouse=True)
@@ -2617,13 +2617,6 @@ def test_heterogeneous_responses_non_streaming() -> None:
2617
2617
  )
2618
2618
 
2619
2619
 
2620
- def test_last_run_messages() -> None:
2621
- agent = Agent('test')
2622
-
2623
- with pytest.raises(AttributeError, match='The `last_run_messages` attribute has been removed,'):
2624
- agent.last_run_messages # pyright: ignore[reportDeprecated]
2625
-
2626
-
2627
2620
  def test_nested_capture_run_messages() -> None:
2628
2621
  agent = Agent('test')
2629
2622
 
@@ -3638,46 +3631,13 @@ def test_deprecated_kwargs_still_work():
3638
3631
  """Test that valid deprecated kwargs still work with warnings."""
3639
3632
  import warnings
3640
3633
 
3641
- with warnings.catch_warnings(record=True) as w:
3642
- warnings.simplefilter('always')
3643
-
3644
- agent = Agent('test', result_type=str) # type: ignore[call-arg]
3645
- assert len(w) == 1
3646
- assert issubclass(w[0].category, DeprecationWarning)
3647
- assert '`result_type` is deprecated' in str(w[0].message)
3648
- assert agent.output_type is str
3649
-
3650
- with warnings.catch_warnings(record=True) as w:
3651
- warnings.simplefilter('always')
3652
-
3653
- agent = Agent('test', result_tool_name='test_tool') # type: ignore[call-arg]
3654
- assert len(w) == 1
3655
- assert issubclass(w[0].category, DeprecationWarning)
3656
- assert '`result_tool_name` is deprecated' in str(w[0].message)
3657
-
3658
- with warnings.catch_warnings(record=True) as w:
3659
- warnings.simplefilter('always')
3660
-
3661
- agent = Agent('test', result_tool_description='test description') # type: ignore[call-arg]
3662
- assert len(w) == 1
3663
- assert issubclass(w[0].category, DeprecationWarning)
3664
- assert '`result_tool_description` is deprecated' in str(w[0].message)
3665
-
3666
- with warnings.catch_warnings(record=True) as w:
3667
- warnings.simplefilter('always')
3668
-
3669
- agent = Agent('test', result_retries=3) # type: ignore[call-arg]
3670
- assert len(w) == 1
3671
- assert issubclass(w[0].category, DeprecationWarning)
3672
- assert '`result_retries` is deprecated' in str(w[0].message)
3673
-
3674
3634
  try:
3675
3635
  from pydantic_ai.mcp import MCPServerStdio
3676
3636
 
3677
3637
  with warnings.catch_warnings(record=True) as w:
3678
3638
  warnings.simplefilter('always')
3679
3639
 
3680
- agent = Agent('test', mcp_servers=[MCPServerStdio('python', ['-m', 'tests.mcp_server'])]) # type: ignore[call-arg]
3640
+ Agent('test', mcp_servers=[MCPServerStdio('python', ['-m', 'tests.mcp_server'])]) # type: ignore[call-arg]
3681
3641
  assert len(w) == 1
3682
3642
  assert issubclass(w[0].category, DeprecationWarning)
3683
3643
  assert '`mcp_servers` is deprecated' in str(w[0].message)
@@ -3685,21 +3645,6 @@ def test_deprecated_kwargs_still_work():
3685
3645
  pass
3686
3646
 
3687
3647
 
3688
- def test_deprecated_kwargs_mixed_valid_invalid():
3689
- """Test that mix of valid deprecated and invalid kwargs raises error for invalid ones."""
3690
- import warnings
3691
-
3692
- with pytest.raises(UserError, match='Unknown keyword arguments: `usage_limits`'):
3693
- with warnings.catch_warnings():
3694
- warnings.simplefilter('ignore', DeprecationWarning) # Ignore the deprecation warning for result_type
3695
- Agent('test', result_type=str, usage_limits='invalid') # type: ignore[call-arg]
3696
-
3697
- with pytest.raises(UserError, match='Unknown keyword arguments: `foo`, `bar`'):
3698
- with warnings.catch_warnings():
3699
- warnings.simplefilter('ignore', DeprecationWarning) # Ignore the deprecation warning for result_tool_name
3700
- Agent('test', result_tool_name='test', foo='value1', bar='value2') # type: ignore[call-arg]
3701
-
3702
-
3703
3648
  def test_override_toolsets():
3704
3649
  foo_toolset = FunctionToolset()
3705
3650
 
@@ -45,9 +45,7 @@ from .conftest import ClientWithHandler, TestEnv, try_import
45
45
 
46
46
  try:
47
47
  from pydantic_ai.providers.google import GoogleProvider
48
- from pydantic_ai.providers.google_vertex import GoogleVertexProvider
49
48
  except ImportError: # pragma: lax no cover
50
- GoogleVertexProvider = None
51
49
  GoogleProvider = None
52
50
 
53
51
 
@@ -63,10 +61,7 @@ with try_import() as imports_successful:
63
61
 
64
62
  pytestmark = [
65
63
  pytest.mark.skipif(not imports_successful(), reason='extras not installed'),
66
- pytest.mark.skipif(
67
- GoogleVertexProvider is None or logfire is None or GoogleProvider is None,
68
- reason='google-auth or logfire or google-provider not installed',
69
- ),
64
+ pytest.mark.skipif(logfire is None or GoogleProvider is None, reason='logfire or google-provider not installed'),
70
65
  ]
71
66
  code_examples: dict[str, CodeExample] = {}
72
67
 
@@ -926,7 +926,7 @@ async def test_stream_iter_structured_validator() -> None:
926
926
  class NotOutputType(BaseModel):
927
927
  not_value: str
928
928
 
929
- agent = Agent[None, Union[OutputType, NotOutputType]]('test', output_type=Union[OutputType, NotOutputType]) # pyright: ignore[reportArgumentType]
929
+ agent = Agent[None, Union[OutputType, NotOutputType]]('test', output_type=Union[OutputType, NotOutputType])
930
930
 
931
931
  @agent.output_validator
932
932
  def output_validator(data: OutputType | NotOutputType) -> OutputType | NotOutputType:
@@ -1,4 +1,5 @@
1
1
  """This file is used to test static typing, it's analyzed with pyright and mypy."""
2
+ # pyright: reportUnnecessaryTypeIgnoreComment=false
2
3
 
3
4
  import re
4
5
  from collections.abc import Awaitable
File without changes
File without changes
File without changes
File without changes