pydantic-ai 0.3.3__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.3 → pydantic_ai-0.3.5}/PKG-INFO +3 -3
  2. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/pyproject.toml +4 -1
  3. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/conftest.py +53 -3
  4. pydantic_ai-0.3.5/tests/models/cassettes/test_anthropic/test_anthropic_tool_with_thinking.yaml +171 -0
  5. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model.yaml +4 -3
  6. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_document_url_input.yaml +10 -9
  7. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_empty_user_prompt.yaml +8 -8
  8. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_image_as_binary_content_input.yaml +5 -4
  9. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_image_url_input.yaml +9 -8
  10. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_instructions.yaml +4 -3
  11. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_iter_stream.yaml +19 -16
  12. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_max_tokens.yaml +4 -3
  13. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_multiple_documents_in_history.yaml +10 -9
  14. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_retry.yaml +15 -13
  15. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_safety_settings.yaml +3 -2
  16. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_stream.yaml +9 -8
  17. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_structured_output.yaml +10 -8
  18. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_text_as_binary_content_input.yaml +3 -2
  19. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_text_document_url_input.yaml +9 -8
  20. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_thinking_config.yaml +6 -5
  21. pydantic_ai-0.3.5/tests/models/cassettes/test_google/test_google_model_thinking_part.yaml +139 -0
  22. pydantic_ai-0.3.5/tests/models/cassettes/test_google/test_google_model_thinking_part_iter.yaml +272 -0
  23. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_top_p.yaml +4 -3
  24. pydantic_ai-0.3.5/tests/models/cassettes/test_google/test_google_model_vertex_labels.yaml +113 -0
  25. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_vertex_provider.yaml +8 -10
  26. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input.yaml +12 -16
  27. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_model_video_url_input.yaml +18 -15
  28. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_native_output.yaml +8 -11
  29. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_native_output_multiple.yaml +9 -17
  30. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_prompted_output.yaml +9 -14
  31. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_prompted_output_multiple.yaml +9 -13
  32. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_prompted_output_with_tools.yaml +24 -21
  33. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_text_output_function.yaml +27 -25
  34. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_timeout.yaml +4 -4
  35. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_tool_config_any_with_tool_without_args.yaml +18 -12
  36. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_tool_output.yaml +21 -15
  37. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/test_anthropic.py +21 -5
  38. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/test_cohere.py +3 -39
  39. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/test_gemini.py +28 -2
  40. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/test_google.py +94 -195
  41. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/test_instrumented.py +85 -0
  42. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/test_mistral.py +35 -2
  43. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/test_model_function.py +1 -0
  44. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/test_model_test.py +1 -1
  45. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/test_openai.py +5 -5
  46. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/test_openai_responses.py +8 -29
  47. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/test_agent.py +308 -2
  48. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/test_examples.py +4 -1
  49. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/test_logfire.py +32 -0
  50. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/test_tools.py +2 -2
  51. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/test_utils.py +38 -0
  52. pydantic_ai-0.3.3/tests/models/cassettes/test_google/test_google_model_thinking_part.yaml +0 -122
  53. pydantic_ai-0.3.3/tests/models/cassettes/test_google/test_google_model_thinking_part_iter.yaml +0 -207
  54. pydantic_ai-0.3.3/tests/models/cassettes/test_google/test_google_model_vertex_labels.yaml +0 -115
  55. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/.gitignore +0 -0
  56. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/LICENSE +0 -0
  57. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/Makefile +0 -0
  58. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/README.md +0 -0
  59. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/__init__.py +0 -0
  60. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/assets/dummy.pdf +0 -0
  61. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/assets/kiwi.png +0 -0
  62. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/assets/marcelo.mp3 +0 -0
  63. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/assets/small_video.mp4 +0 -0
  64. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml +0 -0
  65. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/cassettes/test_mcp/test_tool_returning_audio_resource.yaml +0 -0
  66. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml +0 -0
  67. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/cassettes/test_mcp/test_tool_returning_error.yaml +0 -0
  68. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/cassettes/test_mcp/test_tool_returning_image.yaml +0 -0
  69. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/cassettes/test_mcp/test_tool_returning_image_resource.yaml +0 -0
  70. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/cassettes/test_mcp/test_tool_returning_multiple_items.yaml +0 -0
  71. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/cassettes/test_mcp/test_tool_returning_none.yaml +0 -0
  72. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/cassettes/test_mcp/test_tool_returning_str.yaml +0 -0
  73. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/cassettes/test_mcp/test_tool_returning_text_resource.yaml +0 -0
  74. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/cassettes/test_settings/test_stop_settings[anthropic].yaml +0 -0
  75. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/cassettes/test_settings/test_stop_settings[bedrock].yaml +0 -0
  76. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/cassettes/test_settings/test_stop_settings[cohere].yaml +0 -0
  77. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/cassettes/test_settings/test_stop_settings[gemini].yaml +0 -0
  78. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/cassettes/test_settings/test_stop_settings[google].yaml +0 -0
  79. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/cassettes/test_settings/test_stop_settings[groq].yaml +0 -0
  80. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/cassettes/test_settings/test_stop_settings[mistral].yaml +0 -0
  81. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/cassettes/test_settings/test_stop_settings[openai].yaml +0 -0
  82. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/evals/__init__.py +0 -0
  83. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/evals/test_dataset.py +0 -0
  84. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/evals/test_evaluator_base.py +0 -0
  85. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/evals/test_evaluator_common.py +0 -0
  86. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/evals/test_evaluator_context.py +0 -0
  87. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/evals/test_evaluator_spec.py +0 -0
  88. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/evals/test_evaluators.py +0 -0
  89. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/evals/test_llm_as_a_judge.py +0 -0
  90. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/evals/test_otel.py +0 -0
  91. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/evals/test_render_numbers.py +0 -0
  92. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/evals/test_reporting.py +0 -0
  93. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/evals/test_reports.py +0 -0
  94. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/evals/test_utils.py +0 -0
  95. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/evals/utils.py +0 -0
  96. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/example_modules/README.md +0 -0
  97. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/example_modules/bank_database.py +0 -0
  98. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/example_modules/fake_database.py +0 -0
  99. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/example_modules/mcp_server.py +0 -0
  100. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/example_modules/weather_service.py +0 -0
  101. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/ext/__init__.py +0 -0
  102. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/ext/test_langchain.py +0 -0
  103. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/fasta2a/__init__.py +0 -0
  104. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/fasta2a/test_applications.py +0 -0
  105. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/graph/__init__.py +0 -0
  106. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/graph/test_file_persistence.py +0 -0
  107. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/graph/test_graph.py +0 -0
  108. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/graph/test_mermaid.py +0 -0
  109. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/graph/test_persistence.py +0 -0
  110. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/graph/test_state.py +0 -0
  111. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/graph/test_utils.py +0 -0
  112. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/import_examples.py +0 -0
  113. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/json_body_serializer.py +0 -0
  114. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/mcp_server.py +0 -0
  115. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/__init__.py +0 -0
  116. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_anthropic_model_empty_message_on_history.yaml +0 -0
  117. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_anthropic_model_instructions.yaml +0 -0
  118. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part.yaml +0 -0
  119. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_stream.yaml +0 -0
  120. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output.yaml +0 -0
  121. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output_multiple.yaml +0 -0
  122. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_anthropic_text_output_function.yaml +0 -0
  123. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_anthropic_tool_output.yaml +0 -0
  124. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_document_binary_content_input.yaml +0 -0
  125. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_document_url_input.yaml +0 -0
  126. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_extra_headers.yaml +0 -0
  127. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_image_as_binary_content_tool_response.yaml +0 -0
  128. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_image_url_input.yaml +0 -0
  129. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +0 -0
  130. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_multiple_parallel_tool_calls.yaml +0 -0
  131. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_anthropic/test_text_document_url_input.yaml +0 -0
  132. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_empty_system_prompt.yaml +0 -0
  133. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml +0 -0
  134. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model_anthropic_model_without_tools.yaml +0 -0
  135. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model_guardrail_config.yaml +0 -0
  136. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model_instructions.yaml +0 -0
  137. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model_iter_stream.yaml +0 -0
  138. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model_max_tokens.yaml +0 -0
  139. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model_other_parameters.yaml +0 -0
  140. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model_performance_config.yaml +0 -0
  141. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model_retry.yaml +0 -0
  142. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream.yaml +0 -0
  143. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model_structured_output.yaml +0 -0
  144. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part.yaml +0 -0
  145. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_stream.yaml +0 -0
  146. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_model_top_p.yaml +0 -0
  147. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_bedrock_multiple_documents_in_history.yaml +0 -0
  148. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_document_url_input.yaml +0 -0
  149. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_image_as_binary_content_input.yaml +0 -0
  150. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_image_url_input.yaml +0 -0
  151. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_text_as_binary_content_input.yaml +0 -0
  152. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_text_document_url_input.yaml +0 -0
  153. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_video_as_binary_content_input.yaml +0 -0
  154. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_bedrock/test_video_url_input.yaml +0 -0
  155. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_cohere/test_cohere_model_instructions.yaml +0 -0
  156. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_cohere/test_cohere_model_thinking_part.yaml +0 -0
  157. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_cohere/test_request_simple_success_with_vcr.yaml +0 -0
  158. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_part.yaml +0 -0
  159. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_download_item/test_download_item_application_octet_stream.yaml +0 -0
  160. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_download_item/test_download_item_no_content_type.yaml +0 -0
  161. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_document_url_input.yaml +0 -0
  162. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_false.yaml +0 -0
  163. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_true.yaml +0 -0
  164. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_drop_exclusive_maximum.yaml +0 -0
  165. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_exclusive_minimum_and_maximum.yaml +0 -0
  166. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_model_instructions.yaml +0 -0
  167. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_model_thinking_part.yaml +0 -0
  168. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_native_output.yaml +0 -0
  169. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_native_output_multiple.yaml +0 -0
  170. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_prompted_output.yaml +0 -0
  171. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_multiple.yaml +0 -0
  172. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_with_tools.yaml +0 -0
  173. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_text_output_function.yaml +0 -0
  174. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_tool_config_any_with_tool_without_args.yaml +0 -0
  175. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_tool_output.yaml +0 -0
  176. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_gemini_youtube_video_url_input.yaml +0 -0
  177. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_image_as_binary_content_input.yaml +0 -0
  178. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_image_as_binary_content_tool_response.yaml +0 -0
  179. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_image_url_input.yaml +0 -0
  180. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_labels_are_ignored_with_gla_provider.yaml +0 -0
  181. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_video_as_binary_content_input.yaml +0 -0
  182. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini/test_video_url_input.yaml +0 -0
  183. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini_vertex/test_labels.yaml +0 -0
  184. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl (gs)].yaml +0 -0
  185. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl].yaml +0 -0
  186. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl (gs)].yaml +0 -0
  187. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl].yaml +0 -0
  188. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl (gs)].yaml +0 -0
  189. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl].yaml +0 -0
  190. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (YouTube)].yaml +0 -0
  191. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (gs)].yaml +0 -0
  192. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl].yaml +0 -0
  193. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_gemini_vertex/test_url_input_force_download.yaml +0 -0
  194. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl (gs)].yaml +0 -0
  195. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl].yaml +0 -0
  196. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl (gs)].yaml +0 -0
  197. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl].yaml +0 -0
  198. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl (gs)].yaml +0 -0
  199. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl].yaml +0 -0
  200. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (YouTube)].yaml +0 -0
  201. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (gs)].yaml +0 -0
  202. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl].yaml +0 -0
  203. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_google/test_google_url_input_force_download.yaml +0 -0
  204. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_groq/test_extra_headers.yaml +0 -0
  205. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_groq/test_groq_model_instructions.yaml +0 -0
  206. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_groq/test_groq_model_thinking_part.yaml +0 -0
  207. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_groq/test_image_as_binary_content_input.yaml +0 -0
  208. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_groq/test_image_as_binary_content_tool_response.yaml +0 -0
  209. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_groq/test_image_url_input.yaml +0 -0
  210. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_mistral/test_image_as_binary_content_tool_response.yaml +0 -0
  211. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_mistral/test_mistral_model_instructions.yaml +0 -0
  212. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part.yaml +0 -0
  213. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_model_names/test_known_model_names.yaml +0 -0
  214. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_audio_as_binary_content_input.yaml +0 -0
  215. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_compatible_api_with_tool_calls_without_id.yaml +0 -0
  216. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_document_as_binary_content_input.yaml +0 -0
  217. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_document_url_input.yaml +0 -0
  218. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_extra_headers.yaml +0 -0
  219. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_image_as_binary_content_input.yaml +0 -0
  220. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_image_as_binary_content_tool_response.yaml +0 -0
  221. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_image_url_tool_response.yaml +0 -0
  222. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4.5-preview].yaml +0 -0
  223. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4o-mini].yaml +0 -0
  224. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_max_completion_tokens[o3-mini].yaml +0 -0
  225. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_multiple_agent_tool_calls.yaml +0 -0
  226. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_audio_url_input.yaml +0 -0
  227. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_instructions.yaml +0 -0
  228. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_instructions_with_tool_calls_keep_instructions.yaml +0 -0
  229. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_model_thinking_part.yaml +0 -0
  230. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_model_thinking_part_iter.yaml +0 -0
  231. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_model_without_system_prompt.yaml +0 -0
  232. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_native_output.yaml +0 -0
  233. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_native_output_multiple.yaml +0 -0
  234. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[developer].yaml +0 -0
  235. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[system].yaml +0 -0
  236. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_prompted_output.yaml +0 -0
  237. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_prompted_output_multiple.yaml +0 -0
  238. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_responses_model_thinking_part.yaml +0 -0
  239. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_text_output_function.yaml +0 -0
  240. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_openai_tool_output.yaml +0 -0
  241. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_reasoning_model_with_temperature.yaml +0 -0
  242. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai/test_user_id.yaml +0 -0
  243. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_audio_as_binary_content_input.yaml +0 -0
  244. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_input.yaml +0 -0
  245. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_tool_response.yaml +0 -0
  246. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_native_output.yaml +0 -0
  247. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_native_output_multiple.yaml +0 -0
  248. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_as_binary_content_input.yaml +0 -0
  249. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_url_input.yaml +0 -0
  250. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_url_input.yaml +0 -0
  251. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools.yaml +0 -0
  252. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_http_error.yaml +0 -0
  253. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_instructions.yaml +0 -0
  254. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_retry.yaml +0 -0
  255. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response.yaml +0 -0
  256. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response_with_tool_call.yaml +0 -0
  257. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_output_type.yaml +0 -0
  258. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_effort.yaml +0 -0
  259. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_generate_summary.yaml +0 -0
  260. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_stream.yaml +0 -0
  261. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_system_prompt.yaml +0 -0
  262. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_openai_responses_text_document_url_input.yaml +0 -0
  263. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_prompted_output.yaml +0 -0
  264. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_prompted_output_multiple.yaml +0 -0
  265. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_reasoning_model_with_temperature.yaml +0 -0
  266. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_text_output_function.yaml +0 -0
  267. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/cassettes/test_openai_responses/test_tool_output.yaml +0 -0
  268. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/mock_async_stream.py +0 -0
  269. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/test_bedrock.py +0 -0
  270. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/test_deepseek.py +0 -0
  271. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/test_download_item.py +0 -0
  272. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/test_fallback.py +0 -0
  273. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/test_gemini_vertex.py +0 -0
  274. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/test_groq.py +0 -0
  275. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/test_mcp_sampling.py +0 -0
  276. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/test_model.py +0 -0
  277. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/test_model_names.py +0 -0
  278. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/models/test_model_request_parameters.py +0 -0
  279. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/providers/__init__.py +0 -0
  280. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/providers/cassettes/test_azure/test_azure_provider_call.yaml +0 -0
  281. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/providers/cassettes/test_google_vertex/test_vertexai_provider.yaml +0 -0
  282. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/providers/cassettes/test_heroku/test_heroku_model_provider_claude_3_7_sonnet.yaml +0 -0
  283. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/providers/cassettes/test_openrouter/test_openrouter_with_google_model.yaml +0 -0
  284. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/providers/test_anthropic.py +0 -0
  285. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/providers/test_azure.py +0 -0
  286. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/providers/test_bedrock.py +0 -0
  287. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/providers/test_cohere.py +0 -0
  288. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/providers/test_deepseek.py +0 -0
  289. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/providers/test_fireworks.py +0 -0
  290. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/providers/test_google_gla.py +0 -0
  291. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/providers/test_google_vertex.py +0 -0
  292. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/providers/test_grok.py +0 -0
  293. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/providers/test_groq.py +0 -0
  294. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/providers/test_heroku.py +0 -0
  295. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/providers/test_mistral.py +0 -0
  296. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/providers/test_openai.py +0 -0
  297. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/providers/test_openrouter.py +0 -0
  298. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/providers/test_provider_names.py +0 -0
  299. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/providers/test_together.py +0 -0
  300. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/test_a2a.py +0 -0
  301. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/test_cli.py +0 -0
  302. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/test_deps.py +0 -0
  303. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/test_direct.py +0 -0
  304. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/test_format_as_xml.py +0 -0
  305. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/test_history_processor.py +0 -0
  306. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/test_json_body_serializer.py +0 -0
  307. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/test_live.py +0 -0
  308. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/test_mcp.py +0 -0
  309. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/test_messages.py +0 -0
  310. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/test_parts_manager.py +0 -0
  311. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/test_settings.py +0 -0
  312. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/test_streaming.py +0 -0
  313. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/test_thinking_part.py +0 -0
  314. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/test_usage_limits.py +0 -0
  315. {pydantic_ai-0.3.3 → pydantic_ai-0.3.5}/tests/typed_agent.py +0 -0
  316. {pydantic_ai-0.3.3 → 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.3
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.3
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.3; 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,
@@ -0,0 +1,171 @@
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
+ - '388'
12
+ content-type:
13
+ - application/json
14
+ host:
15
+ - api.anthropic.com
16
+ method: POST
17
+ parsed_body:
18
+ max_tokens: 4096
19
+ messages:
20
+ - content:
21
+ - text: What is the largest city in the user country?
22
+ type: text
23
+ role: user
24
+ model: claude-sonnet-4-0
25
+ stream: false
26
+ thinking:
27
+ budget_tokens: 3000
28
+ type: enabled
29
+ tool_choice:
30
+ type: auto
31
+ tools:
32
+ - description: ''
33
+ input_schema:
34
+ additionalProperties: false
35
+ properties: {}
36
+ type: object
37
+ name: get_user_country
38
+ uri: https://api.anthropic.com/v1/messages?beta=true
39
+ response:
40
+ headers:
41
+ connection:
42
+ - keep-alive
43
+ content-length:
44
+ - '1690'
45
+ content-type:
46
+ - application/json
47
+ strict-transport-security:
48
+ - max-age=31536000; includeSubDomains; preload
49
+ transfer-encoding:
50
+ - chunked
51
+ parsed_body:
52
+ content:
53
+ - signature: EqIECkYIBBgCKkC3YeluAxT1ZvKgL7zILjOUS+XrvAMrNCGhYQkSWCLo5jQ4hXNnnht77qVzdcdMu0YoXmEM/vTGZ2ibi8FSim41EgyvPwDsa4PKH+ZFuzEaDDNjzy/pLEbhbHFgqSIwEba/zTH5lZ6umMgWI/XKQwINUpqIRf2n6DCPpppSbV1VaZJRepT+hCJbPriicNDMKokDakK6RapHz23G6iWyJON4/PLfhUgjLgAxjk8kuVM3pH/i/m2ZpYndCJoIDX2q/UffytbMl8tb4h1bQW7XqOCERGHoF6yXiqgYs+aFaUBRqM6NvWXzPBqSUkX2zvr4FP0fEKbiAawu7JuBGXq5TuXlpRlJKEimlGDySFb5o4mW6jd60NTZaO5ULCdZUleBfnDsosHqDMJohUKyIE5kNEamEw4ZAjdGi3IkJ79L3CBaWUvnRh4e4z2UMqpztFKHvozcziMl0D1dhLI1omF+9RA8ZZYeA+vA2jgIQz6UlSe7rmcZYM0msrLZGNqu5FNYTuU+OMbYsLC6CkRnT6gvcG/7W7QlKFDYY5fpq72LoSyMrXSKJKKlA9q3PEcDvKfGOau3rxjrmEQY9y9WU+Sl/pUHMVME/VfgAPKPPGKiDiMkOa87LqN2FN1mmNVIP9H8c2sSdWmRtssR8t0EKqP2844kTEZKyJImGT/OsSUVuAMeaZkZlEbBXHowqHO5nL0UEdNPPjqwA634CEA/GAE=
54
+ thinking: |-
55
+ The user is asking about the largest city in "the user country". To answer this question, I need to first determine what country the user is in. I have a function called "get_user_country" that can help me find out the user's country. Once I have that information, I can then tell them what the largest city in that country is.
56
+
57
+ Let me call the get_user_country function first.
58
+ type: thinking
59
+ - text: I'll help you find the largest city in your country. Let me first determine which country you're in.
60
+ type: text
61
+ - id: toolu_01S1p6wo8sLNhu2gNHJMRk7D
62
+ input: {}
63
+ name: get_user_country
64
+ type: tool_use
65
+ id: msg_0171WD3hcwFRMzBbm5CNZ8sR
66
+ model: claude-sonnet-4-20250514
67
+ role: assistant
68
+ stop_reason: tool_use
69
+ stop_sequence: null
70
+ type: message
71
+ usage:
72
+ cache_creation_input_tokens: 0
73
+ cache_read_input_tokens: 0
74
+ input_tokens: 397
75
+ output_tokens: 157
76
+ service_tier: standard
77
+ status:
78
+ code: 200
79
+ message: OK
80
+ - request:
81
+ headers:
82
+ accept:
83
+ - application/json
84
+ accept-encoding:
85
+ - gzip, deflate
86
+ connection:
87
+ - keep-alive
88
+ content-length:
89
+ - '1944'
90
+ content-type:
91
+ - application/json
92
+ host:
93
+ - api.anthropic.com
94
+ method: POST
95
+ parsed_body:
96
+ max_tokens: 4096
97
+ messages:
98
+ - content:
99
+ - text: What is the largest city in the user country?
100
+ type: text
101
+ role: user
102
+ - content:
103
+ - signature: EqIECkYIBBgCKkC3YeluAxT1ZvKgL7zILjOUS+XrvAMrNCGhYQkSWCLo5jQ4hXNnnht77qVzdcdMu0YoXmEM/vTGZ2ibi8FSim41EgyvPwDsa4PKH+ZFuzEaDDNjzy/pLEbhbHFgqSIwEba/zTH5lZ6umMgWI/XKQwINUpqIRf2n6DCPpppSbV1VaZJRepT+hCJbPriicNDMKokDakK6RapHz23G6iWyJON4/PLfhUgjLgAxjk8kuVM3pH/i/m2ZpYndCJoIDX2q/UffytbMl8tb4h1bQW7XqOCERGHoF6yXiqgYs+aFaUBRqM6NvWXzPBqSUkX2zvr4FP0fEKbiAawu7JuBGXq5TuXlpRlJKEimlGDySFb5o4mW6jd60NTZaO5ULCdZUleBfnDsosHqDMJohUKyIE5kNEamEw4ZAjdGi3IkJ79L3CBaWUvnRh4e4z2UMqpztFKHvozcziMl0D1dhLI1omF+9RA8ZZYeA+vA2jgIQz6UlSe7rmcZYM0msrLZGNqu5FNYTuU+OMbYsLC6CkRnT6gvcG/7W7QlKFDYY5fpq72LoSyMrXSKJKKlA9q3PEcDvKfGOau3rxjrmEQY9y9WU+Sl/pUHMVME/VfgAPKPPGKiDiMkOa87LqN2FN1mmNVIP9H8c2sSdWmRtssR8t0EKqP2844kTEZKyJImGT/OsSUVuAMeaZkZlEbBXHowqHO5nL0UEdNPPjqwA634CEA/GAE=
104
+ thinking: |-
105
+ The user is asking about the largest city in "the user country". To answer this question, I need to first determine what country the user is in. I have a function called "get_user_country" that can help me find out the user's country. Once I have that information, I can then tell them what the largest city in that country is.
106
+
107
+ Let me call the get_user_country function first.
108
+ type: thinking
109
+ - text: I'll help you find the largest city in your country. Let me first determine which country you're in.
110
+ type: text
111
+ - id: toolu_01S1p6wo8sLNhu2gNHJMRk7D
112
+ input: {}
113
+ name: get_user_country
114
+ type: tool_use
115
+ role: assistant
116
+ - content:
117
+ - content: Mexico
118
+ is_error: false
119
+ tool_use_id: toolu_01S1p6wo8sLNhu2gNHJMRk7D
120
+ type: tool_result
121
+ role: user
122
+ model: claude-sonnet-4-0
123
+ stream: false
124
+ thinking:
125
+ budget_tokens: 3000
126
+ type: enabled
127
+ tool_choice:
128
+ type: auto
129
+ tools:
130
+ - description: ''
131
+ input_schema:
132
+ additionalProperties: false
133
+ properties: {}
134
+ type: object
135
+ name: get_user_country
136
+ uri: https://api.anthropic.com/v1/messages?beta=true
137
+ response:
138
+ headers:
139
+ connection:
140
+ - keep-alive
141
+ content-length:
142
+ - '769'
143
+ content-type:
144
+ - application/json
145
+ strict-transport-security:
146
+ - max-age=31536000; includeSubDomains; preload
147
+ transfer-encoding:
148
+ - chunked
149
+ parsed_body:
150
+ content:
151
+ - text: "Based on the information that you're in Mexico, the largest city in your country is **Mexico City** (Ciudad
152
+ de México). \n\nMexico City is not only the largest city in Mexico but also one of the largest metropolitan areas
153
+ in the world, with a metropolitan population of over 21 million people. The city proper has a population of approximately
154
+ 9 million people and serves as the capital and political, cultural, and economic center of Mexico."
155
+ type: text
156
+ id: msg_01GrmzEM2LkXfRpLSjXSNMDa
157
+ model: claude-sonnet-4-20250514
158
+ role: assistant
159
+ stop_reason: end_turn
160
+ stop_sequence: null
161
+ type: message
162
+ usage:
163
+ cache_creation_input_tokens: 0
164
+ cache_read_input_tokens: 0
165
+ input_tokens: 567
166
+ output_tokens: 94
167
+ service_tier: standard
168
+ status:
169
+ code: 200
170
+ message: OK
171
+ version: 1
@@ -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: