pydantic-ai 0.7.0__tar.gz → 0.7.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pydantic-ai might be problematic. Click here for more details.

Files changed (389) hide show
  1. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/PKG-INFO +3 -3
  2. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/pyproject.toml +3 -0
  3. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/evals/test_dataset.py +219 -96
  4. pydantic_ai-0.7.1/tests/models/cassettes/test_google/test_google_model_usage_limit_exceeded.yaml +46 -0
  5. pydantic_ai-0.7.1/tests/models/cassettes/test_google/test_google_model_usage_limit_not_exceeded.yaml +115 -0
  6. pydantic_ai-0.7.1/tests/models/cassettes/test_google/test_google_vertexai_model_usage_limit_exceeded.yaml +85 -0
  7. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_model_names/test_known_model_names.yaml +8 -0
  8. pydantic_ai-0.7.1/tests/models/cassettes/test_openai_responses/test_openai_responses_verbosity.yaml +67 -0
  9. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/test_fallback.py +68 -0
  10. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/test_google.py +55 -1
  11. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/test_model.py +8 -0
  12. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/test_openai.py +5 -4
  13. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/test_openai_responses.py +14 -0
  14. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/test_usage_limits.py +7 -0
  15. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/.gitignore +0 -0
  16. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/LICENSE +0 -0
  17. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/Makefile +0 -0
  18. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/README.md +0 -0
  19. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/__init__.py +0 -0
  20. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/assets/dummy.pdf +0 -0
  21. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/assets/kiwi.png +0 -0
  22. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/assets/marcelo.mp3 +0 -0
  23. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/assets/product_name.txt +0 -0
  24. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/assets/small_video.mp4 +0 -0
  25. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_mcp/test_agent_with_server_not_running.yaml +0 -0
  26. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml +0 -0
  27. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_mcp/test_tool_returning_audio_resource.yaml +0 -0
  28. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_mcp/test_tool_returning_audio_resource_link.yaml +0 -0
  29. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml +0 -0
  30. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_mcp/test_tool_returning_error.yaml +0 -0
  31. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_mcp/test_tool_returning_image.yaml +0 -0
  32. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_mcp/test_tool_returning_image_resource.yaml +0 -0
  33. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_mcp/test_tool_returning_image_resource_link.yaml +0 -0
  34. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_mcp/test_tool_returning_multiple_items.yaml +0 -0
  35. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_mcp/test_tool_returning_none.yaml +0 -0
  36. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_mcp/test_tool_returning_str.yaml +0 -0
  37. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_mcp/test_tool_returning_text_resource.yaml +0 -0
  38. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_mcp/test_tool_returning_text_resource_link.yaml +0 -0
  39. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_settings/test_stop_settings[anthropic].yaml +0 -0
  40. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_settings/test_stop_settings[bedrock].yaml +0 -0
  41. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_settings/test_stop_settings[cohere].yaml +0 -0
  42. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_settings/test_stop_settings[gemini].yaml +0 -0
  43. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_settings/test_stop_settings[google].yaml +0 -0
  44. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_settings/test_stop_settings[groq].yaml +0 -0
  45. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_settings/test_stop_settings[mistral].yaml +0 -0
  46. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_settings/test_stop_settings[openai].yaml +0 -0
  47. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_temporal/test_complex_agent_run.yaml +0 -0
  48. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_temporal/test_complex_agent_run_in_workflow.yaml +0 -0
  49. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_temporal/test_complex_agent_run_stream_in_workflow.yaml +0 -0
  50. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_temporal/test_logfire_plugin.yaml +0 -0
  51. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_temporal/test_multiple_agents.yaml +0 -0
  52. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_temporal/test_simple_agent_run_in_workflow.yaml +0 -0
  53. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_temporal/test_temporal_agent_iter.yaml +0 -0
  54. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_temporal/test_temporal_agent_override_deps_in_workflow.yaml +0 -0
  55. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_temporal/test_temporal_agent_run.yaml +0 -0
  56. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_temporal/test_temporal_agent_run_stream.yaml +0 -0
  57. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_temporal/test_temporal_agent_run_sync.yaml +0 -0
  58. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_temporal/test_temporal_agent_sync_tool_activity_disabled.yaml +0 -0
  59. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_temporal/test_temporal_agent_with_dataclass_deps_as_dict.yaml +0 -0
  60. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_temporal/test_temporal_agent_with_non_dict_deps.yaml +0 -0
  61. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/cassettes/test_temporal/test_temporal_agent_with_unserializable_deps_type.yaml +0 -0
  62. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/conftest.py +0 -0
  63. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/evals/__init__.py +0 -0
  64. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/evals/test_evaluator_base.py +0 -0
  65. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/evals/test_evaluator_common.py +0 -0
  66. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/evals/test_evaluator_context.py +0 -0
  67. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/evals/test_evaluator_spec.py +0 -0
  68. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/evals/test_evaluators.py +0 -0
  69. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/evals/test_llm_as_a_judge.py +0 -0
  70. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/evals/test_otel.py +0 -0
  71. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/evals/test_render_numbers.py +0 -0
  72. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/evals/test_reporting.py +0 -0
  73. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/evals/test_reports.py +0 -0
  74. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/evals/test_utils.py +0 -0
  75. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/evals/utils.py +0 -0
  76. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/example_modules/README.md +0 -0
  77. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/example_modules/bank_database.py +0 -0
  78. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/example_modules/fake_database.py +0 -0
  79. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/example_modules/mcp_server.py +0 -0
  80. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/example_modules/weather_service.py +0 -0
  81. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/ext/__init__.py +0 -0
  82. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/ext/test_langchain.py +0 -0
  83. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/graph/__init__.py +0 -0
  84. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/graph/test_file_persistence.py +0 -0
  85. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/graph/test_graph.py +0 -0
  86. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/graph/test_mermaid.py +0 -0
  87. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/graph/test_persistence.py +0 -0
  88. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/graph/test_state.py +0 -0
  89. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/graph/test_utils.py +0 -0
  90. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/import_examples.py +0 -0
  91. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/json_body_serializer.py +0 -0
  92. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/mcp_server.py +0 -0
  93. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/__init__.py +0 -0
  94. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_anthropic/test_anthropic_code_execution_tool.yaml +0 -0
  95. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_anthropic/test_anthropic_model_empty_message_on_history.yaml +0 -0
  96. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_anthropic/test_anthropic_model_instructions.yaml +0 -0
  97. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part.yaml +0 -0
  98. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_stream.yaml +0 -0
  99. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output.yaml +0 -0
  100. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output_multiple.yaml +0 -0
  101. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_anthropic/test_anthropic_server_tool_pass_history_to_another_provider.yaml +0 -0
  102. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_anthropic/test_anthropic_server_tool_receive_history_from_another_provider.yaml +0 -0
  103. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_anthropic/test_anthropic_text_output_function.yaml +0 -0
  104. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_anthropic/test_anthropic_tool_output.yaml +0 -0
  105. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_anthropic/test_anthropic_tool_with_thinking.yaml +0 -0
  106. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_anthropic/test_anthropic_web_search_tool.yaml +0 -0
  107. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_anthropic/test_anthropic_web_search_tool_stream.yaml +0 -0
  108. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_anthropic/test_document_binary_content_input.yaml +0 -0
  109. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_anthropic/test_document_url_input.yaml +0 -0
  110. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_anthropic/test_extra_headers.yaml +0 -0
  111. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_anthropic/test_image_as_binary_content_tool_response.yaml +0 -0
  112. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_anthropic/test_image_url_input.yaml +0 -0
  113. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +0 -0
  114. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_anthropic/test_multiple_parallel_tool_calls.yaml +0 -0
  115. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_anthropic/test_text_document_url_input.yaml +0 -0
  116. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_bedrock/test_bedrock_anthropic_tool_with_thinking.yaml +0 -0
  117. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_bedrock/test_bedrock_empty_system_prompt.yaml +0 -0
  118. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml +0 -0
  119. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_anthropic_model_without_tools.yaml +0 -0
  120. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_guardrail_config.yaml +0 -0
  121. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_instructions.yaml +0 -0
  122. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_iter_stream.yaml +0 -0
  123. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_max_tokens.yaml +0 -0
  124. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_other_parameters.yaml +0 -0
  125. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_performance_config.yaml +0 -0
  126. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_retry.yaml +0 -0
  127. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream.yaml +0 -0
  128. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_structured_output.yaml +0 -0
  129. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part.yaml +0 -0
  130. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_stream.yaml +0 -0
  131. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_bedrock/test_bedrock_model_top_p.yaml +0 -0
  132. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_bedrock/test_bedrock_multiple_documents_in_history.yaml +0 -0
  133. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_bedrock/test_document_url_input.yaml +0 -0
  134. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_bedrock/test_image_as_binary_content_input.yaml +0 -0
  135. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_bedrock/test_image_url_input.yaml +0 -0
  136. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_bedrock/test_text_as_binary_content_input.yaml +0 -0
  137. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_bedrock/test_text_document_url_input.yaml +0 -0
  138. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_bedrock/test_video_as_binary_content_input.yaml +0 -0
  139. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_bedrock/test_video_url_input.yaml +0 -0
  140. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_cohere/test_cohere_model_instructions.yaml +0 -0
  141. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_cohere/test_cohere_model_thinking_part.yaml +0 -0
  142. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_cohere/test_request_simple_success_with_vcr.yaml +0 -0
  143. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_part.yaml +0 -0
  144. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_stream.yaml +0 -0
  145. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_download_item/test_download_item_application_octet_stream.yaml +0 -0
  146. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_download_item/test_download_item_audio_mpeg.yaml +0 -0
  147. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_download_item/test_download_item_no_content_type.yaml +0 -0
  148. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini/test_document_url_input.yaml +0 -0
  149. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_false.yaml +0 -0
  150. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_true.yaml +0 -0
  151. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini/test_gemini_drop_exclusive_maximum.yaml +0 -0
  152. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini/test_gemini_exclusive_minimum_and_maximum.yaml +0 -0
  153. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini/test_gemini_model_instructions.yaml +0 -0
  154. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini/test_gemini_model_thinking_part.yaml +0 -0
  155. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini/test_gemini_native_output.yaml +0 -0
  156. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini/test_gemini_native_output_multiple.yaml +0 -0
  157. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini/test_gemini_prompted_output.yaml +0 -0
  158. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_multiple.yaml +0 -0
  159. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_with_tools.yaml +0 -0
  160. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini/test_gemini_text_output_function.yaml +0 -0
  161. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini/test_gemini_tool_config_any_with_tool_without_args.yaml +0 -0
  162. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini/test_gemini_tool_output.yaml +0 -0
  163. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini/test_gemini_youtube_video_url_input.yaml +0 -0
  164. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini/test_image_as_binary_content_input.yaml +0 -0
  165. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini/test_image_as_binary_content_tool_response.yaml +0 -0
  166. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini/test_image_url_input.yaml +0 -0
  167. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini/test_labels_are_ignored_with_gla_provider.yaml +0 -0
  168. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini/test_video_as_binary_content_input.yaml +0 -0
  169. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini/test_video_url_input.yaml +0 -0
  170. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini_vertex/test_labels.yaml +0 -0
  171. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl (gs)].yaml +0 -0
  172. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl].yaml +0 -0
  173. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl (gs)].yaml +0 -0
  174. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl].yaml +0 -0
  175. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl (gs)].yaml +0 -0
  176. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl].yaml +0 -0
  177. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (YouTube)].yaml +0 -0
  178. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (gs)].yaml +0 -0
  179. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl].yaml +0 -0
  180. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_gemini_vertex/test_url_input_force_download.yaml +0 -0
  181. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model.yaml +0 -0
  182. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_code_execution_tool.yaml +0 -0
  183. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_document_url_input.yaml +0 -0
  184. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_empty_assistant_response.yaml +0 -0
  185. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_empty_user_prompt.yaml +0 -0
  186. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_image_as_binary_content_input.yaml +0 -0
  187. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_image_url_input.yaml +0 -0
  188. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_instructions.yaml +0 -0
  189. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_iter_stream.yaml +0 -0
  190. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_max_tokens.yaml +0 -0
  191. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_multiple_documents_in_history.yaml +0 -0
  192. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_receive_web_search_history_from_another_provider.yaml +0 -0
  193. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_retry.yaml +0 -0
  194. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_safety_settings.yaml +0 -0
  195. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_server_tool_receive_history_from_another_provider.yaml +0 -0
  196. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_stream.yaml +0 -0
  197. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_structured_output.yaml +0 -0
  198. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_text_as_binary_content_input.yaml +0 -0
  199. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_text_document_url_input.yaml +0 -0
  200. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_thinking_config.yaml +0 -0
  201. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_thinking_part.yaml +0 -0
  202. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_thinking_part_iter.yaml +0 -0
  203. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_top_p.yaml +0 -0
  204. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_vertex_labels.yaml +0 -0
  205. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_vertex_provider.yaml +0 -0
  206. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input.yaml +0 -0
  207. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input_with_vendor_metadata.yaml +0 -0
  208. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_video_url_input.yaml +0 -0
  209. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_web_search_tool.yaml +0 -0
  210. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_model_youtube_video_url_input_with_vendor_metadata.yaml +0 -0
  211. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_native_output.yaml +0 -0
  212. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_native_output_multiple.yaml +0 -0
  213. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_prompted_output.yaml +0 -0
  214. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_prompted_output_multiple.yaml +0 -0
  215. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_prompted_output_with_tools.yaml +0 -0
  216. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_text_output_function.yaml +0 -0
  217. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_timeout.yaml +0 -0
  218. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_tool_config_any_with_tool_without_args.yaml +0 -0
  219. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_tool_output.yaml +0 -0
  220. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl (gs)].yaml +0 -0
  221. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl].yaml +0 -0
  222. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl (gs)].yaml +0 -0
  223. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl].yaml +0 -0
  224. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl (gs)].yaml +0 -0
  225. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl].yaml +0 -0
  226. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (YouTube)].yaml +0 -0
  227. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (gs)].yaml +0 -0
  228. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl].yaml +0 -0
  229. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_google/test_google_url_input_force_download.yaml +0 -0
  230. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_groq/test_extra_headers.yaml +0 -0
  231. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_groq/test_groq_model_instructions.yaml +0 -0
  232. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_groq/test_groq_model_thinking_part.yaml +0 -0
  233. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_groq/test_groq_model_thinking_part_iter.yaml +0 -0
  234. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_groq/test_groq_model_web_search_tool.yaml +0 -0
  235. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_groq/test_image_as_binary_content_input.yaml +0 -0
  236. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_groq/test_image_as_binary_content_tool_response.yaml +0 -0
  237. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_groq/test_image_url_input.yaml +0 -0
  238. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_huggingface/test_hf_model_instructions.yaml +0 -0
  239. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part.yaml +0 -0
  240. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part_iter.yaml +0 -0
  241. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_huggingface/test_image_as_binary_content_input.yaml +0 -0
  242. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_huggingface/test_image_url_input.yaml +0 -0
  243. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[Qwen-Qwen2.5-72B-Instruct].yaml +0 -0
  244. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[deepseek-ai-DeepSeek-R1-0528].yaml +0 -0
  245. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[meta-llama-Llama-3.3-70B-Instruct].yaml +0 -0
  246. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_huggingface/test_request_simple_success_with_vcr.yaml +0 -0
  247. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_huggingface/test_request_simple_usage.yaml +0 -0
  248. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_huggingface/test_simple_completion.yaml +0 -0
  249. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_huggingface/test_stream_completion.yaml +0 -0
  250. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_mistral/test_image_as_binary_content_tool_response.yaml +0 -0
  251. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_mistral/test_mistral_model_instructions.yaml +0 -0
  252. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part.yaml +0 -0
  253. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_audio_as_binary_content_input.yaml +0 -0
  254. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_compatible_api_with_tool_calls_without_id.yaml +0 -0
  255. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_document_as_binary_content_input.yaml +0 -0
  256. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_document_url_input.yaml +0 -0
  257. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_extra_headers.yaml +0 -0
  258. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_image_as_binary_content_input.yaml +0 -0
  259. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_image_as_binary_content_tool_response.yaml +0 -0
  260. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_image_url_tool_response.yaml +0 -0
  261. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_invalid_response.yaml +0 -0
  262. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4.5-preview].yaml +0 -0
  263. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4o-mini].yaml +0 -0
  264. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_max_completion_tokens[o3-mini].yaml +0 -0
  265. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_multiple_agent_tool_calls.yaml +0 -0
  266. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_openai_audio_url_input.yaml +0 -0
  267. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_openai_instructions.yaml +0 -0
  268. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_openai_instructions_with_tool_calls_keep_instructions.yaml +0 -0
  269. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_openai_model_settings_temperature_ignored_on_gpt_5.yaml +0 -0
  270. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_openai_model_thinking_part.yaml +0 -0
  271. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_openai_model_thinking_part_iter.yaml +0 -0
  272. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_openai_model_without_system_prompt.yaml +0 -0
  273. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_openai_native_output.yaml +0 -0
  274. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_openai_native_output_multiple.yaml +0 -0
  275. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[developer].yaml +0 -0
  276. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[system].yaml +0 -0
  277. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_openai_prompted_output.yaml +0 -0
  278. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_openai_prompted_output_multiple.yaml +0 -0
  279. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_openai_responses_model_thinking_part.yaml +0 -0
  280. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_openai_text_output_function.yaml +0 -0
  281. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_openai_tool_output.yaml +0 -0
  282. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_openai_web_search_tool.yaml +0 -0
  283. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_openai_web_search_tool_model_not_supported.yaml +0 -0
  284. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_openai_web_search_tool_with_user_location.yaml +0 -0
  285. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_reasoning_model_with_temperature.yaml +0 -0
  286. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_text_response.yaml +0 -0
  287. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_user_id.yaml +0 -0
  288. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai/test_valid_response.yaml +0 -0
  289. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_audio_as_binary_content_input.yaml +0 -0
  290. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_input.yaml +0 -0
  291. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_tool_response.yaml +0 -0
  292. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_native_output.yaml +0 -0
  293. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_native_output_multiple.yaml +0 -0
  294. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_code_execution_tool.yaml +0 -0
  295. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_code_execution_tool_stream.yaml +0 -0
  296. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_as_binary_content_input.yaml +0 -0
  297. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_url_input.yaml +0 -0
  298. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_url_input.yaml +0 -0
  299. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools.yaml +0 -0
  300. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_http_error.yaml +0 -0
  301. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_instructions.yaml +0 -0
  302. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_retry.yaml +0 -0
  303. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response.yaml +0 -0
  304. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response_with_tool_call.yaml +0 -0
  305. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool.yaml +0 -0
  306. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_stream.yaml +0 -0
  307. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_with_invalid_region.yaml +0 -0
  308. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_with_user_location.yaml +0 -0
  309. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_output_type.yaml +0 -0
  310. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_effort.yaml +0 -0
  311. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_generate_summary.yaml +0 -0
  312. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_stream.yaml +0 -0
  313. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_system_prompt.yaml +0 -0
  314. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_openai_responses_text_document_url_input.yaml +0 -0
  315. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_prompted_output.yaml +0 -0
  316. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_prompted_output_multiple.yaml +0 -0
  317. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_reasoning_model_with_temperature.yaml +0 -0
  318. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_text_output_function.yaml +0 -0
  319. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/cassettes/test_openai_responses/test_tool_output.yaml +0 -0
  320. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/mock_async_stream.py +0 -0
  321. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/test_anthropic.py +0 -0
  322. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/test_bedrock.py +0 -0
  323. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/test_cohere.py +0 -0
  324. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/test_deepseek.py +0 -0
  325. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/test_download_item.py +0 -0
  326. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/test_gemini.py +0 -0
  327. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/test_gemini_vertex.py +0 -0
  328. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/test_groq.py +0 -0
  329. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/test_huggingface.py +0 -0
  330. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/test_instrumented.py +0 -0
  331. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/test_mcp_sampling.py +0 -0
  332. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/test_mistral.py +0 -0
  333. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/test_model_function.py +0 -0
  334. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/test_model_names.py +0 -0
  335. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/test_model_request_parameters.py +0 -0
  336. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/test_model_settings.py +0 -0
  337. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/models/test_model_test.py +0 -0
  338. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/parts_from_messages.py +0 -0
  339. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/providers/__init__.py +0 -0
  340. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/providers/cassettes/test_azure/test_azure_provider_call.yaml +0 -0
  341. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/providers/cassettes/test_google_vertex/test_vertexai_provider.yaml +0 -0
  342. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/providers/cassettes/test_heroku/test_heroku_model_provider_claude_3_7_sonnet.yaml +0 -0
  343. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/providers/cassettes/test_openrouter/test_openrouter_with_google_model.yaml +0 -0
  344. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/providers/test_anthropic.py +0 -0
  345. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/providers/test_azure.py +0 -0
  346. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/providers/test_bedrock.py +0 -0
  347. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/providers/test_cohere.py +0 -0
  348. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/providers/test_deepseek.py +0 -0
  349. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/providers/test_fireworks.py +0 -0
  350. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/providers/test_github.py +0 -0
  351. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/providers/test_google_gla.py +0 -0
  352. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/providers/test_google_vertex.py +0 -0
  353. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/providers/test_grok.py +0 -0
  354. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/providers/test_groq.py +0 -0
  355. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/providers/test_heroku.py +0 -0
  356. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/providers/test_huggingface.py +0 -0
  357. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/providers/test_mistral.py +0 -0
  358. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/providers/test_moonshotai.py +0 -0
  359. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/providers/test_openai.py +0 -0
  360. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/providers/test_openrouter.py +0 -0
  361. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/providers/test_provider_names.py +0 -0
  362. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/providers/test_together.py +0 -0
  363. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/providers/test_vercel.py +0 -0
  364. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/test_a2a.py +0 -0
  365. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/test_ag_ui.py +0 -0
  366. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/test_agent.py +0 -0
  367. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/test_builtin_tools.py +0 -0
  368. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/test_cli.py +0 -0
  369. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/test_deps.py +0 -0
  370. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/test_direct.py +0 -0
  371. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/test_examples.py +0 -0
  372. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/test_format_as_xml.py +0 -0
  373. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/test_history_processor.py +0 -0
  374. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/test_json_body_serializer.py +0 -0
  375. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/test_live.py +0 -0
  376. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/test_logfire.py +0 -0
  377. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/test_mcp.py +0 -0
  378. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/test_messages.py +0 -0
  379. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/test_parts_manager.py +0 -0
  380. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/test_settings.py +0 -0
  381. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/test_streaming.py +0 -0
  382. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/test_temporal.py +0 -0
  383. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/test_tenacity.py +0 -0
  384. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/test_thinking_part.py +0 -0
  385. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/test_tools.py +0 -0
  386. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/test_toolsets.py +0 -0
  387. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/test_utils.py +0 -0
  388. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/typed_agent.py +0 -0
  389. {pydantic_ai-0.7.0 → pydantic_ai-0.7.1}/tests/typed_graph.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pydantic-ai
3
- Version: 0.7.0
3
+ Version: 0.7.1
4
4
  Summary: Agent Framework / shim to use Pydantic with LLMs
5
5
  Project-URL: Homepage, https://ai.pydantic.dev
6
6
  Project-URL: Source, https://github.com/pydantic/pydantic-ai
@@ -28,11 +28,11 @@ Classifier: Topic :: Internet
28
28
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
29
29
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
30
30
  Requires-Python: >=3.9
31
- Requires-Dist: pydantic-ai-slim[ag-ui,anthropic,bedrock,cli,cohere,evals,google,groq,huggingface,mcp,mistral,openai,retries,temporal,vertexai]==0.7.0
31
+ Requires-Dist: pydantic-ai-slim[ag-ui,anthropic,bedrock,cli,cohere,evals,google,groq,huggingface,mcp,mistral,openai,retries,temporal,vertexai]==0.7.1
32
32
  Provides-Extra: a2a
33
33
  Requires-Dist: fasta2a>=0.4.1; extra == 'a2a'
34
34
  Provides-Extra: examples
35
- Requires-Dist: pydantic-ai-examples==0.7.0; extra == 'examples'
35
+ Requires-Dist: pydantic-ai-examples==0.7.1; extra == 'examples'
36
36
  Provides-Extra: logfire
37
37
  Requires-Dist: logfire>=3.14.1; extra == 'logfire'
38
38
  Description-Content-Type: text/markdown
@@ -102,6 +102,9 @@ dev = [
102
102
  "boto3-stubs[bedrock-runtime]",
103
103
  "strict-no-cover @ git+https://github.com/pydantic/strict-no-cover.git@7fc59da2c4dff919db2095a0f0e47101b657131d",
104
104
  "pytest-xdist>=3.6.1",
105
+ # Needed for PyCharm users
106
+ "pip>=25.2",
107
+ "genai-prices>=0.0.22",
105
108
  ]
106
109
  lint = ["mypy>=1.11.2", "pyright>=1.1.390", "ruff>=0.6.9"]
107
110
  docs = [
@@ -7,7 +7,7 @@ from pathlib import Path
7
7
  from typing import Any
8
8
 
9
9
  import pytest
10
- from dirty_equals import HasRepr, IsNumber, IsPartialDict
10
+ from dirty_equals import HasRepr, IsNumber
11
11
  from inline_snapshot import snapshot
12
12
  from pydantic import BaseModel, TypeAdapter
13
13
 
@@ -1172,115 +1172,238 @@ async def test_evaluate_async_logfire(
1172
1172
 
1173
1173
  await example_dataset.evaluate(mock_async_task)
1174
1174
 
1175
- spans = capfire.exporter.exported_spans_as_dict()
1175
+ spans = capfire.exporter.exported_spans_as_dict(parse_json_attributes=True)
1176
1176
  spans.sort(key=lambda s: s['start_time'])
1177
- assert spans == [
1178
- {
1179
- 'attributes': {
1180
- 'averages': '{"name":"Averages","scores":{"confidence":1.0},"labels":{},"metrics":{},"assertions":1.0,"task_duration":1.0,"total_duration":5.0}',
1181
- 'cases': '[{"name":"case1","inputs":{"query":"What is '
1182
- '2+2?"},"metadata":{"difficulty":"easy","category":"general"},"expected_output":{"answer":"4","confidence":1.0},"output":{"answer":"4","confidence":1.0},"metrics":{},"attributes":{},"scores":{"confidence":{"name":"confidence","value":1.0,"reason":null,"source":{"name":"SimpleEvaluator","arguments":null}}},"labels":{},"assertions":{"correct":{"name":"correct","value":true,"reason":null,"source":{"name":"SimpleEvaluator","arguments":null}}},"task_duration":1.0,"total_duration":6.0,"trace_id":"00000000000000000000000000000001","span_id":"0000000000000003"},{"name":"case2","inputs":{"query":"What '
1183
- 'is the capital of '
1184
- 'France?"},"metadata":{"difficulty":"medium","category":"geography"},"expected_output":{"answer":"Paris","confidence":1.0},"output":{"answer":"Paris","confidence":1.0},"metrics":{},"attributes":{},"scores":{"confidence":{"name":"confidence","value":1.0,"reason":null,"source":{"name":"SimpleEvaluator","arguments":null}}},"labels":{},"assertions":{"correct":{"name":"correct","value":true,"reason":null,"source":{"name":"SimpleEvaluator","arguments":null}}},"task_duration":1.0,"total_duration":4.0,"trace_id":"00000000000000000000000000000001","span_id":"0000000000000007"}]',
1185
- 'code.filepath': 'test_dataset.py',
1186
- 'code.function': 'test_evaluate_async_logfire',
1187
- 'code.lineno': 123,
1188
- 'logfire.json_schema': '{"type":"object","properties":{"name":{},"cases":{"type":"array"},"averages":{"type":"object"}}}',
1189
- 'logfire.msg': 'evaluate mock_async_task',
1190
- 'logfire.msg_template': 'evaluate {name}',
1191
- 'logfire.span_type': 'span',
1192
- 'name': 'mock_async_task',
1193
- },
1194
- 'context': {'is_remote': False, 'span_id': 1, 'trace_id': 1},
1195
- 'end_time': 10000000000,
1196
- 'name': 'evaluate {name}',
1197
- 'parent': None,
1198
- 'start_time': 1000000000,
1199
- },
1200
- IsPartialDict(
1201
- {
1202
- 'attributes': {
1203
- 'assertions': '{"correct":{"name":"correct","value":true,"reason":null,"source":{"name":"SimpleEvaluator","arguments":null}}}',
1204
- 'attributes': '{}',
1177
+
1178
+ for span in spans:
1179
+ # These may or may not be present and may have weird values due to things running in async
1180
+ span['attributes'].pop('code.filepath', None)
1181
+ span['attributes'].pop('code.function', None)
1182
+ span['attributes'].pop('code.lineno', None)
1183
+
1184
+ assert [(span['name'], span['attributes']) for span in spans] == snapshot(
1185
+ [
1186
+ (
1187
+ 'evaluate {name}',
1188
+ {
1189
+ 'name': 'mock_async_task',
1190
+ 'logfire.msg_template': 'evaluate {name}',
1191
+ 'logfire.msg': 'evaluate mock_async_task',
1192
+ 'logfire.span_type': 'span',
1193
+ 'cases': [
1194
+ {
1195
+ 'name': 'case1',
1196
+ 'inputs': {'query': 'What is 2+2?'},
1197
+ 'metadata': {'difficulty': 'easy', 'category': 'general'},
1198
+ 'expected_output': {'answer': '4', 'confidence': 1.0},
1199
+ 'output': {'answer': '4', 'confidence': 1.0},
1200
+ 'metrics': {},
1201
+ 'attributes': {},
1202
+ 'scores': {
1203
+ 'confidence': {
1204
+ 'name': 'confidence',
1205
+ 'value': 1.0,
1206
+ 'reason': None,
1207
+ 'source': {'name': 'SimpleEvaluator', 'arguments': None},
1208
+ }
1209
+ },
1210
+ 'labels': {},
1211
+ 'assertions': {
1212
+ 'correct': {
1213
+ 'name': 'correct',
1214
+ 'value': True,
1215
+ 'reason': None,
1216
+ 'source': {'name': 'SimpleEvaluator', 'arguments': None},
1217
+ }
1218
+ },
1219
+ 'task_duration': 1.0,
1220
+ 'total_duration': 6.0,
1221
+ 'trace_id': '00000000000000000000000000000001',
1222
+ 'span_id': '0000000000000003',
1223
+ },
1224
+ {
1225
+ 'name': 'case2',
1226
+ 'inputs': {'query': 'What is the capital of France?'},
1227
+ 'metadata': {'difficulty': 'medium', 'category': 'geography'},
1228
+ 'expected_output': {'answer': 'Paris', 'confidence': 1.0},
1229
+ 'output': {'answer': 'Paris', 'confidence': 1.0},
1230
+ 'metrics': {},
1231
+ 'attributes': {},
1232
+ 'scores': {
1233
+ 'confidence': {
1234
+ 'name': 'confidence',
1235
+ 'value': 1.0,
1236
+ 'reason': None,
1237
+ 'source': {'name': 'SimpleEvaluator', 'arguments': None},
1238
+ }
1239
+ },
1240
+ 'labels': {},
1241
+ 'assertions': {
1242
+ 'correct': {
1243
+ 'name': 'correct',
1244
+ 'value': True,
1245
+ 'reason': None,
1246
+ 'source': {'name': 'SimpleEvaluator', 'arguments': None},
1247
+ }
1248
+ },
1249
+ 'task_duration': 1.0,
1250
+ 'total_duration': 4.0,
1251
+ 'trace_id': '00000000000000000000000000000001',
1252
+ 'span_id': '0000000000000007',
1253
+ },
1254
+ ],
1255
+ 'averages': {
1256
+ 'name': 'Averages',
1257
+ 'scores': {'confidence': 1.0},
1258
+ 'labels': {},
1259
+ 'metrics': {},
1260
+ 'assertions': 1.0,
1261
+ 'task_duration': 1.0,
1262
+ 'total_duration': 5.0,
1263
+ },
1264
+ 'logfire.json_schema': {
1265
+ 'type': 'object',
1266
+ 'properties': {'name': {}, 'cases': {'type': 'array'}, 'averages': {'type': 'object'}},
1267
+ },
1268
+ },
1269
+ ),
1270
+ (
1271
+ 'case: {case_name}',
1272
+ {
1273
+ 'task_name': 'mock_async_task',
1205
1274
  'case_name': 'case1',
1206
- 'expected_output': '{"answer":"4","confidence":1.0}',
1207
- 'inputs': '{"query":"What is 2+2?"}',
1208
- 'labels': '{}',
1209
- 'logfire.json_schema': '{"type":"object","properties":{"task_name":{},"case_name":{},"inputs":{"type":"object","title":"TaskInput","x-python-datatype":"PydanticModel"},"metadata":{"type":"object","title":"TaskMetadata","x-python-datatype":"PydanticModel"},"expected_output":{"type":"object","title":"TaskOutput","x-python-datatype":"PydanticModel"},"output":{"type":"object","title":"TaskOutput","x-python-datatype":"PydanticModel"},"task_duration":{},"metrics":{"type":"object"},"attributes":{"type":"object"},"assertions":{"type":"object"},"scores":{"type":"object"},"labels":{"type":"object"}}}',
1210
- 'logfire.msg': 'case: case1',
1275
+ 'inputs': {'query': 'What is 2+2?'},
1276
+ 'metadata': {'difficulty': 'easy', 'category': 'general'},
1277
+ 'expected_output': {'answer': '4', 'confidence': 1.0},
1211
1278
  'logfire.msg_template': 'case: {case_name}',
1279
+ 'logfire.msg': 'case: case1',
1212
1280
  'logfire.span_type': 'span',
1213
- 'metadata': '{"difficulty":"easy","category":"general"}',
1214
- 'metrics': '{}',
1215
- 'output': '{"answer":"4","confidence":1.0}',
1216
- 'scores': '{"confidence":{"name":"confidence","value":1.0,"reason":null,"source":{"name":"SimpleEvaluator","arguments":null}}}',
1281
+ 'output': {'answer': '4', 'confidence': 1.0},
1217
1282
  'task_duration': 1.0,
1218
- 'task_name': 'mock_async_task',
1283
+ 'metrics': {},
1284
+ 'attributes': {},
1285
+ 'assertions': {
1286
+ 'correct': {
1287
+ 'name': 'correct',
1288
+ 'value': True,
1289
+ 'reason': None,
1290
+ 'source': {'name': 'SimpleEvaluator', 'arguments': None},
1291
+ }
1292
+ },
1293
+ 'scores': {
1294
+ 'confidence': {
1295
+ 'name': 'confidence',
1296
+ 'value': 1.0,
1297
+ 'reason': None,
1298
+ 'source': {'name': 'SimpleEvaluator', 'arguments': None},
1299
+ }
1300
+ },
1301
+ 'labels': {},
1302
+ 'logfire.json_schema': {
1303
+ 'type': 'object',
1304
+ 'properties': {
1305
+ 'task_name': {},
1306
+ 'case_name': {},
1307
+ 'inputs': {'type': 'object', 'title': 'TaskInput', 'x-python-datatype': 'PydanticModel'},
1308
+ 'metadata': {
1309
+ 'type': 'object',
1310
+ 'title': 'TaskMetadata',
1311
+ 'x-python-datatype': 'PydanticModel',
1312
+ },
1313
+ 'expected_output': {
1314
+ 'type': 'object',
1315
+ 'title': 'TaskOutput',
1316
+ 'x-python-datatype': 'PydanticModel',
1317
+ },
1318
+ 'output': {'type': 'object', 'title': 'TaskOutput', 'x-python-datatype': 'PydanticModel'},
1319
+ 'task_duration': {},
1320
+ 'metrics': {'type': 'object'},
1321
+ 'attributes': {'type': 'object'},
1322
+ 'assertions': {'type': 'object'},
1323
+ 'scores': {'type': 'object'},
1324
+ 'labels': {'type': 'object'},
1325
+ },
1326
+ },
1219
1327
  },
1220
- 'context': {'is_remote': False, 'span_id': 3, 'trace_id': 1},
1221
- 'end_time': 8000000000,
1222
- 'name': 'case: {case_name}',
1223
- 'parent': {'is_remote': False, 'span_id': 1, 'trace_id': 1},
1224
- 'start_time': 2000000000,
1225
- }
1226
- ),
1227
- IsPartialDict(
1228
- {
1229
- 'attributes': {
1230
- 'logfire.json_schema': '{"type":"object","properties":{"task":{}}}',
1231
- 'logfire.msg': 'execute mock_async_task',
1328
+ ),
1329
+ (
1330
+ 'execute {task}',
1331
+ {
1332
+ 'task': 'mock_async_task',
1232
1333
  'logfire.msg_template': 'execute {task}',
1334
+ 'logfire.msg': 'execute mock_async_task',
1335
+ 'logfire.json_schema': {'type': 'object', 'properties': {'task': {}}},
1233
1336
  'logfire.span_type': 'span',
1234
- 'task': 'mock_async_task',
1235
1337
  },
1236
- 'context': {'is_remote': False, 'span_id': 5, 'trace_id': 1},
1237
- 'end_time': 4000000000,
1238
- 'name': 'execute {task}',
1239
- 'parent': {'is_remote': False, 'span_id': 3, 'trace_id': 1},
1240
- 'start_time': 3000000000,
1241
- }
1242
- ),
1243
- IsPartialDict(
1244
- {
1245
- 'attributes': {
1246
- 'assertions': '{"correct":{"name":"correct","value":true,"reason":null,"source":{"name":"SimpleEvaluator","arguments":null}}}',
1247
- 'attributes': '{}',
1338
+ ),
1339
+ (
1340
+ 'case: {case_name}',
1341
+ {
1342
+ 'task_name': 'mock_async_task',
1248
1343
  'case_name': 'case2',
1249
- 'expected_output': '{"answer":"Paris","confidence":1.0}',
1250
- 'inputs': '{"query":"What is the capital of France?"}',
1251
- 'labels': '{}',
1252
- 'logfire.json_schema': '{"type":"object","properties":{"task_name":{},"case_name":{},"inputs":{"type":"object","title":"TaskInput","x-python-datatype":"PydanticModel"},"metadata":{"type":"object","title":"TaskMetadata","x-python-datatype":"PydanticModel"},"expected_output":{"type":"object","title":"TaskOutput","x-python-datatype":"PydanticModel"},"output":{"type":"object","title":"TaskOutput","x-python-datatype":"PydanticModel"},"task_duration":{},"metrics":{"type":"object"},"attributes":{"type":"object"},"assertions":{"type":"object"},"scores":{"type":"object"},"labels":{"type":"object"}}}',
1253
- 'logfire.msg': 'case: case2',
1344
+ 'inputs': {'query': 'What is the capital of France?'},
1345
+ 'metadata': {'difficulty': 'medium', 'category': 'geography'},
1346
+ 'expected_output': {'answer': 'Paris', 'confidence': 1.0},
1254
1347
  'logfire.msg_template': 'case: {case_name}',
1348
+ 'logfire.msg': 'case: case2',
1255
1349
  'logfire.span_type': 'span',
1256
- 'metadata': '{"difficulty":"medium","category":"geography"}',
1257
- 'metrics': '{}',
1258
- 'output': '{"answer":"Paris","confidence":1.0}',
1259
- 'scores': '{"confidence":{"name":"confidence","value":1.0,"reason":null,"source":{"name":"SimpleEvaluator","arguments":null}}}',
1350
+ 'output': {'answer': 'Paris', 'confidence': 1.0},
1260
1351
  'task_duration': 1.0,
1261
- 'task_name': 'mock_async_task',
1352
+ 'metrics': {},
1353
+ 'attributes': {},
1354
+ 'assertions': {
1355
+ 'correct': {
1356
+ 'name': 'correct',
1357
+ 'value': True,
1358
+ 'reason': None,
1359
+ 'source': {'name': 'SimpleEvaluator', 'arguments': None},
1360
+ }
1361
+ },
1362
+ 'scores': {
1363
+ 'confidence': {
1364
+ 'name': 'confidence',
1365
+ 'value': 1.0,
1366
+ 'reason': None,
1367
+ 'source': {'name': 'SimpleEvaluator', 'arguments': None},
1368
+ }
1369
+ },
1370
+ 'labels': {},
1371
+ 'logfire.json_schema': {
1372
+ 'type': 'object',
1373
+ 'properties': {
1374
+ 'task_name': {},
1375
+ 'case_name': {},
1376
+ 'inputs': {'type': 'object', 'title': 'TaskInput', 'x-python-datatype': 'PydanticModel'},
1377
+ 'metadata': {
1378
+ 'type': 'object',
1379
+ 'title': 'TaskMetadata',
1380
+ 'x-python-datatype': 'PydanticModel',
1381
+ },
1382
+ 'expected_output': {
1383
+ 'type': 'object',
1384
+ 'title': 'TaskOutput',
1385
+ 'x-python-datatype': 'PydanticModel',
1386
+ },
1387
+ 'output': {'type': 'object', 'title': 'TaskOutput', 'x-python-datatype': 'PydanticModel'},
1388
+ 'task_duration': {},
1389
+ 'metrics': {'type': 'object'},
1390
+ 'attributes': {'type': 'object'},
1391
+ 'assertions': {'type': 'object'},
1392
+ 'scores': {'type': 'object'},
1393
+ 'labels': {'type': 'object'},
1394
+ },
1395
+ },
1262
1396
  },
1263
- 'context': {'is_remote': False, 'span_id': 7, 'trace_id': 1},
1264
- 'end_time': 9000000000,
1265
- 'name': 'case: {case_name}',
1266
- 'parent': {'is_remote': False, 'span_id': 1, 'trace_id': 1},
1267
- 'start_time': 5000000000,
1268
- }
1269
- ),
1270
- IsPartialDict(
1271
- {
1272
- 'attributes': {
1273
- 'logfire.json_schema': '{"type":"object","properties":{"task":{}}}',
1274
- 'logfire.msg': 'execute mock_async_task',
1397
+ ),
1398
+ (
1399
+ 'execute {task}',
1400
+ {
1401
+ 'task': 'mock_async_task',
1275
1402
  'logfire.msg_template': 'execute {task}',
1403
+ 'logfire.msg': 'execute mock_async_task',
1404
+ 'logfire.json_schema': {'type': 'object', 'properties': {'task': {}}},
1276
1405
  'logfire.span_type': 'span',
1277
- 'task': 'mock_async_task',
1278
1406
  },
1279
- 'context': {'is_remote': False, 'span_id': 9, 'trace_id': 1},
1280
- 'end_time': 7000000000,
1281
- 'name': 'execute {task}',
1282
- 'parent': {'is_remote': False, 'span_id': 7, 'trace_id': 1},
1283
- 'start_time': 6000000000,
1284
- }
1285
- ),
1286
- ]
1407
+ ),
1408
+ ]
1409
+ )
@@ -0,0 +1,46 @@
1
+ interactions:
2
+ - request:
3
+ body: '{"contents": [{"parts": [{"text": "The quick brown fox jumps over the lazydog."}],
4
+ "role": "user"}]}'
5
+ headers:
6
+ Content-Type:
7
+ - application/json
8
+ user-agent:
9
+ - google-genai-sdk/1.26.0 gl-python/3.12.7
10
+ x-goog-api-client:
11
+ - google-genai-sdk/1.26.0 gl-python/3.12.7
12
+ method: post
13
+ uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:countTokens
14
+ response:
15
+ body:
16
+ string: "{\n \"totalTokens\": 12,\n \"promptTokensDetails\": [\n {\n \"modality\":
17
+ \"TEXT\",\n \"tokenCount\": 12\n }\n ]\n}\n"
18
+ headers:
19
+ Alt-Svc:
20
+ - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
21
+ Content-Type:
22
+ - application/json; charset=UTF-8
23
+ Date:
24
+ - Fri, 01 Aug 2025 15:59:25 GMT
25
+ Server:
26
+ - scaffolding on HTTPServer2
27
+ Server-Timing:
28
+ - gfet4t7; dur=1582
29
+ Transfer-Encoding:
30
+ - chunked
31
+ Vary:
32
+ - Origin
33
+ - X-Origin
34
+ - Referer
35
+ X-Content-Type-Options:
36
+ - nosniff
37
+ X-Frame-Options:
38
+ - SAMEORIGIN
39
+ X-XSS-Protection:
40
+ - '0'
41
+ content-length:
42
+ - '117'
43
+ status:
44
+ code: 200
45
+ message: OK
46
+ version: 1
@@ -0,0 +1,115 @@
1
+ interactions:
2
+ - request:
3
+ headers:
4
+ accept:
5
+ - '*/*'
6
+ accept-encoding:
7
+ - gzip, deflate
8
+ connection:
9
+ - keep-alive
10
+ content-length:
11
+ - '100'
12
+ content-type:
13
+ - application/json
14
+ host:
15
+ - generativelanguage.googleapis.com
16
+ method: POST
17
+ parsed_body:
18
+ contents:
19
+ - parts:
20
+ - text: The quick brown fox jumps over the lazydog.
21
+ role: user
22
+ uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:countTokens
23
+ response:
24
+ headers:
25
+ alt-svc:
26
+ - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
27
+ content-length:
28
+ - '117'
29
+ content-type:
30
+ - application/json; charset=UTF-8
31
+ server-timing:
32
+ - gfet4t7; dur=191
33
+ transfer-encoding:
34
+ - chunked
35
+ vary:
36
+ - Origin
37
+ - X-Origin
38
+ - Referer
39
+ parsed_body:
40
+ promptTokensDetails:
41
+ - modality: TEXT
42
+ tokenCount: 12
43
+ totalTokens: 12
44
+ status:
45
+ code: 200
46
+ message: OK
47
+ - request:
48
+ headers:
49
+ accept:
50
+ - '*/*'
51
+ accept-encoding:
52
+ - gzip, deflate
53
+ connection:
54
+ - keep-alive
55
+ content-length:
56
+ - '124'
57
+ content-type:
58
+ - application/json
59
+ host:
60
+ - generativelanguage.googleapis.com
61
+ method: POST
62
+ parsed_body:
63
+ contents:
64
+ - parts:
65
+ - text: The quick brown fox jumps over the lazydog.
66
+ role: user
67
+ generationConfig: {}
68
+ uri: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent
69
+ response:
70
+ headers:
71
+ alt-svc:
72
+ - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
73
+ content-length:
74
+ - '979'
75
+ content-type:
76
+ - application/json; charset=UTF-8
77
+ server-timing:
78
+ - gfet4t7; dur=4808
79
+ transfer-encoding:
80
+ - chunked
81
+ vary:
82
+ - Origin
83
+ - X-Origin
84
+ - Referer
85
+ parsed_body:
86
+ candidates:
87
+ - content:
88
+ parts:
89
+ - text: |-
90
+ That's a classic! It's famously known as a **pangram**, which means it's a sentence that contains every letter of the alphabet.
91
+
92
+ It's often used for:
93
+ * **Typing practice:** To ensure all keys are hit.
94
+ * **Displaying font samples:** Because it showcases every character.
95
+
96
+ Just a small note, it's typically written as "lazy dog" (two words) and usually ends with a period:
97
+
98
+ **The quick brown fox jumps over the lazy dog.**
99
+ role: model
100
+ finishReason: STOP
101
+ index: 0
102
+ modelVersion: gemini-2.5-flash
103
+ responseId: ZwudaISALoquqtsP9uCG6Qw
104
+ usageMetadata:
105
+ candidatesTokenCount: 109
106
+ promptTokenCount: 12
107
+ promptTokensDetails:
108
+ - modality: TEXT
109
+ tokenCount: 12
110
+ thoughtsTokenCount: 806
111
+ totalTokenCount: 927
112
+ status:
113
+ code: 200
114
+ message: OK
115
+ version: 1
@@ -0,0 +1,85 @@
1
+ interactions:
2
+ - request:
3
+ body: assertion=eyJ0eXAiOiAiSldUIiwgImFsZyI6ICJSUzI1NiIsICJraWQiOiAiNjc4MmViNzhmMGU0MmIwMjRkNjExNjY2MTg0NWZhZTdkOTdiMDY3NyJ9.eyJpYXQiOiAxNzU1MTIyMTU5LCAiZXhwIjogMTc1NTEyNTc1OSwgImlzcyI6ICJweWRhbnRpYy1haS12ZXJ0ZXgtYWktZGV2QHB5ZGFudGljLWFpLWRldi5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsICJhdWQiOiAiaHR0cHM6Ly9vYXV0aDIuZ29vZ2xlYXBpcy5jb20vdG9rZW4iLCAic2NvcGUiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vYXV0aC9jbG91ZC1wbGF0Zm9ybSJ9.pnrHg7uMo_ow8OctKf4GM7Oe28kUhvzKewq0xCeaJz88bSeorgyd5ZLRtRdRhgZwiznSCevAahorDTxCVeCxenJp88UHf_5tuN6Jo7e7dcrzjA3Ta3DbQgBc_N58cGWc75JgJpE6GwDtHjehLVtIlo_qpux-FqLZL5N745-ECeKnyKmMTdkuVVArMyU96CGOss9L3xiWKukRIv-h8_uCmsoPVWQmyGEfQQOv--EIC4ERUOfwed1I-4ZyF5Z8w3dymKTHtJoRSL-fg8tn12acytLptC1eEZ2OzkZJI4UJWHmmtAy8HrZ-PqjwUiO83sC5iZcLICmCxXWUxJce5j-d_Q&grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer
4
+ headers:
5
+ accept:
6
+ - '*/*'
7
+ accept-encoding:
8
+ - gzip, deflate
9
+ connection:
10
+ - keep-alive
11
+ content-length:
12
+ - '819'
13
+ content-type:
14
+ - application/x-www-form-urlencoded
15
+ method: POST
16
+ uri: https://oauth2.googleapis.com/token
17
+ response:
18
+ headers:
19
+ alt-svc:
20
+ - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
21
+ content-length:
22
+ - '1083'
23
+ content-type:
24
+ - application/json; charset=UTF-8
25
+ transfer-encoding:
26
+ - chunked
27
+ vary:
28
+ - Origin
29
+ - X-Origin
30
+ - Referer
31
+ parsed_body:
32
+ access_token: scrubbed
33
+ expires_in: 3599
34
+ token_type: Bearer
35
+ status:
36
+ code: 200
37
+ message: OK
38
+ - request:
39
+ headers:
40
+ content-type:
41
+ - application/json
42
+ method: post
43
+ parsed_body:
44
+ contents:
45
+ - parts:
46
+ - text: What is the largest city in the user country? Use the get_user_country tool and then your own world knowledge.
47
+ role: user
48
+ generationConfig:
49
+ max_output_tokens: 100
50
+ systemInstruction:
51
+ parts:
52
+ - text: You are a chatbot.
53
+ role: user
54
+ tools:
55
+ - functionDeclarations:
56
+ - description: ''
57
+ name: get_user_country
58
+ parameters:
59
+ properties: {}
60
+ type: OBJECT
61
+ uri: https://us-central1-aiplatform.googleapis.com/v1beta1/projects/pydantic-ai/locations/us-central1/publishers/google/models/gemini-2.0-flash:countTokens
62
+ response:
63
+ headers:
64
+ alt-svc:
65
+ - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
66
+ content-length:
67
+ - '151'
68
+ content-type:
69
+ - application/json; charset=UTF-8
70
+ transfer-encoding:
71
+ - chunked
72
+ vary:
73
+ - Origin
74
+ - X-Origin
75
+ - Referer
76
+ parsed_body:
77
+ promptTokensDetails:
78
+ - modality: TEXT
79
+ tokenCount: 36
80
+ totalBillableCharacters: 123
81
+ totalTokens: 36
82
+ status:
83
+ code: 200
84
+ message: OK
85
+ version: 1
@@ -14,12 +14,20 @@ interactions:
14
14
  uri: https://us.inference.heroku.com/available-models
15
15
  response:
16
16
  headers:
17
+ cache-control:
18
+ - no-cache, no-store, must-revalidate
19
+ connection:
20
+ - keep-alive
17
21
  content-length:
18
22
  - '760'
19
23
  content-security-policy:
20
24
  - default-src 'none'; frame-ancestors 'none'
21
25
  content-type:
22
26
  - application/json
27
+ expires:
28
+ - '0'
29
+ pragma:
30
+ - no-cache
23
31
  strict-transport-security:
24
32
  - max-age=63072000
25
33
  parsed_body: