pydantic-ai 0.1.9__tar.gz → 0.1.10__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 (190) hide show
  1. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/PKG-INFO +3 -3
  2. pydantic_ai-0.1.10/tests/models/cassettes/test_anthropic/test_extra_headers.yaml +57 -0
  3. pydantic_ai-0.1.10/tests/models/cassettes/test_groq/test_extra_headers.yaml +71 -0
  4. pydantic_ai-0.1.10/tests/models/cassettes/test_openai/test_extra_headers.yaml +80 -0
  5. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_anthropic.py +13 -0
  6. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_groq.py +9 -1
  7. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_openai.py +8 -0
  8. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/.gitignore +0 -0
  9. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/LICENSE +0 -0
  10. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/Makefile +0 -0
  11. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/README.md +0 -0
  12. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/pyproject.toml +0 -0
  13. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/__init__.py +0 -0
  14. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/assets/dummy.pdf +0 -0
  15. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/assets/kiwi.png +0 -0
  16. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/assets/marcelo.mp3 +0 -0
  17. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/assets/small_video.mp4 +0 -0
  18. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml +0 -0
  19. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml +0 -0
  20. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_mcp/test_tool_returning_error.yaml +0 -0
  21. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_mcp/test_tool_returning_image.yaml +0 -0
  22. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_mcp/test_tool_returning_image_resource.yaml +0 -0
  23. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_mcp/test_tool_returning_multiple_items.yaml +0 -0
  24. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_mcp/test_tool_returning_none.yaml +0 -0
  25. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_mcp/test_tool_returning_str.yaml +0 -0
  26. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_mcp/test_tool_returning_text_resource.yaml +0 -0
  27. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_settings/test_stop_settings[anthropic].yaml +0 -0
  28. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_settings/test_stop_settings[bedrock].yaml +0 -0
  29. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_settings/test_stop_settings[cohere].yaml +0 -0
  30. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_settings/test_stop_settings[gemini].yaml +0 -0
  31. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_settings/test_stop_settings[groq].yaml +0 -0
  32. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_settings/test_stop_settings[mistral].yaml +0 -0
  33. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/cassettes/test_settings/test_stop_settings[openai].yaml +0 -0
  34. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/conftest.py +0 -0
  35. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/__init__.py +0 -0
  36. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/test_dataset.py +0 -0
  37. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/test_evaluator_base.py +0 -0
  38. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/test_evaluator_common.py +0 -0
  39. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/test_evaluator_context.py +0 -0
  40. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/test_evaluator_spec.py +0 -0
  41. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/test_evaluators.py +0 -0
  42. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/test_llm_as_a_judge.py +0 -0
  43. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/test_otel.py +0 -0
  44. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/test_render_numbers.py +0 -0
  45. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/test_reporting.py +0 -0
  46. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/test_reports.py +0 -0
  47. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/test_utils.py +0 -0
  48. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/evals/utils.py +0 -0
  49. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/example_modules/README.md +0 -0
  50. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/example_modules/bank_database.py +0 -0
  51. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/example_modules/fake_database.py +0 -0
  52. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/example_modules/weather_service.py +0 -0
  53. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/graph/__init__.py +0 -0
  54. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/graph/test_file_persistence.py +0 -0
  55. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/graph/test_graph.py +0 -0
  56. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/graph/test_mermaid.py +0 -0
  57. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/graph/test_persistence.py +0 -0
  58. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/graph/test_state.py +0 -0
  59. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/graph/test_utils.py +0 -0
  60. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/import_examples.py +0 -0
  61. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/json_body_serializer.py +0 -0
  62. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/mcp_server.py +0 -0
  63. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/__init__.py +0 -0
  64. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_anthropic/test_anthropic_model_instructions.yaml +0 -0
  65. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_anthropic/test_document_binary_content_input.yaml +0 -0
  66. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_anthropic/test_document_url_input.yaml +0 -0
  67. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_anthropic/test_image_as_binary_content_tool_response.yaml +0 -0
  68. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_anthropic/test_image_url_input.yaml +0 -0
  69. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +0 -0
  70. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_anthropic/test_multiple_parallel_tool_calls.yaml +0 -0
  71. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_anthropic/test_text_document_url_input.yaml +0 -0
  72. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_empty_system_prompt.yaml +0 -0
  73. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml +0 -0
  74. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_model_anthropic_model_without_tools.yaml +0 -0
  75. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_model_guardrail_config.yaml +0 -0
  76. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_model_instructions.yaml +0 -0
  77. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_model_iter_stream.yaml +0 -0
  78. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_model_max_tokens.yaml +0 -0
  79. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_model_other_parameters.yaml +0 -0
  80. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_model_performance_config.yaml +0 -0
  81. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_model_retry.yaml +0 -0
  82. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream.yaml +0 -0
  83. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_model_structured_response.yaml +0 -0
  84. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_model_top_p.yaml +0 -0
  85. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_bedrock_multiple_documents_in_history.yaml +0 -0
  86. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_document_url_input.yaml +0 -0
  87. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_image_as_binary_content_input.yaml +0 -0
  88. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_image_url_input.yaml +0 -0
  89. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_text_as_binary_content_input.yaml +0 -0
  90. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_text_document_url_input.yaml +0 -0
  91. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_video_as_binary_content_input.yaml +0 -0
  92. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_bedrock/test_video_url_input.yaml +0 -0
  93. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_cohere/test_cohere_model_instructions.yaml +0 -0
  94. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_cohere/test_request_simple_success_with_vcr.yaml +0 -0
  95. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_gemini/test_document_url_input.yaml +0 -0
  96. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_false.yaml +0 -0
  97. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_true.yaml +0 -0
  98. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_gemini/test_gemini_drop_exclusive_maximum.yaml +0 -0
  99. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_gemini/test_gemini_exclusive_minimum_and_maximum.yaml +0 -0
  100. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_gemini/test_gemini_model_instructions.yaml +0 -0
  101. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_gemini/test_image_as_binary_content_input.yaml +0 -0
  102. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_gemini/test_image_as_binary_content_tool_response.yaml +0 -0
  103. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_gemini/test_image_url_input.yaml +0 -0
  104. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_gemini/test_video_as_binary_content_input.yaml +0 -0
  105. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_gemini/test_video_url_input.yaml +0 -0
  106. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_groq/test_groq_model_instructions.yaml +0 -0
  107. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_groq/test_image_as_binary_content_input.yaml +0 -0
  108. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_groq/test_image_as_binary_content_tool_response.yaml +0 -0
  109. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_groq/test_image_url_input.yaml +0 -0
  110. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_mistral/test_image_as_binary_content_tool_response.yaml +0 -0
  111. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_mistral/test_mistral_model_instructions.yaml +0 -0
  112. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_audio_as_binary_content_input.yaml +0 -0
  113. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_document_as_binary_content_input.yaml +0 -0
  114. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_document_url_input.yaml +0 -0
  115. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_image_as_binary_content_input.yaml +0 -0
  116. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_image_as_binary_content_tool_response.yaml +0 -0
  117. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_image_url_tool_response.yaml +0 -0
  118. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4.5-preview].yaml +0 -0
  119. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4o-mini].yaml +0 -0
  120. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_max_completion_tokens[o3-mini].yaml +0 -0
  121. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_multiple_agent_tool_calls.yaml +0 -0
  122. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_openai_audio_url_input.yaml +0 -0
  123. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_openai_instructions.yaml +0 -0
  124. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_openai_instructions_with_tool_calls_keep_instructions.yaml +0 -0
  125. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_openai_model_without_system_prompt.yaml +0 -0
  126. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[developer].yaml +0 -0
  127. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[system].yaml +0 -0
  128. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai/test_user_id.yaml +0 -0
  129. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_audio_as_binary_content_input.yaml +0 -0
  130. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_input.yaml +0 -0
  131. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_tool_response.yaml +0 -0
  132. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_as_binary_content_input.yaml +0 -0
  133. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_url_input.yaml +0 -0
  134. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_url_input.yaml +0 -0
  135. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools.yaml +0 -0
  136. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_http_error.yaml +0 -0
  137. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_instructions.yaml +0 -0
  138. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_retry.yaml +0 -0
  139. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response.yaml +0 -0
  140. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response_with_tool_call.yaml +0 -0
  141. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_output_type.yaml +0 -0
  142. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_effort.yaml +0 -0
  143. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_generate_summary.yaml +0 -0
  144. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_stream.yaml +0 -0
  145. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_system_prompt.yaml +0 -0
  146. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/cassettes/test_openai_responses/test_openai_responses_text_document_url_input.yaml +0 -0
  147. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/mock_async_stream.py +0 -0
  148. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_bedrock.py +0 -0
  149. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_cohere.py +0 -0
  150. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_fallback.py +0 -0
  151. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_gemini.py +0 -0
  152. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_instrumented.py +0 -0
  153. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_mistral.py +0 -0
  154. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_model.py +0 -0
  155. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_model_function.py +0 -0
  156. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_model_names.py +0 -0
  157. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_model_test.py +0 -0
  158. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/models/test_openai_responses.py +0 -0
  159. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/__init__.py +0 -0
  160. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/cassettes/test_azure/test_azure_provider_call.yaml +0 -0
  161. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/cassettes/test_google_vertex/test_vertexai_provider.yaml +0 -0
  162. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/test_anthropic.py +0 -0
  163. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/test_azure.py +0 -0
  164. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/test_bedrock.py +0 -0
  165. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/test_cohere.py +0 -0
  166. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/test_deepseek.py +0 -0
  167. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/test_google_gla.py +0 -0
  168. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/test_google_vertex.py +0 -0
  169. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/test_groq.py +0 -0
  170. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/test_mistral.py +0 -0
  171. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/test_openai.py +0 -0
  172. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/providers/test_provider_names.py +0 -0
  173. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_agent.py +0 -0
  174. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_cli.py +0 -0
  175. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_deps.py +0 -0
  176. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_examples.py +0 -0
  177. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_format_as_xml.py +0 -0
  178. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_json_body_serializer.py +0 -0
  179. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_live.py +0 -0
  180. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_logfire.py +0 -0
  181. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_mcp.py +0 -0
  182. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_messages.py +0 -0
  183. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_parts_manager.py +0 -0
  184. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_settings.py +0 -0
  185. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_streaming.py +0 -0
  186. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_tools.py +0 -0
  187. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_usage_limits.py +0 -0
  188. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/test_utils.py +0 -0
  189. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/typed_agent.py +0 -0
  190. {pydantic_ai-0.1.9 → pydantic_ai-0.1.10}/tests/typed_graph.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pydantic-ai
3
- Version: 0.1.9
3
+ Version: 0.1.10
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[anthropic,bedrock,cli,cohere,evals,groq,mcp,mistral,openai,vertexai]==0.1.9
31
+ Requires-Dist: pydantic-ai-slim[anthropic,bedrock,cli,cohere,evals,groq,mcp,mistral,openai,vertexai]==0.1.10
32
32
  Provides-Extra: examples
33
- Requires-Dist: pydantic-ai-examples==0.1.9; extra == 'examples'
33
+ Requires-Dist: pydantic-ai-examples==0.1.10; extra == 'examples'
34
34
  Provides-Extra: logfire
35
35
  Requires-Dist: logfire>=3.11.0; extra == 'logfire'
36
36
  Description-Content-Type: text/markdown
@@ -0,0 +1,57 @@
1
+ interactions:
2
+ - request:
3
+ headers:
4
+ accept:
5
+ - application/json
6
+ accept-encoding:
7
+ - gzip, deflate
8
+ connection:
9
+ - keep-alive
10
+ content-length:
11
+ - '202'
12
+ content-type:
13
+ - application/json
14
+ host:
15
+ - api.anthropic.com
16
+ xProxy-Limit-IDs:
17
+ - monthly_budget
18
+ method: POST
19
+ parsed_body:
20
+ max_tokens: 1024
21
+ messages:
22
+ - content:
23
+ - text: hello
24
+ type: text
25
+ role: user
26
+ model: claude-3-opus-latest
27
+ stream: false
28
+ uri: https://api.anthropic.com/v1/messages
29
+ response:
30
+ headers:
31
+ connection:
32
+ - keep-alive
33
+ content-length:
34
+ - '328'
35
+ content-type:
36
+ - application/json
37
+ transfer-encoding:
38
+ - chunked
39
+ parsed_body:
40
+ content:
41
+ - text: Hello! How can I assist you today?
42
+ type: text
43
+ id: msg_01U58nruzfn9BrXrrF2hhb4m
44
+ model: claude-3-5-haiku-latest
45
+ role: assistant
46
+ stop_reason: end_turn
47
+ stop_sequence: null
48
+ type: message
49
+ usage:
50
+ cache_creation_input_tokens: 0
51
+ cache_read_input_tokens: 0
52
+ input_tokens: 20
53
+ output_tokens: 10
54
+ status:
55
+ code: 200
56
+ message: OK
57
+ version: 1
@@ -0,0 +1,71 @@
1
+ interactions:
2
+ - request:
3
+ headers:
4
+ accept:
5
+ - application/json
6
+ accept-encoding:
7
+ - gzip, deflate
8
+ connection:
9
+ - keep-alive
10
+ content-length:
11
+ - '187'
12
+ content-type:
13
+ - application/json
14
+ host:
15
+ - api.groq.com
16
+ xProxy-Limit-IDs:
17
+ - monthly_budget
18
+ method: POST
19
+ parsed_body:
20
+ messages:
21
+ - content: hello
22
+ role: user
23
+ model: llama-3.3-70b-versatile
24
+ n: 1
25
+ stream: false
26
+ uri: https://api.groq.com/openai/v1/chat/completions
27
+ response:
28
+ headers:
29
+ alt-svc:
30
+ - h3=":443"; ma=86400
31
+ cache-control:
32
+ - private, max-age=0, no-store, no-cache, must-revalidate
33
+ connection:
34
+ - keep-alive
35
+ content-length:
36
+ - '570'
37
+ content-type:
38
+ - application/json
39
+ transfer-encoding:
40
+ - chunked
41
+ vary:
42
+ - Origin, Accept-Encoding
43
+ parsed_body:
44
+ choices:
45
+ - finish_reason: stop
46
+ index: 0
47
+ logprobs: null
48
+ message:
49
+ content: Hello! How can I assist you today?
50
+ role: assistant
51
+ created: 1744043573
52
+ id: chatcmpl-7586b6a9-fb4b-4ec7-86a0-59f0a77844cf
53
+ model: llama-3.3-70b-versatile
54
+ object: chat.completion
55
+ system_fingerprint: fp_72a5dc99ee
56
+ usage:
57
+ completion_time: 0.029090909
58
+ completion_tokens: 8
59
+ prompt_time: 0.002665957
60
+ prompt_tokens: 48
61
+ queue_time: 0.100731848
62
+ total_time: 0.031756866
63
+ total_tokens: 56
64
+ usage_breakdown:
65
+ models: null
66
+ x_groq:
67
+ id: req_01jr8hj0hzeq9b86xqb5dn7wqs
68
+ status:
69
+ code: 200
70
+ message: OK
71
+ version: 1
@@ -0,0 +1,80 @@
1
+ interactions:
2
+ - request:
3
+ headers:
4
+ accept:
5
+ - application/json
6
+ accept-encoding:
7
+ - gzip, deflate
8
+ connection:
9
+ - keep-alive
10
+ content-length:
11
+ - '103'
12
+ content-type:
13
+ - application/json
14
+ host:
15
+ - api.openai.com
16
+ xProxy-Limit-IDs:
17
+ - monthly_budget
18
+ method: POST
19
+ parsed_body:
20
+ messages:
21
+ - content: hello
22
+ role: user
23
+ model: gpt-4o
24
+ n: 1
25
+ stream: false
26
+ uri: https://api.openai.com/v1/chat/completions
27
+ response:
28
+ headers:
29
+ access-control-expose-headers:
30
+ - X-Request-ID
31
+ alt-svc:
32
+ - h3=":443"; ma=86400
33
+ connection:
34
+ - keep-alive
35
+ content-length:
36
+ - '835'
37
+ content-type:
38
+ - application/json
39
+ openai-organization:
40
+ - pydantic-28gund
41
+ openai-processing-ms:
42
+ - '584'
43
+ openai-version:
44
+ - '2020-10-01'
45
+ strict-transport-security:
46
+ - max-age=31536000; includeSubDomains; preload
47
+ transfer-encoding:
48
+ - chunked
49
+ parsed_body:
50
+ choices:
51
+ - finish_reason: stop
52
+ index: 0
53
+ logprobs: null
54
+ message:
55
+ annotations: []
56
+ content: Hello! How can I assist you today?
57
+ refusal: null
58
+ role: assistant
59
+ created: 1743073438
60
+ id: chatcmpl-BFfJeRdAVFPUVWxV3OYH1tSR5KvrI
61
+ model: gpt-4o-2024-08-06
62
+ object: chat.completion
63
+ service_tier: default
64
+ system_fingerprint: fp_898ac29719
65
+ usage:
66
+ completion_tokens: 10
67
+ completion_tokens_details:
68
+ accepted_prediction_tokens: 0
69
+ audio_tokens: 0
70
+ reasoning_tokens: 0
71
+ rejected_prediction_tokens: 0
72
+ prompt_tokens: 8
73
+ prompt_tokens_details:
74
+ audio_tokens: 0
75
+ cached_tokens: 0
76
+ total_tokens: 18
77
+ status:
78
+ code: 200
79
+ message: OK
80
+ version: 1
@@ -634,6 +634,19 @@ async def test_image_url_input(allow_model_requests: None, anthropic_api_key: st
634
634
  )
635
635
 
636
636
 
637
+ @pytest.mark.vcr()
638
+ async def test_extra_headers(allow_model_requests: None, anthropic_api_key: str):
639
+ # This test doesn't do anything, it's just here to ensure that calls with `extra_headers` don't cause errors, including type.
640
+ m = AnthropicModel('claude-3-5-haiku-latest', provider=AnthropicProvider(api_key=anthropic_api_key))
641
+ agent = Agent(
642
+ m,
643
+ model_settings=AnthropicModelSettings(
644
+ anthropic_metadata={'user_id': '123'}, extra_headers={'Extra-Header-Key': 'Extra-Header-Value'}
645
+ ),
646
+ )
647
+ await agent.run('hello')
648
+
649
+
637
650
  @pytest.mark.vcr()
638
651
  async def test_image_url_input_invalid_mime_type(allow_model_requests: None, anthropic_api_key: str):
639
652
  m = AnthropicModel('claude-3-5-haiku-latest', provider=AnthropicProvider(api_key=anthropic_api_key))
@@ -46,7 +46,7 @@ with try_import() as imports_successful:
46
46
  from groq.types.chat.chat_completion_message_tool_call import Function
47
47
  from groq.types.completion_usage import CompletionUsage
48
48
 
49
- from pydantic_ai.models.groq import GroqModel
49
+ from pydantic_ai.models.groq import GroqModel, GroqModelSettings
50
50
  from pydantic_ai.providers.groq import GroqProvider
51
51
 
52
52
  # note: we use Union here so that casting works with Python 3.9
@@ -504,6 +504,14 @@ async def test_no_delta(allow_model_requests: None):
504
504
  assert result.is_complete
505
505
 
506
506
 
507
+ @pytest.mark.vcr()
508
+ async def test_extra_headers(allow_model_requests: None, groq_api_key: str):
509
+ # This test doesn't do anything, it's just here to ensure that calls with `extra_headers` don't cause errors, including type.
510
+ m = GroqModel('llama-3.3-70b-versatile', provider=GroqProvider(api_key=groq_api_key))
511
+ agent = Agent(m, model_settings=GroqModelSettings(extra_headers={'Extra-Header-Key': 'Extra-Header-Value'}))
512
+ await agent.run('hello')
513
+
514
+
507
515
  @pytest.mark.vcr()
508
516
  async def test_image_url_input(allow_model_requests: None, groq_api_key: str):
509
517
  m = GroqModel('meta-llama/llama-4-scout-17b-16e-instruct', provider=GroqProvider(api_key=groq_api_key))
@@ -862,6 +862,14 @@ async def test_multiple_agent_tool_calls(allow_model_requests: None, gemini_api_
862
862
  assert result.output == snapshot('The capital of England is London.')
863
863
 
864
864
 
865
+ @pytest.mark.vcr()
866
+ async def test_extra_headers(allow_model_requests: None, openai_api_key: str):
867
+ # This test doesn't do anything, it's just here to ensure that calls with `extra_headers` don't cause errors, including type.
868
+ m = OpenAIModel('gpt-4o', provider=OpenAIProvider(api_key=openai_api_key))
869
+ agent = Agent(m, model_settings=OpenAIModelSettings(extra_headers={'Extra-Header-Key': 'Extra-Header-Value'}))
870
+ await agent.run('hello')
871
+
872
+
865
873
  @pytest.mark.vcr()
866
874
  async def test_user_id(allow_model_requests: None, openai_api_key: str):
867
875
  # This test doesn't do anything, it's just here to ensure that calls with `user` don't cause errors, including type.
File without changes
File without changes
File without changes
File without changes
File without changes