pydantic-ai 0.7.4__tar.gz → 0.7.6__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 (397) hide show
  1. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/PKG-INFO +3 -3
  2. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/conftest.py +8 -3
  3. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/evals/test_dataset.py +2 -0
  4. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/json_body_serializer.py +1 -0
  5. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_model_names/test_known_model_names.yaml +65 -0
  6. pydantic_ai-0.7.6/tests/models/cassettes/test_openai/test_document_as_binary_content_input_with_tool.yaml +211 -0
  7. pydantic_ai-0.7.6/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider.yaml +69 -0
  8. pydantic_ai-0.7.6/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider_harmony.yaml +70 -0
  9. pydantic_ai-0.7.6/tests/models/cassettes/test_openai/test_openai_model_cerebras_provider_qwen_3_coder.yaml +189 -0
  10. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/test_anthropic.py +25 -0
  11. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/test_bedrock.py +9 -0
  12. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/test_cohere.py +10 -0
  13. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/test_deepseek.py +4 -3
  14. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/test_gemini.py +12 -7
  15. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/test_google.py +54 -8
  16. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/test_groq.py +14 -0
  17. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/test_huggingface.py +12 -0
  18. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/test_instrumented.py +366 -102
  19. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/test_mistral.py +31 -0
  20. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/test_model.py +8 -8
  21. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/test_model_names.py +26 -2
  22. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/test_openai.py +161 -71
  23. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/test_openai_responses.py +21 -3
  24. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/providers/test_anthropic.py +11 -19
  25. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/providers/test_azure.py +4 -4
  26. pydantic_ai-0.7.6/tests/providers/test_cerebras.py +86 -0
  27. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/providers/test_deepseek.py +2 -2
  28. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/providers/test_grok.py +2 -2
  29. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/providers/test_heroku.py +3 -3
  30. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/providers/test_moonshotai.py +2 -2
  31. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/providers/test_openrouter.py +2 -2
  32. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/test_agent.py +2 -0
  33. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/test_cli.py +3 -2
  34. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/test_examples.py +5 -4
  35. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/test_live.py +4 -4
  36. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/test_logfire.py +311 -147
  37. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/test_mcp.py +36 -5
  38. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/test_streaming.py +13 -0
  39. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/test_temporal.py +4 -17
  40. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/test_tenacity.py +121 -27
  41. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/test_usage_limits.py +2 -7
  42. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/.gitignore +0 -0
  43. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/LICENSE +0 -0
  44. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/Makefile +0 -0
  45. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/README.md +0 -0
  46. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/pyproject.toml +0 -0
  47. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/__init__.py +0 -0
  48. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/assets/dummy.pdf +0 -0
  49. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/assets/kiwi.png +0 -0
  50. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/assets/marcelo.mp3 +0 -0
  51. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/assets/product_name.txt +0 -0
  52. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/assets/small_video.mp4 +0 -0
  53. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_agent_with_server_not_running.yaml +0 -0
  54. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_agent_with_stdio_server.yaml +0 -0
  55. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_tool_returning_audio_resource.yaml +0 -0
  56. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_tool_returning_audio_resource_link.yaml +0 -0
  57. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_tool_returning_dict.yaml +0 -0
  58. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_tool_returning_error.yaml +0 -0
  59. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_tool_returning_image.yaml +0 -0
  60. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_tool_returning_image_resource.yaml +0 -0
  61. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_tool_returning_image_resource_link.yaml +0 -0
  62. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_tool_returning_multiple_items.yaml +0 -0
  63. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_tool_returning_none.yaml +0 -0
  64. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_tool_returning_str.yaml +0 -0
  65. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_tool_returning_text_resource.yaml +0 -0
  66. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_mcp/test_tool_returning_text_resource_link.yaml +0 -0
  67. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_settings/test_stop_settings[anthropic].yaml +0 -0
  68. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_settings/test_stop_settings[bedrock].yaml +0 -0
  69. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_settings/test_stop_settings[cohere].yaml +0 -0
  70. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_settings/test_stop_settings[gemini].yaml +0 -0
  71. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_settings/test_stop_settings[google].yaml +0 -0
  72. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_settings/test_stop_settings[groq].yaml +0 -0
  73. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_settings/test_stop_settings[mistral].yaml +0 -0
  74. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_settings/test_stop_settings[openai].yaml +0 -0
  75. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_complex_agent_run.yaml +0 -0
  76. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_complex_agent_run_in_workflow.yaml +0 -0
  77. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_complex_agent_run_stream_in_workflow.yaml +0 -0
  78. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_logfire_plugin.yaml +0 -0
  79. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_multiple_agents.yaml +0 -0
  80. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_simple_agent_run_in_workflow.yaml +0 -0
  81. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_temporal_agent_iter.yaml +0 -0
  82. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_temporal_agent_override_deps_in_workflow.yaml +0 -0
  83. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_temporal_agent_run.yaml +0 -0
  84. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_temporal_agent_run_stream.yaml +0 -0
  85. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_temporal_agent_run_sync.yaml +0 -0
  86. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_temporal_agent_sync_tool_activity_disabled.yaml +0 -0
  87. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_temporal_agent_with_dataclass_deps_as_dict.yaml +0 -0
  88. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_temporal_agent_with_non_dict_deps.yaml +0 -0
  89. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/cassettes/test_temporal/test_temporal_agent_with_unserializable_deps_type.yaml +0 -0
  90. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/evals/__init__.py +0 -0
  91. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/evals/test_evaluator_base.py +0 -0
  92. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/evals/test_evaluator_common.py +0 -0
  93. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/evals/test_evaluator_context.py +0 -0
  94. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/evals/test_evaluator_spec.py +0 -0
  95. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/evals/test_evaluators.py +0 -0
  96. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/evals/test_llm_as_a_judge.py +0 -0
  97. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/evals/test_otel.py +0 -0
  98. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/evals/test_render_numbers.py +0 -0
  99. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/evals/test_reporting.py +0 -0
  100. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/evals/test_reports.py +0 -0
  101. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/evals/test_utils.py +0 -0
  102. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/evals/utils.py +0 -0
  103. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/example_modules/README.md +0 -0
  104. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/example_modules/bank_database.py +0 -0
  105. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/example_modules/fake_database.py +0 -0
  106. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/example_modules/mcp_server.py +0 -0
  107. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/example_modules/weather_service.py +0 -0
  108. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/ext/__init__.py +0 -0
  109. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/ext/test_langchain.py +0 -0
  110. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/graph/__init__.py +0 -0
  111. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/graph/test_file_persistence.py +0 -0
  112. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/graph/test_graph.py +0 -0
  113. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/graph/test_mermaid.py +0 -0
  114. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/graph/test_persistence.py +0 -0
  115. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/graph/test_state.py +0 -0
  116. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/graph/test_utils.py +0 -0
  117. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/import_examples.py +0 -0
  118. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/mcp_server.py +0 -0
  119. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/__init__.py +0 -0
  120. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_code_execution_tool.yaml +0 -0
  121. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_model_empty_message_on_history.yaml +0 -0
  122. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_model_instructions.yaml +0 -0
  123. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part.yaml +0 -0
  124. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_model_thinking_part_stream.yaml +0 -0
  125. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output.yaml +0 -0
  126. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_prompted_output_multiple.yaml +0 -0
  127. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_server_tool_pass_history_to_another_provider.yaml +0 -0
  128. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_server_tool_receive_history_from_another_provider.yaml +0 -0
  129. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_text_output_function.yaml +0 -0
  130. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_tool_output.yaml +0 -0
  131. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_tool_with_thinking.yaml +0 -0
  132. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_web_search_tool.yaml +0 -0
  133. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_anthropic_web_search_tool_stream.yaml +0 -0
  134. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_document_binary_content_input.yaml +0 -0
  135. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_document_url_input.yaml +0 -0
  136. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_extra_headers.yaml +0 -0
  137. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_image_as_binary_content_tool_response.yaml +0 -0
  138. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_image_url_input.yaml +0 -0
  139. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_image_url_input_invalid_mime_type.yaml +0 -0
  140. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_multiple_parallel_tool_calls.yaml +0 -0
  141. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_anthropic/test_text_document_url_input.yaml +0 -0
  142. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_anthropic_tool_with_thinking.yaml +0 -0
  143. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_empty_system_prompt.yaml +0 -0
  144. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model.yaml +0 -0
  145. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_anthropic_model_without_tools.yaml +0 -0
  146. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_guardrail_config.yaml +0 -0
  147. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_instructions.yaml +0 -0
  148. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_iter_stream.yaml +0 -0
  149. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_max_tokens.yaml +0 -0
  150. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_other_parameters.yaml +0 -0
  151. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_performance_config.yaml +0 -0
  152. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_retry.yaml +0 -0
  153. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_stream.yaml +0 -0
  154. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_structured_output.yaml +0 -0
  155. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part.yaml +0 -0
  156. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_thinking_part_stream.yaml +0 -0
  157. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_model_top_p.yaml +0 -0
  158. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_bedrock_multiple_documents_in_history.yaml +0 -0
  159. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_document_url_input.yaml +0 -0
  160. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_image_as_binary_content_input.yaml +0 -0
  161. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_image_url_input.yaml +0 -0
  162. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_text_as_binary_content_input.yaml +0 -0
  163. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_text_document_url_input.yaml +0 -0
  164. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_video_as_binary_content_input.yaml +0 -0
  165. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_bedrock/test_video_url_input.yaml +0 -0
  166. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_cohere/test_cohere_model_instructions.yaml +0 -0
  167. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_cohere/test_cohere_model_thinking_part.yaml +0 -0
  168. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_cohere/test_request_simple_success_with_vcr.yaml +0 -0
  169. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_part.yaml +0 -0
  170. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_deepseek/test_deepseek_model_thinking_stream.yaml +0 -0
  171. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_download_item/test_download_item_application_octet_stream.yaml +0 -0
  172. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_download_item/test_download_item_audio_mpeg.yaml +0 -0
  173. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_download_item/test_download_item_no_content_type.yaml +0 -0
  174. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_document_url_input.yaml +0 -0
  175. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_false.yaml +0 -0
  176. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_additional_properties_is_true.yaml +0 -0
  177. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_drop_exclusive_maximum.yaml +0 -0
  178. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_exclusive_minimum_and_maximum.yaml +0 -0
  179. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_model_instructions.yaml +0 -0
  180. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_model_thinking_part.yaml +0 -0
  181. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_native_output.yaml +0 -0
  182. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_native_output_multiple.yaml +0 -0
  183. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_prompted_output.yaml +0 -0
  184. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_multiple.yaml +0 -0
  185. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_prompted_output_with_tools.yaml +0 -0
  186. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_text_output_function.yaml +0 -0
  187. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_tool_config_any_with_tool_without_args.yaml +0 -0
  188. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_tool_output.yaml +0 -0
  189. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_gemini_youtube_video_url_input.yaml +0 -0
  190. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_image_as_binary_content_input.yaml +0 -0
  191. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_image_as_binary_content_tool_response.yaml +0 -0
  192. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_image_url_input.yaml +0 -0
  193. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_labels_are_ignored_with_gla_provider.yaml +0 -0
  194. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_video_as_binary_content_input.yaml +0 -0
  195. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini/test_video_url_input.yaml +0 -0
  196. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini_vertex/test_labels.yaml +0 -0
  197. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl (gs)].yaml +0 -0
  198. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini_vertex/test_url_input[AudioUrl].yaml +0 -0
  199. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl (gs)].yaml +0 -0
  200. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini_vertex/test_url_input[DocumentUrl].yaml +0 -0
  201. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl (gs)].yaml +0 -0
  202. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini_vertex/test_url_input[ImageUrl].yaml +0 -0
  203. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (YouTube)].yaml +0 -0
  204. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl (gs)].yaml +0 -0
  205. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini_vertex/test_url_input[VideoUrl].yaml +0 -0
  206. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_gemini_vertex/test_url_input_force_download.yaml +0 -0
  207. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model.yaml +0 -0
  208. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_code_execution_tool.yaml +0 -0
  209. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_document_url_input.yaml +0 -0
  210. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_empty_assistant_response.yaml +0 -0
  211. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_empty_user_prompt.yaml +0 -0
  212. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_image_as_binary_content_input.yaml +0 -0
  213. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_image_url_input.yaml +0 -0
  214. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_instructions.yaml +0 -0
  215. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_iter_stream.yaml +0 -0
  216. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_max_tokens.yaml +0 -0
  217. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_multiple_documents_in_history.yaml +0 -0
  218. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_receive_web_search_history_from_another_provider.yaml +0 -0
  219. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_retry.yaml +0 -0
  220. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_safety_settings.yaml +0 -0
  221. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_server_tool_receive_history_from_another_provider.yaml +0 -0
  222. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_stream.yaml +0 -0
  223. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_structured_output.yaml +0 -0
  224. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_text_as_binary_content_input.yaml +0 -0
  225. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_text_document_url_input.yaml +0 -0
  226. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_thinking_config.yaml +0 -0
  227. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_thinking_part.yaml +0 -0
  228. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_thinking_part_iter.yaml +0 -0
  229. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_top_p.yaml +0 -0
  230. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_url_context_tool.yaml +0 -0
  231. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_usage_limit_exceeded.yaml +0 -0
  232. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_usage_limit_not_exceeded.yaml +0 -0
  233. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_vertex_labels.yaml +0 -0
  234. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_vertex_provider.yaml +0 -0
  235. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input.yaml +0 -0
  236. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_video_as_binary_content_input_with_vendor_metadata.yaml +0 -0
  237. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_video_url_input.yaml +0 -0
  238. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_web_search_tool.yaml +0 -0
  239. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_model_youtube_video_url_input_with_vendor_metadata.yaml +0 -0
  240. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_native_output.yaml +0 -0
  241. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_native_output_multiple.yaml +0 -0
  242. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_prompted_output.yaml +0 -0
  243. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_prompted_output_multiple.yaml +0 -0
  244. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_prompted_output_with_tools.yaml +0 -0
  245. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_text_output_function.yaml +0 -0
  246. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_timeout.yaml +0 -0
  247. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_tool_config_any_with_tool_without_args.yaml +0 -0
  248. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_tool_output.yaml +0 -0
  249. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl (gs)].yaml +0 -0
  250. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_url_input[AudioUrl].yaml +0 -0
  251. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl (gs)].yaml +0 -0
  252. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_url_input[DocumentUrl].yaml +0 -0
  253. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl (gs)].yaml +0 -0
  254. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_url_input[ImageUrl].yaml +0 -0
  255. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (YouTube)].yaml +0 -0
  256. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl (gs)].yaml +0 -0
  257. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_url_input[VideoUrl].yaml +0 -0
  258. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_url_input_force_download.yaml +0 -0
  259. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_google/test_google_vertexai_model_usage_limit_exceeded.yaml +0 -0
  260. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_groq/test_extra_headers.yaml +0 -0
  261. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_groq/test_groq_model_instructions.yaml +0 -0
  262. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_groq/test_groq_model_thinking_part.yaml +0 -0
  263. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_groq/test_groq_model_thinking_part_iter.yaml +0 -0
  264. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_groq/test_groq_model_web_search_tool.yaml +0 -0
  265. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_groq/test_image_as_binary_content_input.yaml +0 -0
  266. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_groq/test_image_as_binary_content_tool_response.yaml +0 -0
  267. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_groq/test_image_url_input.yaml +0 -0
  268. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_huggingface/test_hf_model_instructions.yaml +0 -0
  269. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part.yaml +0 -0
  270. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_huggingface/test_hf_model_thinking_part_iter.yaml +0 -0
  271. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_huggingface/test_image_as_binary_content_input.yaml +0 -0
  272. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_huggingface/test_image_url_input.yaml +0 -0
  273. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[Qwen-Qwen2.5-72B-Instruct].yaml +0 -0
  274. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[deepseek-ai-DeepSeek-R1-0528].yaml +0 -0
  275. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_huggingface/test_max_completion_tokens[meta-llama-Llama-3.3-70B-Instruct].yaml +0 -0
  276. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_huggingface/test_request_simple_success_with_vcr.yaml +0 -0
  277. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_huggingface/test_request_simple_usage.yaml +0 -0
  278. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_huggingface/test_simple_completion.yaml +0 -0
  279. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_huggingface/test_stream_completion.yaml +0 -0
  280. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_mistral/test_image_as_binary_content_tool_response.yaml +0 -0
  281. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_mistral/test_mistral_model_instructions.yaml +0 -0
  282. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_mistral/test_mistral_model_thinking_part.yaml +0 -0
  283. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_audio_as_binary_content_input.yaml +0 -0
  284. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_compatible_api_with_tool_calls_without_id.yaml +0 -0
  285. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_document_as_binary_content_input.yaml +0 -0
  286. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_document_url_input.yaml +0 -0
  287. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_extra_headers.yaml +0 -0
  288. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_image_as_binary_content_input.yaml +0 -0
  289. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_image_as_binary_content_tool_response.yaml +0 -0
  290. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_image_url_tool_response.yaml +0 -0
  291. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_invalid_response.yaml +0 -0
  292. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4.5-preview].yaml +0 -0
  293. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_max_completion_tokens[gpt-4o-mini].yaml +0 -0
  294. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_max_completion_tokens[o3-mini].yaml +0 -0
  295. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_multiple_agent_tool_calls.yaml +0 -0
  296. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_audio_url_input.yaml +0 -0
  297. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_instructions.yaml +0 -0
  298. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_instructions_with_tool_calls_keep_instructions.yaml +0 -0
  299. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_model_settings_temperature_ignored_on_gpt_5.yaml +0 -0
  300. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_model_thinking_part.yaml +0 -0
  301. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_model_thinking_part_iter.yaml +0 -0
  302. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_model_without_system_prompt.yaml +0 -0
  303. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_native_output.yaml +0 -0
  304. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_native_output_multiple.yaml +0 -0
  305. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[developer].yaml +0 -0
  306. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_o1_mini_system_role[system].yaml +0 -0
  307. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_prompted_output.yaml +0 -0
  308. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_prompted_output_multiple.yaml +0 -0
  309. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_responses_model_thinking_part.yaml +0 -0
  310. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_text_output_function.yaml +0 -0
  311. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_tool_output.yaml +0 -0
  312. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_web_search_tool.yaml +0 -0
  313. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_web_search_tool_model_not_supported.yaml +0 -0
  314. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_openai_web_search_tool_with_user_location.yaml +0 -0
  315. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_reasoning_model_with_temperature.yaml +0 -0
  316. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_system_prompt_role_o1_mini.yaml +0 -0
  317. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_text_response.yaml +0 -0
  318. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_user_id.yaml +0 -0
  319. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai/test_valid_response.yaml +0 -0
  320. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_audio_as_binary_content_input.yaml +0 -0
  321. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_input.yaml +0 -0
  322. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_image_as_binary_content_tool_response.yaml +0 -0
  323. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_native_output.yaml +0 -0
  324. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_native_output_multiple.yaml +0 -0
  325. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_code_execution_tool.yaml +0 -0
  326. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_code_execution_tool_stream.yaml +0 -0
  327. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_as_binary_content_input.yaml +0 -0
  328. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_document_url_input.yaml +0 -0
  329. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_image_url_input.yaml +0 -0
  330. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_builtin_tools.yaml +0 -0
  331. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_http_error.yaml +0 -0
  332. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_instructions.yaml +0 -0
  333. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_retry.yaml +0 -0
  334. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response.yaml +0 -0
  335. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_simple_response_with_tool_call.yaml +0 -0
  336. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool.yaml +0 -0
  337. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_stream.yaml +0 -0
  338. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_with_invalid_region.yaml +0 -0
  339. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_model_web_search_tool_with_user_location.yaml +0 -0
  340. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_output_type.yaml +0 -0
  341. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_effort.yaml +0 -0
  342. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_reasoning_generate_summary.yaml +0 -0
  343. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_stream.yaml +0 -0
  344. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_system_prompt.yaml +0 -0
  345. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_text_document_url_input.yaml +0 -0
  346. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_openai_responses_verbosity.yaml +0 -0
  347. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_prompted_output.yaml +0 -0
  348. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_prompted_output_multiple.yaml +0 -0
  349. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_reasoning_model_with_temperature.yaml +0 -0
  350. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_text_output_function.yaml +0 -0
  351. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/cassettes/test_openai_responses/test_tool_output.yaml +0 -0
  352. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/mock_async_stream.py +0 -0
  353. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/test_download_item.py +0 -0
  354. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/test_fallback.py +0 -0
  355. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/test_gemini_vertex.py +0 -0
  356. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/test_mcp_sampling.py +0 -0
  357. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/test_model_function.py +0 -0
  358. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/test_model_request_parameters.py +0 -0
  359. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/test_model_settings.py +0 -0
  360. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/models/test_model_test.py +0 -0
  361. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/parts_from_messages.py +0 -0
  362. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/providers/__init__.py +0 -0
  363. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/providers/cassettes/test_azure/test_azure_provider_call.yaml +0 -0
  364. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/providers/cassettes/test_google_vertex/test_vertexai_provider.yaml +0 -0
  365. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/providers/cassettes/test_heroku/test_heroku_model_provider_claude_3_7_sonnet.yaml +0 -0
  366. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/providers/cassettes/test_openrouter/test_openrouter_with_google_model.yaml +0 -0
  367. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/providers/test_bedrock.py +0 -0
  368. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/providers/test_cohere.py +0 -0
  369. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/providers/test_fireworks.py +0 -0
  370. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/providers/test_github.py +0 -0
  371. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/providers/test_google_gla.py +0 -0
  372. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/providers/test_google_vertex.py +0 -0
  373. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/providers/test_groq.py +0 -0
  374. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/providers/test_huggingface.py +0 -0
  375. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/providers/test_mistral.py +0 -0
  376. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/providers/test_ollama.py +0 -0
  377. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/providers/test_openai.py +0 -0
  378. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/providers/test_provider_names.py +0 -0
  379. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/providers/test_together.py +0 -0
  380. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/providers/test_vercel.py +0 -0
  381. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/test_a2a.py +0 -0
  382. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/test_ag_ui.py +0 -0
  383. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/test_builtin_tools.py +0 -0
  384. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/test_deps.py +0 -0
  385. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/test_direct.py +0 -0
  386. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/test_format_as_xml.py +0 -0
  387. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/test_history_processor.py +0 -0
  388. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/test_json_body_serializer.py +0 -0
  389. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/test_messages.py +0 -0
  390. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/test_parts_manager.py +0 -0
  391. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/test_settings.py +0 -0
  392. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/test_thinking_part.py +0 -0
  393. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/test_tools.py +0 -0
  394. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/test_toolsets.py +0 -0
  395. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/test_utils.py +0 -0
  396. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/tests/typed_agent.py +0 -0
  397. {pydantic_ai-0.7.4 → pydantic_ai-0.7.6}/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.4
3
+ Version: 0.7.6
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.4
31
+ Requires-Dist: pydantic-ai-slim[ag-ui,anthropic,bedrock,cli,cohere,evals,google,groq,huggingface,mcp,mistral,openai,retries,temporal,vertexai]==0.7.6
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.4; extra == 'examples'
35
+ Requires-Dist: pydantic-ai-examples==0.7.6; extra == 'examples'
36
36
  Provides-Extra: logfire
37
37
  Requires-Dist: logfire>=3.14.1; extra == 'logfire'
38
38
  Description-Content-Type: text/markdown
@@ -390,6 +390,11 @@ def heroku_inference_key() -> str:
390
390
  return os.getenv('HEROKU_INFERENCE_KEY', 'mock-api-key')
391
391
 
392
392
 
393
+ @pytest.fixture(scope='session')
394
+ def cerebras_api_key() -> str:
395
+ return os.getenv('CEREBRAS_API_KEY', 'mock-api-key')
396
+
397
+
393
398
  @pytest.fixture(scope='session')
394
399
  def bedrock_provider():
395
400
  try:
@@ -431,7 +436,7 @@ def vertex_provider_auth(mocker: MockerFixture) -> None: # pragma: lax no cover
431
436
  return False
432
437
 
433
438
  return_value = (NoOpCredentials(), 'pydantic-ai')
434
- mocker.patch.object(_api_client, '_load_auth', return_value=return_value)
439
+ mocker.patch.object(_api_client, 'load_auth', return_value=return_value)
435
440
 
436
441
 
437
442
  @pytest.fixture()
@@ -476,10 +481,10 @@ def model(
476
481
 
477
482
  return TestModel()
478
483
  elif request.param == 'openai':
479
- from pydantic_ai.models.openai import OpenAIModel
484
+ from pydantic_ai.models.openai import OpenAIChatModel
480
485
  from pydantic_ai.providers.openai import OpenAIProvider
481
486
 
482
- return OpenAIModel('o3-mini', provider=OpenAIProvider(api_key=openai_api_key))
487
+ return OpenAIChatModel('o3-mini', provider=OpenAIProvider(api_key=openai_api_key))
483
488
  elif request.param == 'anthropic':
484
489
  from pydantic_ai.models.anthropic import AnthropicModel
485
490
  from pydantic_ai.providers.anthropic import AnthropicProvider
@@ -561,6 +561,8 @@ async def test_report_round_trip_serialization(example_dataset: Dataset[TaskInpu
561
561
  span_id='0000000000000007',
562
562
  ),
563
563
  ],
564
+ span_id='0000000000000001',
565
+ trace_id='00000000000000000000000000000001',
564
566
  )
565
567
  )
566
568
 
@@ -69,6 +69,7 @@ def serialize(cassette_dict: Any): # pragma: lax no cover
69
69
  # Responses will have the body under a field called 'string'
70
70
  body = body.get('string')
71
71
  if body is not None:
72
+ # NOTE(Marcelo): This doesn't handle gzip compression.
72
73
  data['parsed_body'] = json.loads(body) # pyright: ignore[reportUnknownArgumentType]
73
74
  if 'access_token' in data['parsed_body']:
74
75
  data['parsed_body']['access_token'] = 'scrubbed'
@@ -83,4 +83,69 @@ interactions:
83
83
  status:
84
84
  code: 200
85
85
  message: OK
86
+ - request:
87
+ body: ''
88
+ headers:
89
+ accept:
90
+ - application/json
91
+ connection:
92
+ - keep-alive
93
+ host:
94
+ - api.cerebras.ai
95
+ method: GET
96
+ uri: https://api.cerebras.ai/v1/models
97
+ response:
98
+ headers:
99
+ alt-svc:
100
+ - h3=":443"; ma=86400
101
+ content-length:
102
+ - '762'
103
+ content-type:
104
+ - application/json
105
+ referrer-policy:
106
+ - strict-origin-when-cross-origin
107
+ strict-transport-security:
108
+ - max-age=3600; includeSubDomains
109
+ parsed_body:
110
+ data:
111
+ - created: 0
112
+ id: llama-4-maverick-17b-128e-instruct
113
+ object: model
114
+ owned_by: Cerebras
115
+ - created: 0
116
+ id: qwen-3-32b
117
+ object: model
118
+ owned_by: Cerebras
119
+ - created: 0
120
+ id: qwen-3-235b-a22b-instruct-2507
121
+ object: model
122
+ owned_by: Cerebras
123
+ - created: 0
124
+ id: llama-4-scout-17b-16e-instruct
125
+ object: model
126
+ owned_by: Cerebras
127
+ - created: 0
128
+ id: gpt-oss-120b
129
+ object: model
130
+ owned_by: Cerebras
131
+ - created: 0
132
+ id: qwen-3-coder-480b
133
+ object: model
134
+ owned_by: Cerebras
135
+ - created: 0
136
+ id: llama-3.3-70b
137
+ object: model
138
+ owned_by: Cerebras
139
+ - created: 0
140
+ id: llama3.1-8b
141
+ object: model
142
+ owned_by: Cerebras
143
+ - created: 0
144
+ id: qwen-3-235b-a22b-thinking-2507
145
+ object: model
146
+ owned_by: Cerebras
147
+ object: list
148
+ status:
149
+ code: 200
150
+ message: OK
86
151
  version: 1
@@ -0,0 +1,211 @@
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
+ - "18226"
12
+ content-type:
13
+ - application/json
14
+ host:
15
+ - api.openai.com
16
+ method: POST
17
+ parsed_body:
18
+ messages:
19
+ - content:
20
+ - text: What is the main content on this document? Use the get_upper_case tool to get the upper case of the text.
21
+ type: text
22
+ - file:
23
+ file_data: data:application/pdf;base64,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CmVuZG9iagoKOSAwIG9iago8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9CYXNlRm9udC9CQUFBQUErQXJpYWwtQm9sZE1UCi9GaXJzdENoYXIgMAovTGFzdENoYXIgMTEKL1dpZHRoc1s3NTAgNzIyIDYxMCA4ODkgNTU2IDI3NyA2NjYgNjEwIDMzMyAyNzcgMjc3IDU1NiBdCi9Gb250RGVzY3JpcHRvciA3IDAgUgovVG9Vbmljb2RlIDggMCBSCj4+CmVuZG9iagoKMTAgMCBvYmoKPDwKL0YxIDkgMCBSCj4+CmVuZG9iagoKMTEgMCBvYmoKPDwvRm9udCAxMCAwIFIKL1Byb2NTZXRbL1BERi9UZXh0XT4+CmVuZG9iagoKMSAwIG9iago8PC9UeXBlL1BhZ2UvUGFyZW50IDQgMCBSL1Jlc291cmNlcyAxMSAwIFIvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL0dyb3VwPDwvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCL0kgdHJ1ZT4+L0NvbnRlbnRzIDIgMCBSPj4KZW5kb2JqCgoxMiAwIG9iago8PC9Db3VudCAxL0ZpcnN0IDEzIDAgUi9MYXN0IDEzIDAgUgo+PgplbmRvYmoKCjEzIDAgb2JqCjw8L1RpdGxlPEZFRkYwMDQ0MDA3NTAwNkQwMDZEMDA3OTAwMjAwMDUwMDA0NDAwNDYwMDIwMDA2NjAwNjkwMDZDMDA2NT4KL0Rlc3RbMSAwIFIvWFlaIDU2LjcgNzczLjMgMF0vUGFyZW50IDEyIDAgUj4+CmVuZG9iagoKNCAwIG9iago8PC9UeXBlL1BhZ2VzCi9SZXNvdXJjZXMgMTEgMCBSCi9NZWRpYUJveFsgMCAwIDU5NSA4NDIgXQovS2lkc1sgMSAwIFIgXQovQ291bnQgMT4+CmVuZG9iagoKMTQgMCBvYmoKPDwvVHlwZS9DYXRhbG9nL1BhZ2VzIDQgMCBSCi9PdXRsaW5lcyAxMiAwIFIKPj4KZW5kb2JqCgoxNSAwIG9iago8PC9BdXRob3I8RkVGRjAwNDUwMDc2MDA2MTAwNkUwMDY3MDA2NTAwNkMwMDZGMDA3MzAwMjAwMDU2MDA2QzAwNjEwMDYzMDA2ODAwNkYwMDY3MDA2OTAwNjEwMDZFMDA2RTAwNjkwMDczPgovQ3JlYXRvcjxGRUZGMDA1NzAwNzIwMDY5MDA3NDAwNjUwMDcyPgovUHJvZHVjZXI8RkVGRjAwNEYwMDcwMDA2NTAwNkUwMDRGMDA2NjAwNjYwMDY5MDA2MzAwNjUwMDJFMDA2RjAwNzIwMDY3MDAyMDAwMzIwMDJFMDAzMT4KL0NyZWF0aW9uRGF0ZShEOjIwMDcwMjIzMTc1NjM3KzAyJzAwJyk+PgplbmRvYmoKCnhyZWYKMCAxNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMTE5OTcgMDAwMDAgbiAKMDAwMDAwMDAxOSAwMDAwMCBuIAowMDAwMDAwMjI0IDAwMDAwIG4gCjAwMDAwMTIzMzAgMDAwMDAgbiAKMDAwMDAwMDI0NCAwMDAwMCBuIAowMDAwMDExMTU0IDAwMDAwIG4gCjAwMDAwMTExNzYgMDAwMDAgbiAKMDAwMDAxMTM2OCAwMDAwMCBuIAowMDAwMDExNzA5IDAwMDAwIG4gCjAwMDAwMTE5MTAgMDAwMDAgbiAKMDAwMDAxMTk0MyAwMDAwMCBuIAowMDAwMDEyMTQwIDAwMDAwIG4gCjAwMDAwMTIxOTYgMDAwMDAgbiAKMDAwMDAxMjQyOSAwMDAwMCBuIAowMDAwMDEyNDk0IDAwMDAwIG4gCnRyYWlsZXIKPDwvU2l6ZSAxNi9Sb290IDE0IDAgUgovSW5mbyAxNSAwIFIKL0lEIFsgPEY3RDc3QjNEMjJCOUY5MjgyOUQ0OUZGNUQ3OEI4RjI4Pgo8RjdENzdCM0QyMkI5RjkyODI5RDQ5RkY1RDc4QjhGMjg+IF0KPj4Kc3RhcnR4cmVmCjEyNzg3CiUlRU9GCg==
24
+ filename: filename.pdf
25
+ type: file
26
+ role: user
27
+ model: gpt-4o
28
+ stream: false
29
+ tool_choice: auto
30
+ tools:
31
+ - function:
32
+ description: ""
33
+ name: get_upper_case
34
+ parameters:
35
+ additionalProperties: false
36
+ properties:
37
+ text:
38
+ type: string
39
+ required:
40
+ - text
41
+ type: object
42
+ strict: true
43
+ type: function
44
+ uri: https://api.openai.com/v1/chat/completions
45
+ response:
46
+ headers:
47
+ access-control-expose-headers:
48
+ - X-Request-ID
49
+ alt-svc:
50
+ - h3=":443"; ma=86400
51
+ connection:
52
+ - keep-alive
53
+ content-length:
54
+ - "1093"
55
+ content-type:
56
+ - application/json
57
+ openai-organization:
58
+ - coplane
59
+ openai-processing-ms:
60
+ - "788"
61
+ openai-version:
62
+ - "2020-10-01"
63
+ strict-transport-security:
64
+ - max-age=31536000; includeSubDomains; preload
65
+ transfer-encoding:
66
+ - chunked
67
+ parsed_body:
68
+ choices:
69
+ - finish_reason: tool_calls
70
+ index: 0
71
+ logprobs: null
72
+ message:
73
+ annotations: []
74
+ content: null
75
+ refusal: null
76
+ role: assistant
77
+ tool_calls:
78
+ - function:
79
+ arguments: '{"text":"Dummy PDF file"}'
80
+ name: get_upper_case
81
+ id: call_qkJ5pxpAXuEdMLTHIwrUk9Q4
82
+ type: function
83
+ created: 1755847546
84
+ id: chatcmpl-C7GRePTkJTuqqIeMkeTufGjUlOeDt
85
+ model: gpt-4o-2024-08-06
86
+ object: chat.completion
87
+ service_tier: default
88
+ system_fingerprint: fp_46bff0e0c8
89
+ usage:
90
+ completion_tokens: 17
91
+ completion_tokens_details:
92
+ accepted_prediction_tokens: 0
93
+ audio_tokens: 0
94
+ reasoning_tokens: 0
95
+ rejected_prediction_tokens: 0
96
+ prompt_tokens: 281
97
+ prompt_tokens_details:
98
+ audio_tokens: 0
99
+ cached_tokens: 0
100
+ total_tokens: 298
101
+ status:
102
+ code: 200
103
+ message: OK
104
+ - request:
105
+ headers:
106
+ accept:
107
+ - application/json
108
+ accept-encoding:
109
+ - gzip, deflate
110
+ connection:
111
+ - keep-alive
112
+ content-length:
113
+ - "18505"
114
+ content-type:
115
+ - application/json
116
+ host:
117
+ - api.openai.com
118
+ method: POST
119
+ parsed_body:
120
+ messages:
121
+ - content:
122
+ - text: What is the main content on this document? Use the get_upper_case tool to get the upper case of the text.
123
+ type: text
124
+ - file:
125
+ file_data: data:application/pdf;base64,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CmVuZG9iagoKOSAwIG9iago8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9CYXNlRm9udC9CQUFBQUErQXJpYWwtQm9sZE1UCi9GaXJzdENoYXIgMAovTGFzdENoYXIgMTEKL1dpZHRoc1s3NTAgNzIyIDYxMCA4ODkgNTU2IDI3NyA2NjYgNjEwIDMzMyAyNzcgMjc3IDU1NiBdCi9Gb250RGVzY3JpcHRvciA3IDAgUgovVG9Vbmljb2RlIDggMCBSCj4+CmVuZG9iagoKMTAgMCBvYmoKPDwKL0YxIDkgMCBSCj4+CmVuZG9iagoKMTEgMCBvYmoKPDwvRm9udCAxMCAwIFIKL1Byb2NTZXRbL1BERi9UZXh0XT4+CmVuZG9iagoKMSAwIG9iago8PC9UeXBlL1BhZ2UvUGFyZW50IDQgMCBSL1Jlc291cmNlcyAxMSAwIFIvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL0dyb3VwPDwvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCL0kgdHJ1ZT4+L0NvbnRlbnRzIDIgMCBSPj4KZW5kb2JqCgoxMiAwIG9iago8PC9Db3VudCAxL0ZpcnN0IDEzIDAgUi9MYXN0IDEzIDAgUgo+PgplbmRvYmoKCjEzIDAgb2JqCjw8L1RpdGxlPEZFRkYwMDQ0MDA3NTAwNkQwMDZEMDA3OTAwMjAwMDUwMDA0NDAwNDYwMDIwMDA2NjAwNjkwMDZDMDA2NT4KL0Rlc3RbMSAwIFIvWFlaIDU2LjcgNzczLjMgMF0vUGFyZW50IDEyIDAgUj4+CmVuZG9iagoKNCAwIG9iago8PC9UeXBlL1BhZ2VzCi9SZXNvdXJjZXMgMTEgMCBSCi9NZWRpYUJveFsgMCAwIDU5NSA4NDIgXQovS2lkc1sgMSAwIFIgXQovQ291bnQgMT4+CmVuZG9iagoKMTQgMCBvYmoKPDwvVHlwZS9DYXRhbG9nL1BhZ2VzIDQgMCBSCi9PdXRsaW5lcyAxMiAwIFIKPj4KZW5kb2JqCgoxNSAwIG9iago8PC9BdXRob3I8RkVGRjAwNDUwMDc2MDA2MTAwNkUwMDY3MDA2NTAwNkMwMDZGMDA3MzAwMjAwMDU2MDA2QzAwNjEwMDYzMDA2ODAwNkYwMDY3MDA2OTAwNjEwMDZFMDA2RTAwNjkwMDczPgovQ3JlYXRvcjxGRUZGMDA1NzAwNzIwMDY5MDA3NDAwNjUwMDcyPgovUHJvZHVjZXI8RkVGRjAwNEYwMDcwMDA2NTAwNkUwMDRGMDA2NjAwNjYwMDY5MDA2MzAwNjUwMDJFMDA2RjAwNzIwMDY3MDAyMDAwMzIwMDJFMDAzMT4KL0NyZWF0aW9uRGF0ZShEOjIwMDcwMjIzMTc1NjM3KzAyJzAwJyk+PgplbmRvYmoKCnhyZWYKMCAxNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMTE5OTcgMDAwMDAgbiAKMDAwMDAwMDAxOSAwMDAwMCBuIAowMDAwMDAwMjI0IDAwMDAwIG4gCjAwMDAwMTIzMzAgMDAwMDAgbiAKMDAwMDAwMDI0NCAwMDAwMCBuIAowMDAwMDExMTU0IDAwMDAwIG4gCjAwMDAwMTExNzYgMDAwMDAgbiAKMDAwMDAxMTM2OCAwMDAwMCBuIAowMDAwMDExNzA5IDAwMDAwIG4gCjAwMDAwMTE5MTAgMDAwMDAgbiAKMDAwMDAxMTk0MyAwMDAwMCBuIAowMDAwMDEyMTQwIDAwMDAwIG4gCjAwMDAwMTIxOTYgMDAwMDAgbiAKMDAwMDAxMjQyOSAwMDAwMCBuIAowMDAwMDEyNDk0IDAwMDAwIG4gCnRyYWlsZXIKPDwvU2l6ZSAxNi9Sb290IDE0IDAgUgovSW5mbyAxNSAwIFIKL0lEIFsgPEY3RDc3QjNEMjJCOUY5MjgyOUQ0OUZGNUQ3OEI4RjI4Pgo8RjdENzdCM0QyMkI5RjkyODI5RDQ5RkY1RDc4QjhGMjg+IF0KPj4Kc3RhcnR4cmVmCjEyNzg3CiUlRU9GCg==
126
+ filename: filename.pdf
127
+ type: file
128
+ role: user
129
+ - content: null
130
+ role: assistant
131
+ tool_calls:
132
+ - function:
133
+ arguments: '{"text":"Dummy PDF file"}'
134
+ name: get_upper_case
135
+ id: call_qkJ5pxpAXuEdMLTHIwrUk9Q4
136
+ type: function
137
+ - content: DUMMY PDF FILE
138
+ role: tool
139
+ tool_call_id: call_qkJ5pxpAXuEdMLTHIwrUk9Q4
140
+ model: gpt-4o
141
+ stream: false
142
+ tool_choice: auto
143
+ tools:
144
+ - function:
145
+ description: ""
146
+ name: get_upper_case
147
+ parameters:
148
+ additionalProperties: false
149
+ properties:
150
+ text:
151
+ type: string
152
+ required:
153
+ - text
154
+ type: object
155
+ strict: true
156
+ type: function
157
+ uri: https://api.openai.com/v1/chat/completions
158
+ response:
159
+ headers:
160
+ access-control-expose-headers:
161
+ - X-Request-ID
162
+ alt-svc:
163
+ - h3=":443"; ma=86400
164
+ connection:
165
+ - keep-alive
166
+ content-length:
167
+ - "872"
168
+ content-type:
169
+ - application/json
170
+ openai-organization:
171
+ - coplane
172
+ openai-processing-ms:
173
+ - "1608"
174
+ openai-version:
175
+ - "2020-10-01"
176
+ strict-transport-security:
177
+ - max-age=31536000; includeSubDomains; preload
178
+ transfer-encoding:
179
+ - chunked
180
+ parsed_body:
181
+ choices:
182
+ - finish_reason: stop
183
+ index: 0
184
+ logprobs: null
185
+ message:
186
+ annotations: []
187
+ content: The main content of the document is "DUMMY PDF FILE" in uppercase.
188
+ refusal: null
189
+ role: assistant
190
+ created: 1755847548
191
+ id: chatcmpl-C7GRg2vXs2wpdpyTTmmgVXZP4SiAP
192
+ model: gpt-4o-2024-08-06
193
+ object: chat.completion
194
+ service_tier: default
195
+ system_fingerprint: fp_46bff0e0c8
196
+ usage:
197
+ completion_tokens: 17
198
+ completion_tokens_details:
199
+ accepted_prediction_tokens: 0
200
+ audio_tokens: 0
201
+ reasoning_tokens: 0
202
+ rejected_prediction_tokens: 0
203
+ prompt_tokens: 311
204
+ prompt_tokens_details:
205
+ audio_tokens: 0
206
+ cached_tokens: 0
207
+ total_tokens: 328
208
+ status:
209
+ code: 200
210
+ message: OK
211
+ version: 1
@@ -0,0 +1,69 @@
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
+ - '111'
12
+ content-type:
13
+ - application/json
14
+ host:
15
+ - api.cerebras.ai
16
+ method: POST
17
+ parsed_body:
18
+ messages:
19
+ - content: What is the capital of France?
20
+ role: user
21
+ model: llama3.3-70b
22
+ stream: false
23
+ uri: https://api.cerebras.ai/v1/chat/completions
24
+ response:
25
+ headers:
26
+ alt-svc:
27
+ - h3=":443"; ma=86400
28
+ connection:
29
+ - keep-alive
30
+ content-length:
31
+ - '558'
32
+ content-type:
33
+ - application/json
34
+ inference-id:
35
+ - chatcmpl-175bff47-ce89-4fad-bead-62a14f787c49
36
+ referrer-policy:
37
+ - strict-origin-when-cross-origin
38
+ strict-transport-security:
39
+ - max-age=3600; includeSubDomains
40
+ transfer-encoding:
41
+ - chunked
42
+ parsed_body:
43
+ choices:
44
+ - finish_reason: stop
45
+ index: 0
46
+ message:
47
+ content: The capital of France is Paris.
48
+ role: assistant
49
+ created: 1756198141
50
+ id: chatcmpl-175bff47-ce89-4fad-bead-62a14f787c49
51
+ model: llama-3.3-70b
52
+ object: chat.completion
53
+ system_fingerprint: fp_b6a51bb1d26f03ea3772
54
+ time_info:
55
+ completion_time: 0.003633212
56
+ created: 1756198141
57
+ prompt_time: 0.002251218
58
+ queue_time: 0.000199151
59
+ total_time: 0.007346153259277344
60
+ usage:
61
+ completion_tokens: 8
62
+ prompt_tokens: 42
63
+ prompt_tokens_details:
64
+ cached_tokens: 0
65
+ total_tokens: 50
66
+ status:
67
+ code: 200
68
+ message: OK
69
+ version: 1
@@ -0,0 +1,70 @@
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
+ - '111'
12
+ content-type:
13
+ - application/json
14
+ host:
15
+ - api.cerebras.ai
16
+ method: POST
17
+ parsed_body:
18
+ messages:
19
+ - content: What is the capital of France?
20
+ role: user
21
+ model: gpt-oss-120b
22
+ stream: false
23
+ uri: https://api.cerebras.ai/v1/chat/completions
24
+ response:
25
+ headers:
26
+ alt-svc:
27
+ - h3=":443"; ma=86400
28
+ connection:
29
+ - keep-alive
30
+ content-length:
31
+ - '661'
32
+ content-type:
33
+ - application/json
34
+ inference-id:
35
+ - chatcmpl-bc3bbd04-e8df-4ab6-bd82-9fb33726cb93
36
+ referrer-policy:
37
+ - strict-origin-when-cross-origin
38
+ strict-transport-security:
39
+ - max-age=3600; includeSubDomains
40
+ transfer-encoding:
41
+ - chunked
42
+ parsed_body:
43
+ choices:
44
+ - finish_reason: stop
45
+ index: 0
46
+ message:
47
+ content: The capital of France is **Paris**.
48
+ reasoning: 'User asks simple question: capital of France. Answer: Paris. Provide concise answer.'
49
+ role: assistant
50
+ created: 1756199010
51
+ id: chatcmpl-bc3bbd04-e8df-4ab6-bd82-9fb33726cb93
52
+ model: gpt-oss-120b
53
+ object: chat.completion
54
+ system_fingerprint: fp_a5fe16f102a24cf8caf1
55
+ time_info:
56
+ completion_time: 0.026440676
57
+ created: 1756199010
58
+ prompt_time: 0.002999482
59
+ queue_time: 0.000899766
60
+ total_time: 0.03260970115661621
61
+ usage:
62
+ completion_tokens: 36
63
+ prompt_tokens: 74
64
+ prompt_tokens_details:
65
+ cached_tokens: 0
66
+ total_tokens: 110
67
+ status:
68
+ code: 200
69
+ message: OK
70
+ version: 1