pydantic-ai 0.3.4__tar.gz → 0.3.5__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.
Files changed (316) hide show
  1. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/PKG-INFO +3 -3
  2. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/pyproject.toml +4 -1
  3. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/conftest.py +53 -3
  4. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model.yaml +4 -3
  5. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_document_url_input.yaml +10 -9
  6. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_empty_user_prompt.yaml +8 -8
  7. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_image_as_binary_content_input.yaml +5 -4
  8. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_image_url_input.yaml +9 -8
  9. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_instructions.yaml +4 -3
  10. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_iter_stream.yaml +19 -16
  11. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_max_tokens.yaml +4 -3
  12. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_multiple_documents_in_history.yaml +10 -9
  13. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_retry.yaml +15 -13
  14. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_safety_settings.yaml +3 -2
  15. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_stream.yaml +9 -8
  16. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_structured_output.yaml +10 -8
  17. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_text_as_binary_content_input.yaml +3 -2
  18. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_text_document_url_input.yaml +9 -8
  19. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_thinking_config.yaml +6 -5
  20. pydantic_ai-0.3.5/tests/models/cassettes/test_google/test_google_model_thinking_part.yaml +139 -0
  21. pydantic_ai-0.3.5/tests/models/cassettes/test_google/test_google_model_thinking_part_iter.yaml +272 -0
  22. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_top_p.yaml +4 -3
  23. pydantic_ai-0.3.5/tests/models/cassettes/test_google/test_google_model_vertex_labels.yaml +113 -0
  24. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_vertex_provider.yaml +8 -10
  25. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input.yaml +12 -16
  26. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_video_url_input.yaml +18 -15
  27. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_native_output.yaml +8 -11
  28. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_native_output_multiple.yaml +9 -17
  29. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_prompted_output.yaml +9 -14
  30. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_prompted_output_multiple.yaml +9 -13
  31. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_prompted_output_with_tools.yaml +24 -21
  32. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_text_output_function.yaml +27 -25
  33. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_timeout.yaml +4 -4
  34. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_tool_config_any_with_tool_without_args.yaml +18 -12
  35. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_tool_output.yaml +21 -15
  36. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/test_cohere.py +3 -39
  37. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/test_gemini.py +28 -2
  38. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/test_google.py +94 -195
  39. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/test_mistral.py +35 -2
  40. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/test_model_function.py +1 -0
  41. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/test_model_test.py +1 -1
  42. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/test_openai.py +5 -5
  43. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/test_openai_responses.py +8 -29
  44. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/test_agent.py +308 -2
  45. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/test_examples.py +4 -1
  46. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/test_tools.py +2 -2
  47. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/test_utils.py +38 -0
  48. pydantic_ai-0.3.4/tests/models/cassettes/test_google/test_google_model_thinking_part.yaml +0 -122
  49. pydantic_ai-0.3.4/tests/models/cassettes/test_google/test_google_model_thinking_part_iter.yaml +0 -207
  50. pydantic_ai-0.3.4/tests/models/cassettes/test_google/test_google_model_vertex_labels.yaml +0 -115
  51. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/.gitignore +0 -0
  52. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/LICENSE +0 -0
  53. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/Makefile +0 -0
  54. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/README.md +0 -0
  55. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/__init__.py +0 -0
  56. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/assets/dummy.pdf +0 -0
  57. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/assets/kiwi.png +0 -0
  58. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/assets/marcelo.mp3 +0 -0
  59. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/assets/small_video.mp4 +0 -0
  60. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml +0 -0
  61. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/cassettes/test_mcp/test_tool_returning_audio_resource.yaml +0 -0
  62. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml +0 -0
  63. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/cassettes/test_mcp/test_tool_returning_error.yaml +0 -0
  64. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/cassettes/test_mcp/test_tool_returning_image.yaml +0 -0
  65. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/cassettes/test_mcp/test_tool_returning_image_resource.yaml +0 -0
  66. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/cassettes/test_mcp/test_tool_returning_multiple_items.yaml +0 -0
  67. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/cassettes/test_mcp/test_tool_returning_none.yaml +0 -0
  68. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/cassettes/test_mcp/test_tool_returning_str.yaml +0 -0
  69. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/cassettes/test_mcp/test_tool_returning_text_resource.yaml +0 -0
  70. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/cassettes/test_settings/test_stop_settings[anthropic].yaml +0 -0
  71. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/cassettes/test_settings/test_stop_settings[bedrock].yaml +0 -0
  72. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/cassettes/test_settings/test_stop_settings[cohere].yaml +0 -0
  73. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/cassettes/test_settings/test_stop_settings[gemini].yaml +0 -0
  74. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/cassettes/test_settings/test_stop_settings[google].yaml +0 -0
  75. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/cassettes/test_settings/test_stop_settings[groq].yaml +0 -0
  76. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/cassettes/test_settings/test_stop_settings[mistral].yaml +0 -0
  77. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/cassettes/test_settings/test_stop_settings[openai].yaml +0 -0
  78. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/evals/__init__.py +0 -0
  79. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/evals/test_dataset.py +0 -0
  80. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/evals/test_evaluator_base.py +0 -0
  81. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/evals/test_evaluator_common.py +0 -0
  82. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/evals/test_evaluator_context.py +0 -0
  83. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/evals/test_evaluator_spec.py +0 -0
  84. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/evals/test_evaluators.py +0 -0
  85. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/evals/test_llm_as_a_judge.py +0 -0
  86. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/evals/test_otel.py +0 -0
  87. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/evals/test_render_numbers.py +0 -0
  88. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/evals/test_reporting.py +0 -0
  89. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/evals/test_reports.py +0 -0
  90. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/evals/test_utils.py +0 -0
  91. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/evals/utils.py +0 -0
  92. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/example_modules/README.md +0 -0
  93. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/example_modules/bank_database.py +0 -0
  94. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/example_modules/fake_database.py +0 -0
  95. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/example_modules/mcp_server.py +0 -0
  96. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/example_modules/weather_service.py +0 -0
  97. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/ext/__init__.py +0 -0
  98. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/ext/test_langchain.py +0 -0
  99. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/fasta2a/__init__.py +0 -0
  100. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/fasta2a/test_applications.py +0 -0
  101. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/graph/__init__.py +0 -0
  102. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/graph/test_file_persistence.py +0 -0
  103. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/graph/test_graph.py +0 -0
  104. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/graph/test_mermaid.py +0 -0
  105. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/graph/test_persistence.py +0 -0
  106. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/graph/test_state.py +0 -0
  107. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/graph/test_utils.py +0 -0
  108. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/import_examples.py +0 -0
  109. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/json_body_serializer.py +0 -0
  110. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/mcp_server.py +0 -0
  111. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/__init__.py +0 -0
  112. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_anthropic_model_empty_message_on_history.yaml +0 -0
  113. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_anthropic_model_instructions.yaml +0 -0
  114. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part.yaml +0 -0
  115. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_stream.yaml +0 -0
  116. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output.yaml +0 -0
  117. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output_multiple.yaml +0 -0
  118. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_anthropic_text_output_function.yaml +0 -0
  119. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_anthropic_tool_output.yaml +0 -0
  120. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_anthropic_tool_with_thinking.yaml +0 -0
  121. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_document_binary_content_input.yaml +0 -0
  122. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_document_url_input.yaml +0 -0
  123. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_extra_headers.yaml +0 -0
  124. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_image_as_binary_content_tool_response.yaml +0 -0
  125. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_image_url_input.yaml +0 -0
  126. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +0 -0
  127. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_multiple_parallel_tool_calls.yaml +0 -0
  128. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_text_document_url_input.yaml +0 -0
  129. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_empty_system_prompt.yaml +0 -0
  130. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml +0 -0
  131. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model_anthropic_model_without_tools.yaml +0 -0
  132. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model_guardrail_config.yaml +0 -0
  133. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model_instructions.yaml +0 -0
  134. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model_iter_stream.yaml +0 -0
  135. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model_max_tokens.yaml +0 -0
  136. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model_other_parameters.yaml +0 -0
  137. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model_performance_config.yaml +0 -0
  138. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model_retry.yaml +0 -0
  139. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream.yaml +0 -0
  140. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model_structured_output.yaml +0 -0
  141. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part.yaml +0 -0
  142. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_stream.yaml +0 -0
  143. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model_top_p.yaml +0 -0
  144. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_multiple_documents_in_history.yaml +0 -0
  145. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_document_url_input.yaml +0 -0
  146. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_image_as_binary_content_input.yaml +0 -0
  147. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_image_url_input.yaml +0 -0
  148. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_text_as_binary_content_input.yaml +0 -0
  149. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_text_document_url_input.yaml +0 -0
  150. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_video_as_binary_content_input.yaml +0 -0
  151. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_video_url_input.yaml +0 -0
  152. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_cohere/test_cohere_model_instructions.yaml +0 -0
  153. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_cohere/test_cohere_model_thinking_part.yaml +0 -0
  154. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_cohere/test_request_simple_success_with_vcr.yaml +0 -0
  155. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_part.yaml +0 -0
  156. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_download_item/test_download_item_application_octet_stream.yaml +0 -0
  157. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_download_item/test_download_item_no_content_type.yaml +0 -0
  158. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_document_url_input.yaml +0 -0
  159. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_false.yaml +0 -0
  160. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_true.yaml +0 -0
  161. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_drop_exclusive_maximum.yaml +0 -0
  162. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_exclusive_minimum_and_maximum.yaml +0 -0
  163. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_model_instructions.yaml +0 -0
  164. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_model_thinking_part.yaml +0 -0
  165. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_native_output.yaml +0 -0
  166. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_native_output_multiple.yaml +0 -0
  167. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_prompted_output.yaml +0 -0
  168. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_multiple.yaml +0 -0
  169. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_with_tools.yaml +0 -0
  170. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_text_output_function.yaml +0 -0
  171. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_tool_config_any_with_tool_without_args.yaml +0 -0
  172. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_tool_output.yaml +0 -0
  173. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_youtube_video_url_input.yaml +0 -0
  174. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_image_as_binary_content_input.yaml +0 -0
  175. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_image_as_binary_content_tool_response.yaml +0 -0
  176. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_image_url_input.yaml +0 -0
  177. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_labels_are_ignored_with_gla_provider.yaml +0 -0
  178. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_video_as_binary_content_input.yaml +0 -0
  179. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_video_url_input.yaml +0 -0
  180. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini_vertex/test_labels.yaml +0 -0
  181. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl (gs)].yaml +0 -0
  182. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl].yaml +0 -0
  183. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl (gs)].yaml +0 -0
  184. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl].yaml +0 -0
  185. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl (gs)].yaml +0 -0
  186. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl].yaml +0 -0
  187. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (YouTube)].yaml +0 -0
  188. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (gs)].yaml +0 -0
  189. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl].yaml +0 -0
  190. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini_vertex/test_url_input_force_download.yaml +0 -0
  191. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl (gs)].yaml +0 -0
  192. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl].yaml +0 -0
  193. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl (gs)].yaml +0 -0
  194. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl].yaml +0 -0
  195. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl (gs)].yaml +0 -0
  196. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl].yaml +0 -0
  197. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (YouTube)].yaml +0 -0
  198. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (gs)].yaml +0 -0
  199. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl].yaml +0 -0
  200. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_url_input_force_download.yaml +0 -0
  201. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_groq/test_extra_headers.yaml +0 -0
  202. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_groq/test_groq_model_instructions.yaml +0 -0
  203. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_groq/test_groq_model_thinking_part.yaml +0 -0
  204. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_groq/test_image_as_binary_content_input.yaml +0 -0
  205. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_groq/test_image_as_binary_content_tool_response.yaml +0 -0
  206. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_groq/test_image_url_input.yaml +0 -0
  207. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_mistral/test_image_as_binary_content_tool_response.yaml +0 -0
  208. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_mistral/test_mistral_model_instructions.yaml +0 -0
  209. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part.yaml +0 -0
  210. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_model_names/test_known_model_names.yaml +0 -0
  211. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_audio_as_binary_content_input.yaml +0 -0
  212. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_compatible_api_with_tool_calls_without_id.yaml +0 -0
  213. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_document_as_binary_content_input.yaml +0 -0
  214. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_document_url_input.yaml +0 -0
  215. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_extra_headers.yaml +0 -0
  216. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_image_as_binary_content_input.yaml +0 -0
  217. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_image_as_binary_content_tool_response.yaml +0 -0
  218. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_image_url_tool_response.yaml +0 -0
  219. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4.5-preview].yaml +0 -0
  220. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4o-mini].yaml +0 -0
  221. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_max_completion_tokens[o3-mini].yaml +0 -0
  222. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_multiple_agent_tool_calls.yaml +0 -0
  223. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_audio_url_input.yaml +0 -0
  224. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_instructions.yaml +0 -0
  225. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_instructions_with_tool_calls_keep_instructions.yaml +0 -0
  226. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_model_thinking_part.yaml +0 -0
  227. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_model_thinking_part_iter.yaml +0 -0
  228. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_model_without_system_prompt.yaml +0 -0
  229. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_native_output.yaml +0 -0
  230. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_native_output_multiple.yaml +0 -0
  231. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[developer].yaml +0 -0
  232. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[system].yaml +0 -0
  233. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_prompted_output.yaml +0 -0
  234. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_prompted_output_multiple.yaml +0 -0
  235. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_responses_model_thinking_part.yaml +0 -0
  236. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_text_output_function.yaml +0 -0
  237. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_tool_output.yaml +0 -0
  238. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_reasoning_model_with_temperature.yaml +0 -0
  239. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_user_id.yaml +0 -0
  240. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_audio_as_binary_content_input.yaml +0 -0
  241. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_input.yaml +0 -0
  242. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_tool_response.yaml +0 -0
  243. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_native_output.yaml +0 -0
  244. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_native_output_multiple.yaml +0 -0
  245. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_as_binary_content_input.yaml +0 -0
  246. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_url_input.yaml +0 -0
  247. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_url_input.yaml +0 -0
  248. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools.yaml +0 -0
  249. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_http_error.yaml +0 -0
  250. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_instructions.yaml +0 -0
  251. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_retry.yaml +0 -0
  252. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response.yaml +0 -0
  253. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response_with_tool_call.yaml +0 -0
  254. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_output_type.yaml +0 -0
  255. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_effort.yaml +0 -0
  256. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_generate_summary.yaml +0 -0
  257. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_stream.yaml +0 -0
  258. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_system_prompt.yaml +0 -0
  259. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_text_document_url_input.yaml +0 -0
  260. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_prompted_output.yaml +0 -0
  261. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_prompted_output_multiple.yaml +0 -0
  262. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_reasoning_model_with_temperature.yaml +0 -0
  263. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_text_output_function.yaml +0 -0
  264. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_tool_output.yaml +0 -0
  265. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/mock_async_stream.py +0 -0
  266. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/test_anthropic.py +0 -0
  267. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/test_bedrock.py +0 -0
  268. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/test_deepseek.py +0 -0
  269. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/test_download_item.py +0 -0
  270. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/test_fallback.py +0 -0
  271. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/test_gemini_vertex.py +0 -0
  272. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/test_groq.py +0 -0
  273. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/test_instrumented.py +0 -0
  274. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/test_mcp_sampling.py +0 -0
  275. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/test_model.py +0 -0
  276. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/test_model_names.py +0 -0
  277. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/models/test_model_request_parameters.py +0 -0
  278. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/providers/__init__.py +0 -0
  279. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/providers/cassettes/test_azure/test_azure_provider_call.yaml +0 -0
  280. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/providers/cassettes/test_google_vertex/test_vertexai_provider.yaml +0 -0
  281. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/providers/cassettes/test_heroku/test_heroku_model_provider_claude_3_7_sonnet.yaml +0 -0
  282. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/providers/cassettes/test_openrouter/test_openrouter_with_google_model.yaml +0 -0
  283. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/providers/test_anthropic.py +0 -0
  284. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/providers/test_azure.py +0 -0
  285. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/providers/test_bedrock.py +0 -0
  286. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/providers/test_cohere.py +0 -0
  287. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/providers/test_deepseek.py +0 -0
  288. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/providers/test_fireworks.py +0 -0
  289. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/providers/test_google_gla.py +0 -0
  290. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/providers/test_google_vertex.py +0 -0
  291. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/providers/test_grok.py +0 -0
  292. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/providers/test_groq.py +0 -0
  293. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/providers/test_heroku.py +0 -0
  294. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/providers/test_mistral.py +0 -0
  295. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/providers/test_openai.py +0 -0
  296. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/providers/test_openrouter.py +0 -0
  297. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/providers/test_provider_names.py +0 -0
  298. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/providers/test_together.py +0 -0
  299. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/test_a2a.py +0 -0
  300. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/test_cli.py +0 -0
  301. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/test_deps.py +0 -0
  302. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/test_direct.py +0 -0
  303. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/test_format_as_xml.py +0 -0
  304. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/test_history_processor.py +0 -0
  305. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/test_json_body_serializer.py +0 -0
  306. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/test_live.py +0 -0
  307. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/test_logfire.py +0 -0
  308. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/test_mcp.py +0 -0
  309. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/test_messages.py +0 -0
  310. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/test_parts_manager.py +0 -0
  311. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/test_settings.py +0 -0
  312. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/test_streaming.py +0 -0
  313. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/test_thinking_part.py +0 -0
  314. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/test_usage_limits.py +0 -0
  315. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/typed_agent.py +0 -0
  316. {pydantic_ai-0.3.4 → pydantic_ai-0.3.5}/tests/typed_graph.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pydantic-ai
3
- Version: 0.3.4
3
+ Version: 0.3.5
4
4
  Summary: Agent Framework / shim to use Pydantic with LLMs
5
5
  Project-URL: Homepage, https://ai.pydantic.dev
6
6
  Project-URL: Source, https://github.com/pydantic/pydantic-ai
@@ -28,9 +28,9 @@ Classifier: Topic :: Internet
28
28
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
29
29
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
30
30
  Requires-Python: >=3.9
31
- Requires-Dist: pydantic-ai-slim[a2a,anthropic,bedrock,cli,cohere,evals,google,groq,mcp,mistral,openai,vertexai]==0.3.4
31
+ Requires-Dist: pydantic-ai-slim[a2a,anthropic,bedrock,cli,cohere,evals,google,groq,mcp,mistral,openai,vertexai]==0.3.5
32
32
  Provides-Extra: examples
33
- Requires-Dist: pydantic-ai-examples==0.3.4; extra == 'examples'
33
+ Requires-Dist: pydantic-ai-examples==0.3.5; extra == 'examples'
34
34
  Provides-Extra: logfire
35
35
  Requires-Dist: logfire>=3.11.0; extra == 'logfire'
36
36
  Description-Content-Type: text/markdown
@@ -188,7 +188,10 @@ files = "tests/typed_agent.py,tests/typed_graph.py"
188
188
  strict = true
189
189
 
190
190
  [tool.pytest.ini_options]
191
- testpaths = "tests"
191
+ testpaths = [
192
+ "tests",
193
+ "docs/.hooks"
194
+ ]
192
195
  xfail_strict = true
193
196
  filterwarnings = [
194
197
  "error",
@@ -8,6 +8,7 @@ import secrets
8
8
  import sys
9
9
  from collections.abc import AsyncIterator, Iterator
10
10
  from contextlib import contextmanager
11
+ from dataclasses import dataclass
11
12
  from datetime import datetime
12
13
  from pathlib import Path
13
14
  from types import ModuleType
@@ -175,8 +176,8 @@ def try_import() -> Iterator[Callable[[], bool]]:
175
176
  import_success = True
176
177
 
177
178
 
178
- @pytest.fixture(autouse=True)
179
- def set_event_loop() -> Iterator[None]:
179
+ @pytest.fixture(scope='session', autouse=True)
180
+ def event_loop() -> Iterator[None]:
180
181
  new_loop = asyncio.new_event_loop()
181
182
  asyncio.set_event_loop(new_loop)
182
183
  yield
@@ -205,7 +206,7 @@ def vcr_config():
205
206
 
206
207
 
207
208
  @pytest.fixture(autouse=True)
208
- async def close_cached_httpx_client() -> AsyncIterator[None]:
209
+ async def close_cached_httpx_client(anyio_backend: str) -> AsyncIterator[None]:
209
210
  yield
210
211
  for provider in [
211
212
  'openai',
@@ -315,6 +316,55 @@ def bedrock_provider():
315
316
  pytest.skip('boto3 is not installed')
316
317
 
317
318
 
319
+ @pytest.fixture(autouse=True)
320
+ def vertex_provider_auth(mocker: MockerFixture) -> None: # pragma: lax no cover
321
+ # Locally, we authenticate via `gcloud` CLI, so we don't need to patch anything.
322
+ if not os.getenv('CI', False):
323
+ return # pragma: lax no cover
324
+
325
+ try:
326
+ from google.genai import _api_client
327
+ except ImportError:
328
+ pytest.skip('google is not installed')
329
+
330
+ @dataclass
331
+ class NoOpCredentials:
332
+ token = 'my-token'
333
+ quota_project_id = 'pydantic-ai'
334
+
335
+ def refresh(self, request: httpx.Request): ...
336
+
337
+ def expired(self) -> bool:
338
+ return False
339
+
340
+ return_value = (NoOpCredentials(), 'pydantic-ai')
341
+ mocker.patch.object(_api_client, '_load_auth', return_value=return_value)
342
+
343
+
344
+ @pytest.fixture()
345
+ async def vertex_provider():
346
+ # NOTE: You need to comment out this line to rewrite the cassettes locally.
347
+ if not os.getenv('CI', False): # pragma: lax no cover
348
+ pytest.skip('Requires properly configured local google vertex config to pass')
349
+
350
+ try:
351
+ from google import genai
352
+
353
+ from pydantic_ai.providers.google import GoogleProvider
354
+ except ImportError: # pragma: lax no cover
355
+ pytest.skip('google is not installed')
356
+
357
+ project = os.getenv('GOOGLE_PROJECT', 'pydantic-ai')
358
+ location = os.getenv('GOOGLE_LOCATION', 'us-central1')
359
+ client = genai.Client(vertexai=True, project=project, location=location)
360
+
361
+ try:
362
+ yield GoogleProvider(client=client)
363
+ finally:
364
+ client.aio._api_client._httpx_client.close() # type: ignore
365
+ await client.aio._api_client._async_httpx_client.aclose() # type: ignore
366
+
367
+
318
368
  @pytest.fixture()
319
369
  def model(
320
370
  request: pytest.FixtureRequest,
@@ -30,11 +30,11 @@ interactions:
30
30
  alt-svc:
31
31
  - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
32
32
  content-length:
33
- - '644'
33
+ - '687'
34
34
  content-type:
35
35
  - application/json; charset=UTF-8
36
36
  server-timing:
37
- - gfet4t7; dur=322
37
+ - gfet4t7; dur=531
38
38
  transfer-encoding:
39
39
  - chunked
40
40
  vary:
@@ -43,7 +43,7 @@ interactions:
43
43
  - Referer
44
44
  parsed_body:
45
45
  candidates:
46
- - avgLogprobs: -0.0009223055941137401
46
+ - avgLogprobs: -0.0007684422995556484
47
47
  content:
48
48
  parts:
49
49
  - text: |
@@ -51,6 +51,7 @@ interactions:
51
51
  role: model
52
52
  finishReason: STOP
53
53
  modelVersion: gemini-1.5-flash
54
+ responseId: wVpeaPOdAaXTnvgPlIeSoQg
54
55
  usageMetadata:
55
56
  candidatesTokenCount: 11
56
57
  candidatesTokensDetails:
@@ -252,7 +252,7 @@ interactions:
252
252
  accept-ranges:
253
253
  - bytes
254
254
  age:
255
- - '427557'
255
+ - '264068'
256
256
  alt-svc:
257
257
  - h3=":443"; ma=86400
258
258
  cache-control:
@@ -268,7 +268,7 @@ interactions:
268
268
  etag:
269
269
  - '"33d0-438b181451e00"'
270
270
  expires:
271
- - Tue, 13 May 2025 21:19:22 GMT
271
+ - Tue, 24 Jun 2025 13:27:15 GMT
272
272
  last-modified:
273
273
  - Mon, 27 Aug 2007 17:15:36 GMT
274
274
  strict-transport-security:
@@ -312,11 +312,11 @@ interactions:
312
312
  alt-svc:
313
313
  - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
314
314
  content-length:
315
- - '751'
315
+ - '776'
316
316
  content-type:
317
317
  - application/json; charset=UTF-8
318
318
  server-timing:
319
- - gfet4t7; dur=1704
319
+ - gfet4t7; dur=1228
320
320
  transfer-encoding:
321
321
  - chunked
322
322
  vary:
@@ -325,26 +325,27 @@ interactions:
325
325
  - Referer
326
326
  parsed_body:
327
327
  candidates:
328
- - avgLogprobs: -0.27702528635660806
328
+ - avgLogprobs: -0.28572704394658405
329
329
  content:
330
330
  parts:
331
331
  - text: |
332
- The main content of the document is the phrase "Dummy PDF file".
332
+ The document appears to be a "Dummy PDF file".
333
333
  role: model
334
334
  finishReason: STOP
335
335
  modelVersion: gemini-2.0-flash
336
+ responseId: 4FpeaJWYOLq3nvgP0vasuQk
336
337
  usageMetadata:
337
- candidatesTokenCount: 15
338
+ candidatesTokenCount: 12
338
339
  candidatesTokensDetails:
339
340
  - modality: TEXT
340
- tokenCount: 15
341
+ tokenCount: 12
341
342
  promptTokenCount: 1305
342
343
  promptTokensDetails:
343
344
  - modality: TEXT
344
345
  tokenCount: 15
345
346
  - modality: DOCUMENT
346
347
  tokenCount: 1290
347
- totalTokenCount: 1320
348
+ totalTokenCount: 1317
348
349
  status:
349
350
  code: 200
350
351
  message: OK
@@ -30,11 +30,11 @@ interactions:
30
30
  alt-svc:
31
31
  - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
32
32
  content-length:
33
- - '736'
33
+ - '701'
34
34
  content-type:
35
35
  - application/json; charset=UTF-8
36
36
  server-timing:
37
- - gfet4t7; dur=361
37
+ - gfet4t7; dur=444
38
38
  transfer-encoding:
39
39
  - chunked
40
40
  vary:
@@ -43,25 +43,25 @@ interactions:
43
43
  - Referer
44
44
  parsed_body:
45
45
  candidates:
46
- - avgLogprobs: -0.20726837430681502
46
+ - avgLogprobs: -0.11437161529765409
47
47
  content:
48
48
  parts:
49
49
  - text: |
50
- Please provide me with a question or task. I need some information to be able to help you.
50
+ I'm ready to assist you. Please tell me what you need.
51
51
  role: model
52
52
  finishReason: STOP
53
53
  modelVersion: gemini-1.5-flash
54
- responseId: y5BBaPCQELGqmecP68OBiAc
54
+ responseId: 5lpeaN7wJ___698Pv8HGgAg
55
55
  usageMetadata:
56
- candidatesTokenCount: 21
56
+ candidatesTokenCount: 17
57
57
  candidatesTokensDetails:
58
58
  - modality: TEXT
59
- tokenCount: 21
59
+ tokenCount: 17
60
60
  promptTokenCount: 7
61
61
  promptTokensDetails:
62
62
  - modality: TEXT
63
63
  tokenCount: 7
64
- totalTokenCount: 28
64
+ totalTokenCount: 24
65
65
  status:
66
66
  code: 200
67
67
  message: OK
@@ -33,11 +33,11 @@ interactions:
33
33
  alt-svc:
34
34
  - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
35
35
  content-length:
36
- - '713'
36
+ - '756'
37
37
  content-type:
38
38
  - application/json; charset=UTF-8
39
39
  server-timing:
40
- - gfet4t7; dur=4099
40
+ - gfet4t7; dur=2659
41
41
  transfer-encoding:
42
42
  - chunked
43
43
  vary:
@@ -53,6 +53,7 @@ interactions:
53
53
  role: model
54
54
  finishReason: STOP
55
55
  modelVersion: gemini-2.0-flash
56
+ responseId: 2VpeaPm3DaHp1PIPwK-EmAM
56
57
  usageMetadata:
57
58
  candidatesTokenCount: 9
58
59
  candidatesTokensDetails:
@@ -60,10 +61,10 @@ interactions:
60
61
  tokenCount: 9
61
62
  promptTokenCount: 3367
62
63
  promptTokensDetails:
63
- - modality: IMAGE
64
- tokenCount: 3354
65
64
  - modality: TEXT
66
65
  tokenCount: 13
66
+ - modality: IMAGE
67
+ tokenCount: 3354
67
68
  totalTokenCount: 3376
68
69
  status:
69
70
  code: 200
@@ -580,7 +580,7 @@ interactions:
580
580
  access-control-allow-origin:
581
581
  - '*'
582
582
  age:
583
- - '432185'
583
+ - '1386476'
584
584
  cache-control:
585
585
  - public, max-age=31536000
586
586
  connection:
@@ -632,11 +632,11 @@ interactions:
632
632
  alt-svc:
633
633
  - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
634
634
  content-length:
635
- - '696'
635
+ - '740'
636
636
  content-type:
637
637
  - application/json; charset=UTF-8
638
638
  server-timing:
639
- - gfet4t7; dur=979
639
+ - gfet4t7; dur=1424
640
640
  transfer-encoding:
641
641
  - chunked
642
642
  vary:
@@ -645,26 +645,27 @@ interactions:
645
645
  - Referer
646
646
  parsed_body:
647
647
  candidates:
648
- - avgLogprobs: -0.2194784709385463
648
+ - avgLogprobs: -0.1821905771891276
649
649
  content:
650
650
  parts:
651
651
  - text: |
652
- That's a potato!
652
+ That is a potato.
653
653
  role: model
654
654
  finishReason: STOP
655
655
  modelVersion: gemini-2.0-flash
656
+ responseId: 3VpeaPexBLq3nvgP0vasuQk
656
657
  usageMetadata:
657
- candidatesTokenCount: 7
658
+ candidatesTokenCount: 6
658
659
  candidatesTokensDetails:
659
660
  - modality: TEXT
660
- tokenCount: 7
661
+ tokenCount: 6
661
662
  promptTokenCount: 1817
662
663
  promptTokensDetails:
663
664
  - modality: TEXT
664
665
  tokenCount: 11
665
666
  - modality: IMAGE
666
667
  tokenCount: 1806
667
- totalTokenCount: 1824
668
+ totalTokenCount: 1823
668
669
  status:
669
670
  code: 200
670
671
  message: OK
@@ -30,11 +30,11 @@ interactions:
30
30
  alt-svc:
31
31
  - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
32
32
  content-length:
33
- - '637'
33
+ - '680'
34
34
  content-type:
35
35
  - application/json; charset=UTF-8
36
36
  server-timing:
37
- - gfet4t7; dur=449
37
+ - gfet4t7; dur=444
38
38
  transfer-encoding:
39
39
  - chunked
40
40
  vary:
@@ -43,7 +43,7 @@ interactions:
43
43
  - Referer
44
44
  parsed_body:
45
45
  candidates:
46
- - avgLogprobs: -0.00021161907352507114
46
+ - avgLogprobs: -0.0001856483577284962
47
47
  content:
48
48
  parts:
49
49
  - text: |
@@ -51,6 +51,7 @@ interactions:
51
51
  role: model
52
52
  finishReason: STOP
53
53
  modelVersion: gemini-2.0-flash
54
+ responseId: 41peaK-wOMSenvgPh-vRiAY
54
55
  usageMetadata:
55
56
  candidatesTokenCount: 8
56
57
  candidatesTokensDetails:
@@ -52,7 +52,8 @@ interactions:
52
52
  string: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"functionCall\": {\"name\": \"get_capital\",\"args\":
53
53
  {\"country\": \"France\"}}}],\"role\": \"model\"},\"finishReason\": \"STOP\"}],\"usageMetadata\": {\"promptTokenCount\":
54
54
  52,\"candidatesTokenCount\": 5,\"totalTokenCount\": 57,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\":
55
- 52}],\"candidatesTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 5}]},\"modelVersion\": \"gemini-2.0-flash\"}\r\n\r\n"
55
+ 52}],\"candidatesTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 5}]},\"modelVersion\": \"gemini-2.0-flash\",\"responseId\":
56
+ \"1lpeaMTxIpW1nvgP-O3vwQY\"}\r\n\r\n"
56
57
  headers:
57
58
  alt-svc:
58
59
  - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
@@ -61,7 +62,7 @@ interactions:
61
62
  content-type:
62
63
  - text/event-stream
63
64
  server-timing:
64
- - gfet4t7; dur=586
65
+ - gfet4t7; dur=477
65
66
  transfer-encoding:
66
67
  - chunked
67
68
  vary:
@@ -95,12 +96,12 @@ interactions:
95
96
  - functionCall:
96
97
  args:
97
98
  country: France
98
- id: pyd_ai_f9d7afaf87104cf88c261926103e7898
99
+ id: pyd_ai_0e1a07b3c2b64d2ab3ad2efbe18e1b97
99
100
  name: get_capital
100
101
  role: model
101
102
  - parts:
102
103
  - functionResponse:
103
- id: pyd_ai_f9d7afaf87104cf88c261926103e7898
104
+ id: pyd_ai_0e1a07b3c2b64d2ab3ad2efbe18e1b97
104
105
  name: get_capital
105
106
  response:
106
107
  return_value: Paris
@@ -138,7 +139,8 @@ interactions:
138
139
  string: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"functionCall\": {\"name\": \"get_temperature\",\"args\":
139
140
  {\"city\": \"Paris\"}}}],\"role\": \"model\"},\"finishReason\": \"STOP\"}],\"usageMetadata\": {\"promptTokenCount\":
140
141
  64,\"candidatesTokenCount\": 5,\"totalTokenCount\": 69,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\":
141
- 64}],\"candidatesTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 5}]},\"modelVersion\": \"gemini-2.0-flash\"}\r\n\r\n"
142
+ 64}],\"candidatesTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 5}]},\"modelVersion\": \"gemini-2.0-flash\",\"responseId\":
143
+ \"11peaOXwBPH_2PgPh_z--AY\"}\r\n\r\n"
142
144
  headers:
143
145
  alt-svc:
144
146
  - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
@@ -147,7 +149,7 @@ interactions:
147
149
  content-type:
148
150
  - text/event-stream
149
151
  server-timing:
150
- - gfet4t7; dur=488
152
+ - gfet4t7; dur=493
151
153
  transfer-encoding:
152
154
  - chunked
153
155
  vary:
@@ -181,12 +183,12 @@ interactions:
181
183
  - functionCall:
182
184
  args:
183
185
  country: France
184
- id: pyd_ai_f9d7afaf87104cf88c261926103e7898
186
+ id: pyd_ai_0e1a07b3c2b64d2ab3ad2efbe18e1b97
185
187
  name: get_capital
186
188
  role: model
187
189
  - parts:
188
190
  - functionResponse:
189
- id: pyd_ai_f9d7afaf87104cf88c261926103e7898
191
+ id: pyd_ai_0e1a07b3c2b64d2ab3ad2efbe18e1b97
190
192
  name: get_capital
191
193
  response:
192
194
  return_value: Paris
@@ -195,12 +197,12 @@ interactions:
195
197
  - functionCall:
196
198
  args:
197
199
  city: Paris
198
- id: pyd_ai_c289a95a512d462b9cd2bc9c7b24f07b
200
+ id: pyd_ai_98b25d994c5648df82f683188629229d
199
201
  name: get_temperature
200
202
  role: model
201
203
  - parts:
202
204
  - functionResponse:
203
- id: pyd_ai_c289a95a512d462b9cd2bc9c7b24f07b
205
+ id: pyd_ai_98b25d994c5648df82f683188629229d
204
206
  name: get_temperature
205
207
  response:
206
208
  return_value: 30°C
@@ -235,12 +237,13 @@ interactions:
235
237
  uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse
236
238
  response:
237
239
  body:
238
- string: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"The temperature in\"}],\"role\": \"model\"}}],\"usageMetadata\":
240
+ string: "data: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"The temperature in Paris\"}],\"role\": \"model\"}}],\"usageMetadata\":
239
241
  {\"promptTokenCount\": 169,\"totalTokenCount\": 169,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\":
240
- 169}]},\"modelVersion\": \"gemini-2.0-flash\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\":
241
- \" Paris is 30°C.\\n\"}],\"role\": \"model\"},\"finishReason\": \"STOP\"}],\"usageMetadata\": {\"promptTokenCount\":
242
- 79,\"candidatesTokenCount\": 12,\"totalTokenCount\": 91,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\":
243
- 79}],\"candidatesTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 12}]},\"modelVersion\": \"gemini-2.0-flash\"}\r\n\r\n"
242
+ 169}]},\"modelVersion\": \"gemini-2.0-flash\",\"responseId\": \"11peaI_ZJLq3nvgP0vasuQk\"}\r\n\r\ndata: {\"candidates\":
243
+ [{\"content\": {\"parts\": [{\"text\": \" is 30°C.\\n\"}],\"role\": \"model\"},\"finishReason\": \"STOP\"}],\"usageMetadata\":
244
+ {\"promptTokenCount\": 79,\"candidatesTokenCount\": 12,\"totalTokenCount\": 91,\"promptTokensDetails\": [{\"modality\":
245
+ \"TEXT\",\"tokenCount\": 79}],\"candidatesTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 12}]},\"modelVersion\":
246
+ \"gemini-2.0-flash\",\"responseId\": \"11peaI_ZJLq3nvgP0vasuQk\"}\r\n\r\n"
244
247
  headers:
245
248
  alt-svc:
246
249
  - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
@@ -249,7 +252,7 @@ interactions:
249
252
  content-type:
250
253
  - text/event-stream
251
254
  server-timing:
252
- - gfet4t7; dur=383
255
+ - gfet4t7; dur=404
253
256
  transfer-encoding:
254
257
  - chunked
255
258
  vary:
@@ -31,11 +31,11 @@ interactions:
31
31
  alt-svc:
32
32
  - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
33
33
  content-length:
34
- - '634'
34
+ - '677'
35
35
  content-type:
36
36
  - application/json; charset=UTF-8
37
37
  server-timing:
38
- - gfet4t7; dur=253
38
+ - gfet4t7; dur=703
39
39
  transfer-encoding:
40
40
  - chunked
41
41
  vary:
@@ -44,13 +44,14 @@ interactions:
44
44
  - Referer
45
45
  parsed_body:
46
46
  candidates:
47
- - avgLogprobs: -7.873064605519175e-05
47
+ - avgLogprobs: -8.130469359457493e-05
48
48
  content:
49
49
  parts:
50
50
  - text: The capital of France is
51
51
  role: model
52
52
  finishReason: MAX_TOKENS
53
53
  modelVersion: gemini-1.5-flash
54
+ responseId: zlpeaNKFIZW1nvgP-O3vwQY
54
55
  usageMetadata:
55
56
  candidatesTokenCount: 5
56
57
  candidatesTokensDetails:
@@ -44,11 +44,11 @@ interactions:
44
44
  alt-svc:
45
45
  - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
46
46
  content-length:
47
- - '731'
47
+ - '797'
48
48
  content-type:
49
49
  - application/json; charset=UTF-8
50
50
  server-timing:
51
- - gfet4t7; dur=1163
51
+ - gfet4t7; dur=1353
52
52
  transfer-encoding:
53
53
  - chunked
54
54
  vary:
@@ -57,25 +57,26 @@ interactions:
57
57
  - Referer
58
58
  parsed_body:
59
59
  candidates:
60
- - avgLogprobs: -0.10509344339370727
60
+ - avgLogprobs: -0.10110493968514835
61
61
  content:
62
62
  parts:
63
- - text: Both documents contain the text "Dummy PDF file".
63
+ - text: Both documents contain the text "Dummy PDF file" at the top of the page.
64
64
  role: model
65
65
  finishReason: STOP
66
66
  modelVersion: gemini-2.0-flash
67
+ responseId: 5FpeaMCpH_DZx_APsLvzqAM
67
68
  usageMetadata:
68
- candidatesTokenCount: 10
69
+ candidatesTokenCount: 17
69
70
  candidatesTokensDetails:
70
71
  - modality: TEXT
71
- tokenCount: 10
72
+ tokenCount: 17
72
73
  promptTokenCount: 542
73
74
  promptTokensDetails:
74
- - modality: TEXT
75
- tokenCount: 26
76
75
  - modality: DOCUMENT
77
76
  tokenCount: 516
78
- totalTokenCount: 552
77
+ - modality: TEXT
78
+ tokenCount: 26
79
+ totalTokenCount: 559
79
80
  status:
80
81
  code: 200
81
82
  message: OK
@@ -47,7 +47,7 @@ interactions:
47
47
  content-type:
48
48
  - application/json; charset=UTF-8
49
49
  server-timing:
50
- - gfet4t7; dur=2475
50
+ - gfet4t7; dur=6424
51
51
  transfer-encoding:
52
52
  - chunked
53
53
  vary:
@@ -62,19 +62,19 @@ interactions:
62
62
  args:
63
63
  country: France
64
64
  name: get_capital
65
- thought: true
66
65
  role: model
67
66
  finishReason: STOP
68
67
  index: 0
69
- modelVersion: models/gemini-2.5-pro-preview-05-06
68
+ modelVersion: models/gemini-2.5-pro
69
+ responseId: ylpeaP3yFtyokdUPiOXJwQg
70
70
  usageMetadata:
71
71
  candidatesTokenCount: 15
72
72
  promptTokenCount: 57
73
73
  promptTokensDetails:
74
74
  - modality: TEXT
75
75
  tokenCount: 57
76
- thoughtsTokenCount: 101
77
- totalTokenCount: 173
76
+ thoughtsTokenCount: 155
77
+ totalTokenCount: 227
78
78
  status:
79
79
  code: 200
80
80
  message: OK
@@ -102,12 +102,12 @@ interactions:
102
102
  - functionCall:
103
103
  args:
104
104
  country: France
105
- id: pyd_ai_8d96b47e83ef4bb59f9700c358038c90
105
+ id: pyd_ai_c9686c312aec46fca301d52554e47726
106
106
  name: get_capital
107
107
  role: model
108
108
  - parts:
109
109
  - functionResponse:
110
- id: pyd_ai_8d96b47e83ef4bb59f9700c358038c90
110
+ id: pyd_ai_c9686c312aec46fca301d52554e47726
111
111
  name: get_capital
112
112
  response:
113
113
  call_error: |-
@@ -139,11 +139,11 @@ interactions:
139
139
  alt-svc:
140
140
  - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
141
141
  content-length:
142
- - '576'
142
+ - '647'
143
143
  content-type:
144
144
  - application/json; charset=UTF-8
145
145
  server-timing:
146
- - gfet4t7; dur=1017
146
+ - gfet4t7; dur=3889
147
147
  transfer-encoding:
148
148
  - chunked
149
149
  vary:
@@ -154,18 +154,20 @@ interactions:
154
154
  candidates:
155
155
  - content:
156
156
  parts:
157
- - text: I am sorry, I cannot fulfill this request. The country you provided is not supported.
157
+ - text: I am sorry, I cannot fulfill this request. The country "France" is not supported by my system.
158
158
  role: model
159
159
  finishReason: STOP
160
160
  index: 0
161
- modelVersion: models/gemini-2.5-pro-preview-05-06
161
+ modelVersion: models/gemini-2.5-pro
162
+ responseId: zlpeaKvDEdK2nsEPq97emQ0
162
163
  usageMetadata:
163
- candidatesTokenCount: 18
164
+ candidatesTokenCount: 22
164
165
  promptTokenCount: 104
165
166
  promptTokensDetails:
166
167
  - modality: TEXT
167
168
  tokenCount: 104
168
- totalTokenCount: 122
169
+ thoughtsTokenCount: 178
170
+ totalTokenCount: 304
169
171
  status:
170
172
  code: 200
171
173
  message: OK
@@ -33,11 +33,11 @@ interactions:
33
33
  alt-svc:
34
34
  - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
35
35
  content-length:
36
- - '817'
36
+ - '860'
37
37
  content-type:
38
38
  - application/json; charset=UTF-8
39
39
  server-timing:
40
- - gfet4t7; dur=473
40
+ - gfet4t7; dur=496
41
41
  transfer-encoding:
42
42
  - chunked
43
43
  vary:
@@ -59,6 +59,7 @@ interactions:
59
59
  - category: HARM_CATEGORY_SEXUALLY_EXPLICIT
60
60
  probability: NEGLIGIBLE
61
61
  modelVersion: gemini-1.5-flash
62
+ responseId: 5lpeaLOIBf__698Pv8HGgAg
62
63
  usageMetadata:
63
64
  promptTokenCount: 14
64
65
  promptTokensDetails: