pydantic-ai 0.0.54__tar.gz → 0.0.55__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 (150) hide show
  1. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/PKG-INFO +3 -3
  2. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/test_model.py +1 -0
  3. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/test_openai.py +9 -1
  4. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/providers/test_provider_names.py +2 -0
  5. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/.gitignore +0 -0
  6. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/LICENSE +0 -0
  7. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/Makefile +0 -0
  8. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/README.md +0 -0
  9. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/pyproject.toml +0 -0
  10. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/__init__.py +0 -0
  11. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/assets/dummy.pdf +0 -0
  12. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/assets/kiwi.png +0 -0
  13. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/assets/marcelo.mp3 +0 -0
  14. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml +0 -0
  15. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/cassettes/test_settings/test_stop_settings[anthropic].yaml +0 -0
  16. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/cassettes/test_settings/test_stop_settings[bedrock].yaml +0 -0
  17. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/cassettes/test_settings/test_stop_settings[cohere].yaml +0 -0
  18. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/cassettes/test_settings/test_stop_settings[gemini].yaml +0 -0
  19. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/cassettes/test_settings/test_stop_settings[groq].yaml +0 -0
  20. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/cassettes/test_settings/test_stop_settings[mistral].yaml +0 -0
  21. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/cassettes/test_settings/test_stop_settings[openai].yaml +0 -0
  22. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/conftest.py +0 -0
  23. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/evals/__init__.py +0 -0
  24. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/evals/test_dataset.py +0 -0
  25. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/evals/test_evaluator_base.py +0 -0
  26. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/evals/test_evaluator_common.py +0 -0
  27. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/evals/test_evaluator_context.py +0 -0
  28. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/evals/test_evaluator_spec.py +0 -0
  29. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/evals/test_evaluators.py +0 -0
  30. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/evals/test_llm_as_a_judge.py +0 -0
  31. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/evals/test_otel.py +0 -0
  32. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/evals/test_render_numbers.py +0 -0
  33. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/evals/test_reporting.py +0 -0
  34. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/evals/test_reports.py +0 -0
  35. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/evals/test_utils.py +0 -0
  36. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/evals/utils.py +0 -0
  37. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/example_modules/README.md +0 -0
  38. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/example_modules/bank_database.py +0 -0
  39. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/example_modules/fake_database.py +0 -0
  40. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/example_modules/weather_service.py +0 -0
  41. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/graph/__init__.py +0 -0
  42. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/graph/test_file_persistence.py +0 -0
  43. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/graph/test_graph.py +0 -0
  44. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/graph/test_mermaid.py +0 -0
  45. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/graph/test_persistence.py +0 -0
  46. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/graph/test_state.py +0 -0
  47. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/graph/test_utils.py +0 -0
  48. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/import_examples.py +0 -0
  49. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/json_body_serializer.py +0 -0
  50. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/mcp_server.py +0 -0
  51. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/__init__.py +0 -0
  52. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_anthropic/test_document_binary_content_input.yaml +0 -0
  53. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_anthropic/test_document_url_input.yaml +0 -0
  54. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_anthropic/test_image_url_input.yaml +0 -0
  55. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +0 -0
  56. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_anthropic/test_multiple_parallel_tool_calls.yaml +0 -0
  57. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_anthropic/test_text_document_url_input.yaml +0 -0
  58. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_bedrock/test_bedrock_empty_system_prompt.yaml +0 -0
  59. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml +0 -0
  60. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_bedrock/test_bedrock_model_anthropic_model_without_tools.yaml +0 -0
  61. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_bedrock/test_bedrock_model_iter_stream.yaml +0 -0
  62. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_bedrock/test_bedrock_model_max_tokens.yaml +0 -0
  63. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_bedrock/test_bedrock_model_retry.yaml +0 -0
  64. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream.yaml +0 -0
  65. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_bedrock/test_bedrock_model_structured_response.yaml +0 -0
  66. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_bedrock/test_bedrock_model_top_p.yaml +0 -0
  67. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_bedrock/test_document_url_input.yaml +0 -0
  68. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_bedrock/test_image_as_binary_content_input.yaml +0 -0
  69. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_bedrock/test_image_url_input.yaml +0 -0
  70. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_bedrock/test_text_as_binary_content_input.yaml +0 -0
  71. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_bedrock/test_text_document_url_input.yaml +0 -0
  72. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_cohere/test_request_simple_success_with_vcr.yaml +0 -0
  73. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_gemini/test_document_url_input.yaml +0 -0
  74. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_gemini/test_gemini_drop_exclusive_maximum.yaml +0 -0
  75. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_gemini/test_gemini_exclusive_minimum_and_maximum.yaml +0 -0
  76. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_gemini/test_image_as_binary_content_input.yaml +0 -0
  77. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_gemini/test_image_url_input.yaml +0 -0
  78. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_groq/test_image_as_binary_content_input.yaml +0 -0
  79. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_groq/test_image_url_input.yaml +0 -0
  80. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai/test_audio_as_binary_content_input.yaml +0 -0
  81. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai/test_document_url_input.yaml +0 -0
  82. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai/test_image_as_binary_content_input.yaml +0 -0
  83. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4.5-preview].yaml +0 -0
  84. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4o-mini].yaml +0 -0
  85. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai/test_max_completion_tokens[o3-mini].yaml +0 -0
  86. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai/test_multiple_agent_tool_calls.yaml +0 -0
  87. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai/test_openai_model_without_system_prompt.yaml +0 -0
  88. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[developer].yaml +0 -0
  89. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[system].yaml +0 -0
  90. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai/test_user_id.yaml +0 -0
  91. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai_responses/test_audio_as_binary_content_input.yaml +0 -0
  92. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_input.yaml +0 -0
  93. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_as_binary_content_input.yaml +0 -0
  94. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_url_input.yaml +0 -0
  95. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_url_input.yaml +0 -0
  96. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools.yaml +0 -0
  97. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_http_error.yaml +0 -0
  98. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_retry.yaml +0 -0
  99. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response.yaml +0 -0
  100. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response_with_tool_call.yaml +0 -0
  101. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_effort.yaml +0 -0
  102. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_generate_summary.yaml +0 -0
  103. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai_responses/test_openai_responses_result_type.yaml +0 -0
  104. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai_responses/test_openai_responses_stream.yaml +0 -0
  105. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai_responses/test_openai_responses_system_prompt.yaml +0 -0
  106. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/cassettes/test_openai_responses/test_openai_responses_text_document_url_input.yaml +0 -0
  107. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/mock_async_stream.py +0 -0
  108. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/test_anthropic.py +0 -0
  109. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/test_bedrock.py +0 -0
  110. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/test_cohere.py +0 -0
  111. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/test_fallback.py +0 -0
  112. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/test_gemini.py +0 -0
  113. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/test_groq.py +0 -0
  114. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/test_instrumented.py +0 -0
  115. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/test_mistral.py +0 -0
  116. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/test_model_function.py +0 -0
  117. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/test_model_names.py +0 -0
  118. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/test_model_test.py +0 -0
  119. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/models/test_openai_responses.py +0 -0
  120. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/providers/__init__.py +0 -0
  121. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/providers/cassettes/test_azure/test_azure_provider_call.yaml +0 -0
  122. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/providers/cassettes/test_google_vertex/test_vertexai_provider.yaml +0 -0
  123. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/providers/test_anthropic.py +0 -0
  124. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/providers/test_azure.py +0 -0
  125. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/providers/test_bedrock.py +0 -0
  126. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/providers/test_cohere.py +0 -0
  127. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/providers/test_deepseek.py +0 -0
  128. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/providers/test_google_gla.py +0 -0
  129. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/providers/test_google_vertex.py +0 -0
  130. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/providers/test_groq.py +0 -0
  131. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/providers/test_mistral.py +0 -0
  132. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/providers/test_openai.py +0 -0
  133. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/test_agent.py +0 -0
  134. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/test_cli.py +0 -0
  135. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/test_deps.py +0 -0
  136. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/test_examples.py +0 -0
  137. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/test_format_as_xml.py +0 -0
  138. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/test_json_body_serializer.py +0 -0
  139. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/test_live.py +0 -0
  140. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/test_logfire.py +0 -0
  141. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/test_mcp.py +0 -0
  142. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/test_messages.py +0 -0
  143. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/test_parts_manager.py +0 -0
  144. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/test_settings.py +0 -0
  145. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/test_streaming.py +0 -0
  146. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/test_tools.py +0 -0
  147. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/test_usage_limits.py +0 -0
  148. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/test_utils.py +0 -0
  149. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/typed_agent.py +0 -0
  150. {pydantic_ai-0.0.54 → pydantic_ai-0.0.55}/tests/typed_graph.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pydantic-ai
3
- Version: 0.0.54
3
+ Version: 0.0.55
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.0.54
31
+ Requires-Dist: pydantic-ai-slim[anthropic,bedrock,cli,cohere,evals,groq,mcp,mistral,openai,vertexai]==0.0.55
32
32
  Provides-Extra: examples
33
- Requires-Dist: pydantic-ai-examples==0.0.54; extra == 'examples'
33
+ Requires-Dist: pydantic-ai-examples==0.0.55; extra == 'examples'
34
34
  Provides-Extra: logfire
35
35
  Requires-Dist: logfire>=3.11.0; extra == 'logfire'
36
36
  Description-Content-Type: text/markdown
@@ -11,6 +11,7 @@ TEST_CASES = [
11
11
  ('OPENAI_API_KEY', 'openai:gpt-3.5-turbo', 'gpt-3.5-turbo', 'openai', 'openai', 'OpenAIModel'),
12
12
  ('OPENAI_API_KEY', 'gpt-3.5-turbo', 'gpt-3.5-turbo', 'openai', 'openai', 'OpenAIModel'),
13
13
  ('OPENAI_API_KEY', 'o1', 'o1', 'openai', 'openai', 'OpenAIModel'),
14
+ ('AZURE_OPENAI_API_KEY', 'azure:gpt-3.5-turbo', 'gpt-3.5-turbo', 'azure', 'azure', 'OpenAIModel'),
14
15
  ('GEMINI_API_KEY', 'google-gla:gemini-1.5-flash', 'gemini-1.5-flash', 'google-gla', 'gemini', 'GeminiModel'),
15
16
  ('GEMINI_API_KEY', 'gemini-1.5-flash', 'gemini-1.5-flash', 'google-gla', 'gemini', 'GeminiModel'),
16
17
  (
@@ -170,7 +170,12 @@ async def test_request_simple_success(allow_model_requests: None):
170
170
  ]
171
171
  )
172
172
  assert get_mock_chat_completion_kwargs(mock_client) == [
173
- {'messages': [{'content': 'hello', 'role': 'user'}], 'model': 'gpt-4o', 'n': 1},
173
+ {
174
+ 'messages': [{'content': 'hello', 'role': 'user'}],
175
+ 'model': 'gpt-4o',
176
+ 'n': 1,
177
+ 'extra_headers': {'User-Agent': IsStr(regex=r'pydantic-ai\/.*')},
178
+ },
174
179
  {
175
180
  'messages': [
176
181
  {'content': 'hello', 'role': 'user'},
@@ -179,6 +184,7 @@ async def test_request_simple_success(allow_model_requests: None):
179
184
  ],
180
185
  'model': 'gpt-4o',
181
186
  'n': 1,
187
+ 'extra_headers': {'User-Agent': IsStr(regex=r'pydantic-ai\/.*')},
182
188
  },
183
189
  ]
184
190
 
@@ -551,6 +557,7 @@ async def test_system_prompt_role(
551
557
  ],
552
558
  'model': 'gpt-4o',
553
559
  'n': 1,
560
+ 'extra_headers': {'User-Agent': IsStr(regex=r'pydantic-ai\/.*')},
554
561
  }
555
562
  ]
556
563
 
@@ -626,6 +633,7 @@ async def test_image_url_input(allow_model_requests: None):
626
633
  }
627
634
  ],
628
635
  'n': 1,
636
+ 'extra_headers': {'User-Agent': IsStr(regex=r'pydantic-ai\/.*')},
629
637
  }
630
638
  ]
631
639
  )
@@ -15,6 +15,7 @@ with try_import() as imports_successful:
15
15
  from openai import OpenAIError
16
16
 
17
17
  from pydantic_ai.providers.anthropic import AnthropicProvider
18
+ from pydantic_ai.providers.azure import AzureProvider
18
19
  from pydantic_ai.providers.cohere import CohereProvider
19
20
  from pydantic_ai.providers.deepseek import DeepSeekProvider
20
21
  from pydantic_ai.providers.google_gla import GoogleGLAProvider
@@ -28,6 +29,7 @@ with try_import() as imports_successful:
28
29
  ('cohere', CohereProvider, 'CO_API_KEY'),
29
30
  ('deepseek', DeepSeekProvider, 'DEEPSEEK_API_KEY'),
30
31
  ('openai', OpenAIProvider, 'OPENAI_API_KEY'),
32
+ ('azure', AzureProvider, 'AZURE_OPENAI'),
31
33
  ('google-vertex', GoogleVertexProvider, None),
32
34
  ('google-gla', GoogleGLAProvider, 'GEMINI_API_KEY'),
33
35
  ('groq', GroqProvider, 'GROQ_API_KEY'),
File without changes
File without changes
File without changes
File without changes